Python Kullanarak Twitter, Instagram ve Reddit Botları Nasıl Oluşturulur

Python Kullanarak Twitter, Instagram ve Reddit Botları Nasıl Oluşturulur

Yıl 2019. Botları duymuşsunuzdur. Sohbet botları, e-posta botları, web kazıma botları ve sosyal medya botları vardır. Henüz bir bot oluşturdunuz mu? Şaşırtıcı derecede kolay. Muhtemelen neden her yerdeler. Rütbelerine katılarak bot lordlarımızı 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ışmak

Bu gözden geçirme, tercih edilen dil olarak Python'u kullanır. Python'un kullanım kolaylığı avantajları, diğer dillere kıyasla sahip olduğu hız eksikliklerinden daha ağır basar. Python'u hemen hemen her işletim sistemi için indirebilirsiniz. Kullanmak seçtiğiniz editör .





Python dağıtımları, adı verilen yardımcı programla ilişkilendirilir.

youtube'da izlenecek en iyi şeyler
pip

. Yazma sırasında, indirilebilecek 168.000'den fazla kitaplık bulunmaktadır.



pip

. Bugün oluşturacağınız botlar için sadece üç tanesine ihtiyaç var.

Komut satırından bu üç satırı kullanarak gerekli kütüphaneleri kurabilirsiniz.





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

Artık gerektiğinde bu kitaplıkları içe aktarabileceksiniz.

Uygulama Anahtarlarını ve Sırlarını Alma

Bilge bir filozof bir keresinde 'Sırlar, sırlar eğlenceli değildir. Sırlar, sırlar birini incitir.' Saygılarımla, botların sırlara ihtiyacı var. Botlarınızı kurmanın 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ı, simgeleri ve daha fazlasını (eğlenceli bir oyun gibi geliyor!) toplarken, hepsini 'credentials.py' adlı tek bir dosyaya koyun. Bu dosya şöyle görünecek:

# 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 bir gizlilik önerisi: Bu dosyaya herhangi bir kaynak denetimi yapmayın (örn. Git). Bu anahtarlara ve sırlara başka birinin sahip olmasını istemezsiniz. Bir sebepten dolayı sır olarak adlandırılırlar.

Twitter Erişimini Ayarlama

Node.js ile Twitter botu kurma kılavuzumuza göz atın, size Twitter uygulamanızı nasıl oluşturacağınızı gösterecek. Twitter'ın hesabınızı doğrulamasının ve bir spam hesabı oluşturmadığınızdan emin olmanın 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 belirteci sırrını kimlik bilgileri.py dosyanıza 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 özgeçmişinize mutlaka 'Reddit Kullanıcı Aracısı' koymalısınız.

Kayıt olmak seçtiğiniz Reddit hesabına. Şuraya gidin: uygulamalar tercihleri ​​sayfası ve Başka bir uygulama oluştur'u tıklayın . Kullanıcı aracınıza yararlı bir ad verin. Komut dosyası seçin uygulamanızın amacı için. Hakkında URL'si boş bırakılabilir. Yönlendirme kutusu için herhangi bir adresi girin.

Senden sonra Uygulama oluştur'a basın , uygulamalarınızın bir listesini içeren aşağıdaki ekran size sunulacaktır. Uygulama adınızın altındaki rakamlar, müşteri kimliğini temsil eder ve müşteri sırrı bunun altında bulunur. Bu değerleri kimlik bilgileri.py dosyanıza kopyalayın.

Instagram Erişimini Ayarlama

Instagram erişimi Twitter ve Reddit'ten farklıdır. 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.

Praw ile Reddit'e Erişmek

Karides kullanmak iki aşamalı bir işlemdir. İlk olarak, erişimi ayarlamak, Reddit'in praw yöntemine yapılan tek bir işlev çağrısıdır. Ardından, başlatılan nesne kullanılarak, new() yöntemi kullanılarak bir alt dizin araması yapılır.

import praw
from credentials 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
for submission in my_reddit.subreddit(sub_name).new(limit=max_posts):
print(submission.title)

Değiştir

sub_name

farklı alt dizinlerden gönderiler almak için değişken. Onun yerine

new()

gibi diğer yöntemler

hot()

gönderiler almak için kullanılabilir.

InstagramAPI Üzerinden Instagram Hashtag'lerini Arama

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

from InstagramAPI import InstagramAPI
from 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 karşılığına göre biraz daha karmaşıktır. Bu örnekte, komut dosyası, Instagram'dan çok büyük bir JSON yanıt nesnesi almak için getHashtagFeed'i kullanır.

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

get_hashtag = my_insta_api.getHashtagFeed(hashtag)
if get_hashtag != False:
for item in my_insta_api.LastJson['items']:
if 'caption' in item.keys() and 'text' in item['caption'].keys():
caption = item['caption']['text']
print(caption)

Sosyal Medyaya Resim Ekleyin

İleriye dönük olarak, komut dosyanızın bu hashtag beslemesindeki görüntüleri almasını isteyebilirsiniz. Bunu yapmak için JSON yanıtı arasında dolaşın ve her gönderiyle ilişkili medyayı 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)
if get_hashtag == False:
return images
for item in my_insta_api.LastJson['items']:
if item['media_type'] == 1 and 'image_versions2' in item.keys():
candidate = get_largest_image(item['image_versions2']['candidates'])
# get image
filename = self.save_image_from_candidate(candidate['url'])
if filename != '':
# get status, save as tuple
caption = get_caption(item)
images.append((filename, caption))
if len(images) >= num_images:
break
return images

Bu fonksiyonda kullanılan iki yardımcı fonksiyon vardır. Instagram, JSON yanıtında bir resim 'adayları' listesi 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(candidates):
candidate = {}
pixels = 0
for cand in candidates:
# pick the highest resolution one
res = cand['height']*cand['width']
if res > pixels:
pixels = res
candidate = cand
return candidate

İkinci olarak, görüntüye bağlantı bulunduğunda, içeriği bir dosyaya yazarak görüntüyü yerel olarak kaydedebilirsiniz. Kullanmak

requests

kütüphane bunu kolaylaştırır.

def save_image_from_candidate(url):
filename = ''
response = requests.get(url)
# check the response status code, 200 means good
if response.status_code == 200:
filename = url.split('/')[-1].split('?')[0]
with open(filename, 'wb') as f:
f.write(response.content)
return filename

Tweepy ile Medyayı Tweetleme

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

import tweepy
from credentials 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.

for tweet in tweepy.Cursor(tw_api.search,q='MakeUseOf').items(10):
try:
tweet.favorite()
tweet.retweet()
time.sleep(2)
except tweepy.TweepError as e:
print(e.reason)
except StopIteration:
break

Bu kütüphane ile daha birçok şey yapılabilir. Bu gözden geçirmeyi tamamlamak için,

get_images_from_hashtag

Görüntüleri ve altyazıları tweetlemek için daha önce yapılmış Instagram botunun işlevi.

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

# 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)
for submission in reddit_posts:
title = submission.title
url = 'www.reddit.com{}'.format(submission.permalink)
tweet_str = f'Reddit r/{sub} update:
{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)
except tweepy.TweepError as e:
print(e.reason)
except StopIteration:
break

Python Destekli Sosyal Medya Botunuz Hazır!

Artık medyayı bir siteden alıp diğerine gönderen bir sürü kodunuz var. Siz de karıştırıp eşleştirebilirsiniz. Tweetleri çekin ve Reddit'e gönderin. Alt dizinlere göndermek için Instagram resimleri toplayın. 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 sunucuda bir döngü içinde çalışmasını isteyeceksiniz. Bu, bir zamanlayıcı ile kendi bilgisayarınızda olabilir. Veya dolabınızda duran o eski Raspberry Pi'nin tozunu alın ve Pi için bu tatlı Twitter bot projelerine göz atın.

Paylaş Paylaş Cıvıldamak E-posta İşte FBI'ın Hive Ransomware için Uyarı Verme Nedeni

FBI, özellikle kötü bir fidye yazılımı türü hakkında bir uyarı yayınladı. İşte bu yüzden özellikle Hive fidye yazılımına karşı dikkatli olmanız gerekiyor.

Sonrakini Oku
İlgili konular
  • Programlama
  • piton
  • Sosyal Medya Botları
  • Kodlama Eğitimleri
Yazar hakkında Tom Johnsen(3 Makale Yayınlandı)

Tom, yazmaya, kolej futboluna (Gators'a git!), CrossFit'e ve Oxford virgüllerine tutkuyla bağlı Florida'dan (Florida Adamına sesleniyorum) bir Yazılım Mühendisidir.

Tom Johnsen'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın