-
Notifications
You must be signed in to change notification settings - Fork 0
/
wp-twitterbot.py
78 lines (56 loc) · 2.2 KB
/
wp-twitterbot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from twython import Twython, TwythonError
import json
from random import randint
import urllib.request
import ssl #may or may not need this
import requests
ssl._create_default_https_context = ssl._create_unverified_context #needed for MacOS Sierra. Not required on Pixel / Raspberry Pi
#Put your Twitter credentials here!
#https://apps.twitter.com/
app_key = ''
app_secret = ''
oauth_token = ''
oauth_token_secret = ''
#Your Wordpress Jetpack REST API Endpoint for querying posts
#https://developer.wordpress.com/docs/api/1.1/get/sites/%24site/posts/
#In this example, we are querying post type recipe, 100 posts, and ordering in descending order
url = 'https://public-api.wordpress.com/rest/v1/sites/bakingbrew.com/posts/?type=recipe&number=100&order=DESC';
#make the request
response = urllib.request.urlopen(url)
#decode json
data = json.loads(response.read().decode('utf-8'))
#returns number of posts returned from response [<--rolls off the tongue weird]
found_posts = data['found']
#returns a random number from 1 to number of returned posts
rand_num = randint(0, found_posts)
#prints random number
print("Your random number is: ")
print(rand_num)
#return recipe post title
title = data['posts'][rand_num]['title']
#prints recipe post title
print("The chosen bread!!!!: " + title)
#returns recipe post url
recipe_url = data['posts'][rand_num]['URL']
#creates the tweet
the_tweet = title + ' ' + recipe_url
#returns recipe post image url
#looks through media and finds the image containing "...main.jpg"
x = data['posts'][rand_num]['attachments']
for n in x.values():
if 'main.jpg' in n['URL']:
media_url = n['URL']
#saves recipe post image url to local folder as temp.jpg
urllib.request.urlretrieve(media_url, "temp.jpg")
#opens the image
photo = open('temp.jpg', 'rb')
#Twitter authentication
twitter_auth = Twython(app_key, app_secret, oauth_token, oauth_token_secret)
#upload image to twitter
media_now = twitter_auth.upload_media(media=photo)
print("Posting your terrible recipe to twitter!")
#posts to twitter
#status is post title, media is the uploaded post image
twitter_auth.update_status(status=the_tweet, media_ids=[media_now['media_id']])
#print success
print("Open a beer! Your work is done")