Add-on Development HowTo. Interesse, Ideen, Mithilfe?

  • Abstimmung 47

    1. Ich/Wir brauchen kein (neues) Howto (0) 0%
    2. Ich finde die Idee gut (39) 83%
    3. Ich kann und werde mithelfen (z.B. Text schreiben, Grafiken erstellen, Links sammeln, Korrekturlesen) (6) 13%
    4. Ich bin Anfänger und würde gerne ein Add-on Entwickeln (28) 60%
    5. Ich kenne mich bereits aus, bin aber dennoch daran interessiert (5) 11%
    6. Nur auf deutsch für mich sinnvoll (18) 38%

    Hi zusammen,

    da ich momentan Urlaub habe, habe ich mal wieder einen Blick auf meine ständig wachsende ToDo-Liste geschaut, ziemlich weit oben findet sich "Ein gutes und vor allem aktuelles HowTo zum Thema Add-on Development schreiben".

    Bevor ich aber am Bedarf vorbei schreibe hätte ich ein paar Fragen, deswegen auch die Abstimmung unten. Ihr könnt (und müsst ggf.) mehrfach abstimmen.


    Hier schon mal eine kleine Übersicht worum es in dem Howto gehen soll
    Allgemein

    • Unterschied Script/Plugin/Service/Widget
    • Add-on Struktur / addon.xml
    • Python allgemein (Spaces, if/else/for/etc)
    • Editoren/debugging/git(hub)

    Plugin Development

    • Verschiedene Arten ein Plugin zu schreiben, jeweils pro/kontra. Damit meine ich:

      • get_param mit int-mode + Regular-Expression (wie die meisten es machen)
      • get_param + HTML-Parsing mit Beautifulsoup
      • xbmcswift + HTML-Parsing mit Beautifulsoup
      • xbmcswift + JSON-API
    • Das eigentliche HowTo an einer "richtigen aber einfachen" HTML-Seite (mit get_params und re):

      • Wie man an die Daten kommt
      • Wie man diese an XBMC übergibt
    • Das gleiche wie oben, diesmal allerdings "für Fortgeschrittene" bzw "an schönem Code interessierte" (mit xbmcswift und BeautifulSoup):

      • Wie man an die Daten kommt
      • Wie man diese an XBMC übergibt
    • Add-on Entwicklungs Workflow/Checkliste:

      • Gibt es bereits ein Add-on für diese Seite/diesen Dienst?
      • Kommt man überhaupt an die Daten (Struktur/Play-Parameter/Mobile Webseite)?
      • Lohnt es sich den Betreiber anzuschreiben?
      • Gibt es eine offizielle oder versteckte API (Smartphone Apps checken, Ajax checken)?
    • Tipps/Tricks/Snippets:

      • Pagination
      • Suche
      • Wie man ein anderes Plugin zur Wiedergabe benutzt und wie man an dessen URLs kommt
      • POST Request mit Daten
      • Login/Cookie Handling
      • Lokale Datenspeicherung
      • Settings
      • Dialoge (Notification, dialog.yesno, etc)
      • Firebug/Chrome DOM-Inspection
      • RTMP-Tools/Wireshark/whatever
      • Dynmaische Bilder-URLs
      • "Hidden features": sortMethods/UpdateListing/setResolvedUrl/etc (Also eher für Fortgeschrittene)
    • DO's and DONT's (Was man machen sollte und was nicht)
    • Anfängerfehler, typische Fehlermeldungen
    • Links

      • Python für Anfänger
      • Git für Anfänger
      • XBMC-API


    Script Development
    ...

    Es existieren natürlich schon ein paar Howtos (ich kenne insgesamt mindestens drei verschiedene) allerdings sind diese entweder ziemlich outdated, unvollständig oder einfach (vom Python Standpunkt her) "hässlich" bzw. einfach schlechter Code. Schöner Code ist nicht nur ein " sich an die Regeln halten" - es hat auch "richtige" Vorteile: Der Code ist einfacher zu lesen, hat in der Regel weniger Redundanzen (Die gleiche Zeile/Logik an mehreren Stellen), es findet sich schneller jemand der einem Hilft und er ist einfach stabiler.

    Mein Ziel ist es also ein aktuelles, möglichst umfassendes und aus "schönem bzw. richtigem Code bestehendes" Howto zu schreiben. Es sollten auf jeden Fall ein paar Grafiken/Diagramme dabei sein (z.B. den Aufruf-/Beende Workflow von Plugins verglichen mit Scripts und Widgets). Syntax Highlighting ist mir bei Code-Snippets auch sehr wichtig. Die meisten Leser lesen Fließtext sowieso nicht richtig, wenn aber zwischendurch Bunter Code ist, wird zumindest der gelesen ;).

    Als Plattform bevorzuge ich aktuell eine Github Page: Ein Git-Repository bestehend aus Markdown-Dokumenten + assets. Das ganze bekommt von github eine eigene Subdomain und ohne viel Gebastel ein nettes und praktikables Design. Siehe http://pages.github.com/
    Das hätte auch den Vorteil das es relativ einfach von anderen editiert/erweitert werden kann (Man kann mittlerweile bei Github auch ohne lokale installiertes/eingerichtetes Git einzelne Repositories und dessen Dateien editieren - im Browser. Damit fällt das ganze clone/push/commit/pull-usw Zeugs weg)

    Ich werde auch im englischen Forum um Ideen/Feedback und vor allem Mithilfe bitten.
    Aber jetzt erstmal hier: Feedback, Ideen, Mithilfe, Abstimmung: Alles gerne gesehen!

    Grüße,
    sphere

    [size=8]Mein GitHub | Meine Add-ons:

    Externer Inhalt i.imgur.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    2 Mal editiert, zuletzt von dersphere (13. August 2013 um 19:08)

  • Alter Schwede... Da hast du dir aber was vorgenommen... Ich finde die Idee allerdings sehr gut :thumbup:
    Man findet jedoch bereits sehr gute (deutschsprachige) Grundlagen-Tutorials im Netz... Warum also das Rad mit dem "Python allgemein"-Teil neu erfinden?
    Da würde ich mich an deiner Stelle eher auf die XBMC, HTML, Regex und ggf JSON -Parts konzentrieren... Falls du dennoch Wert darauf legst (denn so wie es scheint, planst du dieses HowTo wegen des Umfangs als langfristiges Projekt) könnte ich beim Python-Basics-Part helfen...

  • Man findet jedoch bereits sehr gute (deutschsprachige) Grundlagen-Tutorials im Netz... Warum also das Rad mit dem "Python allgemein"-Teil neu erfinden?

    Hast du Links?
    Ich muss das Rad auch nicht neu erfinden, allerdings "ist ein Vieleck kein Rad" ;)
    Wie ich oben schon meinte sind die meisten Tutorials Copy&Paste von schlechtem Code...

  • Für die Grundlagen finde ich eigentlich die Seiten...
    http://www.python-kurs.eu/kurs.php
    http://tutorial.pocoo.org/
    ...schon mal nicht schlecht. Letztere ist zwar für Python 3, aber ich denke das ist nicht unbedingt von großem Nachteil, um die Prinzipien zu verstehen...

    Ich muss das Rad auch nicht neu erfinden, allerdings "ist ein Vieleck kein Rad" ;)

    :D Da ist was dran... Allerdings kann dieses Vieleck auch sehr groß werden...
    Ob mein Code immer das NonPlusUltra wäre, möchte ich jetzt hier auch nicht behaupten. :D Allerdings hat man bei der Erklärung der Grundlagen auch nicht allzu viel Handlungsspielraum...

  • Finde die Idee super! :thumbup:
    Ist bisher wirklich nicht viel brauchbares aktuelles zu finden.

    Da ich mit "schönem Code" / xbmcswift / Beautifulsoup bisher nix zu tun hatte, kann ich da wohl nicht viel beisteuern.
    Aber ich biete gerne meine Hilfe in anderen Bereichen an. Vielleicht hab ich ja hier und da ne Idee, was man noch ergänzen könnte...


    Hast du Links?
    Ich muss das Rad auch nicht neu erfinden, allerdings "ist ein Vieleck kein Rad" ;)
    Wie ich oben schon meinte sind die meisten Tutorials Copy&Paste von schlechtem Code...

    4lb3rtO meinte glaub ich nur, dass es schon genug allgemeine Python Tutorials (wie z.b. das Galileo Openbook) gibt, und du daher am besten ausschließlich XBMC Themen behandeln solltest...

    Edit: zu spät...

  • Ich bin selbst absoluter Anfänger, habe aber schon einmal versucht, ich in die Materie einzulesen. Während ich Grundzüge schnell verstanden habe und mir auch die Funktionsweise von Python (Stichwort Einrückung) schnell einleuchtete, habe ich an den bereits existierenden Tutorials folgendes zu kritisieren:

    Allgemeine Python-Tutorials sind gut und schön, manche sind auch gut verständlich geschrieben, allerdings fällt es sehr schwer, den entscheidenden Schritt -- die Übertragung des Basiswissens auf den XBMC/Addon-Kontext -- zu vollziehen. Aus der Masse von Befehlen und Argumenten (insbesondere in Bezug auf Online-Sources) die richtigen herauszufinden und ihre Funktionsweise zu verstehen ist in Eigenregie ein wahrer Kraftakt. Nun scheue ich solche Arbeit eigentlich nicht und es macht mir auch Spaß, solche Nüsse zu knacken, aber gerade zu Beginn bräuchte man ausführliche, detaillierte Erklärungen und Beispiele, damit man sich den Zusammenhang erarbeiten kann. Sprich: aufgrund meiner kurzen Erfahrung mit allgemeinen Python-Tutorials würde ich die umgekehrte Methode bevorzugen, die vom konkreten Beispiel ausgeht (dieses aber wirklich haarklein behandelt) und von dort aus in immer allgemeinere Bahnen vordringt.

    Die spezielleren Tutorials, die ich gesehen habe, waren leider überhaupt nicht mehr aktuell und damit kaum nachvollziehbar. Leider waren allerdings auch oft die Erklärungen zu dürftig (ich glaube für Anfänger kann keine Erklärung ausführlich genug sein ;) :( Z.B.: "Diese Zeile scannt die Internetseite nach den URLs der Videos" würde kaum zum Verständnis beitragen, wenn nicht die Funktionsweise dieser Zeile ebenfalls genau beleuchtet wird.


    Ich schreibe diese Zeilen nur, um die Perspektive als blutiger Anfänger wiederzugeben, in der Hoffnung, dass sie einigen netten geduldigen Menschen bei der Erstellung eines aktuellen Tutorials helfen können. Die vorgestellten Leitgedanken klingen schon sehr sehr vielversprechend! Wie gerne würde ich zu einem solchen Projekt beitragen, aber ich fürchte ich werde leider leider lediglich auf Nachvollziehbarkeit prüfen können... ^^

  • Finde die Idee klasse

    Auch wenn ich wohl eher nicht ein Add-On entwickeln werde, jedoch interessiert mich sehr wohl wie etwas von statten geht und könnte mir vorstellen bestehende Add-ons an meine Bedürfnisse anzupassen.

    Stereo/Heimkino:
    AVR: Arcam AVR 550
    LS: Front: Elac FS407
    ___Center: Elac CC201.A
    ___Rear: Elac BS204.2

  • Das ist ja mal eine klasse Idee, auch wenn ich höchstwahrscheinlich keine Add-Ons selber entwickeln werde (aus Zeitgründen)

    HTPC: A6-5400K | ASUS F2A85-M LE | 8 GB | LibreELEC 7.0.2
    NAS:
    Synology DS212j (2x2TB Basic)
    Synology DS213j (2x4TB Basic)
    Synology DS216+ (2x3TB Raid1)
    AVR: Pioneer VSX-922
    TV: Panasonic TX-43CXW754

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!