strohne / Facepager

Facepager was made for fetching public available data from YouTube, Twitter and other websites on the basis of APIs and webscraping.
https://github.com/strohne/Facepager/releases
506 stars 198 forks source link

Linux support? #30

Closed SamZeini closed 9 years ago

SamZeini commented 9 years ago

Hallo, danke für das schöne tool. Leider kann ich es unter Linux nicht benutzen, da mir das credentials.py fehlt. Ich habe auch keine Idee, wie es aufgebaut sein müsste. Ist denn irgendwann auch eine Linux Version in Sicht? LG, Sam

strohne commented 9 years ago

Siehe den letzten commit im master-branch. In dieser Datei sind drei Konstanten definiert, deren Werte wir nicht frei weitergeben dürfen: FACEBOOK_CLIENT_ID, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET

Im letzten Commit steht, wo man diese Werte herbekommt: https://developers.facebook.com/apps und https://dev.twitter.com

Sag mal Bescheid, ob Du es unter Linux zum Laufen bringst.

lg strohne

SamZeini commented 9 years ago

Laufen tut die FacePager nun auch native unter Linux, allerdings hilft das nicht viel. Wenn ich jetzt Login to Twitter mache, kann ich die App jetzt autorisieren, bekomme aber eine Pin zurück, die ich nicht verwenden kann. Wenn ich mit einem Preset arbeite, bekomme ich einen Error 401. Unter Wine verhält er sich anders, da geht er natürlich auf LMU Seite und holt sich die passenden tokens und fetcht auch die tweets. Bei Facebook ist es vergleichbar. Wenn ich dort versuche mich einzuloggen, bekomme ich statt der Authentifizierungsmaske folgende Meldung: Die Anwendungseinstellungen lassen die angegebene URL nicht zu.: Eine oder mehrere URLs sind in den Einstellungen der App nicht zugelassen. Sie müssen mit der Website-URL oder der Canvas-URL übereinstimmen, oder die Domain muss Subdomain einer der App-Domains sein.

Auch das funktioniert unter Wine und Windows wunderbar. Ich kann notfalls mit Wine leben, aber es wäre natürlich schön, wenn es eine Linux Version gäbe :) Danke Euch nochmal!

strohne commented 9 years ago

Ich würde zunächst die Einstellungen der Apps auf Facebook und Twitter überprüfen. Zunächst mal zu Facebook. Unter Advanced müssten folgende Einstellungen gemacht werden:

Hilft das?

strohne commented 9 years ago

Habe ich das richtig verstanden, dass der Login-Dialog von Twitter eine Seite der Uni München anzeigt? Das wäre jedenfalls ein Fehler. Da sollte eine Twitter-Seite angezeigt werden, nichts anderes.

SamZeini commented 9 years ago

OK, super, Facebook funktioniert jetzt :) Da kommt zwar bei der Autorisierung meiner App, dass ich sie zum reviewen submitten soll, aber im Ergebnis scheint es zu klappen und ich bekomme Daten. Danke :) Wenn ich die Windowsversion unter dem Emulator Wine aufrufe kommt eine Twitter-Seite, allerdings natürlich durch Euere ID die Twitterseite, die die LMU Seite referenziert, die Ihr bei der Registrierung der App angegeben habt. Das macht die Linuxversion natürlich mit der Seite, die ich dafür bei Google angelegt habe. Ich kenne mich Leider mit den App Einstellungen bei Twitter auch nicht aus. Wenn Ihr da auch noch einen Tipp habt? Btw., ich hab ja die ganzen pyc Files, die offensichtlich auch funktionieren. Was muss ich beim Packetieren beachten? Es ist ein Ubuntu System und ich habe PySide, SQLAlchemy, dateutil und requests über die offiziellen Ubuntu-Paketquellen installiert. Nur rauth musste ich mit pip install installieren.

strohne commented 9 years ago

Das verstehe ich nicht. Woher weiß Facepager ohne unsere credentials, dass wir etwas mit der LMU zu tun haben? Hast Du keine eigene Twitter-App angelegt? Wozu die Google-Seite?

Mit dem Packetieren unter Linux kenne ich mich nicht aus. Wir haben die exe für Windows mit cx_freeze erstellt.

dorvak commented 9 years ago

Hi,

das verstehe ich auch nicht, hast du die aktuelle Codebase genommen? Wenn du auf Twitter eine eigene App angelegt hast dürfte er dich eigentlich nicht auf die LMU Website (meine?) weiterleiten. Ist schon etwas länger her, dass ich diese Twitter-App-Auth gebastelt hatte, ich meine das man damals auch eije Art Redirect-URL angeben musste. Aber die dürfte schon lange nicht mehr im Code stehen und auch nicht mit einer fremden Twitter-App funktionieren.

Till

SamZeini commented 9 years ago

Nein, sorry, ich drücke mich missverständlich aus. Es ist die aktuelle Codebase. Ich habe hier zwei Facepager Versionen. 1) Facepager für Windows. Das habt Ihr kompiliert und das läuft hier unter Wine, dem Windowsemulator für Linux. Die habt Ihr ja mit Euren credentials kompiliert und paketiert. Die zeigt natürlich Eure TwitterApp Page an und damit funktioniert auch, dass ich Daten von Twitter bekomme. 2) Facepager als Python Source Code, welches ich nach Deiner Anleitung mit meiner credentials.py gebaut hab. Hier funktioniert jetzt die OAuth Sache bei Facebook, dank Deinem Hinweis für die Einstellungen bei meiner Facebook App Seite. Für Twitter habe ich auch eine App angelegt, um TWITTER_CONSUMER_KEY und TWITTER_CONSUMER_SECRET zu bekommen. Hier kommt schon die passende Seite zum Login mit meinen Einträgen. Wenn ich mich einlogge bekomme ich eine PIN angezeigt. Damit kann ich nix anfangen. Es scheint was mit meinen Permissions bei Twitter zu sein (read only)?

dorvak commented 9 years ago

Also, ich nehmen an, dass du eine Redirect-URL angeben musst (es ist egal welche, da der Facepager den Dialog vorher eh schließt). Außerdem folgende Einstellungen bei der Twitter-App selbst:

Callback URL deine URL Sign-ign with Twitter: No Access level Read-only Sign in with Twitter No App-only authentication https://api.twitter.com/oauth2/token Request token URL https://api.twitter.com/oauth/request_token Authorize URL https://api.twitter.com/oauth/authorize Access token URL https://api.twitter.com/oauth/access_token

Und generell noch zur Hilfe: https://dev.twitter.com/web/sign-in/implementing (wobei das OAuth und diese drei Verfahren immer echt ein Krampf sind, deswegen habe ich das auch schon alles vergessen ^^)

Cool, dass du ein Linux-Package bastelst!

SamZeini commented 9 years ago

Danke, jetzt geht es. Es war die fehlende callback URL. Das Linuxpackage wird schwierig wegen rauth. Alle anderen Abhängigkeiten kann man gut im Debian Format auflösen. Da muss ich mal drüber nachdenken..... Es läuft zumindest unter Linux und ich hab kein Problem damit, dass es mit meinen Facebook und Twitter Apps läuft. Ich danke Euch! So sieht das Facepager für Linux aus: http://i.imgur.com/M32hesX.jpg

dorvak commented 9 years ago

Ich habe auch noch keine Linux-Packages gebastelt, aber afaik ist cx_freeze cross-plattform. Und ja, diese rauth und ssl-Geschichten sind leider echt immer ein Krampf ;)

Vg

Till

strohne commented 9 years ago

Danke für das Bild! Wieso haben Linuxer eigentlich immer diese Comicschriften ;-)

Zum Einpacken: rauth dürfte doch eigentlich unkompliziert sein. Ist ja auch nur python code, der rund um requests geschrieben ist. probier das doch bei gelegenheit mal, das wäre echt super.

Siehe setup.py

wir könnten auch statt der/zusätzlich zu den credentials einen einstellungsdialog basteln, in dem man seine eigenen app daten eingibt, dann musst du deine daten nicht weitergeben und wir könnten ein package zum download auf der lmu-seite anbieten.

dorvak commented 9 years ago

Auf meinem Mint-Linux sieht es etwas "seriöser" aus. Die Möglichkeit eigener Credentials fände ich gut, das könnte man mit den Änderungen für den Facebook-Dialog (Stichwort Auswahl der Berechtigungen) einbauen. Bei mir aber erst nach März realistisch ;)

dorvak commented 9 years ago

Bzgl. Rauth und packagin: Du müsstest cx_freeze bzw der setup bei eigentlich nur sagen, dass er das mit aufnehmen soll. Sollte rauth selbst irgendwelche binaries o.ä. benötigen, kann man die bei cx_freeze auch explizit mit angeben (siehe die Parameter der setup.py auf der cx_freeze Homepage)

SamZeini commented 9 years ago

Okay. Ich habe mal mit cx_freeze eine Paket gebastelt und es ging. Dann hab ich es mit einer Ubuntu Live CD getestet und fest gestellt, dass cx_freeze einige QT Bibliotheken nicht gekriegt hat. Die habe ich dann per Hand in das Verzeichnis kopiert und es läuft. :) (ohne Comic Schriften :D ) Es ist allerdings durch die QT-Bibliotheken auf 68MB aufgebläht. Ich kann es Euch gerne zur Verfügung stellen. Es läuft allerdings nur auf aktuellen 64Bit Systemen mit einer Glibc Version >=2.19 (aktuelle Ubuntu Version 14.04 z.B.) Da ich mir bei den Facebook und Twitter Apps Phantasienamen ausgedacht hab, müsste ich die noch ändern. Ansonsten wäre die Frage, ob ich bei Twitter als Referenz URL die offizielle LMU Seite angeben könnte. Ich habe nur eine Phantasie Seite bei Google Sites angelegt, die nicht so viel bis gar nix aussagt. Was meint Ihr? LG, Sam

SamZeini commented 9 years ago

Man könnte natürlich auch die Github Seite angeben, die aber für Endanwender vielleicht etwas beängstigend ist :-P

strohne commented 9 years ago

Welche Bibliotheken sind das denn? Kannst Du die fehlenden QT-Bibliotheken nicht in der setup.py konkret angeben? Dann müsste cx_freeze die auch bekommen. Ich glaube cx_freeze gibt sogar einen Output, welche Bibliotheken fehlen.

Wäre super, wenn Du Deinen aktuellen Stand mal auf Github hochschiebst. Also einmal unseren Stand in Deinen Account forken, dort die Änderungen einspielen (evtl. vorher einen linux branch anlegen). Darauf achten, dass die credentials.py nicht mit synchronisiert wird (müsste in gitignore aber eh schon eingestellt sein, wenn Du forkst).

Ob Du die LMU-Seite angeben kannst, muss Till entscheiden. Perspektivisch werden wir es so machen, dass man seine eigenen App-Daten eingeben kann.

Gruß Jakob

strohne commented 9 years ago

Und danke, dass Du das alles ausprobierst! Super Sache!

SamZeini commented 9 years ago

Ein Branch wäre nicht nötig. Das einzige, was sich bei mir geändert hat ist das setup.py Ich könnte da jetzt die fehlenden Libs mit includefiles einbinden, aber das wäre den Aufwand nicht wert, da die Quellverzeichnisse für die Libs bei den unterschiedlichen Distributionen variieren. Die fehlenden sind folgende (an zwei unterschiedlichen Orten bei meinem Ubuntu): libaudio.so.2 libaudio.so.2.4 libpyside-python2.7.so.1.2 -> libpyside-python2.7.so.1.2.1 (das ist ein Symlink) libpyside-python2.7.so.1.2.1 libQtCore.so.4 libQtCore.so.4.8 libQtCore.so.4.8.6 libQtGui.so.4 libQtGui.so.4.8 libQtGui.so.4.8.6 libQtNetwork.so.4 libQtNetwork.so.4.8 libQtNetwork.so.4.8.6 libQtOpenGL.so.4 libQtOpenGL.so.4.8 libQtOpenGL.so.4.8.6 libQtWebKit.so.4 libQtWebKit.so.4.10 libQtWebKit.so.4.10.2 libshiboken-python2.7.so.1.2 libshiboken-python2.7.so.1.2.1

dorvak commented 9 years ago

Die Größe des Binary passt schon, ich würde die QT-Files auch mit einbinden (oder eben manuell kopieren, habe ich auf dem Mac auch immer so gemacht). Bezüglich der Seite kannst du gerne die LMU-Seite angeben, wobei vielleicht der Github-Link besser wäre. Im Endeffekt ist das eh egal, weil der Nutzer diese Seite nie sehen wird - wenn wir den Auth-Dialog neu bauen und das Feature implementieren, dass Nutzer einfacher ihre eigenen Facebook-Apps/Twitter-Apps einbinden können erübrigt sich das ja ohnehin irgendwann.

SamZeini commented 9 years ago

Ich hab das mal abgespeckt und hoffe, dass es auch mit anderen Distributionen läuft. Es ist alles hier und auch beschrieben: https://sites.google.com/site/facepagerforlinux/ Kannst Du das auf Deinem Mint Linux mal testen, Till? (sofern Glibc >= 2.19 und 64bit)?

strohne commented 9 years ago

Habe gerade mal virtuell getestet. Aktuelles 64 Bit Linux Mint in Virtual Box auf Windows-7-Host System.

Ich habe Facepager außerdem mal beigebracht, dass man seine eigenen App Settings eintragen kann. Nur wenn die Felder leer bleiben, wird weiterhin auf die credentials.py zurückgegriffen. Die Struktur der credentials.py ist leicht verändert (Variablen statt Konstanten). Siehe den letzten commit im master. Vielleicht wäre das eine bessere Grundlage für das linux package?

Noch eine Anmerkung zur Google Seite. Der Satz "The Original software has been developed by the Empirical Communication Research at the Institute of Communication Studies and Media Research at LMU Munich" stimmt nur halb. Korrekt wäre "The original software has been developed by Till Keyling (LMU Munich) and Jakob Jünger (University of Greifswald)." ;-)

Gruß Jakob

SamZeini commented 9 years ago

Ok., danke! Hab den Text geändert und die App auf Public gesetzt bei Facebook! Kannst Du bitte nochmal probieren? LG, Sam

strohne commented 9 years ago

Top, läuft!

SamZeini commented 9 years ago

Danke für das Testen, bei mir lief es halt auch vorher, weil ich als Ersteller der App die auch nutzen konnte, bevor die public ist. War halt meine erste app. Jetzt schreibe ich noch eine kurze Installationsanleitung (entpacken und ./Facepager eintippen) und dann ist es für mich erstmal erledigt.

strohne commented 9 years ago

Großartig! Vielen Dank! Kannst Du Deine setup.py noch pushen/posten/mailen? Dann packe ich die ins repo, falls jemand irgendwann noch einmal ein linux package machen will.

dorvak commented 9 years ago

Dito, läuft bei meinem (ebenfalls virtualisierten Mint) auch. Danke für's Packaging und die Setup-Datei..habe die mal in den aktuellen Branch gemerged. Ich verlinke dann deine Version ebenfalls auf meiner Uni-Homepage, wobei wir dann vielleicht Jakobs neue Version mit den App-Settings builden sollten (sehr cool Jakob; wie gesagt, ich komme momentan leider nicht zum hacken, ab April dann wieder ^^)