Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
YoutubePlaylistLoader
huttERic Offline
Yet Another Vostro User

Beiträge: 1.969
Registriert seit: Jul 2008
Beitrag #1
YoutubePlaylistLoader
Jo, ich hab hier mal als Übung für Regular Expressions einen Youtube Playlist Downloader für .NET 2.0 gecodet. Ist ne Konsolenanwendung, kann downloaden oder die Links in eine Liste schreiben, die eigentlich jeder Downloadmanager verarbeiten sollte. Playlist-ID angeben, paar Angaben machen, sich freuen. Ist in Englisch, ka warum :D
Source dabei, WTFPL lizensiert :D
YoutubePlaylistDownloader.rar (8,47 KB)
Jo, wer Bugs findet darf sie melden oder gleich ausbessern, ich übernehme keine Garantie, auch nicht für Schäden, die durch das Betrachten des Sourcecodes entstehen.
Und wer mir einen gescheiten Regex geben kann, mit dem ich aus der Youtube URL die Playlist-ID rausholen kann (mit oder ohne www. oder de. xy. vor youtube.com und mit oder ohne sinnlosen Anhängseln am Ende der URL), der wird von mir gepriesen bis in alle Ewigkeit oder so.
Und das Downloaden von Material, welches euch nicht gehört, ist natürlich verboten.
23.02.2009 22:43
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Offline
Quälgeist

Beiträge: 8.951
Registriert seit: Jul 2008
Beitrag #2
YoutubePlaylistLoader
Mangels Windows hab ich nur kurz den Quellcode überflogen.

Ich weiss deine Arbeit zu schätzen, aber...

Warum zum Teufel stocherst in den HTML-Seiten von YouTube mit regulären Ausdrücken rum, anstatt einfach die API von YouTube zu verwenden?

Ich mein, da gibt es sogar .NET Beispiele dazu:
Developer's Guide: .NET - YouTube APIs and Tools - Google Code
23.02.2009 23:01
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
huttERic Offline
Yet Another Vostro User

Beiträge: 1.969
Registriert seit: Jul 2008
Beitrag #3
YoutubePlaylistLoader
gandro schrieb:  Mangels Windows hab ich nur kurz den Quellcode überflogen.

Ich weiss deine Arbeit zu schätzen, aber...

Warum zum Teufel stocherst in den HTML-Seiten von YouTube mit regulären Ausdrücken rum, anstatt einfach die API von YouTube zu verwenden?

Ich mein, da gibt es sogar .NET Beispiele dazu:
Developer's Guide: .NET - YouTube APIs and Tools - Google Code
Fuck stimmt ja, es gibt ja eine Youtube API :( Das macht natürlich alles einfacher... Aber eigentlich war das ganze ja eine Übung für Reguläre Ausdrücke.
EEEEEEEEEDIT: Aber für die API braucht man einen API-Key. Und für nen API-Key muss man sich registrieren. Und zum registrieren muss man sich anmelden. Und zum registrieren muss man einer Lizenzbestimmung zustimmen. Und ich will mir die nicht durchlesen, weil ich schon erraten kann, was drinsteht: Download verboten.
(Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2009 00:21 von huttERic.)
23.02.2009 23:50
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Offline
Quälgeist

Beiträge: 8.951
Registriert seit: Jul 2008
Beitrag #4
YoutubePlaylistLoader
Soweit hätt ich nicht mal gedacht. Aber hast völlig Recht.
Hab mir den Quellcode jetzt noch etwas genauer angeschaut, sieht sauber aus, gefällt mir (bis auf die Ausgabe, die ganz langen mehrzeiligen Strings dürten imho auch im Code mehrere Zeilen lang sein).

Ganz toll natürlich: Types_needed_for_more_than_one_method_wtf_what_a_stupid_name_this_region_has :D

Weil es ja lobenswerterweise keine GUI hat, läufts sogar ohne frisch kompilieren mit Mono.

Muss sagen, gefällt mir richtig gut.

Einen Bug hats allerdings unter Non-Windowsen: Das am ApplicationPath angehängte \ wird unter Linux/Unix nicht als Verzeichnis-Trennzeichen gehandhabt. Ich krieg also keine Datei "links.txt" im Verzeichnis "/tmp/YoutubePlaylistDownloader", sondern eine Datei "YoutubePlaylistDownloader\links.txt" im Verzeichnis "/tmp".
24.02.2009 01:03
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
huttERic Offline
Yet Another Vostro User

Beiträge: 1.969
Registriert seit: Jul 2008
Beitrag #5
YoutubePlaylistLoader
gandro schrieb:  Soweit hätt ich nicht mal gedacht. Aber hast völlig Recht.
Jo, schade eigentlich.
Zitat:Hab mir den Quellcode jetzt noch etwas genauer angeschaut, sieht sauber aus, gefällt mir (bis auf die Ausgabe, die ganz langen mehrzeiligen Strings dürten imho auch im Code mehrere Zeilen lang sein).
Ui, ich hätte jetzt gedacht, dass der als schlechter beurteilt wird. Stimmt aber mit den Texten, hab das je nach Lust und Laune gemacht, werde ich ausbessern.
Zitat:Ganz toll natürlich: Types_needed_for_more_than_one_method_wtf_what_a_stupid_name_this_region_has :D
Ja, ich war grad lustig drauf :D
Zitat:Weil es ja lobenswerterweise keine GUI hat, läufts sogar ohne frisch kompilieren mit Mono.

Muss sagen, gefällt mir richtig gut.

Einen Bug hats allerdings unter Non-Windowsen: Das am ApplicationPath angehängte \ wird unter Linux/Unix nicht als Verzeichnis-Trennzeichen gehandhabt. Ich krieg also keine Datei "links.txt" im Verzeichnis "/tmp/YoutubePlaylistDownloader", sondern eine Datei "YoutubePlaylistDownloader\links.txt" im Verzeichnis "/tmp".
Okay, das werde ich mal versuchen zu fixen. Mal schaun, ob System.IO.Path da was für hat. Die hat mono doch hoffentlich leicht modifiziert :D ansonsten muss ich halt das OS abfragen.

Inline-EDIT:
Jo, das hätte ich Microsoft doch gar nicht zugetraut, aber in System.IO.Path ist doch tatsächlich ein DirectorySeparatorChar drin, den Mono natürlich auf Unixoiden Betriebssystemen anders implementiert als Mono oder MS .NET auf Windows. Im nächsten Release wird das dann gefixt sein :) Der kommt aber wahrscheinlich erst, nachdem auch der andere Bug unten gefixt ist. //END-of-Inline-EDIT

Und ich habe auch einen Bug gefunden: Bei manchen Playlists zeigt Youtube komischerweise alle Videos auf einer Seite an. Das merkt mein Tool natürlich nicht, geht von 10 Videos pro Seite aus und lädt daher die ersten 10 Videos doppelt und dreifach, abhängig von der Zahl der Videos. Das werde ich in Zukunft natürlich fixen.
Aber schön, dass es dir gefällt =)

Yet-Another-EDIT:

Dann ist mir noch die Idee gekommen (da ich eigentlich nur noch wach bin, um den Rechner nach einem Download runterzufahren), dass man ja einen Befehl einstellen könnte, der am Ende ausgeführt wird...
(Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2009 01:42 von huttERic.)
24.02.2009 01:11
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
huttERic Offline
Yet Another Vostro User

Beiträge: 1.969
Registriert seit: Jul 2008
Beitrag #6
YoutubePlaylistLoader
Neue Version draußen:
YoutubePlaylistDownloader.zip (9,20 KB)
Changelog:
- Sollte nun mit den unixoiden Dateisystemen klarkommen
- Falls das Video verbotene Zeichen im Namen hat, werden diese beim Download gelöscht. Wie das mit unixoiden ist, weiß ich nicht. (Unter Windows sind das \/:*?"<>|)
- Jetzt wird erkannt, wie viele Seiten die Playlist auch wirklich hat -> Es werden keine Videos mehr doppelt runtergeladen
- Kleine Schönheitsoperationen am Sourcecode

So, bitte fleißig weiter testen =) Vor allem würden mich die im Dateinamen nicht erlaubten Zeichen unter unixoiden Systemen interessieren.
24.02.2009 10:18
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Offline
Quälgeist

Beiträge: 8.951
Registriert seit: Jul 2008
Beitrag #7
YoutubePlaylistLoader
huttERic schrieb:  So, bitte fleißig weiter testen =) Vor allem würden mich die im Dateinamen nicht erlaubten Zeichen unter unixoiden Systemen interessieren.
Hängt grundsätzlich Dateisystem ab, in der Regel sind das aber lediglich NUL (0x00) und / :D

NUL, weil es bei C das String-Ende darstellt, / weil es der Verzeichnis-Trenner ist.

Das mit der links.txt funktioniert jedenfalls.
24.02.2009 10:36
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
huttERic Offline
Yet Another Vostro User

Beiträge: 1.969
Registriert seit: Jul 2008
Beitrag #8
YoutubePlaylistLoader
Okay, ich werde mal sehen, inwieweit ich da noch was einbaue...
Ist auch gerade eine neue Version kompiliert worden:
PlaylistDownloader.zip (9,07 KB)
Changelog:
- Dateinamen werden jetzt mit führenden Nullen vergeben. z.B. 01 - xy.flv bis 81 - xyz.flv oder aber 0001 - zu.flv bis 9901 - asdf.flv

EDIT:
Yet another new version:
PlaylistDownloader.zip (9,40 KB)
Changelog:
- NUL als illegales Zeichen im Dateinamen hinzugefügt
- Unter Windows werden aus dem Dateinamen entfernt: \/:*?"<>| und NUL
- Unter allen anderen Systemen werden entfernt: / und NUL
(Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2009 11:22 von huttERic.)
24.02.2009 10:53
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
huttERic Offline
Yet Another Vostro User

Beiträge: 1.969
Registriert seit: Jul 2008
Beitrag #9
YoutubePlaylistLoader
So, neue Version hochgeladen. Changelog:
- Paar Codeverbesserungen
- Jetzt kann man existierende Dateien überspringen (Falls es Netzwerkprobleme gegeben hat
- Möglichkeit, die Tonspuren als mp3 direkt aus den Dateien zu extrahieren. (Passiert mit FLVExtract [GPL v2, daher Lizensierung des ganzen Programms unter GPL v2])

So, ich hoffe, dass alles so funktioniert, wie es soll, auch unter Mono.
YoutubePlaylistDownloader.zip (42,85 KB)
25.02.2009 17:10
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Alex Offline
Registriert seit 17.04.06

Beiträge: 6.619
Registriert seit: Jul 2008
Beitrag #10
YoutubePlaylistLoader
hö?

Darf ich unter Tux meine Pornos nichma "Gina Wild - Ultra Gangbang NUL.avi" nennen oder wie b2

Desktop: AMD FX-6200 @ 6 x 4,3 GHz | 32 GB DDR3 | Intel Arc A380 | SSD: 1 TB @ M.2 to PCIe Adapter + UEFI NVMe Driver Injection | HDD: 15 TB | Win 11 Pro | Dual Monitor 2 x 27"
Notebook: Lenovo ThinkPad T420 | i5 2520M | 16 GB DDR3 | SSD: 250 GB | USB 3.0 | 300 MBit WWAN @ D1 | AC WLAN | BT 4.0 | 2 x 70++ | 1 x 27++ Slice | Win 11 Pro | FHD Display Mod
Internetleitung: Telekom | FTTH | D: 500 MBit / U: 200 MBit | Telekom Glasfasermodem | AVM Fritz!Box 7490
Räder: [Daily: Stevens E-Triton 2016] [Cyclocross: Stevens Prestige 2019] [Cargobike: Urban Arrow Cargo XL 2023]
25.02.2009 17:15
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste