Youtube URLs von Playlist

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Dangerdistel
User
Beiträge: 3
Registriert: Freitag 3. Oktober 2014, 16:17

Hallo Leute,

ich bin komplett neu hier und hab auch so gut wie keine Ahnung von Python.
Ich wollte mir ein Script erstellen, welches die URL's eine YT-Playlist rausgibt, meinetwegen in eine txt-Datei.

folgenden Code hab ich gefunden:

Code: Alles auswählen

# Name: youParse.py
# Version: 1.5
# Author: pantuts
# Email: pantuts@gmail.com
# Description: Parse URLs in Youtube User's Playlist (Video Playlist not Favorites)
# Use python3 and later
# Agreement: You can use, modify, or redistribute this tool under
# the terms of GNU General Public License (GPLv3).
# This tool is for educational purposes only. Any damage you make will not affect the author.
# Usage: python3 youParse.py youtubeURLhere
 
import re
import urllib.request
import urllib.error
import sys
import time
 
def crawl(url):
    sTUBE = ''
    cPL = ''
    amp = 0
    final_url = []
     
    if 'list=' in url:
        eq = url.rfind('=') + 1
        cPL = url[eq:]
             
    else:
        print('Incorrect Playlist.')
        exit(1)
     
    try:
        yTUBE = urllib.request.urlopen(url).read()
        sTUBE = str(yTUBE)
    except urllib.error.URLError as e:
        print(e.reason)
     
    tmp_mat = re.compile(r'watch\?v=\S+?list=' + cPL)
    mat = re.findall(tmp_mat, sTUBE)
 
    if mat:
           
        for PL in mat:
            yPL = str(PL)
            if '&' in yPL:
                yPL_amp = yPL.index('&')
            final_url.append('http://www.youtube.com/' + yPL[:yPL_amp])
 
        all_url = list(set(final_url))
 
        i = 0
        while i < len(all_url):
            sys.stdout.write(all_url[i] + '\n')
            time.sleep(0.04)
            i = i + 1
         
    else:
        print('No videos found.')
        exit(1)
         
if len(sys.argv) < 2 or len(sys.argv) > 2:
    print('USAGE: python3 youParse.py YOUTUBEurl')
    exit(1)
     
else:
    url = sys.argv[1]
    if 'http' not in url:
        url = 'http://' + url
    crawl(url)

da ich hier beim Aufruf Parameter brauch, meine Frage. Wie muss ich das Script umstellen, dass ich sozusagen eine Tastatureingabe fordere, sprich das beim Aufruf des Scriptes der Nutzer die Playlist-Url angibt?

MfG DD
BlackJack

@Dangerdistel: Der Quelltext ist ziemlich gruselig, den würde ich gar nicht verwenden.

Zur Frage: Lern Python, dann kannst Du die Änderung selber machen. ;-)
Dangerdistel
User
Beiträge: 3
Registriert: Freitag 3. Oktober 2014, 16:17

@BlackJack

naja ich kann mich ja versuchen damit mal anzufreunden :D
es ging mir schlicht nur um das Herausfiltern der URLs der Playlist :)

es gibt zwar Webanwendungen, aber diese geben nur einen Teil davon, weil es einen Timeout gab

wenn es eine Alternative für Delphi gäbe :D

Gruß DD
Dangerdistel
User
Beiträge: 3
Registriert: Freitag 3. Oktober 2014, 16:17

wäre nett, wenn mir jemand helfen würde :)
BlackJack

@Dangerdistel: In der Python-Dokumentation gibt es ein Tutorial. Für Webseiten herunterladen würde ich das `requests`-Modul empfehlen. Zum Parsen von HTML entweder BeautifulSoup oder `lxml.html`. Für das Parsen von URLs gibt es in der Standardbibliothek das `urlparse`-Modul. (Kann sein, dass das in Python 3 anders heisst.)

Der Style Guide for Python Code ist einen Blick wert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Eventuell ist so sogar noch einfacher mit python-gdata auf die Google-APIs zuzugreifen, dann muss man auch die Seiten nicht scrapen (was vermutlich laut AGB sowieso verboten ist).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten