Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # thirstea
- # Richard Lewei Huang, Zhang Zhan
- # Digital Farm, NYU Shanghai Interactive Media Arts
- from twython import Twython
- twitter = Twython("2Vnnuk7ApcWXDYVc1Fw0Bncpp", "0YA8vvaJ9stjfmWYrz39df1vPqOWSqkTsPVdBiIwL1c1Uk02XV",
- "804236407212417024-6b0rWjuUnKQ4wdzDPRUhv3QVs3ltDPW", "wbzNgGbFFskTHj9uksgSn8AfYNiFYTBX9MNPDPuAwWcUn")
- import schedule
- import time
- import serial
- import urllib
- from bs4 import BeautifulSoup
- import requests
- import random
- import twittertemplates
- camera_address = "http://10.209.7.224:8080/"
- ser = serial.Serial('/dev/ttyACM0', 9600)
- newfollowers = 0
- deltafollowers = 0
- def get_follower_count():
- print ("getting number of followers...")
- followers = twitter.get_followers_ids(screen_name = "ThirsteaPlant")
- followers_count = len(followers['ids'])
- return followers_count
- def get_follower_count_soup():
- print ("getting number of followers via BeautifulSoup...")
- username='thirsteaplant'
- url = 'https://www.twitter.com/'+username
- r = requests.get(url)
- soup = BeautifulSoup(r.content)
- f = soup.find('li', class_="ProfileNav-item--followers")
- title = f.find('a')['title']
- num_followers = int(title.split(' ')[0].replace(',',''))
- return num_followers
- def get_photo():
- print ("getting photo from phone...")
- photo_file = urllib.URLopener()
- photo_file.retrieve(camera_address + "shot.jpg", "shot.jpg")
- print ("photo download successful. ")
- #photo download automatically overwrites the last photo so no need to handle overwrite issues.
- def post_twitter_with_photo(text, photo_name):
- photo = open(photo_name, 'rb')
- try:
- response = twitter.upload_media(media = photo)
- twitter.update_status(status=text, media_ids = [response['media_id']])
- except TwythonError as e:
- print e
- def water_plant(seconds):
- # water the plant by turning on the motor via serial, then pause the program for
- # [seconds] before turning the motor off via serial. With every follower the plant
- # gets 30 seconds of water - which is not a lot.
- print("watering plant")
- ser.write("a")
- time.sleep(seconds * 30 / 2) #*30/2
- get_photo() # try to grab a photo while the water is running
- time.sleep(seconds * 30 / 2) #*30/2
- ser.write("b")
- def update_task():
- global newfollowers
- global deltafollowers
- global existingfollowers
- print ("updating twitter follower information")
- get_photo()
- print ("getting photos")
- newfollowers = get_follower_count()
- print ("latest followers count: ")
- print (newfollowers)
- deltafollowers = newfollowers - existingfollowers
- print ("new followers: ")
- print (deltafollowers)
- if (deltafollowers > 0):
- water_plant( deltafollowers )
- post_twitter_with_photo("just got " + str(deltafollowers) + " new followers. " + random.choice(twittertemplates.remarks) , "shot.jpg")
- existingfollowers = newfollowers
- else:
- print ("no new followers, complaining...")
- post_twitter_with_photo( random.choice(twittertemplates.remarks), "shot.jpg" )
- #initialising data and welcome output
- print ("Thirstea Plant Twitter Bot initialising...")
- newfollowers = get_follower_count()
- print ("currently I have this number of followers")
- print newfollowers
- existingfollowers = newfollowers
- deltafollowers = newfollowers - existingfollowers
- print ("deltafollowers")
- print deltafollowers
- schedule.every(2).minutes.do(update_task)
- while True:
- schedule.run_pending()
- time.sleep(1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement