ปัญหาในการดาวน์โหลดเพลย์ลิสต์โดยใช้ youtube-dl


19

ฉันได้รับข้อความว่าต้องอัปเดต youtube-dl เมื่อฉันพยายามดาวน์โหลดเพลย์ลิสต์จาก youtube เมื่อฉันพยายามอัปเดตฉันมีข้อความแสดงข้อผิดพลาดนี้:

elshahen@elshahen-LAB:~$ youtube-dl -cit https://www.youtube.com/playlist?list=PLGwhw5SI2xoYKHyzQDj1y2I8vURgm8yd2
[youtube:playlist] PLGwhw5SI2xoYKHyzQDj1y2I8vURgm8yd2: Downloading page #1
WARNING: [youtube:playlist] PLGwhw5SI2xoYKHyzQDj1y2I8vURgm8yd2: Playlist page is missing OpenGraph title, falling back ...
ERROR: Unable to extract title; please report this issue on https://yt-dl.org/bug . Be sure to call youtube-dl with the --verbose flag and include its complete output. Make sure you are using the latest version; type  youtube-dl -U  to update.

ดังนั้น ... คุณทำอะไรที่มันแนะนำหรือไม่
Nattgew

1
ฉันพบปัญหาตามที่อธิบายในชื่อเรื่อง แต่เนื่องจากเหตุผลอื่น หากใครก็ตามพบเจอสิ่งนี้ (แต่ข้อความแสดงข้อผิดพลาดแตกต่างกัน) อย่าลืมใส่ URL ของคุณไว้ในเครื่องหมายคำพูดเช่นyoutube-dl -x "https://www.youtube.com/watch?v=abcd&list=efgh"เนื่องจากทั้ง cmd.exe ของ Windows และ Linux shell แปลว่าเครื่องหมายและเครื่องหมาย&เป็นอักขระพิเศษ
f.ardelian

คำตอบ:


31

ฉันมีปัญหานี้ .. ลองใช้วิธีนี้ ...

ลบ youtube-dl เวอร์ชันเก่าออก

sudo apt-get remove -y youtube-dl

ดาวน์โหลดเวอร์ชั่นล่าสุดได้จากเว็บไซต์ทางการ

sudo wget https://yt-dl.org/latest/youtube-dl -O /usr/local/bin/youtube-dl

เปลี่ยนการอนุญาตของไฟล์ที่ดาวน์โหลด

sudo chmod a+x /usr/local/bin/youtube-dl

ลองดูที่ลิงค์นี้สำหรับรายละเอียดเพิ่มเติม

หวังว่านี่จะช่วยคุณ ..


6

ใช้ ppa ของ webUpd8: ppa: nilarimogard / webupd8

มันมีเวอร์ชั่น up2date มากที่สุดเสมอ

sudo apt-get remove youtube-dl
sudo apt-add-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install youtube-dl

5

ฉันลองดาวน์โหลดเพลย์ลิสต์ในคำถามของคุณและฉันได้รับข้อความแสดงข้อผิดพลาดเดียวกับที่คุณทำ แทนที่จะอัปเดต youtube-dl ซึ่งทำงานได้ดีเหมือนเดิมฉันไปที่หน้าเว็บเพลย์ลิสต์ของคุณคัดลอก URL และเรียกใช้คำสั่งต่อไปนี้จากเทอร์มินัล:

sudo apt install jq # command-line JSON processor    
cd Desktop/    
youtube-dl -j --flat-playlist "https://<yourYoutubePlaylist>" | jq -r '.id' | sed 's_^_https://youtu.be/_' > batch-file.txt  

ผลลัพธ์ของคำสั่งเหล่านี้คือรายการลิงก์ทั้งหมดบนหน้าเว็บนั้น ฉันสร้างไฟล์แบตช์พร้อมรายการ URL ของวิดีโอทั้งหมดที่อยู่ในนั้น (เฉพาะวิดีโอไม่ใช่ลิงก์อื่น ๆ ) แต่ละ URL วิดีโอในบรรทัดใหม่ หลังจากนั้นฉันสามารถดาวน์โหลดวิดีโอทั้งหมดด้วยคำสั่งเดียวโดยทำตามคำแนะนำเหล่านี้

  1. สร้างไฟล์แบตช์ซึ่งเป็นไฟล์ข้อความที่มีรายการ URL ของวิดีโอจาก YouTube ที่คุณต้องการดาวน์โหลด ควรจัดเรียง URL ในรายการที่มีเพียงหนึ่ง URL เท่านั้นและไม่มีสิ่งใดในแต่ละบรรทัดพร้อมบรรทัดใหม่สำหรับแต่ละ URL ในรายการ บันทึกไฟล์แบตช์ด้วยชื่อที่จำได้ง่ายเช่น batch-file.txt หากไฟล์หลายไฟล์ทั้งหมดอยู่ในหน้าเว็บของผู้ใช้ช่องหรือเพลย์ลิสต์เดียวกันใน YouTube คุณสามารถสร้างไฟล์ข้อความที่มีรายการที่มีลิงก์ทั้งหมดในหน้านั้นได้โดยเรียกใช้คำสั่งต่อไปนี้:

    youtube-dl -j --flat-playlist "https://<yourYoutubePlaylist>" | jq -r '.id' | sed 's_^_https://youtu.be/_' > batch-file.txt 
    
  2. จากการทำงานของเครื่อง:

    youtube-dl -ct --simulate --batch-file='/path/to/batch-file.txt'
    
  3. นี่คือคำสั่งพื้นฐาน แต่คุณต้องเพิ่มรูปแบบของวิดีโอที่คุณต้องการดาวน์โหลดมิฉะนั้นคุณอาจพบว่าตัวเองกำลังดาวน์โหลดวิดีโอด้วยรูปแบบที่คุณไม่ต้องการ ดังนั้นก่อนอื่นจำลองการดาวน์โหลดของคุณเพื่อดูว่ามีรูปแบบที่คุณต้องการหรือไม่:

    youtube-dl -ct -f 34 --simulate 'http://www.youtube.com/some-alphanumeric-string'
    
  4. requested format not availableหากรูปแบบวิดีโอไม่พร้อมใช้งานคุณจะได้รับข้อผิดพลาดที่พูดว่า: หากรูปแบบวิดีโอพร้อมใช้งานคุณจะไม่ได้รับข้อความแสดงข้อผิดพลาดเมื่อคุณใช้--simulateตัวเลือก คุณยังสามารถเพิ่ม-Fตัวเลือกเพื่อดูรูปแบบที่ถูกต้องทั้งหมดเช่นนี้:

    youtube-dl -F 'http://www.youtube.com/some-alphanumeric-string'
    
  5. ในคำสั่งดังกล่าวข้างต้นที่ผมได้ใช้รูปแบบ 360p flv -f 34วิดีโอร่วมกัน คุณอาจต้องการที่จะลองรูปแบบวิดีโอ FLV 480p -f 35โดยใช้ หลังจากคุณเพิ่มรูปแบบวิดีโอที่คุณต้องการคำสั่งคำสั่งจะเป็นดังนี้:

    youtube-dl -f 35 -ciw -o "%(title)s.%(ext)s" --batch-file='/path/to/batch-file.txt'  
    

    ฉันไม่ได้เพิ่ม--simulateตัวเลือกในคำสั่งสุดท้ายดังนั้นคำสั่งนี้จะถูกดำเนินการจริง


ฉันต้องเพิ่ม | ดัชนี grep = เพื่อรับเฉพาะรายการไฟล์ lynx --dump " youtube.com/playlist?list=PLGwhw5SI2xoYKHyzQDj1y2I8vURgm8yd2 " | awk '/ http / {พิมพ์ $ 2}' | uniq | ดัชนี grep =
talsibony

0

ฉันใช้รหัสด้านล่าง

youtube-dl -cit https://www.youtube.com/playlist?list=PL55RiY5tL51pIQNcOLDjnaQJYuj_GjVSz

แม้หลังจากอัพเดตฉันก็พบข้อผิดพลาดคล้ายกัน ดังนั้นแทนที่จะเป็น '-cit' ฉันใช้ '-citv' และใช้งานได้

youtube-dl -cit https://www.youtube.com/playlist?list=PL55RiY5tL51pIQNcOLDjnaQJYuj_GjVSz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.