Flickr Uploader

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    da Flickr ja nun für jeden User 1TB (!) kostenlosen Speicherplatz für jeden User bietet habe ich mir gedacht, sollte es doch möglich sein, eine Art Flickr Uploader zu basteln. Ich stell mir vor, dass ich die Speicherkarte meiner DSLR in nen Kartenleser packe, der am Pi hängt, auf eine Webseite gehe und dort auswählen kann, welche Ordner er hochladen soll. Optional noch, mit welchen Einstellungen (Tags, Permissions, Sets). Anschließend soll er den Ordner auf die interne SD Karte kopieren und anschließend uploaden.

    Sollte doch machbar sein oder?

    Ich habe schonmal ein wenig gegoogelt, jedoch noch keinen Flickr Uploader für den Pi gefunden. Nur einen für Linux, welcher auf Python basiert, das sollte doch klappen oder? http://www.flickr.com/services/apps/72157610010166371/
    Jedoch unterstützt dieser Uploader keine EXIF Daten, kann man das irgendwie reinbauen?

    Dann Brauch ich wahrscheinlich noch einen Webserver, der auf dem Pi läuft für die Seite, nicht?


    Viele Grüße

    Tobi

    • Offizieller Beitrag

    es gibt mit flickrapi auch nen port der api in python. Somit sollte alles was die flickr api kann auch mit python gehen.

    Der Umweg über den Webserver wäre mir zu umständlich, aber ich bastel und entwickle auch gerne. ;) und mag es wenn die Sachen direkt von der Konsole funktionieren.

  • Wie würdet ihr das denn umsetzen?

    Ich stell mir folgende Situation vor:
    Ich feier Geburtstag und mache Fotos. Nach ein paar Stunden komm ich auf die Idee "Hey, könntest schonmal ein paar Bilder hochladen". Also nimm ich die Karte aus der Kamera, ab in den Pi, auf die Webseite (per iPhone oder so), den Ordner auswählen, Einstellungen machen und kopieren lassen. Nachdem der alles lokal kopiert hat, Karte wieder raus und weiterfotografieren.

    Leider bin ich nicht so der python-Programmierer, gibts nicht was "halbfertiges", was schon aus nem Ordner aufm Pi hochladen kann?

  • Okay, ich hab jetzt mal folders2flickr draufgetan und ich glaube, damit komme ich schon ganz gut weiter.
    Ich habe nun einen Ordner unter /home/pi/flickr/pictures und alle Unterordner, die sich darin befinden, werden beim starten des Programms hochgeladen. Auch mit EXIF-Daten und so. Es wird auch automatisch in ein Set gespeichert, das so heißt, wie der Ordner. Außerdem kann man in einer Ini-Datei die Permissions einstellen.

    Jetzt brauch ich nur noch ne Möglichkeit den Ordner mit den Bildern von der SD-Karte der Kamera auf die interne SD-Karte zu kopieren und vllt den Ordner umbennen. Und danach muss die Python-Datei gestartet werden. Wie würdet ihr das lösen?

    (OPTIONAL: Vielleicht kriegt man es auch später hin, dass man jedesmal die Permissions angeben kann und die INI-Datei wird dann bearbeitet)

    Kann man nicht mit Powershell arbeiten unter Linux? :P

  • Wenn ich es aber mit udev mache, kann ich doch nur sagen, dass er automatisch kopieren und uploaden soll, sobald ich ne sd-Karte einlege, oder? Ich möchte aber ja die Ordner auswählen und nen Namen angeben können. Das sollte doch per php machbar sein, oder?

  • Also, ich bin nun soweit, dass ich auf einer PHP-Seite mir die Ordner anzeigen lassen kann, die auf der SD-Karte sind.
    Dann wähle ich die Ordner aus, die ich haben möchte. Anschließend kann ich für jeden ausgewählten Ordner einen neuen Namen eingeben. Zusätzlich kann ich ein paar Checkboxen setzen, ob die Bilder für Freunde, Familie oder die Öffentlichkeit sichtbar sein sollen.
    Dann kopiert er die Ordner inklusive Bildern auf die interne SD-Karte und erzeugt eine INI-Datei für das Upload-Tool.

    Nun hänge ich an der Ausführung des Python-Skriptes...
    Ich versuche es mit: exec("python /srv/flickr/uploadr.py");
    Jedoch führt er das Skript nicht aus und im Apache Errorlog sehe ich folgenden Fehler:

    Traceback (most recent call last):
    File "/srv/flickr/uploadr.py", line 40, in <module>
    IMAGE_DIR = configdict.defaults()['imagedir']
    KeyError: 'imagedir'

    Wenn ich das Skript aber über die Kommandozeile ausführe, funktioniert es und er hat keine schwierigkeiten die INI-Datei zu lesen.
    Ich habe das Skript schon auf chmod 777 gesetzt und auch die INI-Datei, nachdem diese erzeugt wurde.

    Hat jemand eine Idee, was ich sonst noch machen könnte?

    Danke und viele Grüße

    Einmal editiert, zuletzt von Bart (18. August 2013 um 23:48)

    • Offizieller Beitrag

    Wenn das vom apachen aufgerufen werden soll, muss der user www-data auf diese Datei und alle Beteiligten Ordner Zugriff haben. Ich vermute hier ein fehlendes Zugriffsrecht auf das Bildverzeichnis, somit kann es nicht dem Python dictionary hinzugefügt werden, was später zu dem KeyError führt.

  • Ja, die liegen im Unterordner /srv/flickr/pictures

    Jetzt kommt so eine ähnliche Meldung:

    Traceback (most recent call last):
    File "/srv/flickr/uploadr.py", line 47, in <module>
    "is_public": configdict.defaults()['public'],
    KeyError: 'public'

    In der Ini-Datei ist der Wert drin, und augenscheinlich auch richtig.

    Einmal editiert, zuletzt von Bart (19. August 2013 um 21:38)

  • So bau ich die zusammen:
    [DEFAULT]
    imagedir=/srv/flickr/pictures
    history_file=history
    public = 0
    friend = 0
    family = 0
    only_sub_sets = true
    remove_all_pics_first = false

    Das original sah so aus:
    [DEFAULT]

    #
    # Location to scan for new images (no trailing \)
    #
    imagedir=/home/pi/flickr/pictures
    #
    # File we keep the history of uploaded images in.
    #
    history_file=history

    #visible 1, invisible 0
    public= 0
    friend = 0
    family = 1

    #set this to true if name of the auto generated flickr sets should be only name of the last sub folder e.g. Crete when folder is d:\testpictures\holidays\Crete\123img.jpg
    only_sub_sets = true


    #Start from scratch! If you want to delete first everything you have in your Flickr account then set this to true
    #This is handy if you messed up your uploads before or just want to start from the begining.
    #Once everything is deleted turn this feature off so you wont keep deleting your pics in your cron job!
    #WARNING!!! IF SET TO true THIS WILL DELETE EVERYTHING (pictures and videos) FROM YOUR FLICKR ACCOUNT
    #SO BE 100% SURE YOU WANT TO DO THIS!!!!!!!!!!!!!!!!!!
    #NOTE: The tool will not start uploading pictures unless this is set to false in order to prevent delete-upload-delete-upload loops

    remove_all_pics_first = false

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!