Wir erstellen ein Addon (simples Tutorial von Anfang bis Ende)

  • [h1]Variablen:[/h1]

    Eine Variable ist einfach ein Behälter (Container) zur Aufbewahrung von bestimmten Werten,
    also z.B. Strings(Zeichenketten) oder Zahlen. Man kann im Verlauf des Programms auf diese Variablen, oder genauer auf den Wert ihres Inhaltes zugreifen, oder ihnen einen neuen Wert zuweisen.

    Python kennt vier eingebaute Datentypen für Zahlen:

    -Ganzzahl (Integer) z.B. 4321
    vorangestellte 0 bedeutet Oktalzahl und
    vorangestelltes 0x bedeutet Hexzahl
    -lange Ganzzahl
    Sie können beliebig lang werden
    Sie werden mit einem l am Anfang bzw. L am Ende bezeichnet.
    -Fließkommazahlen
    Zahlen der Form 3.14159 oder 17.3e+02
    -komplexe Zahlen
    z.B. 1.2+3j

    Wir werden uns hier ersteinmal nur mit der Ganzahl beschäftigen.
    Da es auch der Zahlen Datentyp ist den wir später in unseren ersten Addon's nutzen werden

    z.B

    a=1 erstellt ein Variable a mit den Wert 1
    b=2 erstellt ein Variable b mit den Wert 2
    d=a+b erstellt ein Varable mit den Wert a+b
    print d druckt den Wert von d aus

    Der Dateityp String(Zeichenkette):

    Ein String, oder Zeichenkette, kann man als eine Sequenz(Aufeinanderfolge) von einzelnen Zeichen sehen.

    So das der String Hans im Prinzip die Zeichen:
    H>a>n>s hält

    einen String wird bei Wertzuweisung in einer Variable in
    einzelnen Anführungszeichen (') oder doppelten Anführungszeichen (") angegeben.

    Jedes Zeichen kann über einen Index angesprochen werden der nicht mit 1 sondern 0 beginnt:

    Hans String
    0123 Index


    Beispiel Index String:

    a = "Hans" erstellte eine Variable mit den Wert als string Hans
    print a[0] holt aus der Variable über den Index den Wert von a 0 un druckt ihn aus.

    Da es oft vorkommt das man z.B nur auf das letzte Zeichen eines Strings oder Teile eines Strings von Hinten zugreifen möchte gibt es auch dafür eine Möglichkeit.

    Ein a[-] erstellt einen negativen Index des Strings

    H a n s
    -4 -3 -2 -1

    Beispiel:
    a = "Hans"
    print a[-1] druckt das letzte Zeichen von Hans also s


    Die Länge eines Strings kann man mit der Funktion len() auswerfen.

    Beispiel:

    a = "Hans" weist der Variable a den String Hans zu
    i= len(a) weist der Variable i die Funktion len mit den Wert a zu.

    [h1]Nutzung der Format Funktion bei der Verkettung von Strings:[/h1]

    Es gibt verschiedene Möglichkeiten die Fornmat Funktion von Python zu nutzen wir kümmern uns hier nur um die für Strings

    Beispiel:

    Code
    a='Peter'
    b='ist'
    c='mein'
    d='Freund'

    Wenn wir diese Strings jetzt in einen Satz münden lassen wollten könnten wir das mittels + Zeichen tun:

    Resultat=a+' '+b+' '+c+' '+d

    das ' ' gibt ein Leerzeichen

    Viel eleganter und kürzer wird es aber wenn wir die Format Anweisung nutzen.

    Code
    Resultat='%s %s %s %s' % (a,b,c,d)


    was wenn man das Resultat mittels print ausführt das selbe Ergebnis liefert:

    Peter ist mein Freund

    %s sagt aus das man die Format Anweisung mit einen String nutzen will % ist der Indikator für die Übergabe der Werte.

    will man nur einen Wert übermitteln.

    Ist die Syntax folgende:

    Code
    a='Freund'
    Resultat='Peter ist mein %s' % a


    Wie ihr seht fallen bein einem Wert die Klammern weg und da ja auch nichts aufgezählt wird das Komma auch

    [h1]Funktionen:[/h1]

    In Funktionen legt man wiederkehrenden Code ab um in nicht in einen Prtogramm doppelt zu schreiben bzw ihn im Baukasten Prinzip in anderen python Programmen oder in unseren Fall
    Addons zu benutzen.

    Das Schlüsselwort für die Erstellung einer Funktion ist def.

    Die Syntax ist folgende:

    def Name der Funktion(zu benutzende übergebende Variablen - bei meheren durch , getrennt):

    Beispiel:

    wichtig: Für Einrückungen wenn sie vorgenommen werden müssen einigen wir uns auf 4 Leerzeichen
    Ein Mix von Tab und Leerzeichen haut die Formatierung eures Python Programms durcheinander also bitte nur Leerzeichen benutzen.


    Code
    a='Hans'
    b='Horst'
    
    
    def mixName(a,b):
        temp='%s  %s' % (a,b)
        return temp


    - erstellt die Funktion mixName(a,b)
    - return temp hält das Ergebnis von Temp zur Weiter verarbeitung in neuer Funktion oder Befehl


    Auch diese Beispiel Bitte ausprobieren!


    [h1]Import[/h1]

    Da Python Modular aufgebaut ist es möglich Module in die momentan ausgefühtrte.py (Python Datei) zu importieren

    Die Import Anweisung weist Python innerhalb eines Scriptes oder Programmes an
    ein Bestimmtes Modul zu importieren:

    Beispiel

    import urllib2

    importiert das komplette Modul urllib2 um es in der .py zu verwenden

    natürlich ist es auch möglich nur einzelne Teile eines Moduls usw. zu importieren.

    from urllib2 import urlopen

    Was nur die Funktion urlopen des moduls urllib2 in den vorhandene Code importiert.

    Da man auch selbst Module erstellen kann werden wir dies mal kurz anschneiden und ihr probiert es dann selbständig aus.

    zunächst zur Theorie :

    damit eine .py auch als ein modul gesehen wird
    müssen wir sie in einen Ordener geben und eine dummy __init__.py erstellen
    dummy deswegen da sie nichts hält also leer ist.

    Bitte öffnet nun Euren eingerichteten Notpad++ und erstellt ein neues Dokument.

    -ihr schreibt nichts rein
    und speichert diese Datei unter den tools Ordner den ihr im Theama 1 erstellt habt als python Datei mit den Namen __init__ (beachten das sind 2 _ jeweils vorne und hinten)

    -Jetzt erstellt ihr noch eine neue python Datei unter tools mit den Namen helper
    diese hält die Variable Name mit den Wert 'helper importiert'
    bitte Abspeichern.

    -Nun erstellt ihr noch eine neue py.Datei mit den Namen Test
    in Test schreibt ihr folgendes und speichert es als py Datei unter den Ordner Ordner "Python Projekte" (erstellt in Thema 1):


    Python
    from tools.helper import *
    
    
    
    
    print Name

    wenn ihr diese Datei dann ausführt wird sie Euch solltet ihr alles richtig gemacht haben

    'helper importiert' in der Konsole ausgeben.

    import * importiert alle Variablen und Werte von Funktionen des angegebenen Moduls (tools)

    diese helper Datei werden in weiteren Themen benutzen um unsere Funktionen und Variablen die wir in anderen python Scripten brauchen zu halten.


    [h1]Die if-Anweisung:[/h1]

    im allgemeinen hat eine if Anweisung in Python folgende Schreibweise und Funktion (Funktion im herkömmlichen Sinn)


    Code
    if bedingung1:
        anweisungen1
    elif bedindung2:
        anweisungen2
    else:
        anweisungen3

    Falls die Bedingung "bedingung1" wahr ist, werden die Anweisungen "anweisungen1" ausgeführt. Wenn nicht, werden, falls bedingung2 wahr ist, die anweisungen2 ausgeführt. Falls weder die erste Bedingung (bedingung1) noch die zweite Bedingung (bedingung2) wahr ist, werden die Anweisungen nach dem else (anweisungen3) ausgeführt.

    Beispiel:


    man kann die gesamte Sache auch verkürzt schreiben:

    Code
    max = a if (a > b) else b
    
    
    print max


    Ich denke das ist für einen Python Neuling ersteinmal genug Stoff für Heute.

    Also Bitte Alles lesen und verinnerlichen und die Beispiele ausführen sowie durch eigenes probieren mit unterschiedlichen Variablen mit Leben füllen

    Nach diesen Thema müßte folgende Funktion die wir im letzten Thema als Beispiel angeführt haben in seiner Bedeutung klarer sein:


    Code
    def playVideo(id):
        if xbox:
            url = "plugin://video/YouTube/path=/root/video&action=play_video&videoid=" + id 
        else:
            url = "plugin://plugin.video.youtube/path=/root/video&action=play_video&videoid=" + id
  • Teil 3 oben:


    Hoffe das es für einen Python Einsteiger nicht zuviel ist.

    Bitte Lesen und die Beispiele nachvollziehen so wie mit eigenen Ideen füllen.

    Die ganze Sache ist wie mit allen nur mit der entsprechenden Praxis auch richtig zu verstehen.

    Also Bitte einfach das gelernte versuchen Anzuwenden.


    Gruß Jan

  • Moin,

    schön, dass Thema 3 jetzt auch schon zum ausprobieren da ist. Import und Co. machen keine Probleme, aber bei mir hängts an was einfacherem. Der Code- Schnipsel mit der Funktion mixName gibt mir den Error: unexpected indent. Weiterhin gibt mir das Return nicht wie erwartet die verbundenen Strings, sonder dieses Zeichen "^" aus.
    Wo liegt mein Fehler ?

    lg fuenfzigccm

    Edit: Fehler schon gefunden. Mein Notepad macht Auto-Tabs. Wie sag ich ihm, dass er das lassen soll ?

  • Moin,

    schön, dass Thema 3 jetzt auch schon zum ausprobieren da ist. Import und Co. machen keine Probleme, aber bei mir hängts an was einfacherem. Der Code- Schnipsel mit der Funktion mixName gibt mir den Error: unexpected indent. Weiterhin gibt mir das Return nicht wie erwartet die verbundenen Strings, sonder dieses Zeichen "^" aus.
    Wo liegt mein Fehler ?

    lg fuenfzigccm

    Edit: Fehler schon gefunden. Mein Notepad macht Auto-Tabs. Wie sag ich ihm, dass er das lassen soll ?

    da hat sich durch die Formatierung hier ein Fehler eingeschlichen:

    das r was da so sinnlos drin rumsteht muß raus.


    Gruß Jan

    Ich ändere das gleich.


    Das bei der Formatierung der Beispiele haut nicht richtig hin, die werden mir auch wenn vorher korrekt nicht immer korrekt gezeigt.


    Also nicht den Quelltext kopieren und nicht mit Tab Taste arbeiten sondern mit Leerzeichen und selbst in die Tasten hauen.
    Einrückung immer 4 Leerzeichen.


    Des weiteren ist das richtige Ergebnis bei der Ausführung dieser Funktion nichts.


    Denn mit return wird immer ein Wert zur Weitergabe bereitgestellt aber noch nicht ausgedruckt.


    Wenn Du jetzt dort als Beispiel der Variable g den Wert der Funktion gibst und anschließend
    print g ausführst siehst Du das Ergebnis.


    Also in der Funktion wird durch Return nur der Wert das Ergebnis bereitgestellt aber noch nicht weiterverarbeitet.


    Gruß Jan

  • Nein, ich hab das alles selber eingetippt.
    Beim ersten Mal einrücken im Funktionskörper habe ich mit 4 Leerzeichen gearbeitet, sobald ich dann aber durch "Enter" in die nächste Zeile wechsle, rückt der automatisch ein, aber nicht mit 4 Leerzeichen, sondern mit einem Tab.

    Option unter Python den Tabulator durch 4 Leerzeichen zu ersetzen ist markiert.
    Wenn ich dann das automatisch erstellte Einrücken einfach entferne und durch die Leerzeichen ersetze, läuft es natürlich.

    lg fuenfzigccm

  • Nein, ich hab das alles selber eingetippt.
    Beim ersten Mal einrücken im Funktionskörper habe ich mit 4 Leerzeichen gearbeitet, sobald ich dann aber durch "Enter" in die nächste Zeile wechsle, rückt der automatisch ein, aber nicht mit 4 Leerzeichen, sondern mit einem Tab.

    Option unter Python den Tabulator durch 4 Leerzeichen zu ersetzen ist markiert.
    Wenn ich dann das automatisch erstellte Einrücken einfach entferne und durch die Leerzeichen ersetze, läuft es natürlich.

    lg fuenfzigccm

    Ganz unten im Ersten Teil steht wie man das Ausschaltet.


    Bitte unter Optionen-->Tabulatoren--> Python-->durch Leerzeichen Ersetzen Anklicken(blauer Pfeil)

  • Super, hatte ein kleines Problem beim importieren wo ich nen dummen Fehler hatte, jetzt ist alles prima...

    Ich hoffe ich werde die nächsten Tage Zeit hierfür finden, habe Bereitschaft die Woche. Notfalls werde ich dann die Lektionen nacharbeiten, mir gefällt das nämlich sehr gut wie du das machst!!

  • a=1 erstellt ein Variable a mit den Wert 1
    b=2 erstellt ein Variable a mit den Wert 2
    d=a+b erstellt ein Varable mit den Wert a+b
    print d druckt den Wert von d aus

    müsste nicht b=2 erstellt ein Variable b mit den Wert 2 sein oder ist das schon richtig?

    a = "Hans" weist der Variable a den String Hans zu
    i= len(a) - 1 weist der Variable i die Funktion len mit den Wert a zu ( das -1 ist wichtig da wir herkömmlich mit 1 anfangen zu zählen
    aber der index unseres strings wie gelernt mit 0 beginnt)

    Oben habe wir gelernt das ' und " richtig ist hier hast du () ich verstehe nicht wieso es nicht i= len"a" -1 heißen tut.

    Die - solltest du durch ersetzen.

    1. Ganzzahl

    %s sagt aus das man die Format Anweisung mit einen String nutzen will % ist der Indikator für die Übergabe der Werte.

    und was ist s


    Später mach ich weiter habe jetzt leider keine Zeit mehr.

  • Super, hatte ein kleines Problem beim importieren wo ich nen dummen Fehler hatte, jetzt ist alles prima...

    Ich hoffe ich werde die nächsten Tage Zeit hierfür finden, habe Bereitschaft die Woche. Notfalls werde ich dann die Lektionen nacharbeiten, mir gefällt das nämlich sehr gut wie du das machst!!

    Danke sehr.

    Für mich ist immer noch nicht so klar wieviel ich in einen Teil reinpacken kann.
    Jetzt haben wie ja ein paar Grundlegende Begriffe geklärt .
    Aber war das nun Heute zu viel oder eher zu wenig?

    Da ja die Themen aufeinander aufbauen reichen die paar Stunden die an einem Wochentag gegeben sind
    um ein Thema zu verinnerlichen und am nächsten Tag ein neues Thema zu bearbeiten?

    Oder brauchen wir zwischen jeden Thema ein Tag Pause um sich mit dem Thema zu beschäftigen?


    Gruß Jan

  • Oben habe wir gelernt das ' und " richtig ist hier hast du () ich verstehe nicht wieso es nicht i= len"a" -1 heißen tut.

    len ist mehr oder weniger eine integrierte Funktion, die dir die Länge einer Zeichenkette ausgibt.
    Wie bereits beschrieben kann man Funktionen Variablen übergeben, in diesem Fall ist das a. Übergabe erfolgt durch Klammer, wie z.B. bei def maxName beschrieben.

    und was ist s

    Wenn ich das richtig verstehe, mehr oder weniger ein Platzhalter für den einzufügenden String.

    lg fuenfzigccm

  • Da ja die Themen aufeinander aufbauen reichen die paar Stunden die an einem Wochentag gegeben sind
    um ein Thema zu verinnerlichen und am nächsten Tag ein neues Thema zu bearbeiten?

    Oder brauchen wir zwischen jeden Thema ein Tag Pause um sich mit dem Thema zu beschäftigen?

    Pause ist besser da kann dann jeder etwas ausprobieren und wen er mal keine Zeit hatte hat er noch etwas Zeit.
    Sonst werden Fragen kommen von Lektion 3 und du bist bei 5
    Wie viel mal rein Packen kann kommt immer darauf was Behandelt wird sollte nun wider weniger werden und mehr Beispiele und Aufgaben dann.

  • müsste nicht b=2 erstellt ein Variable b mit den Wert 2 sein oder ist das schon richtig?

    Da hast Du natürlich recht.Beim einfügen in den Editor hier ist vieles durcheinander geraten .
    So das ich per Hand fixen mußte .
    Das habe ich übersehen

    Oben habe wir gelernt das ' und " richtig ist hier hast du () ich verstehe nicht wieso es nicht i= len"a" -1 heißen tut.

    Ja, wir haben gelernt das man strings bei der Zuweisung innerhalb einer Variable mit ' oder " schreibt
    len() ist aber eine von Python bereitgestellte Funktion auf die wir zurückgreifen und in Funktionen ist die Schreibweise so.

    Ist das verständlich erklärt?

    Die - solltest du durch ersetzen.

    Der selbe Fehler wie oben , werde ich fixen.

    und was ist s

    ja ich schrieb das wir uns nur um die Format Anweisung für Strings(Zeichenketten) kümmern und s bedeutet in dem Fall String (Zeichenkette) und ist so von Python vorgegeben.


    Auf jedenfall Danke das Du gleich schreibst wenn etwas unklar ist, besser jetzt klären als später.


    Gruß Jan

  • An Alle!

    Für mich ist immer noch nicht so klar wieviel ich in einen Teil reinpacken kann.
    Jetzt haben wie ja ein paar Grundlegende Begriffe geklärt .
    Aber war das nun Heute zu viel oder eher zu wenig?

    Da ja die Themen aufeinander aufbauen reichen die paar Stunden die an einem Wochentag gegeben sind
    um ein Thema zu verinnerlichen und am nächsten Tag ein neues Thema zu bearbeiten?

    Oder brauchen wir zwischen jeden Thema ein Tag Pause um sich mit dem Thema zu beschäftigen?


    Gruß Jan

  • Moin zusammen,

    Für mich sehr blutigen Anfänger war das schon sehr viel. Werde morgen weiter machen.

    Gruß Andy

    Meine Systeme
    Win7 PC mit Kodi 15.2 Isengard (PC Zimmer)
    Apple TV1 Betriebssystem OpenELEC, Kodi 15.1 Isengard (PC Zimmer)
    Apple TV1 Betriebssystem OpenELEC, Kodi 15.1 Isengard (Wohnzimer)
    Fire TV Stick mit Kodi 15.2 Isengard (Schlafzimmer)
    Ipad 3 IOS 9.0.2 mit Kodi 15.2 Isengard

  • Moin zusammen,

    Für mich sehr blutigen Anfänger war das schon sehr viel. Werde morgen weiter machen.

    Gut dann denke ich weiß ich erst einmal Bescheid.

    Wenn Du Fragen hast oder Dir etwas unklar ist Bitte ohne bedenken Fragen.

    Ps
    Wenn man selbst das was man vermittelt versteht und einen selbstverständlich ist .
    Ist es schwierig das richtige Maß zu finden .
    So bin ich über jeden Hinweis diesbezüglich Dankbar.

    Denn am Ende sollte jeder von Euch in der Lage sein das hier Gelernte anzuwenden.


    Gruß Jan

Jetzt mitmachen!

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