İlan

2019. Botlar duydun. Sohbet botları, e-posta botları, web kazıma botları ve sosyal medya botları vardır. Henüz bir bot oluşturdun mu? Şaşırtıcı derecede kolay. Muhtemelen neden her yerdeler. Bot derebelerimizi rütbelerine katılarak kucaklayın.

Bu makalede, Twitter, Reddit ve Instagram hesaplarınızla otomatik olarak etkileşim kurmak için Python'dan nasıl yararlanabileceğinizi göstereceğim.

Python ile Çalışma

Bu gözden geçirme kullanımları Tercih ettiği dil olarak Python Python'un Geleceğin Programlama Dili Olmasının 6 NedeniProgramlama becerilerinizi öğrenmek veya genişletmek mi istiyorsunuz? İşte bu yüzden Python bu yıl öğrenilecek en iyi programlama dilidir. Daha fazla oku . Python’un kullanım kolaylığı avantajları, diğer dillerle karşılaştırıldığında hız eksikliklerinden daha ağır basmaktadır. Neredeyse tüm işletim sistemleri için Python'u indirebilirsiniz. İstediğiniz düzenleyiciyi kullanın.

Python dağıtımları adlı programla ilişkilendirilir bip. Yazma sırasında, 168.000'den fazla kütüphane, bip. Bugün oluşturacağınız botlar için sadece üç taneye ihtiyacınız var.

Komut satırından, bu üç satırı kullanarak gerekli kitaplıkları yükleyebilirsiniz.

pip install --upgrade InstagramAPI Instagram Hesabında Takip Ettiklerini Listeleyin, Profillerini Görüntüleyin pip install - yükseltme tweepy pip install - yükseltme praw

Artık gerektiğinde bu kütüphaneleri içe aktarabileceksiniz.

Uygulama Anahtarlarını ve Sırlarını Edinme

Bilge bir filozof bir keresinde “Sırlar, sırlar eğlenceli değildir. Sırlar, sırlar birine zarar verir. ” Saygılarımla, botların sırlara ihtiyacı var. Botlarınızı oluşturmanın bir sonraki adımı, her bir sitenin API'sına erişmelerine izin vermektir. Bunu yapmak için bir uygulama anahtarına veya sırrına ihtiyacınız olacaktır.

Anahtarları, sırları, belirteçleri ve daha fazlasını toplarken (eğlenceli bir oyun gibi geliyor!), Hepsini “credentials.py” adlı tek bir dosyaya koyun. Bu dosya şöyle görünecektir:

# 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 = ''

Çok önemli gizlilik önerisi: bu dosyaya herhangi bir kaynak kontrolü (örn. Git) uygulamayın. Başkalarının bu anahtarlara ve sırlara sahip olmasını istemezsiniz. Onlara bir sebepten dolayı sır denir.

Twitter Erişimini Ayarlama

Node.js ile bir Twitter botu ayarlama kılavuzumuza göz atın. Twitter uygulamanızı oluşturun Raspberry Pi ve Node.js ile Twitter Bot Nasıl Fotoğraf OluşturulurNode.js ile başlayın ve sadece bir Raspberry Pi kullanarak fotoğrafları ve bilgileri tweetleyen bir Twitter botu oluşturun! Daha fazla oku . Twitter'ın hesabınızı doğrulaması ve spam hesabı oluşturmadığınızdan biraz zaman alacağını unutmayın.

Bu adımları izledikten sonra, tüketici anahtarını, tüketici sırrını, erişim belirtecini ve erişim belirtecinin sırrını credentials.py dosyanıza kopyalayın.

Reddit Erişimini Ayarlama

Reddit istemci kimliğinizi ve sırrınızı almak Twitter'a çok benzer. Bir uygulamayı Reddit Kullanıcı Aracısı olarak kaydettirmeniz gerekir. Bunu yaptıktan sonra, özgeçmişinize mutlaka “Reddit Kullanıcı Aracısı” koymalısınız.

oturum aç seçtiğiniz Reddit hesabına. Şuraya gidin: uygulama tercihleri ​​sayfası ve Başka bir uygulama oluştur'u tıklayın. Kullanıcı aracısına faydalı bir ad verin. Komut dosyası seç uygulamanızın amacı için. Yaklaşık URL boş bırakılabilir. Yönlendirme kutusu için herhangi bir adresi girin.

Reddit Uygulaması Bot Python

Senden sonra Uygulama oluştur'a basın, aşağıdaki ekran size uygulamalarınızın bir listesi ile sunulacaktır. Uygulama adınızın altındaki rakamlar istemci kimliğini temsil eder ve istemci sırrı bunun altında bulunur. Bu değerleri credentials.py dosyanıza kopyalayın.

Reddit Uygulama API'sı Gizli Python

Instagram Erişimini Ayarlama

Instagram erişimi Twitter ve Reddit'ten farklı. Bir uygulamayı kaydetmek yerine kullanıcı adınızı ve şifrenizi kullanırsınız. Ayrı bir genel hesap oluşturmanızı ve bu ayrıntıları botunuz için kullanmanızı öneririm.

Reddit'e Praw ile Erişme

Praw kullanmak iki adımlı bir işlemdir. İlk olarak, erişimin ayarlanması, Reddit praw yöntemine yapılan tek bir işlev çağrısıdır. Ardından, başlatılan nesneyi kullanarak, bir alt dizinin aranması new () yöntemi kullanılarak yapılır.

içe aktarma praw. kimlik bilgilerinden import * my_reddit = praw. Reddit (client_id = reddit_client_id, client_secret = reddit_client_secret, user_agent = reddit_user_agent) alt_adı = 'teknoloji' max_posts = 10 my_reddit.subreddit (alt_adı) içinde gönderilmek üzere. yeni (limit = max_posts): yazdır (submission.title)

Değiştir sub_name değişkeni farklı alt indirimlerden almak için. Onun yerine yeni(), gibi diğer yöntemler Sıcak() yayın almak için kullanılabilir.

Instagram Hashtaglerini InstagramAPI Üzerinden Arama

Instagram API'sini kullanmanın ilk adımı, istemci kimliği ve sır ile bir nesne oluşturmaktır. Bundan hemen sonra, kurulumu tamamlamak için login () yöntemini çağırın.

InstagramAPI ithalat InstagramAPI. credentials import instagram_client_id, instagram_client_secret my_insta_api = InstagramAPI (instagram_client_id, instagram_client_secret) my_insta_api.login ()

API'yi kullanmak Reddit muadillerinden biraz daha karmaşıktır. Bu örnekte, komut dosyası Instagram'dan çok büyük bir JSON yanıt nesnesi almak için getHashtagFeed kullanır.

Yanıtta arama yaparken, komut dosyası altyazı metnini arar ve görüntülemek için ekrana yazdırır.

get_hashtag! = False: my_insta_api'deki öğe için get_hashtag = my_insta_api.getHashtagFeed (hashtag). LastJson ['items']: item.keys () içindeki 'caption' ve item ['caption'] içindeki 'text' ise. Keys (): caption = item ['caption'] ['text'] yazdır (altyazı)

Sosyal Medyaya Görüntü Ekleme

İleride, komut dosyanızın bu hashtag özet akışındaki resimleri almasını isteyebilirsiniz. Bunu yapmak için, JSON yanıtı üzerinden döngü ve her yazı ile ilişkili medya bulun. JSON yanıtından bilgileri çıkarmak için bir uygulama:

def get_images_from_hashtag (hashtag, num_images): images = [] get_hashtag = my_insta_api.getHashtagFeed (hashtag) get_hashtag == False: my_insta_api içindeki öğe için resimleri döndür. LastJson ['items']: item.keys () içindeki öğe ['media_type'] == 1 ve 'image_versions2' ise: candidate = get_largest_image (item ['image_versions2'] ['adaylar']) # image dosyaadı = self.save_image_from_candidate (aday ['url']) eğer dosyaadı! = '': # durumu al, grup başlığı olarak kaydet = get_caption (item) images.append ((dosya adı, resim yazısı)) len ise (resimler)> = num_images: kesme dönüş görüntüleri. 

Bu işlevde kullanılan iki yardımcı işlev vardır. Instagram, JSON yanıtında “adaylar” resminin bir listesini gönderir. Medyanın en yüksek çözünürlükte görüntülenmesi için bu görüntülerin en büyüğünü seçin.

def get_largest_image (adaylar): aday = {} piksel = adaylarda cand için 0: # en yüksek olanı seç çözünürlük bir res = cand ['yükseklik'] * cand ['genişlik'] res> piksel ise: piksel: res = aday = cand dönüşü aday. 

İkinci olarak, görüntü bağlantısı bulunduğunda, içeriği bir dosyaya yazarak görüntüyü yerel olarak kaydedebilirsiniz. Kullanmak istekler kütüphane bunu kolaylaştırır.

def save_image_from_candidate (url): dosyaadı = '' response = requests.get (url) # yanıt durum kodunu kontrol et, 200 response.status_code == 200: dosyaadı = url.split ("/") [- 1] .split ('?') [0] f: f.write (response.content) olarak açık (dosya adı, 'wb') ile ) dönüş dosya adı. 

Tweepy ile Medyayı Tweetleme

İlk olarak, sırlarınızı ve anahtarlarınızı kullanarak Twitter erişimini ayarlamanız gerekir.

ithalat tweepy. kimlik bilgilerinden 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)

Genel bir retweet botu oluşturmak sadece birkaç satırda yapılır.

tweepy içinde tweet için. İmleç (tw_api.search, q = 'MakeUseOf'). Öğeler (10): deneyin: tweepy hariç tweet.favorite () tweet.retweet () time.sleep (2). StopIteration: break hariç tweepError e: print (e.reason) olarak. 

Bu kütüphane ile başka pek çok şey yapılabilir. Bu gözden geçirmeyi sonuçlandırmak için, get_images_from_hashtag ve altyazıları tweetlemek için daha önce yapılan Instagram botundan işlev.

Ayrıca, Twitter botunuz Reddit'te yeni yayınlar arayabilir ve bunları tweetleyebilir. Bu işlevlerin her ikisini de bir araya getirmek şöyle görünür:

# r / kullan reddit araması için. # ve #instagram arama için. hashtag = 'teknoloji' num_posts = 5 # tweet reddit bilgisi. reddit_posts = my_reddit.subreddit (hashtag) .new (limit = num_posts) reddit_posts'ta gönderim için: title = submission.title url = 'www.reddit.com {}'. biçim (submission.permalink) tweet_str = f'Reddit r / {sub} güncelleme: \ n \ n {title} # {sub} {url} 'tweet_str = trim_to_280 (tweet_str) tw_api.update (tweet_str) # tweet instagram medya. media_info = get_images_from_hashtag (hashtag, num_posts) media_info'da (dosya adı, mesaj) için: tweepy hariç şunu deneyin: tweet_str = trim_to_280 (mesaj) tw_api.update_with_media (dosya adı, durum = tweet_str). StopIteration: break hariç tweepError e: print (e.reason) olarak.

Python Destekli Sosyal Medya Botunuz Hazır!

Artık medyayı bir siteden başka bir siteye çeken bir sürü kodunuz var. Siz de karıştırıp eşleştirebilirsiniz. Tweetleri çekin ve Reddit'e gönderin. Subreddits'e göndermek için Instagram görüntülerini toplayın. Bir bot yapın ve gerçek internetin bir parçası olun.

Son olarak, bu işlemi tamamen otomatik hale getirmek için, botlarınızın sunucudaki bir döngüde çalışmasını istersiniz. Bu, zaman çizelgesi ile kendi bilgisayarınızda olabilir. Ya da, dolabındaki eski Raspberry Pi'yi tozdan arındır ve bu tatlıya göz at Pi için Twitter bot projeleri Raspberry Pi için En İyi Twitter Bot Projeleri Daha fazla oku .

Tom, yazma, kolej futbolu (go Gators!), CrossFit ve Oxford virgüllerine tutkuyla Florida'dan Yazılım Mühendisi (Florida Man'a bağırıyor).