“(403) Unzulässig” und meine Meinung dazu (LastSharp)
Wie sicher einige (alle?) LastSharp-User bemerkt haben (siehe hier, hier und hier), tritt in letzter Zeit bei so gut wie jedem Download (Versionen bis einschließlich 0.4 beta 1) bzw. nach einer gewissen Downloadanzahl (~ 15 in Version 0.4 beta 2) die folgende Fehlermeldung auf:
“Der Remoteserver hat einen Fehler zurückgegeben: (403) Unzulässig.”
Meine erste Vermutung war eine Protokolländerung, also habe ich mir den Datenverkehr des Last.FM-eigenen Clients angesehen und in der Tat Unterschiede zum Ablauf in LastSharp festgestellt. Nach einigen kleineren Modifikationen (z.B. übergebene Versionsnummer) lieferte der Last.FM-Server mit einem Mal andere Playlist-Daten: während die alten Adressen stets mit “http://kingpinX.last.fm” (statt X eine Server-Nr.) begannen, war es hier nun einheitlich “http://play.last.fm”. Damit erklärt sich die Fehlermeldung oben: da die gesuchte Datei gar nicht existiert, kann auch der Server den Zugriff darauf nicht erlauben und schickt eine “403 Forbidden” als Antwort. (Warum es keine “404 Not Found” ist, darf mir gerne jemand erklären, dem das logisch erscheint…)
Kein großes Problem, möchte man meinen, die neuen URLs stimmen nun ja wohl, aber nein, nur eine neue Fehlermeldung war das Ergebnis:
“Der Server hat eine Protokollverletzung ausgeführt.. Section=ResponseHeader Detail=Auf CR muss LF folgen”
Dies wiederum ist ein Fehler, über den man im Web nichts nützliches findet, schon gar keine Lösungswege. Er besagt folgendes: Der antwortende Server hält sich nicht an die Vorschriften des Hypertext Transfer Protocols (HTTP), indem er im HTTP-Header einen nicht wohlgeformten Zeilenumbruch liefert. (nur “\r” oder “\n” statt “\r\n”; siehe Carriage Return)
Der springende Punkt ist: die im .NET-Framework enthaltenen Klassen WebClient und HttpWebResponse können diesen Fehler nicht ignorieren, brechen das Lesen jedweder Daten sofort ab und werfen eine Ausnahme, die LastSharp wiederum auffängt und anzeigt. Der einzige Weg scheint es also zu sein, eine Ebene unter HTTP anzusetzen und eine Klasse zu schreiben, die via TCP/IP Anfragen sendet und Antworten verarbeitet. Damit werden nicht wohlgeformte HTTP-Header ignoriert und nur noch die Daten “pur” gelesen. Ein klein wenig Arbeit später und dank eines Tutorials (TCP/IP Socket-Programmierung in C#) bin ich letztlich also an die übertragene Antwort gelangt (wie sie aussah, wusste ich bereits vom “Abhören” des Last.FM-Clients):
HTTP/1.1 302 Moved Temporarily Server: Apache-Coyote/1.1 Response Code: 302 Location: http://s13.last.fm/user/[...]/1235689235/25/329486354/reg/1/0/128.mp3 Date: Thu, 26 Feb 2009 23:00:34 GMT Connection: close
Die gesuchte Datei befindet sich also nicht an der zuerst ermittelten Adresse (“http://play.last.fm/…”), sondern kann über die hier nach “Location: ” stehende URL (“http://s13.lastf.fm/…”) erreicht werden. Diese auszulesen war weiter kein Problem, und schon hat LastSharp wieder einigermaßen funktioniert. (Das ist der Stand der aktuellen Beta 2; einige Benutzer scheinen trotzdem noch die selbe Fehlermeldung erhalten… Warum weiß ich bisher nicht.)
Dann kam ein Hinweis von SvS, dass der Download nun nach etwa 15 Titeln jedes Mal abbricht. Ich vermute, dass die “Lebensdauer” einer einzelnen Last.FM-Wiedergabeliste verringert wurde. Da LastSharp 30 Titel anzeigt, eine einzelne Liste aber nur maximal 5 Titel enthält, werden bis zu 10 dieser Listen heruntergeladen. Und diese verfallen in der Zeit, die man für Titel-Downloads benötigt. Nach einem neuen TuneIn (manuell bzw. in der nächsten (Beta-)Version automatisch) sollte das Problem verschwunden sein.
Ich würde mich über Meinungen hierzu freuen.
Ich hab von der Materie überhaupt keine Ahnung, also kann ich ganz unvoreingenommen Vorschläge machen (in der Hoffnung nicht gesteinigt zu werden)
Kann man die playlist nicht auf fünf downloads verkürzen und dann neu laden bzw. die Lieder einzeln runterladen ohne die Liste? Dann fehlt zwar die Auswahlmöglichkeit, aber alle viertel Stunde neu laden halte ich für noch unangenehmer.
Gruß
Franky
Franky
27 Feb 09 at 08:37
Mit der 0.4 hat sich was an der Funktion “downloads merken” geändert. Einige Downloads werden ausgeblendet, andere erneut geladen. Gibt es dafür eine Erklärung?
Gruss (ansonsten finde ich das Programm toll)
Willy
Willy Klotz
27 Feb 09 at 10:38
bei mir ging erst die beta 2, dann tauchten fehlermeldung auf, irgendwas mit tunein fehler oder die playlist wurde nicht richtig eingelesen (bei tags)
hab irgendwie das gefuehl, als ob lastfm was geaendert hat ?
lg
debie
debie
27 Feb 09 at 10:51
nun hab ich das nächste problem – über “meine musikbibliothek” bekomme ich plötzlich die gleichen titel mehrfach, teilweise direkt hintereinander. macht eigentlich wenig sinn, innerhalb einer download-liste den gleichen titel 8 mal zu laden ….
Willy Klotz
27 Feb 09 at 13:48
Ja, auch das kann ich bestätigen
Franky
27 Feb 09 at 14:45
das mit den titeln die mehrfach in der liste stehen hab ich auch
debie
27 Feb 09 at 15:29
Die doppelten Titel haben allerdings den Vorteil daß die playlist schneller abgearbeitet ist, da nichts doppelt runtergeladen wird. Dadurch ist der Fehler 403 bei mir seit über einer Stunde nicht mehr aufgetreten.
Franky
27 Feb 09 at 15:43
Damits nicht langweilig wird, hier mal ein neuer Fehler:
Es ist ein Problem beim TuneIn aufgetreten:
Response:
response=FAILED
error=1
Franky
27 Feb 09 at 17:43
also, eins nach dem anderen:
1. die version, an der ich gerade arbeite, besitzt eine funktion, die beim ungültig-werden der playlist automatisch eine neue lädt. damit sollte man den automatischen download wieder wie früher verwenden können. (und eine begrenzung auf 5 titel ist dann auch nicht nötig. wenn man einen filter verwendet, ist das auch jetzt überflüssig, da dann ja nicht alle titel heruntergeladen werden würden)
2. beim tune-in zu “meine musikbibliothek” und “meine playlist” könnte es sein, dass last.fm nun rücksicht darauf nimmt, wie groß die zeitdifferenz zwischen dem abrufen zweier teil-playlists ist. ist sie zu klein, wird einfach wieder die alte geschickt.(ergo: wenn das zutrifft, muss eine verzögerung eingebaut werden.)
3. Was “Downloads merken” angeht: ich habe da ein neues System entwickelt, das freilich noch immer kleine Bugs haben kann. Aber bei mir siehts eigentlich ganz vernünftig und funktionierend aus. Soll heißen: könntest du, Willy Klotz, mir ein Beispiel schicken?
4. TuneIn: Wie häufig tritt der Fehler auf?
Yannick
xsc
27 Feb 09 at 18:36
Zu 4.:
Bis jetzt erst ein Mal. Kann allerdings daran gelegen haben daß ein Lied irgendwelche Hyeroglyphen enthalten hat.
Franky
27 Feb 09 at 18:39
1. Wie sieht es mit dem lokalen Abspeichern der CoverArt.jpg im jeweiligen Album-Dir aus? Tritt der Fehler nur bei mir auf, dass das seit 0.4 nicht mehr funktioniert?
2. Die Umstrukturierung bei Last.fm und die damit verbundenen Probleme- was glaubt ihr: Könnte das eine bewusste Reaktion von Last.fm auf Programme wie LastSharp sein, oder einfach nur Zufall?
SvS
27 Feb 09 at 19:05
Noch was ist mir aufgefallen. Bei der neuen Version werden die Filterregeln beim Schließen nicht mehr gespeichert. Beim nächsten Start ist das Filterfeld wieder leer.
Franky
27 Feb 09 at 19:08
Also mit der beta2 funzt es immo bei mir ganz gut
es läuft seit etwa 6h durch.
Aber mal ne andere Frage weiss nicht ob sie schonmal irgendwo gestellt wurde. Ist es möglich in LS eine funktion einzubauen die es ermöglicht das die Tracks nach dem Download auch in andere player ( z.B. Winamp und co )automatisch geladen werden ausser in dem mitgeliefertem Player ?
monty
27 Feb 09 at 22:21
Ich vermute mal, es gibt tatsächlich eine Einschränkung mit der Abfrage der Playlist (dass also bei zu kurzem Abstand immer wieder die alten Lieder kommen, nur in umgekehrter Reihenfolge) daher wäre eine kurze Pause (2-3sec sollten schon genügen) nach jeweils 5 Titeln zumindest mal einen Test wert. Vielleicht wäre es ja auch möglich, dass das Programm kontinuierlich die Plalist nachlädt, müsste ja eigentlich auch während des Downloads möglich sein, der Originalclient braucht ja auch keine Pause zwischendurch, um die PL neu zu laden.
Andre
28 Feb 09 at 10:49
@Franky:
Ja, Sonderzeichen machen immer Probleme, aber da das nur ein einziges Mal aufgetreten ist, sehe ich das jetzt mal als Ausnahme.
Was das Filterfeld angeht: den Fehler habe ich bereits bemerkt und für die nächste Beta ausgebessert.
@SvS:
1. Das schau ich mir gleich mal an. Wahrscheinlich habe ich da irgendwo geschlampt.
2. Daran habe ich auch schon gedacht. Und es klingt unerfreulicherweise nicht sonderlich abwegig. Aber was bedeutet das für mich? Soll ich jetzt das Projekt LastSharp den Bach runter gehen lassen?
@monty:
Deinen Vorschlag habe ich auf der Beta-Seite gleichmal unter “Geplant” notiert. Hätt’ ich auch selbst draufkommen können. Danke!
@Andre:
2-3 Sekunden nach 5 Titeln wären demnach über 20-30s beim Laden der Playlist. Aber wenns funktioniert, ist es das wohl wert.
Kontinuierliches Nachladen… Hmm… Ich muss mir mal überlegen, wie ich das machen soll und unter welchen Umständen das überhaupt funktioniert…
EDIT:
Es scheint als würde eine eingebaute Verzögerung beim Laden der einzelnen Playlists wirklich das Problem der doppelten Einträge beheben. Der Wert beträgt dabei ungefähr 2.7s. (Also: gut geschätzt, Andre) Ich werde in den Einstellungen-Dialog ein Textfeld setzen, wo man die Verzögerung selbst festlegen kann. Wer also von den doppelten Titeln nicht gestört wird, darf sie auch behalten.
Yannick
xsc
28 Feb 09 at 17:03
@xsc: “Soll ich jetzt das Projekt LastSharp den Bach runter gehen lassen?”
NEIN! Natürlich nicht. LastSharp ist ein tolles Programm, und soweit es irgendwie geht, würde ich es den geänderten Protokollen anpassen. Weiter so!
SvS
1 Mrz 09 at 16:44
BREAKING NEWS: Ein Ruck geht durch die Bevölkerung, Leute gehen mit Transparenten auf die Straße, Ausschreitungen werden befürchtet, weil LS den Bach runtergeht. Kann die Katastrophe noch abgewendet werden?
Franky
1 Mrz 09 at 16:59
Okay, okay, überzeugt
Legen wir gemeinsam den Bach trocken, den LastSharp runterzugehen droht! Und ja verdammt, ich habe keine Ahnung, wofür das eine Metapher sein soll!
xsc
1 Mrz 09 at 17:11
Hallo,
zum Thema Winamp & Co. denke ich, dass die geschickteste Lösung wäre, eine Kommandozeile einzubauen, die nach jedem neuen Download aufgerufen wird.
Dort kann man dann seinen Player einkonfigurieren. Am besten mit Platzhaltern für den Dateinamen, den Pfad und evtl. auch die Tags bzw. die Cover-Infos.
Damit sollte man eigentlich alles erschlagen können und zur Not auch ein Batch aufsetzen, welches sowohl den Player startet als auch den Künstler in Wikipedia nachschlägt …
Für die Sache mit dem Nachladen der Playlist, müsste wohl die Listenverwaltung umgestellt werden:
- Die lokale Playlist dynamisch bauen, dass sowohl Einträge entfernt werden können, als auch welche hinzugefügt.
- Erledigte oder gefilterte Einträge können dann gleich einzeln raus.
- Wird die Liste zu kurz (Schwellwert) wird einfach während des aktuellen Download schon mal eine neue Playlist geladen und angehängt.
Bei dieser Automatik wären die Abstände zwischen den Aufrufen wohl auch so groß, dass hier keine Probleme mehr mit LastFM entstehen.
Wenn Yannick bei der aktuellen Listenverwaltung bleibt, könnte er auch ein Haltbarkeitsdatum einbauen. Ich weiß zwar nicht wie der Wert ungefähr ausfällt, aber bei 5 Titeln könnte man z.B. auf 15 Minuten tippen. Ist die Liste einfach älter, als die eingestellte Zeit, wird alles verworfen und neu geladen – einfach auf den Fehler zu reagieren ist natürlich auch eine Lösung
Grüße,
Jogi
Jogibaer
2 Mrz 09 at 22:45
@Jogibaer:
Hast du dir den Release Candidate 1 angesehn? Die Einbindung von WinAmp und Co. geschieht in der Tat über eine Kommandozeile (allerdings bisher nur mit dem Dateinamen als einsetzbarem Parameter) und das Nachladen der Playlist wird beim Auftreten des Fehlers gestartet. Allerdings werde ich mir wirklich überlegen, die Playlist dynamischer zu gestalten, da dadurch ein Haufen Wartezeit verschwindet.
Aber soweit von mir,
Yannick
xsc
2 Mrz 09 at 23:43
Hallo,
erstmal Danke für so ein tolles Programm. Leider kriege ich es nicht hin irgendwas runterzuladen. Hab die Version RC1 und beta2 ausprobiert. Bei RC1 bekomme ich immer den Fehler “Die aktuelle Playlist ist nicht mehr gültig. Soll Sie neu geladen werden?”. Und bei der beta2 kommt immer der 403-Fehler. Hab ich was falsch gemacht?
Gruß
skisurfer
3 Mrz 09 at 19:07
@skisurfer:
Was steht denn in der Datei “lastsharp.log” im LastSharp-Verzeichnis? Das könnte weiterhelfen…
xsc
3 Mrz 09 at 19:13
Wenn ich bei der RC1 nur ein Lied runterladen will schlägt das auch mit der Fehlermeldung “Die aktuelle Playlist ist nciht mehr gültig…” fehl aber es wird kein log erstellt. Das log wird nur erstellt wenn der Haken bei “Automatisch mit Downloads fortfahren” gesetzt ist.
Hoffe die Fehlerbeschreibungen helfen irgendwie weiter und es liegt nicht nur an mir.
Gruß
skisurfer
3 Mrz 09 at 19:51
Okay, öffne mal die Datei “settings.xml” und ändere die vorletzte Zeile in “<Debug>0</Debug>”, dann mach genau das, was bisher den Fehler immer ausgelöst hat und schicke mir anschließend deine Log-Datei an Yannick_Scherer@gmx.net. Dann schau ich mir das mal an!
xsc
3 Mrz 09 at 20:08
Hab mal kurz den Lastripper angetestet. Der scheint zu funktionieren. Zumindest wurden auf die schnelle 2 Lieder runtergeladen. Allerdings finde ich ihn bei weitem nicht so userfreundlich wie dein LastSharp. Wäre also schon toll, wenn ich LastSharp noch zum laufen bekäme.
skisurfer
3 Mrz 09 at 20:09