Inhaltsverzeichnis
Shacklaf
shacklaf ist der twitter-account des Lost and Found Tisches im shackspace. Er nimmt eine Direct Message entgegen und postet sie aufgehuebscht auf die Mitglieder Mailingliste.
Wie benutze ich es?
Erstmal musst du den twitter-account dazu bekommen dir zu folgen, dazu fragst du am besten momo, das geht leider noch nicht automagisch.
Sobald dir der Account folgt schickst du ihm eine Direct Message (DM) mit einer einfachen beschreibung des Gegenstands (z.B. Regenschirm) und einem Link zum Foto des Objekts. Schon ist die Magie geschehen, und der Account postet es automagisch auf die Mitglieder Mailingliste.
Mein Twitterclient ist kacke
Diverse Twitterclients unterstuetzen keine DMs mit Bildern im Anhang, doch du kannst ihn austricksen indem du einen normalen Tweet schreibst, und ein Bild anhaengst. Beispiel:
d shack_laf Regenschirm
Kudos
Jan: fuer die Idee
momo: fuer den Code
Code
import time import smtplib from email.mime.text import MIMEText #initiate twitter API api = twitter.Api() api = twitter.Api( consumer_key='XXXX', consumer_secret='XXXX', access_token_key='XXXX', access_token_secret='XXXX') newest_dm = '' #check for direct messages def update_dms(): global newest_dm fetched_dms = api.GetDirectMessages() current_newest_dm = fetched_dms[0] if newest_dm == '' : print 'initialized!' newest_dm = current_newest_dm elif newest_dm != current_newest_dm: print 'new dm!' #print current_newest_dm.text newest_dm = current_newest_dm send_email() else: print 'No Update' def compose_message(): msg = newest_dm.sender_screen_name+"[0]:\n"+newest_dm.text+"\n\nVon dem abgebildetem Gegenstand sind Zweck oder Besitzer unbekannt, bitte hilf bei der Identifizierung.\n\n[0] angegeben ist der Twitter Account (https://twitter.com/#!/"+newest_dm.sender_screen_name+")" return msg def send_email(): sender = 'lost_and_found@mo2-systems.com' recipient = 'mitglieder@lists.shackspace.de' msg = MIMEText(compose_message()) msg['Subject'] = "[Lost and Found] "+newest_dm.text msg['From'] = sender msg['To'] = recipient #debug #print msg s = smtplib.SMTP('localhost') s.sendmail(sender, recipient, msg.as_string()) s.quit() return msg while True: update_dms() time.sleep(30)