# Скачать альбом с Яндекс-Музыки, положить его в папку с именем альбома в каталоге "Музыка" в профиле, # назвать треки по типу 01 Artist - Track.mp3, сгенерить плейлист m3u, скачать картинку альбома. # В случае с треком - положить его в каталог "Музыка". # Если youtube-dl отсутствует или старше 3 недель - скачать новый с сайта. $url = Read-Host "Введите ссылку на альбом или трек Яндекс.Музыки" $page = curl $url $status = ($page).StatusDescription $alname = ($page |select -expand Images).alt $alname = "$alname".trim(" ") $ytdl = "$env:LOCALAPPDATA\youtube-dl.exe" $ytdlexist = Test-Path "$ytdl" $ytdlnew = (get-date) - (Get-ItemProperty "$ytdl" |select -expand LastWriteTime) |select -expand days if ((Test-Path "$ytdl") -eq $False -or $ytdlnew -gt 21) {Write-Host -fore Yellow "youtube-dl отсутствует или ему больше 3 недель, скачиваю с сайта..." curl https://yt-dl.org/downloads/latest/youtube-dl.exe -OutFile "$ytdl"} if ($status -ne 'OK' -or $url -notmatch 'music.yandex.ru/album') {write-host -fore Red "Нерабочая или неправильная ссылка, выход";sleep 2} elseif ($url -match 'track') { $trackid = $url.Split('/') |select -last 1 $trackname = $page |select -expand Links |? href -match "$trackid" |select -expand InnerText -First 1 write-host -fore Yellow "Скачиваем $trackname, верно?" $yes = Read-Host "Нажмите цифру 1, чтобы продолжить" Switch ($yes) { 1 {write-host -fore Green "Начинаем скачивание $trackname в папку Музыка" cd $env:USERPROFILE\Music & "$ytdl" '-o' '%(artist)s - %(track)s.%(ext)s' $url } Default {write-host -fore Yellow "Отмена, выход";sleep 2} }} else { write-host -fore Green "Скачиваем альбом $alname, верно?" $yes = Read-Host "Нажмите цифру 1, чтобы продолжить" Switch ($yes) { 1 {write-host -fore Green "Начинаем скачивание $alname в папку Музыка" cd $env:USERPROFILE\Music & "$ytdl" '-o' '%(playlist_title)s/%(playlist_index)s %(artist)s - %(track)s.%(ext)s' $url $folder = dir |sort CreationTime |select -Last 1 -expand name dir -file "$folder\*.mp3" |select -expand name |out-file "$folder\playlist.m3u" -Encoding UTF8 $pic = ($page |select -expand images).src |select -First 1 $pic = $pic.Replace("200x200","orig") $pic = 'https:' + "$pic" curl $pic -OutFile "$folder\cover.jpg" } Default {write-host -fore Yellow "Отмена, выход";sleep 2} }}