2013-08-05 7 views
39

मैं शेल कमांड का परिणाम तक पहुँचने के लिए करना चाहते हैं:एक अजगर कार्यक्रम से यूट्यूब-डीएल का उपयोग कैसे करें

youtube-dl -g "www.youtube.com..." 

दायर करने के लिए इसके उत्पादन direct url मुद्रित करने के लिए; एक अजगर कार्यक्रम के भीतर से:

import youtube-dl 
fromurl="www.youtube.com ...." 
geturl=youtube-dl.magiclyextracturlfromurl(fromurl) 

क्या यह संभव है? मैं स्रोत में प्रणाली को समझने की कोशिश की लेकिन मिल गया खो दिया: youtube_dl/__init__.py, youtube_dl/youtube_DL.py, info_extractors ...

+0

http://stackoverflow.com/questions/89228/calling-an-external-command-in-python –

+0

सभ्य लेख यहाँ: http: // willdrevo .com/downloading-youtube-and-soundcloud-audio-with-python-and-pandas/ – lollercoaster

उत्तर

59

यह मुश्किल नहीं है और actually documented:

import youtube_dl 

ydl = youtube_dl.YoutubeDL({'outtmpl': '%(id)s%(ext)s'}) 

with ydl: 
    result = ydl.extract_info(
     'http://www.youtube.com/watch?v=BaW_jenozKc', 
     download=False # We just want to extract the info 
    ) 

if 'entries' in result: 
    # Can be a playlist or a list of videos 
    video = result['entries'][0] 
else: 
    # Just a video 
    video = result 

print(video) 
video_url = video['url'] 
print(video_url) 
+3

मुझे यह त्रुटि मिल रही है: आयात करें youtube_dl आयात त्रुटि: youtube_dl – Ufoguy

+5

नामक कोई मॉड्यूल आपको यूट्यूब_डीएल इंस्टॉल करना होगा: यदि आपके पास पाइप उपयोगिता है (इसे स्थापित करने के लिए, सूडो एपीटी-पाइथन-पाइप इंस्टॉल करें) तो आप सूडो पाइप कर सकते हैं youtube-dl – JulienFr

+1

इंस्टॉल करें यह आसान नहीं है ... – JulienFr

1

हैं youtube-dl एक टर्मिनल कार्यक्रम है, आप इच्छित डेटा का उपयोग करने की subprocess मॉड्यूल का उपयोग कर सकते हैं। अधिक जानकारी के लिए इस लिंक बाहर

की जांच: Calling an external command in Python

+19

पाइथन प्रोग्राम से एक अजगर प्रोग्राम को कॉल करना थोड़ा दुखद है, है ना? – JulienFr

+5

मैं 'यूट्यूब-डीएल' को पायथन में लिखे गए कमांड लाइन प्रोग्राम के रूप में मानता हूं और इसे कमांड लाइन से कॉल करने में कुछ भी गलत नहीं देखता। यदि आप स्रोत कोड के साथ चारों ओर घूमना चाहते हैं, तो कृपया ऐसा करने में संकोच न करें। –

+2

@Xaranke यदि आप Python से मॉड्यूल के रूप में youtube-dl आयात करते हैं तो आपके पास बहुत अधिक नियंत्रण होता है। कमांड लाइन से मुद्रित डेटा पार्सिंग कहीं भी विश्वसनीय नहीं है। – Wally

4

यहाँ एक तरीका है।

हम एक सूची में सेट-अप विकल्प 'स्ट्रिंग, जैसे कि हम कमांड लाइन तर्क सेट अप करते हैं। इस मामले में opts=['-g', 'videoID']। फिर, youtube_dl.main(opts) का आह्वान करें। इस तरह, हम अपने कस्टम .py मॉड्यूल, import youtube_dl लिखते हैं और फिर main() फ़ंक्शन का आह्वान करते हैं।

2

मैं इस

from subprocess import call 

command = "youtube-dl https://www.youtube.com/watch?v=NG3WygJmiVs -c" 
call(command.split(), shell=False) 
0

चाहते हैं यूनिक्स प्रणाली में उपप्रक्रिया, जिसमें यूट्यूब-डीएल पहले से स्थापित है का उपयोग करना, मैं इस स्क्रिप्ट लिख सकते हैं। आशा है कि यह ld कुछ व्यावहारिक अंतर्दृष्टि डाल

https://www.quora.com/What-are-the-best-Python-scripts-youve-ever-written/answer/Prasanna-Kumar-92?snids=850206706&idx=0

संबंधित मुद्दे