Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#!/usr/bin/env csharp
using System.IO;
using System.Diagnostics;
var output = System.Environment.GetCommandLineArgs ()[2];
Console.WriteLine ("Output directory is " + output);
foreach (var filename in Directory.GetFiles(Directory.GetCurrentDirectory()))
{
if(filename == "audiodump.wav")
continue;
if(File.Exists ("audiodump.wav"))
File.Delete ("audiodump.wav");
Console.WriteLine ("Processing " + filename);
var mplayer = Process.Start ("mplayer", "-vc null -vo null -ao pcm -benchmark -- \""+filename+"\"");
mplayer.WaitForExit ();
if(mplayer.ExitCode!=0)
System.Environment.Exit(1);
var lame = Process.Start ("lame", string.Format ("audiodump.wav \"{1}/{0}.mp3\"", Path.GetFileNameWithoutExtension(filename), output));
lame.WaitForExit ();
if(lame.ExitCode!=0)
System.Environment.Exit(2);
}
#!/bin/sh
curl "$1" |grep "/watch"|grep index|sed "s/.amp.*//"|sed "s/.*href../http:\/\/youtube.com/"|xargs -n 1 youtube-dl
while true; do for s in $(cat subscriptions); do ../youtube-dl -c --max-quality 22 -o '/home/youtube-dl/Youtube/%(upload_date)s %(uploader)s â %(title)s %(id)s.%(ext)s' --max-downloads 10 "$s"; done; sleep 1000; done
$(echo $target_folder)? Почему нельзя просто написать $target_folder? $(echo $target_folder) в строках, это позволяет не задумываться об экранизации переменных + они визуально отделены.$(echo $target_folder) на $target_folder, код стал красивее и не потерял читабельности.${my_var}_1.# ./get_youtube_playlist PL6DB07B6741FE6EA3
wget: missing URL
Usage: wget [OPTION]... [URL]...
Try `wget --help' for more options.
./get_youtube_playlist: line 36: https://gdata.youtube.com/feeds/api/playlists/PL6DB07B6741FE6EA3?max-results=50: No such file or directory
Playlist ID is incorrect, usage:
./get_youtube_playlist <playlist_id> <target_folder> <num_songs>
target_folder: (default: songs will be downloaded in current folder)
num_songs: number of songs to get (default: 50)
wget говорит, что не существует https://gdata.youtube.com/feeds/api/playlists/PL6DB07B6741FE6EA3?max-results=50 хотя он есть.https://, попробуйте в 36й строке заменить https:// на http://.youtube_api="`curl https://gdata.youtube.com/feeds/api/playlists/$playlist_id?max-results=$num_songs`"#!/bin/sh
PLAYLIST_URL=$1
FROM=$2
TO=$3
curl $PLAYLIST_URL |grep "/watch"|grep index|sed "s/.amp.*//"|sed "s/.*href../http:\/\/youtube.com/"|head -n $TO|tail -n+$FROM | xargs -n 1 youtube-dl
Скачиваем Youtube плейлист в формате mp3 одним bash-скриптом