Πώς να δημιουργήσετε Twitter, Instagram και Reddit Bots χρησιμοποιώντας Python

Πώς να δημιουργήσετε Twitter, Instagram και Reddit Bots χρησιμοποιώντας Python

Είναι το 2019. Έχετε ακούσει για bots. Υπάρχουν bots συνομιλίας, bots ηλεκτρονικού ταχυδρομείου, bots scraping web και bots κοινωνικών μέσων. Έχετε δημιουργήσει ακόμα ένα bot; Είναι εκπληκτικά εύκολο. Μάλλον γιατί είναι παντού. Αγκαλιάστε τους άρχοντες bot μας συμμετέχοντας στην τάξη τους.





Σε αυτό το άρθρο, θα σας δείξω πώς μπορείτε να αξιοποιήσετε την Python για να αλληλεπιδρά αυτόματα με τους λογαριασμούς σας στο Twitter, το Reddit και το Instagram.





Εργασία με την Python

Αυτή η περιήγηση χρησιμοποιεί την Python ως γλώσσα επιλογής της. Τα πλεονεκτήματα ευκολίας χρήσης της Python υπερτερούν των ελλείψεων ταχύτητας που έχει σε σύγκριση με άλλες γλώσσες. Μπορείτε να κατεβάσετε το Python για σχεδόν οποιοδήποτε λειτουργικό σύστημα. Χρήση ο συντάκτης της επιλογής σας Το





Οι διανομές Python συνδέονται με το βοηθητικό πρόγραμμα που ονομάζεται

κατεβάστε μουσική από το ipod στον υπολογιστή
pip

Το Κατά τη στιγμή της σύνταξης, υπάρχουν περισσότερες από 168.000 βιβλιοθήκες διαθέσιμες για λήψη



pip

Το Για τα bots που θα δημιουργήσετε σήμερα, χρειάζονται μόνο τρία.

Από τη γραμμή εντολών, μπορείτε να εγκαταστήσετε τις βιβλιοθήκες που χρειάζονται χρησιμοποιώντας αυτές τις τρεις γραμμές.





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

Τώρα θα μπορείτε να εισαγάγετε αυτές τις βιβλιοθήκες όπου χρειάζεται.

Λήψη κλειδιών και μυστικών εφαρμογής

Ένας σοφός φιλόσοφος είπε κάποτε «Τα μυστικά, τα μυστικά δεν είναι διασκεδαστικά». Μυστικά, μυστικά βλάπτουν κάποιον ». Με σεβασμό, τα bots χρειάζονται μυστικά. Το επόμενο βήμα στη ρύθμιση των bots σας είναι να τους επιτρέψετε την πρόσβαση στο API κάθε ιστότοπου. Για να το κάνετε αυτό, θα χρειαστείτε ένα κλειδί ή μυστικό εφαρμογής.





Καθώς συλλέγετε κλειδιά, μυστικά, μάρκες και άλλα (ακούγεται σαν διασκεδαστικό παιχνίδι!), Τοποθετήστε τα όλα σε ένα ενιαίο αρχείο που ονομάζεται «credentials.py». Αυτό το αρχείο θα μοιάζει κάπως έτσι:

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

Πολύ σημαντική πρόταση απορρήτου: μην δεσμεύεστε σε αυτό το αρχείο κανένα έλεγχο πηγής (π.χ. Git). Δεν θέλετε κανένας άλλος να έχει αυτά τα κλειδιά και τα μυστικά. Λέγονται μυστικά για κάποιο λόγο.

Ρύθμιση της πρόσβασης στο Twitter

Ελέγξτε τον οδηγό μας για τη δημιουργία ενός Twitter bot με το Node.js θα σας δείξει πώς να δημιουργήσετε την εφαρμογή Twitter. Λάβετε υπόψη ότι το Twitter θα χρειαστεί λίγο χρόνο για να επαληθεύσει τον λογαριασμό σας και να διασφαλίσει ότι δεν δημιουργείτε λογαριασμό ανεπιθύμητου περιεχομένου.

Αφού ακολουθήσετε αυτά τα βήματα, αντιγράψτε το κλειδί καταναλωτή, το μυστικό καταναλωτή, το διακριτικό πρόσβασης και το μυστικό πρόσβασης διακριτικού στο αρχείο διαπιστευτηρίων σας.py.

Ρύθμιση της πρόσβασης Reddit

Το να αποκτήσετε το αναγνωριστικό και το μυστικό του πελάτη Reddit είναι πολύ παρόμοιο με το Twitter. Θα χρειαστεί να καταχωρίσετε μια εφαρμογή ως Reddit User Agent. Αφού το κάνετε αυτό, θα πρέπει να βάλετε απολύτως το «Reddit User Agent» στο βιογραφικό σας.

Συνδεθείτε στον λογαριασμό Reddit της επιλογής σας. Πλοηγηθείτε στο σελίδα προτιμήσεων εφαρμογών και Κάντε κλικ στη δημιουργία άλλης εφαρμογής Το Ονομάστε τον παράγοντα χρήστη σας κάτι χρήσιμο. Επιλέξτε σενάριο για τους σκοπούς της εφαρμογής σας. Το URL περίπου μπορεί να μείνει κενό. Συμπληρώστε οποιαδήποτε διεύθυνση για το πλαίσιο ανακατεύθυνσης.

Μετά απο εσένα Πατήστε δημιουργία εφαρμογής , η παρακάτω οθόνη θα σας παρουσιαστεί με μια λίστα με τις εφαρμογές σας. Τα ψηφία κάτω από το όνομα της εφαρμογής σας αντιπροσωπεύουν το αναγνωριστικό πελάτη και το απόρρητο πελάτη βρίσκεται κάτω από αυτό. Αντιγράψτε αυτές τις τιμές στο αρχείο credentials.py.

Ρύθμιση της πρόσβασης στο Instagram

Η πρόσβαση στο Instagram διαφέρει από το Twitter και το Reddit. Αντί να καταχωρίσετε μια εφαρμογή, χρησιμοποιείτε το όνομα χρήστη και τον κωδικό πρόσβασής σας. Προτείνω να δημιουργήσετε έναν ξεχωριστό δημόσιο λογαριασμό και να χρησιμοποιήσετε αυτές τις λεπτομέρειες για το bot σας.

Πρόσβαση στο Reddit With Praw

Η χρήση γαρίδας είναι μια διαδικασία δύο βημάτων. Πρώτον, η ρύθμιση της πρόσβασης είναι μια μόνο κλήση συνάρτησης στη μέθοδο Reddit του praw. Στη συνέχεια, χρησιμοποιώντας το αρχικοποιημένο αντικείμενο, η αναζήτηση ενός subreddit γίνεται χρησιμοποιώντας τη νέα μέθοδο ().

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)

Αλλαξε το

sub_name

μεταβλητή για λήψη αναρτήσεων από διαφορετικές υποδιαιρέσεις. Αντί

new()

, άλλες μεθόδους όπως π.χ.

hot()

είναι διαθέσιμα για λήψη αναρτήσεων.

Αναζήτηση Hashtags Instagram μέσω InstagramAPI

Το πρώτο βήμα στη χρήση του API Instagram είναι η δημιουργία ενός αντικειμένου με το αναγνωριστικό πελάτη και το απόρρητο. Αμέσως μετά, καλέστε τη μέθοδο σύνδεσης () για να ολοκληρώσετε τη ρύθμιση.

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 είναι λίγο πιο περίπλοκη από το αντίστοιχο του Reddit. Σε αυτό το παράδειγμα, το σενάριο χρησιμοποιεί το getHashtagFeed για να πάρει ένα πολύ μεγάλο αντικείμενο απόκρισης JSON από το Instagram.

Αναζητώντας την απάντηση, το σενάριο αναζητά κείμενο λεζάντας και στη συνέχεια εκτυπώνεται στην οθόνη για να το δείτε.

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)

Προσθέστε εικόνες στα κοινωνικά μέσα

Προχωρώντας, μπορεί να θέλετε το σενάριό σας να λαμβάνει τις εικόνες σε αυτήν τη ροή hashtag. Για να το κάνετε αυτό, περιηγηθείτε στην απάντηση JSON και βρείτε τα μέσα που σχετίζονται με κάθε δημοσίευση. Ακολουθεί μια εφαρμογή για την εξαγωγή πληροφοριών από την απάντηση JSON:

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

Υπάρχουν δύο λειτουργίες βοηθού που χρησιμοποιούνται σε αυτήν τη λειτουργία. Το Instagram στέλνει μια λίστα με την εικόνα 'υποψήφιοι' στην απάντηση JSON. Επιλέξτε τη μεγαλύτερη από αυτές τις εικόνες, έτσι ώστε τα μέσα να εμφανίζονται στην υψηλότερη ανάλυση.

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

Δεύτερον, μόλις βρεθεί ο σύνδεσμος προς την εικόνα, μπορείτε να αποθηκεύσετε την εικόνα τοπικά γράφοντας το περιεχόμενο σε ένα αρχείο. Χρησιμοποιώντας το

requests

η βιβλιοθήκη το κάνει απλό.

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

Tweeting Out Media Με Tweepy

Πρώτον, θα πρέπει να ρυθμίσετε την πρόσβαση στο Twitter χρησιμοποιώντας τα μυστικά και τα κλειδιά σας.

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)

Η δημιουργία ενός γενικού bot retweet γίνεται σε λίγες μόνο γραμμές.

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

Πολλά άλλα πράγματα μπορούν να γίνουν με αυτήν τη βιβλιοθήκη. Για να ολοκληρώσετε αυτήν την περιήγηση, μπορείτε να χρησιμοποιήσετε το

get_images_from_hashtag

Λειτουργία από το Instagram bot που έγινε νωρίτερα για να βγάλει tweet εικόνες και λεζάντες.

Επιπλέον, το Twitter bot σας μπορεί να αναζητήσει στο Reddit νέες αναρτήσεις και να κάνει tweet σε αυτές επίσης. Για να συνδυάσετε και τις δύο αυτές λειτουργίες μοιάζει με αυτό:

# 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

Το bot κοινωνικής δικτύωσης που υποστηρίζει Python είναι έτοιμο!

Έτσι, τώρα έχετε έναν σωρό κώδικα που τραβά τα μέσα από έναν ιστότοπο και δημοσιεύει σε άλλο. Μπορείτε επίσης να συνδυάσετε και να ταιριάξετε. Τραβήξτε tweets και δημοσιεύστε στο Reddit. Συλλέξτε εικόνες Instagram για ανάρτηση σε subreddits. Δημιουργήστε ένα bot και γίνετε μέρος του πραγματικού διαδικτύου.

Τέλος, για να αυτοματοποιήσετε πλήρως αυτήν τη διαδικασία, θα θέλετε τα bots σας να εκτελούνται σε έναν βρόχο σε έναν διακομιστή. Αυτό θα μπορούσε να είναι στον δικό σας υπολογιστή με χρονοδιακόπτη. Or, ξεσκονίστε το παλιό Raspberry Pi που υπήρχε στο ντουλάπι σας και δείτε αυτά τα γλυκά έργα του Twitter για το Pi.

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Να γιατί το FBI εξέδωσε προειδοποίηση για ransomware Hive

Το FBI εξέδωσε προειδοποίηση για ένα ιδιαίτερα δυσάρεστο είδος ransomware. Να γιατί πρέπει να είστε ιδιαίτερα επιφυλακτικοί με το ransomware της Hive.

Διαβάστε Επόμενο
Σχετικά θέματα
  • Προγραμματισμός
  • Πύθων
  • Bots κοινωνικής δικτύωσης
  • Φροντιστήρια κωδικοποίησης
Σχετικά με τον Συγγραφέα Τομ Τζόνσεν(3 άρθρα δημοσιεύθηκαν)

Ο Τομ είναι Μηχανικός Λογισμικού από τη Φλόριντα (φωνάξτε στο Florida Man) με πάθος για τη συγγραφή, το ποδόσφαιρο στο κολέγιο (πάτε Gators!), CrossFit και κόμματα της Οξφόρδης.

Περισσότερα από τον Tom Johnsen

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή