Von Twitter zu Identi.ca mit Python|Twitter to Identi.ca with Python
Ich bin bei Twitter und bei Identi.ca angemeldet. Identi.ca ist OpenSource und damit vorzuziehen. Allerdings gibt es bei Twitter viel mehr Menschen (oder Bots) denen ich folge. Bei Identi.ca sind aber auch Leute, denen ich folgen will. Von Identi.ca zu Twitter kann man von Haus aus schreiben, anders herum aber nicht. Nach ein wenig suchen hab ich eine Anleitung gefunden, wie man mit Twitterfeed von Twitter zu Identi.ca schreiben kann. Leider haben die seit ein paar Tagen Probleme mit Identi.ca, so dass das nicht mehr funktioniert.
Also hab ich kurz ein wenig Zeit investiert und ein kleines Python-Script geschrieben, das bei Twitter meine Tweets holt und zu Identi.ca packt. Benutzt hab ich dazu tweethon, da das im Gegensatz zu python-twitter auch identi.ca unterstützt.
#!/usr/bin/python
######### ######### ########## ######### ######### ########## #########
# "THE BEER-WARE LICENSE" (Revision 42):
# <elm+blog -at- skweez.net> wrote this file. As long as you retain
# this notice you can do whatever you want with this stuff. If we
# meet some day, and you think this stuff is worth it, you can buy
# me a beer in return. elm
######### ######### ########## ######### ######### ########## #########
import tweethon, sys, os.path
from urllib2 import HTTPError, URLError
TwitterUser = "kackfratzen"
TwitterIdFile = "twitterid"
IdenticaUser = "kackfratzen"
IdenticaPassword = "..."
IdenticaUrl = "https://identi.ca/api"
if not os.path.isfile(TwitterIdFile):
lastTweetId = 0
else:
f = open(TwitterIdFile, 'r')
lastTweetId = f.read()
f.close()
twitter = tweethon.Api()
identica = tweethon.Api(username=IdenticaUser, password=IdenticaPassword, base_url=IdenticaUrl)
try:
tweets = twitter.GetUserTimeline (user=TwitterUser ,since_id=lastTweetId)
except (URLError, HTTPError):
sys.exit(1)
if len(tweets) == 0:
sys.exit(1)
lastTweetId = str(tweets[0].id)
tweets.reverse()
for tweet in tweets:
identica.PostUpdate(tweet.text)
f = open(TwitterIdFile, 'w')
f.write(lastTweetId)
f.close()Jetzt noch bei cron eintragen, dass es alle 30 Minuten ausgeführt wird:
*/30 * * * * ~/twitter2identica.py