Jak vytvořit Twitter, Instagram a Reddit Bots pomocí Pythonu

  • Peter Holmes
  • 0
  • 2358
  • 731
reklama

Je 2019. Slyšeli jste o robotech. Existují chatové roboty, e-mailové roboty, roboty pro stírání webu a roboty pro sociální média. Už jste vytvořili bota? Je to překvapivě snadné. Pravděpodobně proč jsou všude. Přijměte naše top manažery tím, že se připojíte k jejich hodnosti.

V tomto článku vám ukážu, jak můžete využít Python k automatické interakci s účty Twitter, Reddit a Instagram..

Práce s Pythonem

Tento průchod používá Python jako svůj jazyk výběru. 6 důvodů, proč je Python programovacím jazykem budoucnosti 6 důvodů, proč Python je programovacím jazykem budoucnosti Chcete se naučit nebo rozšířit své programovací schopnosti? Zde je důvod, proč je Python letos nejlepším programovacím jazykem. . Výhody snadného použití Pythonu převažují nad rychlostními nedostatky, které má ve srovnání s jinými jazyky. Můžete si stáhnout Python pro téměř jakýkoli OS. Použijte editor podle vašeho výběru.

Distribuce Pythonu jsou spojeny s názvem utility pip. V době psaní je k dispozici přes 168 000 knihoven ke stažení pomocí pip. Pro roboty, které vytvoříte dnes, jsou potřeba pouze tři.

Z příkazového řádku můžete pomocí těchto tří řádků nainstalovat potřebné knihovny.

pip install - upgrade InstagramAPI pip install - upgrade tweepy pip install - upgrade praw

Nyní budete moci tyto knihovny importovat podle potřeby.

Získání aplikačních klíčů a tajemství

Jednou řekl moudrý filozof “Tajemství, tajemství nejsou žádná legrace. Tajemství, tajemství někoho ublíží.” S respektem potřebují roboti tajemství. Dalším krokem při nastavování vašich robotů je umožnit jim přístup k API každého webu. K tomu budete potřebovat aplikační klíč nebo tajemství.

Když sbíráte klíče, tajemství, žetony a další (zní jako zábavná hra!), Vložte je do jediného souboru s názvem “credentials.py.” Tento soubor by vypadal asi takto:

# keys 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 = "

Velmi důležitý návrh na ochranu soukromí: nezavazujte tento soubor žádnou kontrolu zdroje (např. Git). Nechcete, aby někdo jiný měl tyto klíče a tajemství. Říká se jim tajemství z nějakého důvodu.

Nastavení přístupu na Twitter

Podívejte se na našeho průvodce nastavením robota na Twitteru pomocí aplikace Node.js, kde se dozvíte, jak vytvořit aplikaci Twitter Jak vytvořit fotografii Tweeting Twitter Bot s Raspberry Pi a Node.js Jak vytvořit fotografii Tweeting Twitter Bot s Raspberry Pi a Node.js Začínáme s Node.js a vytvořte robota na Twitteru, který vylepšuje fotografie a informace pomocí Raspberry Pi! . Ověřování účtu a ověření, že nevytváříte spamový účet, bude nějakou dobu trvat.

Po provedení těchto kroků zkopírujte spotřebitelský klíč, spotřebitelské tajemství, přístupový token a tajný přístupový token do vašeho souboru credentials.py..

Nastavení přístupu Reddit

Získání vašeho ID klienta Reddit a tajemství je velmi podobné Twitteru. Budete muset zaregistrovat aplikaci jako Reddit User Agent. Poté, co to uděláte, měli byste se rozhodnout “Reddit User Agent” na váš životopis.

Přihlásit se na účet Reddit podle vašeho výběru. Přejděte na stránku předvoleb aplikací a Klikněte na vytvořit další aplikaci. Pojmenujte svůj uživatelský agent na něco užitečného. Vyberte skript pro účely vaší aplikace. O URL může zůstat prázdné. Vyplňte libovolnou adresu pro pole přesměrování.

Po vás Stiskněte tlačítko vytvořit aplikaci, na následující obrazovce se zobrazí seznam vašich aplikací. Číslice pod názvem vaší aplikace představují ID klienta a pod ním je umístěno tajemství klienta. Zkopírujte tyto hodnoty do souboru credentials.py.

Nastavení přístupu na Instagram

Přístup na Instagram se liší od Twitteru a Reddit. Místo registrace aplikace používáte své uživatelské jméno a heslo. Navrhuji vytvoření samostatného veřejného účtu a použití těchto údajů pro váš robot.

Přístup k Reddit With Praw

Používání praw je dvoustupňový proces. Za prvé, nastavení přístupu je jednofunkční volání metody Reddit metody praw. Poté pomocí inicializovaného objektu se provede vyhledávání subreddit pomocí nové metody ().

import praw z pověření import * my_reddit = praw.Reddit (client_id = reddit_client_id, client_secret = reddit_client_secret, user_agent = reddit_user_agent) sub_name = 'technology' max_posts = 10 pro odeslání v my_reddit.subreddit (sub_) limit: print_max = print: (podání. název) 

Změň sub_name proměnná pro získání příspěvků z různých subredditů. Namísto Nový(), jiné metody, jako horký() jsou k dispozici pro získání příspěvků.

Prohledávání Instagramů hash pomocí InstagramAPI

Prvním krokem při používání rozhraní Instagram API je nastavení objektu s ID klienta a tajemstvím. Ihned poté zavolejte metodu login () a dokončete nastavení.

z importu InstagramAPI InstagramAPI z importu pověření instagram_client_id, instagram_client_secret my_insta_api = InstagramAPI (instagram_client_id, instagram_client_secret) my_insta_api.login () 

Použití API je o něco složitější než jeho protějšek Reddit. V tomto příkladu skript používá getHashtagFeed k získání velmi velkého objektu odpovědi JSON z Instagramu.

Skript prohledá odpověď a vyhledá text titulku a poté se vytiskne na obrazovku a zobrazí se.

get_hashtag = my_insta_api.getHashtagFeed (hashtag) if get_hashtag! = False: pro položku v my_insta_api.LastJson ['items']: if 'caption' v item.keys () a 'text' v položce ['caption']. ): caption = item ['caption'] ['text'] print (caption) 

Přidat obrázky na sociální média

Pohybujete-li se vpřed, možná budete chtít, aby skript získal obrázky v tomto zdroji hashtag. Chcete-li to provést, opakujte odpověď JSON a najděte médium spojené s každým příspěvkem. Zde je implementace pro extrahování informací z odpovědi JSON:

def get_images_from_hashtag (hashtag, num_images): images = [] get_hashtag = my_insta_api.getHashtagFeed (hashtag) if get_hashtag == False: vrátit obrázky pro položku v my_insta_api.LastJson ['items']: if item ['media=ty' 1 '' a 'image_versions2' v item.keys () :andid = get_largest_image (item ['image_versions2'] ['andidates ']) # get image filename = self.save_image_from_candidate (kandidát [' url ']), pokud filename = =:: # získat stav, uložit jako tuple caption = get_caption (item) images.append ((filename, caption)) if len (images)> = num_images: break return images 

V této funkci se používají dvě pomocné funkce. Instagram odešle seznam obrázků “kandidáti” v odpovědi JSON. Vyberte největší z těchto obrázků tak, aby se médium zobrazovalo v jeho nejvyšším rozlišení.

def get_largest_image (kandidáti): kandidát =  pixely = 0 pro cand v kandidátech: # vyberte nejvyšší rozlišení one res = cand ['height'] * cand ['width'] if res> pixels: pixels = res kandidát = cand návratový kandidát 

Za druhé, jakmile je nalezen odkaz na obrázek, můžete obrázek uložit místně zapsáním obsahu do souboru. Za použití žádosti knihovna je to jednoduché.

def save_image_from_candidate (url): filename = "response = request.get (url) # zkontrolovat kód stavu odpovědi, 200 znamená dobré if response.status_code == 200: filename = url.split (" / ") [- 1]. split ('?') [0] s open (filename, 'wb') jako f: f.write (response.content) return filename 

Tweeting z média s Tweepy

Nejprve je třeba nastavit přístup na Twitter pomocí vašich tajemství a klíčů.

import tweepy z pověření 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) 

Vytvoření obecného retweetového robota se provádí v několika řádcích.

pro tweet ve tweepy.Cursor (tw_api.search, q = 'MakeUseOf'). (10): try: tweet.favorite () tweet.retweet () time.sleep (2) kromě tweepy.TweepError as e: print ( e.reason) kromě StopIteration: break 

S touto knihovnou lze provádět mnoho dalších věcí. K dokončení tohoto průchodu můžete použít get_images_from_hashtag funkce z Instagramu bota vyrobeného dříve k tweetování obrázků a titulků.

Kromě toho může váš robot na Twitteru vyhledat Reddit pro nové příspěvky a ty také tweetovat. Spojení obou těchto funkcí vypadá takto:

# use r / for reddit search # and # for instagram search hashtag = 'technology' num_posts = 5 # tweet reddit info reddit_posts = my_reddit.subreddit (hashtag) .new (limit = num_posts) pro odeslání v reddit_posts: title = podání.title url = 'www.reddit.com '. format (podání.permalink) tweet_str = f'Reddit r / sub update: \ n \ n title # sub url 'tweet_str = trim_to_280 (tweet_str ) tw_api.update (tweet_str) # tweet instagram media media_info = get_images_from_hashtag (hashtag, num_posts) for (filename, message) in media_info: try: tweet_str = trim_to_280 (message) tw_api.update_with_media (filename, status = tweet_str) s výjimkou tweep.T. jako e: print (e.reason) kromě StopIteration: break 

Vaše sociální média využívající Python jsou připraveni!

Takže nyní máte spoustu kódu, který stahuje média z jednoho webu a příspěvky na jiný. Můžete také kombinovat. Vytáhněte tweety a odešlete na Reddit. Sbírejte obrázky Instagramu pro zveřejnění na subreddits. Udělejte robota a buďte součástí skutečného internetu.

A konečně, chcete-li plně automatizovat tento proces, budete chtít, aby vaše roboty běžely ve smyčce na serveru. To může být na vašem počítači s časovým plánovačem. Nebo oprášte ten starý Raspberry Pi, který byl ve vašem šatníku, a podívejte se na tyto sladké projekty na Twitteru pro Pi 10 Nejlepší Twitter Bot projekty pro Raspberry Pi 10 Nejlepší Twitter Bot projekty pro Raspberry Pi .




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.