2013-08-05 34 views
39

Tôi muốn truy cập vào kết quả của lệnh shell:Làm thế nào để sử dụng youtube-dl từ một chương trình python

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

để in sản lượng của nó direct url nộp; từ bên trong chương trình python:

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

Có thể không? Tôi cố gắng để hiểu được cơ chế trong nguồn nhưng đã mất: youtube_dl/__init__.py, youtube_dl/youtube_DL.py, info_extractors ...

+0

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

+0

Decent ghi-up ở đây: http: // willdrevo .com/download-youtube-and-soundcloud-audio-với-python-and-pandas/ – lollercoaster

Trả lời

59

Đó không phải là khó khăn và 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

Tôi nhận được lỗi này: nhập youtube_dl NhậpError: Không có mô-đun tên youtube_dl – Ufoguy

+5

Bạn phải cài đặt youtube_dl: nếu bạn có tiện ích pip (để cài đặt nó, sudo apt-get install python-pip) bạn có thể vào sudo pip cài đặt youtube-dl – JulienFr

+1

Không dễ dàng ... – JulienFr

1

Nếu youtube-dl là một chương trình thiết bị đầu cuối, bạn có thể sử dụng các mô-đun subprocess để truy cập dữ liệu mà bạn muốn.

Kiểm tra liên kết này để biết thêm chi tiết: Calling an external command in Python

+19

Đó là một chút buồn khi gọi một chương trình python từ một chương trình python, phải không? – JulienFr

+5

Tôi xem 'youtube-dl' là một chương trình dòng lệnh được viết bằng Python và không thấy có gì sai khi gọi nó từ dòng lệnh. Nếu bạn muốn muck xung quanh với mã nguồn, xin vui lòng cảm thấy tự do để làm như vậy. –

+2

@Xaranke Bạn có nhiều quyền kiểm soát hơn nếu bạn nhập youtube-dl làm mô-đun từ python. Phân tích dữ liệu in từ dòng lệnh là hư không đáng tin cậy. – Wally

4

Dưới đây là một cách.

Chuỗi tùy chọn thiết lập, trong danh sách, giống như khi chúng tôi thiết lập đối số dòng lệnh. Trong trường hợp này là opts=['-g', 'videoID']. Sau đó, gọi số youtube_dl.main(opts). Bằng cách này, chúng tôi viết mô-đun .py tuỳ chỉnh của chúng tôi, import youtube_dl và sau đó gọi hàm main().

2

Tôi muốn này

from subprocess import call 

command = "youtube-dl https://www.youtube.com/watch?v=NG3WygJmiVs -c" 
call(command.split(), shell=False) 
Các vấn đề liên quan