
Mark Lucas
0
3029
545
Jest rok 2019. Słyszałeś o botach. Są boty czatowe, boty e-mailowe, boty internetowe i boty w mediach społecznościowych. Czy stworzyłeś już bota? To zaskakująco łatwe. Prawdopodobnie dlaczego są wszędzie. Wciel się w naszych przywódców botów, dołączając do ich rangi.
W tym artykule pokażę, jak można wykorzystać Python do automatycznej interakcji z kontami na Twitterze, Reddit i Instagramie.
Praca z Pythonem
W tym przewodniku wykorzystano Python jako język wyboru. 6 powodów, dla których Python jest językiem programowania przyszłości. 6 powodów, dla których Python jest językiem programowania przyszłości. Chcesz nauczyć się lub poszerzyć swoje umiejętności programistyczne? Oto dlaczego Python jest najlepszym językiem programowania do nauki w tym roku. . Zalety Pythona w zakresie łatwości użytkowania przeważają nad wszelkimi niedociągnięciami prędkości, jakie ma w porównaniu do innych języków. Możesz pobrać Python na prawie każdy system operacyjny. Skorzystaj z wybranego edytora.
Dystrybucje w języku Python są powiązane z narzędziem o nazwie pypeć
. W chwili pisania tego tekstu dostępnych jest ponad 168 000 bibliotek do pobrania pypeć
. W przypadku botów, które stworzysz dzisiaj, potrzebne są tylko trzy.
Z wiersza poleceń można zainstalować potrzebne biblioteki za pomocą tych trzech wierszy.
pip install - aktualizacja InstagramAPI pip install - aktualizacja tweepy pip instalacja - aktualizacja praw
Teraz będziesz mógł zaimportować te biblioteki w razie potrzeby.
Uzyskiwanie kluczy aplikacji i tajemnic
Mądry filozof powiedział kiedyś “Sekrety, sekrety nie są zabawne. Tajemnice, tajemnice kogoś ranią.” Z szacunkiem boty potrzebują tajemnic. Następnym krokiem w konfiguracji botów jest umożliwienie im dostępu do interfejsu API każdej strony. Aby to zrobić, potrzebujesz klucza aplikacji lub klucza tajnego.
Podczas zbierania kluczy, tajemnic, tokenów i innych elementów (brzmi jak fajna gra!), Umieść je wszystkie w jednym pliku o nazwie “credentials.py.” Ten plik wyglądałby mniej więcej tak:
# klucze twitter_consumer_key = "twitter_consumer_secret =" twitter_access_token = "twitter_access_token_secret =" reddit_client_id = "reddit_client_secret =" reddit_user_agent = "instagram_client_id =" instagram_client_secret = "
Bardzo ważna sugestia dotycząca prywatności: nie zatwierdzaj tego pliku jako źródła kontroli (np. Git). Nie chcesz, aby ktokolwiek inny miał te klucze i tajemnice. Z jakiegoś powodu nazywane są tajemnicami.
Konfigurowanie dostępu do Twittera
Zapoznaj się z naszym przewodnikiem po konfigurowaniu bota Twittera za pomocą Node.js, gdzie dowiesz się, jak utworzyć aplikację Twitter. Jak zbudować zdjęcie Tweetuj Bot na Twitterze za pomocą Raspberry Pi i Node.js Jak zbudować zdjęcie Tweetuj Bot na Twitterze za pomocą Raspberry Pi i Node.js Zacznij korzystać z Node.js i stwórz bota Twittera, który tweetuje zdjęcia i informacje za pomocą Raspberry Pi! . Pamiętaj, że Twitter zajmie trochę czasu, aby zweryfikować twoje konto i upewnić się, że nie tworzysz konta spamowego.
Po wykonaniu tych kroków skopiuj klucz klienta, klucz klienta, token dostępu i klucz dostępu do pliku credentials.py.
Konfiguracja dostępu do Reddit
Uzyskiwanie identyfikatora i hasła klienta Reddit jest bardzo podobne do Twittera. Musisz zarejestrować aplikację jako agent użytkownika Reddit. Po zrobieniu tego, powinieneś absolutnie umieścić “Agent użytkownika Reddit” w twoim CV.
Zaloguj na wybrane konto Reddit. Przejdź do strony preferencji aplikacji i Kliknij utwórz inną aplikację. Nazwij swojego agenta użytkownika czymś przydatnym. Wybierz skrypt na potrzeby Twojej aplikacji. Informacje o adresie URL można pozostawić puste. Wpisz dowolny adres w polu przekierowania.
Po tobie Naciśnij Utwórz aplikację, zostanie wyświetlony następujący ekran z listą aplikacji. Cyfry pod nazwą aplikacji reprezentują identyfikator klienta, a klucz tajny klienta znajduje się poniżej tego. Skopiuj te wartości do pliku credentials.py.
Konfigurowanie dostępu do Instagrama
Dostęp do Instagrama różni się od Twittera i Reddit. Zamiast rejestrować aplikację, używasz swojej nazwy użytkownika i hasła. Sugeruję utworzenie osobnego konta publicznego i wykorzystanie tych danych dla twojego bota.
Dostęp do Reddit za pomocą Praw
Używanie Krew jest procesem dwuetapowym. Po pierwsze, konfiguracja dostępu to pojedyncze wywołanie funkcji dla metody Reddit dla praw. Następnie, używając zainicjowanego obiektu, wyszukiwanie subreddit odbywa się za pomocą metody new ().
importuj krew z poświadczeń import * my_reddit = praw.Reddit (identyfikator_ klienta = reddit_client_id, client_secret = reddit_client_secret, user_agent = reddit_user_agent) sub_name = 'technologia' max_posts = 10 do przesłania w my_reddit.subreddit (nazwa_wpisu). (submission.title)
Zmienić sub_name
zmienna, aby uzyskać posty z różnych subreddits. Zamiast Nowy()
, inne metody, takie jak gorąco()
są dostępne, aby otrzymywać posty.
Wyszukiwanie hashtagów na Instagramie poprzez InstagramAPI
Pierwszym krokiem w korzystaniu z interfejsu API Instagram jest skonfigurowanie obiektu z identyfikatorem klienta i kluczem tajnym. Bezpośrednio potem wywołaj metodę login (), aby zakończyć konfigurację.
z InstagramAPI import InstagramAPI z danych uwierzytelniających import instagram_client_id, instagram_client_secret my_insta_api = InstagramAPI (instagram_client_id, instagram_client_secret) my_insta_api.login ()
Korzystanie z API jest nieco bardziej skomplikowane niż jego odpowiednik Reddit. W tym przykładzie skrypt używa getHashtagFeed, aby uzyskać bardzo duży obiekt odpowiedzi JSON z Instagrama.
Przeszukując odpowiedź, skrypt szuka tekstu podpisu, a następnie drukuje go na ekranie, aby go wyświetlić.
get_hashtag = moja_insta_api.getHashtagFeed (hashtag) if get_hashtag! = False: dla elementu w my_insta_api.LastJson ['items']: jeśli 'caption' w item.keys () i 'text' w item ['caption']. keys ( ): caption = item ['caption'] ['text'] print (caption)
Dodaj obrazy do mediów społecznościowych
Idąc dalej, możesz chcieć, aby skrypt pobierał obrazy z tego kanału z hashtagiem. Aby to zrobić, przejrzyj odpowiedź JSON i znajdź media powiązane z każdym postem. Oto implementacja do wyodrębniania informacji z odpowiedzi JSON:
def get_images_from_hashtag (hashtag, num_images): images = [] get_hashtag = my_insta_api.getHashtagFeed (hashtag) if get_hashtag == False: zwróć obrazy dla pozycji w my_insta_api.LastJson ['items']: if item ['= media_ty i „image_versions2” w item.keys (): kandydat = get_largest_image (item ['image_versions2'] ['kandydaci']) # get nazwa pliku obrazu = self.save_image_from_candidate (kandydat ['url']) jeśli nazwa pliku! = ": # pobierz status, zapisz jako tuple caption = get_caption (item) images.append ((filename, caption)) if len (images)> = num_images: break return images
W tej funkcji używane są dwie funkcje pomocnicze. Instagram wysyła listę zdjęć “kandydaci” w odpowiedzi JSON. Wybierz największy z tych obrazów, aby media były wyświetlane w najwyższej rozdzielczości.
def get_largest_image (kandydaci): kandydat = pikseli = 0 dla cand w kandydatach: # wybierz najwyższą rozdzielczość jeden res = cand ['wysokość'] * cand ['szerokość'] jeśli res> piksele: pixel = res kandydat = cand powrócić kandydata
Po drugie, po znalezieniu łącza do obrazu można zapisać obraz lokalnie, zapisując zawartość do pliku. Używając upraszanie
biblioteka upraszcza to.
def save_image_from_candidate (url): filename = "response = requests.get (url) # sprawdź kod statusu odpowiedzi, 200 oznacza dobre, jeśli kod odpowiedzi.status_= = 200: filename = url.split (" / ") [- 1]. split („?”) [0] z open (nazwa pliku, „wb”) jako f: f.write (response.content) zwracana nazwa pliku
Tweetowanie mediów za pomocą Tweepy
Najpierw musisz skonfigurować dostęp do Twittera za pomocą swoich sekretów i kluczy.
import tweepy z poświadczeń import * tw_auth = tweepy.OAuthHandler (twitter_consumer_key, twitter_consumer_secret) tw_auth.set_access_token (twitter_access_token, twitter_access_token_secret) tw_api = tweepy.API (tw_auth)
Tworzenie ogólnego bota retweet odbywa się w kilku liniach.
dla tweeta w tweepy.Cursor (tw_api.search, q = 'MakeUseOf'). items (10): try: tweet.favorite () tweet.retweet () time.sleep (2) oprócz tweepy.TweepError jako e: print ( e. powód) oprócz StopIteration: break
Za pomocą tej biblioteki można zrobić wiele innych rzeczy. Aby zakończyć ten przewodnik, możesz użyć get_images_from_hashtag
funkcja z bota Instagram utworzonego wcześniej, aby tweetować obrazy i podpisy.
Dodatkowo, twój bot na Twitterze może przeszukiwać Reddit w poszukiwaniu nowych postów i tweetować również. Zestawienie obu tych funkcji wygląda następująco:
# użyj r / do wyszukiwania reddit # i # do wyszukiwania na Instagram hashtag = 'technologia' num_posts = 5 # tweetuj informacje o reddit reddit_posts = my_reddit.subreddit (hashtag) .new (limit = num_posts) do przesyłania w reddit_posts: title = submission.title url = 'www.reddit.com '. format (submission.permalink) tweet_str = f'Reddit r / sub aktualizacja: \ n \ n title # sub url 'tweet_str = trim_to_280 (tweet_str . jako e: drukuj (e. powód) oprócz StopIteration: break
Twój bot społecznościowy zasilany w języku Python jest gotowy!
Tak więc teraz masz sporo kodu, który ściąga media z jednej strony i posty na innej. Możesz także mieszać i dopasowywać. Ściągnij tweety i publikuj na Reddit. Zbieraj obrazy z Instagrama do publikowania w subreddits. Stwórz bota i zostań częścią prawdziwego Internetu.
Wreszcie, aby w pełni zautomatyzować ten proces, będziesz chciał, aby twoje boty działały w pętli na serwerze. Może to być na twoim komputerze z harmonogramem czasu. Lub odkurz starego Raspberry Pi, który był w twojej szafie, i sprawdź te słodkie projekty botów Twitter dla Pi 10 najlepszych projektów botów Twitter dla Raspberry Pi 10 najlepszych projektów botów Twitter dla Raspberry Pi .