Awk
使用 youtube-dl 從 youtube 頻道下載和排序所有影片列表
我想下載一個 youtube 頻道的所有影片列表並按時長排序。這是我用youtube-dl resp 嘗試過的。yt-dlp:
yt-dlp --skip-download "url_to_channel" --get-duration --get-title > list
然後像
cat list | sed '$!N;s/\n/ /g' | sort
. 但是,這不起作用,因為持續時間是第二個列印的(並且sort -k2
由於標題包含空格而無濟於事)。在一天結束時,我還想獲取 url 和標題,然後將其通過管道傳輸到 html 文件(或乳膠-> pdf)以獲取帶有可點擊 url 和縮略圖的列表(這不是這個問題的內容,但是你寫答案時可能會想到這一點;我只想先解決上面的簡單案例)。
編輯
例如:
yt-dlp --skip-download "https://www.youtube.com/user/emacsrocks/videos" --get-duration --get-title > list_test
結果是
cat list_test Parens of the Dead Live - Preparing for a new game, bonus stream, live on Twitch 1:06:45 Parens of the Dead Live - Improving the code 3 years later, live on Twitch 1:55:55 Emacs Rocks! Episode 17: Magit 2:39 Emacs Rocks! Episode 16: Dired 1:35 Parens of the Dead - Episode 8: The Hour of Reckoning 9:52 Parens of the Dead - Episode 7: Eaten by Zombies 3:50 Parens of the Dead - Episode 6: Quickly, hide! 9:44 Parens of the Dead - Episode 5: Re-animated 9:09 Parens of the Dead - Episode 4: Waking the Dead 4:59 Parens of the Dead - Episode 3: What Lies Beneath 9:27 Parens of the Dead - Episode 2: Frontal Assault 8:02 Parens of the Dead - Episode 1: Lying in the Ground 11:33 Emacs Rocks! Episode 15: restclient-mode 2:24 Emacs Rocks at WebRebels! Part 05: more js2-refactor 55 Emacs Rocks at WebRebels! Part 04: more js2-refactor 1:58 Emacs Rocks at WebRebels! Part 03: js2-refactor 59 Emacs Rocks at WebRebels! Part 02: multiple-cursors 41 Emacs Rocks at WebRebels! Part 01: Jumping to the next slide 2:19 Emacs Rocks! Episode 14: Paredit 3:25 Extending Emacs Rocks! Episode 08 8:10 Extending Emacs Rocks! Episode 07 11:06 Emacs Rocks! Episode 13: multiple-cursors 3:56 Emacs Rocks! Episode 12: Working with HTML 1:54 Extending Emacs Rocks! Episode 06 9:26 Emacs Rocks! Episode 11: swank-js 4:35 Extending Emacs Rocks! Episode 05 9:18 Extending Emacs Rocks! Episode 04 10:44 Extending Emacs Rocks! Episode 03 10:32 Extending Emacs Rocks! Episode 01 11:15 Extending Emacs Rocks! Episode 02 8:00 Emacs Rocks! Live at WebRebels 18:18 Emacs Rocks! Episode 10: Jumping around 2:07 Emacs Rocks! Episode 09: expand-region 2:39 Emacs Rocks! Episode 08: mark-multiple 1:30 Emacs Rocks! Episode 07: Mind. Exploded. 1:30 Emacs Rocks! Episode 06: Yeah! Snippets! 1:41 Emacs Rocks! Episode 05: Macros in style 1:31 Emacs Rocks! Episode 04: A rebind controversy 2:32 Emacs Rocks! Episode 03: A vimgolf albatross 2:15 Emacs Rocks! Episode 02: A vimgolf eagle 3:15 Emacs Rocks! Episode 01: From var to this 2:47
您可以要求
youtube-dl
輸出json
數據,然後對其進行處理jq
(您將可以訪問所有欄位,而不僅僅是帶有get-...
標誌的欄位)。這個命令:
youtube-dl --dump-json "https://www.youtube.com/user/emacsrocks/videos" | jq -r '[.duration,.title]|@csv'
將輸出:
4005,"Parens of the Dead Live - Preparing for a new game, bonus stream, live on Twitch" 6955,"Parens of the Dead Live - Improving the code 3 years later, live on Twitch" 159,"Emacs Rocks! Episode 17: Magit" 95,"Emacs Rocks! Episode 16: Dired" 592,"Parens of the Dead - Episode 8: The Hour of Reckoning" 230,"Parens of the Dead - Episode 7: Eaten by Zombies" ... 91,"Emacs Rocks! Episode 05: Macros in style" 152,"Emacs Rocks! Episode 04: A rebind controversy" 135,"Emacs Rocks! Episode 03: A vimgolf albatross" 195,"Emacs Rocks! Episode 02: A vimgolf eagle" 167,"Emacs Rocks! Episode 01: From var to this"
然後,您可以使案例如
sort
.