seeseekey.net - Invictus Deus Ex Machina

Bei Tweepy handelt es sich um eine freie unter der MIT-Lizenz lizenzierte Twitterbibliothek für Python, deren offizielle Webseite unter tweepy.org zu finden ist. Unter anderem wird diese Bibliothek für den Twitter Radiergummi genutzt. Im Gegensatz zu früher hat sich die Installation der Bibliothek etwas verändert. Hierfür sollte man jetzt pip nutzen. Dabei handelt es sich um ein Tool zur Paketverwaltung unter Python. Zur Installation gibt man im Terminal folgendes ein:

curl -O https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

Damit ist pip installiert und kann genutzt werden:

sudo pip install tweepy

Pip installiert hiermit die Bibliothek Tweety und löst alle Abhängigkeiten auf, so das diese anschließend systemweit genutzt werden kann.

Wenn eine Software auf den Namen Jasper hört, dann klingt das irgendwie ein bisschen nach Jarvis aus dem Film Iron Man. Und genau dies bietet die Jasper. Die Steuerung des Rechners mittels der Stimme. Dabei bietet Jasper die Möglichkeit auf Kommandos zu reagieren oder informiert den Nutzer wenn bestimmte Ereignisse eingetreten sind.

Technisch setzt Jasper dabei unter anderem auf die Projekte Pocketsphinx und Phonetisaurus auf. Bevorzugt entwickelt wurde Jasper dabei für Rechner wie den Raspberry Pi, wie man im Video sehen kann. Die Autoren der Software sind die Priceton-Studenten Shubhro Saha und Charlie Marsh. Als Programmiersprache kam Python zum Einsatz. Jasper verfügt eine API mit welcher man eigene Erweiterungen für das System schreiben kann.

Jasper ist freie Software und unter der MIT-Lizenz lizenziert. Die offizielle Webseite ist unter jasperproject.github.io zu finden. Auch der Quelltext ist auf GitHub verfügbar.

Es gibt einige Webmail Clients unter freier Lizenz, wie z.B. Roundcube und SquirrelMail. Allerdings wird man feststellen, das die Auswahl nicht sonderlich groß ist. Ein neuer Stern am Webmail-Himmel ist Mailpile welches unter http://www.mailpile.is/ zu finden ist.

mailpile.is

Mailpile orientiert sich dabei vom Interface her an Google Mail, was man auf den ersten Blick erkennt. Es bietet dabei natürlich Dinge wie eine Suche, verschiedene Importfunktionen, Tag-Support, eine Kontaktverwaltung und soll eine integrierte PGP Verschlüsselung und Signierung enthalten. Dadurch wird das ganze Paket wesentlich interessanter, da eine eingebaute Verschlüsslung, die Anwendung für Jedermann enorm vereinfacht.

Für das Hosting benötigt man einen Pythonstack, so das es sich nicht für das normale LAMP Webhosting Paket eignet (es sei denn das P steht für Python). Das ist schade, da dadurch sicherlich der Kreis der Benutzer eingeschränkt ist. Mailpile ist freie Software und steht unter der AGPL. Der Quelltext ist auf Github zu finden. Im Moment wird auf Indiegogo Geld für die weitere Entwicklung des Clients gesammelt. Wem das Projekt also zusagt, sollte die Brieftasche zücken.

Das schöne an zentralen Sammlungen ist das man sie relativ einfach auswerten kann. In diesem Fall geht es um die Auswertung der GitHub Repositories. Wie der Name „Popular Convention“ andeutet geht es darum aus den Quelltexten bestimmte Informationen über bevorzugte Konventionen wie z.B. Leerzeichen vs. Tabs zu extrahieren.

Popular Convention und Scala

Das Ergebnis kann man sich auf der Webseite http://sideeffect.kr/popularconvention/ für die Sprachen Javascript, Java, Python und Scala anschauen. Die Software zur Auswertung ist dabei freie Software und steht unter der MIT Lizenz und kann unter https://github.com/outsideris/popularconvention bezogen werden.

Wer mal schnell einen HTTP Server unter Linux aufsetzen möchte, der sollte einfach in das entsprechende Verzeichnis gehen und dort:

python -m SimpleHTTPServer

ausführen. Anschließend ist dieses Verzeichnis per HTTP (standardmäßig unter Port 8000) erreichbar. Möchte man einen anderen Port benutzen so gibt man einfach die entsprechende Portnummer als letztes Argument mit an.

Weitere Informationen gibt es unter:
http://docs.python.org/library/simplehttpserver.html

ChronoTweet ist ein kleines Pythonskript welches alle Twittereinträge innerhalb einer bestimmten Zeitspanne wieder löscht. Da Twitter nun nur noch Authentifizierung mittels OAuth zulässt, habe ich das ganze mal daran angepasst. Das Skript steht dabei unter der GPLv3 Lizenz und ist in der aktuellen Version unter http://code.google.com/p/seeseekey/source/browse/trunk/Python/chronotweet.py zu finden. Viel Spaß damit :)

Aus meinen Bedürfnis heraus bestimmte Tweets nach einer bestimmten Zeit wieder zu löschen entstand folgendes kleines Skript, welches hier nun in der Version 0.30 vorliegt. Es wurde ein Fehler behoben der verhinderte das die Tweets gelöscht werden wenn man zu viele Tweets in der vorgebenden Zeit geschrieben hat:

# ChronoTweet v0.30
# http://seeseekey.net
#
# Installation
# http://pypi.python.org/pypi/simplejson installieren (apt-get install python-simplejson)
# http://code.google.com/p/python-twitter/ installieren
# wget http://python-twitter.googlecode.com/files/python-twitter-0.6.tar.gz
# tar -xf python-twitter-0.6.tar.gz
# cd python-twitter-0.6
# python setup.py build
# python setup.py install
#
# chrono_tweet - Dateirechte 700
# crontab -e

# Import
import time
import twitter

# Optionen
twitter_account_name = "seeseekey"
twitter_account_password = "1234567890"

remove_time_in_seconds = 151200 # 42 Stunden

hashtag_sensitive=False
hashtag="#ChronoTweet"

# Programmlogik
api = twitter.Api(username=twitter_account_name, password=twitter_account_password)
stati = api.GetUserTimeline(twitter_account_name, 9999999)

for s in stati: #Fuer jeden Status
	currentTime = time.mktime(time.localtime(time.time()))
	createTime = s.GetCreatedAtInSeconds()
	diffTime = currentTime-createTime
	
	if diffTime > remove_time_in_seconds: #Wenn Zeit groesser remove_time_in_seconds
	
		if hashtag_sensitive==True:
			if s.text.find(hashtag) != -1: #Wenn ChronoTweet
				print(s.id)
				api.DestroyStatus(s.id)
		else:
			print(s.id)
			api.DestroyStatus(s.id)

Aus meinen Bedürfnis heraus bestimmte Tweets nach einer bestimmten Zeit wieder zu löschen entstand folgendes kleines Skript, welches hier nun in der Version 0.20 vorliegt in welcher man einstellen kann nach welchem Hashtag gesucht werden soll und ob überhaupt nach einem Hashtag gesucht werden soll:

# ChronoTweet v0.20
# http://seeseekey.net
#
# Installation
# http://pypi.python.org/pypi/simplejson installieren (apt-get install python-simplejson)
# http://code.google.com/p/python-twitter/ installieren
# wget http://python-twitter.googlecode.com/files/python-twitter-0.6.tar.gz
# tar -xf python-twitter-0.6.tar.gz
# cd python-twitter-0.6
# python setup.py build
# python setup.py install
#
# chrono_tweet - Dateirechte 700
# crontab -e

# Import
import time
import twitter

# Optionen
twitter_account_name = "seeseekey"
twitter_account_password = "123456789"

remove_time_in_seconds = 151200 # 42 Stunden

hashtag_sensitive=True
hashtag="#ChronoTweet"

# Programmlogik
api = twitter.Api(username=twitter_account_name, password=twitter_account_password)
stati = api.GetUserTimeline(twitter_account_name)

for s in stati: #Fuer jeden Status
	currentTime = time.mktime(time.localtime(time.time()))
	createTime = s.GetCreatedAtInSeconds()
	diffTime = currentTime-createTime
	
	if diffTime > remove_time_in_seconds: #Wenn Zeit groesser remove_time_in_seconds
		if hashtag_sensitive==True:
			if s.text.find(hashtag) != -1: #Wenn ChronoTweet
				print(s.id)
				api.DestroyStatus(s.id)
		else:
			print(s.id)
			api.DestroyStatus(s.id)

Aus meinen Bedürfnis heraus bestimmte Tweets nach einer bestimmten Zeit wieder zu löschen entstand folgendes kleines Skript:

# ChronoTweet v0.10
# http://seeseekey.net
#
# Installation
# http://pypi.python.org/pypi/simplejson installieren (apt-get install python-simplejson)
# http://code.google.com/p/python-twitter/ installieren
# wget http://python-twitter.googlecode.com/files/python-twitter-0.6.tar.gz
# tar -xf python-twitter-0.6.tar.gz
# cd python-twitter-0.6
# python setup.py build
# python setup.py install
#
# chrono_tweet - Dateirechte 700
# crontab -e

# Import
import time
import twitter

# Optionen
twitter_account_name = "seeseekey"
twitter_account_password = "1234567890"

chrono_tweet_remove_time_in_seconds = 151200 # 42 Stunden

# Programmlogik
api = twitter.Api(username=twitter_account_name, password=twitter_account_password)
stati = api.GetUserTimeline(twitter_account_name)

for s in stati: #Fuer jeden Status
currentTime = time.mktime(time.localtime(time.time()))
createTime = s.GetCreatedAtInSeconds()
diffTime = currentTime-createTime

if diffTime > chrono_tweet_remove_time_in_seconds:
if s.text.find("#ChronoTweet") != -1: #Wenn #ChronoTweet
print(s.id)
api.DestroyStatus(s.id)

Das Skript überprüft ob Einträge mit dem Hashtag #ChronoTweet älter als 42 Stunden sind und löscht sie dann wenn dies der Fall ist.