Sie durchsuchen die Kategorie ‘Programmieren‘

Facebook Application Blocker: Liste der geblockten Anwendungen in Planung

Mittwoch, den 11. August 2010

Derzeit bin ich dabei meine Chrome Extension “Facebook Application Blocker” zu erweitern. Momentan ist es etwas umständlich neue Applikationen auf die Whitelist zu setzen. Um dies bewerkstelligen zu koennen muss zunaechst das Filtern der Applikations-Postings deaktiviert werden. Erst anschliessend lassen sich neue Applikationen in die Whitelist aufnehmen.

Da mir dies zu umstaendlich erscheint, arbeite ich daran die Extension um eine Funktion namens “Fundgrube” zu erweitern. Diese soll halbtransparent unten links angezeigt werden, sobald Applikations-Postings gefunden wurden und diese auflisten. Dort ist es dann ebenfalls moeglich diese der Whitelist hinzuzufuegen beziehnungweise davon zu entfernen.

Die aktuelle Testversion davon sieht so aus (klicken um das Bild zu vergroessern):
found-box

Ist die Maus nicht ueber der Fundgrube, dann wird diese halbtransparent dargestellt, so dass diese auch bei kleineren Bildschirmen nicht stoerend ins Gewicht faellt. Nichts desto trotz wird, sollte euch die Fundgrube stoeren, diese deaktiviert (und natuerlich auch wieder aktiviert) werden koennen.

Auf kleineren Bildschirmen koennte das dann so aussehen:
found-box-overlay-hover
bzw.
found-box-overlay

Alles in allem sollte es so leichter sein seine persoenliche Whitelist zu pflegen. Falls noch wer Ideen oder Anregungen hat, dann nur her damit. Kommentare sind gerne gesehen.

Facebook-App-Blocker als Chrome Erweiterung veroeffentlicht

Freitag, den 21. Mai 2010

facebook-application-blocker-logo-small Nachdem ich neulich ein Skript veroeffentlicht habe, mittels diesem man die Anwendungenspostings in Facebook ausblenden lassen kann, habe ich dieses etwas ausgeweitet und als Erweiterung/Extension fuer Googles Browser Chrome veroeffentlicht. Dieses kann direkt bei Google heruntergeladen werden.
main_menu
Die neusten Funktionen sind eine grafische Oberflaeche, die direkt in die Facebook-Seite integriert ist sowie einige Einstellmoeglichkeiten. Dazu gehoert unter anderem eine Whitelist, mittels der geregelt werden kann welche benutzerdefinierten Anwendungen nicht geblockt werden sollen, sowie das farbige Hervorheben von Applikationspostings um diese sofort als solche zu erkennen. Mehr dazu findet ihr auf der eigens zu der Extension verfassten Seite auf meinem Blog (englischsprachig), oder direkt bei Google in der Extension-Gallery.

Facebook – Laestige Applikationen aussperren mit Chromium

Donnerstag, den 13. Mai 2010

Vor einigen Tagen hatte ich bereits darueber berichtet, dass mir bei Facebook die Anwendungen ungeheuer auf die Nerven gehen, die sich ungefragt in den eigenen Neuigkeiten einmisten. Jede Anwendung muss einzeln blockiert werden um diese fuer die Zukunft zu ignoieren. Facebook scheint daran auch nichts aendern zu wollen.

Nun bin ich vor kurzem ueber eine Erweiterung fuer Chromium/Google Chrome gestossen, die sich Personalized Web nennt. Diese Applikation erlaubt es den Quelltext von Webseiten in Chromium zu veraendern. Sie bietet auch die Eigenschaften eigenen Code auszufuehren. Perfekt dachte ich mir und machte mich an die Arbeit mir etwas zu ueberlegen um mich der laestigen Facebook Anwendungen zu entledigen.

Die Theorie

Schaut man in den Facebook-Quelltext und analysiert diesen, stellt man fest, dass alle Eintraege die auf der Pinnwand (egal ob die eigene oder bei anderen) gemacht werden das Div-Elternelement mit der ID profile_minifeed besitzen, d.h. direkte Kind-Elemente davon sind. Weiterhin macht es uns Facebook gluecklicherweise einfach die "boesen" Eintraege, welche ueber Applikationen gemacht wurden, von den "guten", naemlich den normalen Eintraegen, zu unterscheiden. Facebook verwendet ein Attribut namens data-ft in dem, sofern der Eintrag von einer Applikation stammt, ein app_id vorkommt. Ein Beispiel eines solchen Elements koennte so aussehen:

HTML:
  1. <div id="div_story_499681885_101495166563750" data-ft="{"src":"9","sty":"63","actrs":"1152153362","fbid":"121006254577135","s_obj":"9","s_edge":"1","s_prnt":"9","app_id":"65496494327"}">(...)</div>

Das Tolle daran ist, dass nur die von Applikationen erstellten Eintraege den app_id-String aufweisen. Die Idee ist nun mittels einem Script, welches clientseitig ausgefuehrt wird, also via JavaScript, die Kinder zu loeschen auf die dieses Kriterium zutrifft und damit die nervigen Eintraege zu verstecken.

Die Praxis

In der Praxis braucht es erstmal die Moeglichkeit beim Laden der Facebook-Seite ein Skript auszufuehren, welches die oben genannte Aufgabe uebernimmt. Dazu verwende ich die oben vorgestellte Erweiterung fuer Chromium, mittels der es moeglich ist den Quellcode von Webseiten on-the-fly zu manipulieren. Mittels diesem schiebe ich Facebook das folgende Script unter:

JavaScript:
  1. function removeAppEntries() {
  2.  feed = document.getElementById("profile_minifeed");
  3.  if (feed === null) {
  4.   feed = document.getElementById("home_stream");
  5.  }
  6.  if (feed === null) return;
  7.  
  8.  childs = feed.childNodes;
  9.  for (i=0; i<childs.length; i++) {
  10.   node = childs.item(i).getAttributeNode("data-ft");
  11.   if (node !== null) {
  12.    var re = new RegExp("app_id");
  13.    var m = re.exec(node.nodeValue);
  14.    if (m != null) {
  15.     feed.removeChild(feed.childNodes.item(i));
  16.     i--; // decrease i, because we removed one element
  17.    }
  18.   }
  19.  }
  20. }
  21.  
  22. var _timer = setInterval(function() {removeAppEntries();}, 500);

Dieser Code muss unter "Add JavaScript" eingefuegt werden. Die Match-Url fuer das Script lautet ^https?://www.facebook.com/.

Alles in allem sollten eure gemachten Einstellungen dann so aussehen (auf das Bild klicken um es zu vergroessern):
facebook-remove-app-entries-chromium-v1

In der letzten Zeile des Codes wird ein Timer gesetzt, der alle 500ms das Script aufruft. Da Facebook sehr viel Inhalte dynamisch nachlaed (AJAX ist hier das Stichwort) ist es nicht moeglich den Code beispielsweise beim onload-Event des Body-Tags aufzurufen, da dieser dann nur einmal ausgefuehrt wird und beim Nachladen von Code via AJAX nicht ausgefuehrt werden wuerde. Vielleicht hat jemand von euch noch eine andere Idee als das mit einem Timer zu realisieren, aber mir ist keine eingefallen. Da das Script aber sowieso sehr schlank ist macht es eigentlich auch nichts aus dieses ueber einen Timer alle halbe Sekunde aufzurufen. Sollte das Script euren Rechner dennoch zu sehr auslasten, dann koennt ihr diesen Wert jederzeit erhoehen.

Bitte beachtet auch, dass das Script unmittelbar ALLE Eintraege die von Applikationen gemacht wurden versteckt. Alle meint hier wirklich alle, d.h. es gibt keine Whitelist oder aehnliches. Solltet ihr also auch nur eine Applikation nutzen und deren Eintraege sehen wollen, dann lasst die Finger von dem Script.

So und das war dann auch schon das ganze Hexenwerk. Mittels diesen wenigen Zeilen Code werden nun alle Applikations-Postings versteckt. Aetsch, Facebook.

PySMSGui jetzt mit SMStrade- und LOX24-Unterstuetzung

Montag, den 21. September 2009

Nach der Anfrage des LOX24-Administrators habe ich PySMSGui dahingehend umgeschrieben, dass nun im Prinzip jeder SMS-Gateway dahinter geklemmt werden kann.
Da ich die Moeglichkeit hatte dies zu testen, kann ich euch nun auch eine Version von PySMSGui anbieten, welche LOX24.eu als SMS-Gateway benutzt. Damit unterstuetzt PySMSGui nun zwei deutsche SMS-Dienste.

Die Informationen rund um das Projekt habe ich auf eine eigene Seite ausgelagert. Dort finden sich ebenfalls alle wichtigen Informationen zur Installation und zum ersten Start.

Gern gesehen sind Anmerkungen/Lob/Kritik/whatever - nur zu.

SMSGui: PyQt-Programm bietet grafische Oberflaeche fuer smstrade.de

Freitag, den 18. September 2009

Dieser Artikel ist veraltet.
Updates gibt es hier (PySMSGui at crashsource.de)

Ich habe in mittels PyQt eine kleine Anwendung geschrieben mit der via smstrade.de SMS verschickt werden koennen. Wer smstrade noch nicht kennt, dem sei empfohlen dem Link zu folgen. Derzeit kostet dort die billigste SMS 2,4 Cent - meist entschieden billiger als vom Handy aus.

Hinter dem Projekt steckt die Idee SMS schnell am PC zu tippen und abzusenden, anstatt ewig auf der kleinen Handytastatur herumtippen zu muessen. Oftmals sitzt man sowieso vor dem PC, wenn eine SMS ankommt. Mit meinem Tool spart man sich Zeit, Geld und schont zudem die Nerven.

In der folgenden Bilderreihe, habe ich ein paar Screenshots der Anwendung gemacht.

Installation der Software

Stelle sicher ob du Python, PyQt4 und sqlite3-support fuer python installiert hast. Der Befehl fuer Ubuntu/Kubuntu lautet:
apt-get install python2.6 python2.6-qt4 python2.6-sqlite

Danach laedst du dir das aktuelle Paket herunter:
neue Downloads findest du hier - PySMSGui at crashsource.de

Dieses entpackst du an einen Speicherort deiner Wahl. Ich habe mich fuer /opt/smsgui entschieden. Dann definierst du die Datei main.py als ausfuehrbar und setzt fuer selbige einen symbolischen Link, damit diese direkt ansprechbar ist:
tar xfvz smsgui_v0.1.tar.gz
mv smsgui /opt/smsgui
chmod +X /opt/smsgui/main.py
ln -s /opt/smsgui/main.py /usr/bin/smsgui

Erster Start

Ab sofort kannst du das Tool ueber den Programmstarter (ALT + F2) oder vom Terminal aus mittels smsgui aufrufen.
Beim ersten Start der Software musst du deinen persoenlichen Gateway-Key eintragen, welchen du von smstrade.de erhalten hast. Du findest diesen hier.
Dazu klickst du im Hauptfenster auf "Einstellungen" und traegst den Gateway-Key im Feld Key ein. Standardmaessig ist fuer den Gateway-Key "123" eingetragen.

Fertig!

Nun wuensche ich viel Spass beim Verschicken deiner SMS via SMSGui!

Ach uebrigens: Mit der Software kannst du auch ueberlange SMS verschicken. Ebenfalls kannst du einen Zeitpunkt fuer den Versand festlegen. Probiere es doch einfach aus!

Gerne gesehen ist natuerlich Lob/Kritik/whatever. ;)