Massengeschmack.tv Kodi-Add-On

Hm, ja, aber das kann ich leider nicht nachstellen. 401 bedeutet eben, dass man nicht für den Zugriff autorisiert ist (d.h. nicht eingeloggt ist). Vielleicht nochmal die Credentials vergleichen? Ein einfacheres Passwort setzen, vielleicht gibt es störende Sonderzeichen oder sowas?

Mehr kann ich dazu leider auch nicht sagen, die Leute kommen ja sonst rein.

„Rein kommen“? Ja.
Videos abspielen können? Nö. - Egal ob Android oder Windows. :man_shrugging:

Das siehst du ja erst beim Abspielen. In den Settings wird es NICHT validiert.

@DerRainer
Nachdem ich es jetzt gerade noch mal explizit getestet habe ziehe ich meinen letzten Einwand zurück.
Jetzt gerade funktioniert es unter Win und Android. :open_mouth:

Im April war es noch so dass der „Unsupportet MIME-Format“-Fehler aufgetreten ist.
Jetzt auf ein mal nicht mehr - bei der gleichen PlugIn-Installation und dem gleichen Netzwerk.

Vielleicht ist es eher umgekehrt, dass es damals an Einstellungen im MG-Portal lag - oder an der Video-Codierung? Vielleicht aber auch am KODI-Cache… :thinking:

Egal - ich werde das mal im Auge behalten.

Ich hatte in der 2.7.2 ja die HTTP library getauscht, weil ich mit der Alten oft Probleme beim Laden der Daten hatte. Hattest du vielleicht weiterhin die 2.7.1. genutzt? Da könnte ich mir das vorstellen.

Das kann ich Dir noch nicht mal sagen.
Ich weiß noch, dass ich das ursprüngliche PlugIn komplett gelöscht habe.
(Inkl. der entsprechenden Ordner im PlugIn- und Userdata-Ordner)
Dann hatte ich Deine Version aufgespielt.

Ist aber egal: Es läuft jetzt - und da ich den Fehler nicht reproduzieren kann (zum Glück!) - wäre es m. E. einfach zur Zeitverschwendung dem weiter nachzugehen.

1 „Gefällt mir“

Merci :smiley: Anscheinend hat dem Programm ein Sonderzeichen nicht ganz geschmeckt.

Funktioniert bei mir unter Libre Elec 10.0.1 x86_64. Danke

@DerRainer was ist denn mit ner PlayStore App oder F-Droid App? Mach doch mal bitte. Spenden würden wir alle hier(habe alle gefragt).

1 „Gefällt mir“

Sowas ist auch schon ein Haufen Arbeit. Ich mache das beruflich den ganzen Tag und da habe ich dann Abends keine Lust, noch „nebenbei“ Apps zu schreiben. Zumal ich auch noch nie eine Mobile App programmiert habe und das dann dabei noch lernen müsste.

Die Seite funktioniert ja auch mit dem Browser halbwegs, ich schaue ab und zu auch mal mobil ein Video.

KODI gibt es auch für Android, vielleicht ist das noch eine Alternative? :slight_smile:

1 „Gefällt mir“

Hallo miteinander,
ich bin erst seit kurzem hier dabei und wollte das Addon mal ausprobieren, aber ich bekomme es einfach nicht ans Laufen, ständig erhalte ich beim Abspielen in den Logs den HTTP 401 und kann ihn mir nicht so recht erklären :thinking:

Laufen soll das ganze auf einem FireTV Sitck 4K mit Fire OS 6.2.7.6 und Kodi 19.3.
Ausprobiert habe ich aber auch schon ältere Kodi Versionen (19.0/1), auch unter Windows und auf weiteren Smartphones die hier rumliegen (Galaxy S20, Huawei P10 Pro, Galaxy S8), sowie mit dem Konto eines Bekannten.
Ich habe auch das @ in der Mailadresse mal durch ein „–at–“ ersetzt, wie in MassengeschmackTVs API Beschreibung angegeben.
Auch mein Passwort habe ich Dutzend Mal geändert, um auszuschließen, dass ein Sonderzeichen dazwischenfunkt.
Zeitweise hatte ich lediglich eine wohl bekannte Zahlenreihenfolge als Passwort, jedoch bleibt es bei dem Fehler.

Bin ich wirklich der Einzige mit diesem Problem?
Mir scheint es, als würde Curl nicht den in der API erwähnten _mgtvSession-Cookie erhalten, um sich zu authentifizieren.

Bei mir streikt das PlugIn zwar auch wieder - aber aus einem anderen Grund.
Der HTTP-Error 401 bedeutet schlicht und ergreifen: Keine Zugangsberechtigung.

Guten Morgen,
ja, das weiß ich, ist nur die Frage warum.
Gebe ich die Zugangsdaten falsch ein, dann wäre kein Abruf der einzelnen Ordner/Videos möglich, so steht es auch in der API-Beschreibung.
Da ich diese Daten erhalte und das Plugin auch meckert, wenn ich meine Daten falsch eingebe, gehe ich mal davon aus, dass das stimmt.
An meinen Zugangsdaten habe ich auch schon herumexperimentiert, mit einem Passwort wie 123456 sollte auch kein Sonderzeichen mehr stören.
Auch ein nagelneues frisches Kodi auf einem PC oder Linux Rechner sollte eigentlich funktionieren, bringt aber exakt den gleichen Fehler.
Bin ein wenig ratlos aktuell, kann es mir eigentlich nur so erklären, dass beim Abruf eines Videos die Logindaten oder der Cookie an die Curl Abfrage nicht richtig weitergegeben werden.
Liegt der Quellcode für das aktuelle Plugin irgendwo auf Github?

Grundsätzlich hat der ursprüngliche Programmierer mal erwähnt, dass Einiges an dem PlugIn mit heißer Nadel gestrickt sei - bzw. so nicht nach den Vorgaben, wie man KODI-PlugIns programmieren sollte.
Das macht es natürlich schwer was zu sagen ohne das komplette PlugIn zu analysieren.
Vermutlich könnte man besser ein neues PlugIn von Grund auf programmieren.
Mir persönlich fehlt dazu aber die Zeit und vor allem die Muße mich in python entsprechend einzuarbeiten.

Ich habe mir das Plugin mal angesehen und muss dazu sagen, dass ich zwar in der Branche arbeite, aber in Sachen Kodi und Python wahrlich kein Experte bin.
Aber es hat gereicht um das HTTP 401 Problem zu lösen :smiley:
Ich habe herausgefunden, dass die init.py im /resources/lib Ordner des Plugins für die Übergabe des Stream Links verantwortlich ist, genauer gesagt die letzte Funktion playVideoStream.
Ich habe lösungsorientiert gearbeitet, also auf meine zuvor getätigte Vermutung gestützt und keine Zeit darin investiert herauszufinden, wie es dazu kommt und warum es bei manchen hier klappt.
Da der HTTP 401 aussagt, dass man nicht autorisiert ist, war meine Vermutung, dass die HTTP Session anscheinend nicht an erwähnte Funktion übergeben wird.
Aus diesem Grund habe ich aus einer Funktion, die weiter oben vorhanden war und die Logindaten testet, den Command herauskopiert, der die HTTP Session aufbaut.
Das ganze sieht dann so aus:

def playVideoStream(url, name='', art=None, streamInfo=None):
    """
    Create media player and open given stream URL.

    @type url: str
    @param url: the URL of the media file
    @type name: str
    @param name: a nice human-readable name
    @type art: dict
    @param art: dictionary as expected by xbmcgui.ListItem.setArt()
    @type streamInfo: dict
    @param streamInfo: metaData for the media file
    @type streamInfo: dict
    @param: streamInfo: technical info about the stream (such as the duration or resolution)
    """
    session, response = createHTTPSession(HTTP_BASE_API_URI + '/?action=getFeed&from=[]&limit=1', requestMethod='HEAD')

    listitem = xbmcgui.ListItem(name)
    listitem.setInfo('video', streamInfo)
    if art is not None:
        listitem.setArt(art)
    playlist = xbmc.PlayList(1)
    playlist.clear()
    playlist.add(url, listitem)

    xbmc.Player().play(playlist)
    playlist.clear()

Folgender Teil ist direkt zu Beginn dazugekommen:

    session, response = createHTTPSession(HTTP_BASE_API_URI + '/?action=getFeed&from=[]&limit=1', requestMethod='HEAD')

Und…ja…was soll ich sagen, es funktioniert. Ich kann nun sämtliche Videos abspielen, bei mir funktioniert das Plugin nun.
Evtl. kann ja jemand, der in Sachen Python etwas bewanderter ist, als ich, erklären, warum die HTTP Sitzung nicht übergeben wird und warum dies nicht bei allen hier so ist.

Für diejenigen, die ebenfalls von diesem Fehler geplagt sind, ihr könnt euch das Addon mit meiner Veränderung hier herunterladen:
https://drive.google.com/file/d/1gzqOBBQ-jhhWF3dhC05MXgqWzoxwyXVx/view?usp=sharing

2 „Gefällt mir“

Meine Antwort von heute morgen muss ich nochmal bearbeiten, da mir scheinbar ein Fehler beim Testen unterlaufen ist.
Eine HTTP Session ist laut MassengeschmackTV 1800 Sekunden aktiv, das habe ich beim Testen nicht berücksichtigt.
Da ich mehreres ausprobiert hatte, kam ich so zum falschen Schluss.
Die Lösung ist weiterhin in der init.py zu suchen und zwar scheint die Funktion eine HTTP Sessiona aufzubauen und jene, die den Kodi Player startet, in unterschiedlichen Bibliotheken vorhanden zu sein.
Meine Theorie: Diese werden isoliert ausgeführt, dementsprechend ist dem Kodi Player die HTTP Sitzung nicht bekannt und man erhält den 401 Fehler.
Ich habe die Funktion playVideoStream nun nochmal bearbeitet:

def playVideoStream(url, name='', art=None, streamInfo=None):
    """
    Create media player and open given stream URL.

    @type url: str
    @param url: the URL of the media file
    @type name: str
    @param name: a nice human-readable name
    @type art: dict
    @param art: dictionary as expected by xbmcgui.ListItem.setArt()
    @type streamInfo: dict
    @param streamInfo: metaData for the media file
    @type streamInfo: dict
    @param: streamInfo: technical info about the stream (such as the duration or resolution)
    """

    USER                 = ADDON.getSetting('account.username')
    PWORD                = ADDON.getSetting('account.password')
    HTTP_BASE_URIC       = 'https://' + USER + ':' + PWORD + '@massengeschmack.tv/'
    HTTP_DOORSTOPPER     = HTTP_BASE_URIC + 'dl/wzm1/XXX-audio/wzm1.mp3'

    listitem = xbmcgui.ListItem(name)
    listitem.setInfo('video', streamInfo)
    if art is not None:
        listitem.setArt(art)
    playlist = xbmc.PlayList(1)
    playlist.add(HTTP_DOORSTOPPER, listitem)
    xbmc.Player().stop()
    playlist.clear()
    playlist.add(url, listitem)

    xbmc.Player().play(playlist)
    playlist.clear()

Hinzugekommen ist einmal:

    USER                 = ADDON.getSetting('account.username')
    PWORD                = ADDON.getSetting('account.password')
    HTTP_BASE_URIC       = 'https://' + USER + ':' + PWORD + '@massengeschmack.tv/'
    HTTP_DOORSTOPPER     = HTTP_BASE_URIC + 'dl/wzm1/XXX-audio/wzm1.mp3'

Und dann noch diese zwei Zeilen hier:

    playlist.add(HTTP_DOORSTOPPER, listitem)
    xbmc.Player().stop()

Bevor die gewünschte Datei gestreamt wird, habe ich zur Authentifizierung eine Variable mit einem HTTP Link, welcher die Zugangsdaten enthält (wie curl diese fordert) und zu einer kleinen MP3 Datei führt, erstellt, welche dann vom Player aufgerufen und gleich wieder gestoppt wird.
Die API von Massengeschmack gibt bei den Medien nur einen einfachen HTTP Link zurück ohne Zugangsdaten (wie auch), welchen ich mit den vorhandenen Libraries/Funktionen nicht entsprechend ummodellieren konnte, damit die Zugangsdaten enthalten sind.
Durch das Abrufen dieser MP3 wird eine Sitzung aufgebaut und man ist am Server authentifiziert, jetzt kann Kodi problemlos die zuvor ausgewählte Datei abrufen mit dem Link, den die API liefert.
Wichtig ist jedoch, dass man in den Settings bei der E-Mailadresse das „@“ durch „–at–“ (wie in der API Beschreibung angegeben) ersetzt, da Curl sonst Probleme macht.
Das ist keine perfekte Lösung, aber sie funktioniert :sweat:
Bleibt nur zu hoffen, dass die ausgewählte MP3 nicht mal irgendwann gelöscht, umbenannt oder verschoben wird :sweat_smile:
Jemand, der in Pyhton etwas bewanderter ist, schafft es vielleicht auch die von der API gelieferten Medienlinks umzubauen, damit Benutzername und Passwort enthalten sind.
In den vorhandenen Libraries habe ich keine Funktion hierfür gefunden, zum einbinden weiterer Libraries oder gar schreiben einer solchen Funktion fehlt mir momentan die Zeit.

Das ganze stelle ich gerne auch wieder zum Download bereit:
https://drive.google.com/file/d/1oAGKq3LzYSISiuclykM9FPQw3Va4O-6M/view?usp=sharing
Das Addon einfach drüberinstallieren und ggf. Kodi kurz neustarten.

2 „Gefällt mir“

Nett von dir, dass du deine MG-ID mit uns teilst. Den Admin wirds vielleicht wundern wenn er so viel Traffic ueber deine UUID sieht :ugly:

Uargh, hatte ich nicht gesehen, dass der Link mit der UUID gebildet wird.
Kannst du die Datei mit meiner UUID abrufen, wenn du eingeloggt bist?
Falls nicht, muss wohl jeder mit dem Problem selbst tätig werden: Seine UUID einfügen, die ZIP packen und das ganze auf seinem System installieren.
Falls doch, dann bezieht sich das ja nur auf die 6MB MP3, verkraftbar denke ich.
Wenn die Admins fragen, hab ich ja eine gute Erklärung zur Hand :man_shrugging:

1 „Gefällt mir“

Jo, ich glaube aber die ID in der URL ist recht uebefluessig fuer den request. Zumindest wenn ich im Browser https://massengeschmack.tv/dl/wzm1/audio/wzm1.mp3 aufrufe funktioniert es auch.

Ja, ID wird mit dem Cookie/Login nicht gebraucht. Im Zweifel aber bitte die URLs verwenden die zurückgegeben werden :smiley:

Für diesen Workaround kann auch „advent2021_16“ benutzt werden. Die ist 2,2MB groß.