
Michael Cain
0
4037
642
2019. Botları duydun. Sohbet botları, e-posta botları, web kazıma botları ve sosyal medya botları var. Henüz bir bot yarattın mı? Şaşırtıcı derecede kolay. Muhtemelen neden her yerdeler? Sıralarına katılarak bot yöneticilerimizi kucaklayın.
Bu makalede, Twitter, Reddit ve Instagram hesaplarınızla otomatik olarak etkileşimde bulunmak için Python'dan nasıl yararlanabileceğinizi göstereceğim..
Python ile Çalışma
Bu seçenek Python'u tercih ettiği dil olarak kullanmaktadır 6 Sebep Neden Python Geleceğin Programlama Dilidir 6 Sebep Neden Python Geleceğin Programlama Dilidir Neden Programlama becerilerinizi öğrenmek ister misiniz? Python'un bu yıl öğrenecek en iyi programlama dili olmasının nedeni de budur. . Python'un kullanım kolaylığı avantajları, diğer dillere kıyasla hız eksikliklerinden daha ağır basar. Hemen hemen her işletim sistemi için Python indirebilirsiniz. İstediğiniz editörü kullanın.
Python dağılımları adı verilen yardımcı programla ilişkili bip
. Yazma sırasında, indirmek için kullanılabilecek 168.000'den fazla kütüphane bulunmaktadır. bip
. Bugün yaratacağınız botlar için sadece üç kişiye ihtiyaç var.
Komut satırından, bu üç satırı kullanarak gerekli kütüphaneleri kurabilirsiniz..
pip kurulum - yükseltme InstagramAPI pip kurulum - yükseltme tweepy pip kurulum - yükseltme praw
Şimdi bu kütüphaneleri ihtiyaç duyulan yere aktarabileceksiniz.
Uygulama Anahtarlarını ve Sırlarını Alma
Bir bilge filozof bir keresinde dedi “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ı ayarlamadaki bir sonraki adım, her sitenin API'sine erişmelerine izin vermektir. Bunu yapmak için bir uygulama anahtarına veya sırrına ihtiyacınız olacak..
Anahtarları, sırları, jetonları ve daha fazlasını toplarken (eğlenceli bir oyun gibi geliyor!), Hepsini adı verilen tek bir dosyaya yerleştirin. “credentials.py.” Bu dosya şuna benzer:
# 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 =" insecret_client_entent_agent = "instagram_client_id =" insecret_client_entent "
Çok önemli gizlilik önerisi: bu dosyaya herhangi bir kaynak kontrolü yapmayın (ör. Git). Başkalarının bu anahtarlara ve sırlara sahip olmasını istemiyorsunuz. Bir sebeple sır olarak adlandırılırlar..
Twitter Erişimini Ayarlama
Node.js ile Twitter botu kurma kılavuzumuza göz atın, Twitter uygulamanızı nasıl oluşturacağınızı size gösterecektir. Nasıl Fotoğraf Tweeti Oluşturulur? Twitter Bot Ahududu Pi ve Node.js ile Nasıl Paylaşılır? Node.js Node.js ile başlayın ve yalnızca bir Ahududu Pi kullanarak fotoğraf ve bilgileri tweets eden bir Twitter botu oluşturun! . Twitter'ın hesabınızı doğrulamak ve bir spam hesabı oluşturmadığınızdan emin olmak için biraz zaman alacağını unutmayın..
Bu adımları uyguladıktan sonra, tüketici anahtarını, tüketici sırrını, erişim belirtecini ve erişim belirteci sırrını credentials.py dosyasına kopyalayın..
Reddit Erişimini Ayarlama
Reddit müşteri kimliğinizi ve sırrınızı almak Twitter'a çok benzer. Bir uygulamayı Reddit Kullanıcı Aracısı olarak kaydetmeniz gerekir. Bunu yaptıktan sonra kesinlikle koymak gerekir “Reddit Kullanıcı Aracısı” özgeçmişinde.
oturum aç seçtiğiniz Reddit hesabına. Uygulamalar tercihleri sayfasına gidin ve Başka bir uygulama oluştur'u tıklayın. Kullanıcı aracınıza yararlı bir şey adı verin. Script seç Uygulamanızın amacı için. Yaklaşık URL boş bırakılabilir. Yönlendirme kutusu için herhangi bir adres girin.
Senden sonra App oluştur düğmesine basın, Aşağıdaki ekran size uygulamalarınızın bir listesi ile birlikte sunulacaktır. Uygulama adınızın altındaki rakamlar müşteri kimliğini gösterir ve müşteri sırrı bunun altında bulunur. Bu değerleri credentials.py dosyanıza kopyalayın.
Instagram Erişimini Ayarlama
Instagram erişimi Twitter ve Reddit'ten farklıdır. Bir uygulama kaydetmek yerine, kullanıcı adınızı ve şifrenizi kullanın. Ayrı bir genel hesap oluşturmanızı ve bu ayrıntıları botunuz için kullanmanızı öneririm.
Reddit'e Praw ile Erişim
Pençeyi kullanmak iki aşamalı bir işlemdir. İlk önce, 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 subreddit araması new () yöntemi kullanılarak yapılır..
kimlik bilgilerinden praw alma import * my_reddit = praw.Reddit (client_id = reddit_client_id, client_secret = reddit_client_secret, user_agent = reddit_user_agent) sub_name = 'teknoloji' max_posts = gönderim için 10_dosya_adı (metin_adı) (baskı_adı). (submission.title)
Değiştir sub_name
Farklı alt dizinlerden yazılar almak için değişken. Yerine yeni()
, gibi diğer yöntemler Sıcak()
yayın almak için uygun.
InstagramAPI ile Instagram Hashtags aranıyor
Instagram API'sini kullanmanın ilk adımı, müşteri kimliği ve sırrına sahip bir nesne oluşturmak. Bundan hemen sonra, kurulumu tamamlamak için login () yöntemini çağırın..
instagram_client_id, instagram_client_secret my_insta_api = InstagramAPI (instagram_client_id, instagram_client_secret) my_insta_api.login () tarafından
API'yi kullanmak, Reddit'deki meslektaşından 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ıyor.
Yanıtı ararken, komut dosyası başlık metnini arar ve ardından görüntülemek için ekrana yazdırır..
get_hashtag = my_insta_api.getHashtagFeed (hashtag) eğer get_hashtag! = False: my_insta_api.LastJson içindeki öğe için ['items']: item.keys () içindeki 'caption' ve '[' caption '' tuşu. ): caption = item ['caption'] ['text'] baskı (resim yazısı)
Sosyal Medyaya Görüntü Ekleme
İlerlerken, komut dosyanızın bu karma beslemedeki görüntüleri almasını isteyebilirsiniz. Bunu yapmak için, JSON yanıtını gözden geçirin ve her yayınla ilişkilendirilmiş olan ortamı bulun. İşte 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) eğer get_hashtag == Yanlış: my_insta_api. ve item.keys () içindeki 'image_versions2': candidate = get_largest_image (item ['image_versions2'] ['adaylar'])) # get image dosyaadı = self.save_image_from_candidate (aday ['url']) eğer dosya adı! = ": # statü alın, tuple olarak kaydedin caption = get_caption (item) images.append ((dosya adı, caption)) eğer len (images)> = num_images: break return görüntüler
Bu işlevde kullanılan iki yardımcı işlev vardır. Instagram bir resim listesi gönderir “adaylar” JSON yanıtında. Medyanın en yüksek çözünürlükte gösterilmesi için bu resimlerden en büyüğünü seçin.
def get_largest_image (adaylar): adaylar için cand için aday = piksel = 0: # en yüksek çözünürlüğü seç bir res = cand ['yükseklik'] * cand ['genişlik'] eğer res> piksel: piksel = res aday = cand geri dönüş adayı
İkincisi, resme bağlantı bulunduğunda, içeriği bir dosyaya yazarak resmi 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 edin, 200 yanıt iyi olduğunda, bunun anlamı.status_code == 200: dosyaadı = url.split (" / ") [- 1]. split ('?') [0] açık (dosya adı, 'wb') f: f.write (response.content) ile dönüş dosya adı
Tweepy ile Medya Gönderme
İlk önce, sırlarınızı ve anahtarlarınızı kullanarak Twitter erişimi kurmanız gerekir..
kimlik bilgilerinden tweepy alma 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
Genel bir retweet botu oluşturmak sadece birkaç satırda yapılır..
tweepy.Cursor tweet için (tw_api.search, q = 'MakeUseOf'). e.yakıl) StopIteration hariç: mola
Bu kütüphane ile başka birçok şey yapılabilir. Bu incelemeyi tamamlamak için, get_images_from_hashtag
Instagram botundan fonksiyon, görüntüleri ve başlıkları tweetlemek için daha önce yapıldı..
Ek olarak, Twitter botunuz Reddit'i yeni yayınlar için arayabilir ve bunları tweetleyebilir. Her iki işlevi de bir araya getirmek, şuna benziyor:
# reddit araması için r / kullanın, instagram araması için # ve # kullanın hashtag = 'technology' num_posts = 5 # tweet reddit bilgisi reddit_posts = my_reddit.subreddit (hashtag) .new (limit = num_posts) reddit_posts içinde: title = submission.title url = 'www.reddit.com '. format (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 media media_info = media_info içindeki get_images_from_hashtag (hashtag, num_posts) (dosya adı, mesaj) tw_api.update_with_tr = trim_to_280 (mesaj) e: olarak, StopIteration hariç yazdırma (e.anki): break
Python Destekli Sosyal Medya Botunuz Hazır!
Artık medyayı bir siteden çekip diğerine gönderen bir sürü kodunuz var. Siz de karıştırıp eşleştirebilirsiniz. Tweet'leri çekin ve Reddit'e gönderin. Subreddits'e göndermek için Instagram resimlerini topla. Bir bot yapın ve gerçek internetin bir parçası olun.
Son olarak, bu işlemi tamamen otomatikleştirmek için botlarınızın bir sunucudaki bir döngüde çalışmasını isteyeceksiniz. Bu bir zaman çizelgesi ile kendi bilgisayarınızda olabilir. Veya dolabında bulunan eski Raspberry Pi'yi temizle ve bu tatlı Twitter bot projelerine göz at ve Raspberry Pi 10 En İyi Twitter Bot Projelerine göz at 10 Raspberry Pi 10 En İyi Twitter Bot Projelerine göz at .