-
-
Save a-sync/e8c1f1d01b8ff8ce0181051cb72bda04 to your computer and use it in GitHub Desktop.
@echo off | |
title radio1-downloader @ https://gist.github.com/a-sync | |
powershell -NoProfile -ExecutionPolicy Unrestricted -Command "[System.Net.ServicePointManager]::SecurityProtocol=[System.Net.SecurityProtocolType]::Tls12;[System.Net.WebRequest]::DefaultWebProxy.Credentials=[System.Net.CredentialCache]::DefaultCredentials;$Url=Read-Host -Prompt 'radio1.hu URL';$wc=New-Object System.Net.WebClient;$wc.Encoding=[System.Text.Encoding]::UTF8;$Links=$wc.DownloadString($Url.Trim())|Select-String -Pattern '<audio data-artist=\""(.*?)\"" data-title=\""(.*?)\"".*?>\n.*?<source src=\""(.*?)\"" type=\""audio/mp3\"">' -AllMatches;Foreach($i in $Links.Matches){$Name=\""$($i.Groups[1].Value) $($i.Groups[2].Value)\"".Split([IO.Path]::GetInvalidFileNameChars()) -join '_';Write-Host $Name;$wc.Headers.Add('Referer','https://www.radio1.hu');$wc.DownloadFile(\""https://www.radio1.hu$($i.Groups[3].Value)\"",\""$Name.mp3\"")}" |
#!/usr/bin/env node | |
process.title = 'radio1-downloader @ https://gist.github.com/a-sync'; | |
if (process.argv.length >= 3 && process.argv[2]) { | |
console.log('radio1.hu URL:', process.argv[2]); | |
main(process.argv[2]); | |
} else { | |
const rli = require('readline').createInterface({input:process.stdin, output:process.stdout}); | |
rli.question('radio1.hu URL: ', url => { | |
return main(url).then(() => { | |
rli.terminal = false; | |
setTimeout(() => rli.close()); | |
}); | |
}); | |
} | |
function main(url) { | |
return dl(url).then(data => { | |
const matches = data.matchAll('<audio data-artist=\"(.*?)\" data-title=\"(.*?)\".*?>\n.*?<source src=\"(.*?)\" type=\"audio/mp3\">'); | |
const promises = []; | |
for (const m of matches) { | |
console.log('߷', m[1], m[2]); | |
promises.push(dl('https://www.radio1.hu' + m[3], String(m[1] + ' ' + m[2] + '.mp3').replace(/[/\\?%*:|"<>]/g, '_'))); | |
} | |
return Promise.allSettled(promises); | |
}) | |
.catch(console.error); | |
} | |
function dl(url, filepath) { | |
return new Promise((resolve, reject) => { | |
require('https').get(url, {headers: {'Referer': 'https://www.radio1.hu'}}, resp => { | |
if (filepath) { | |
const file = require('fs').createWriteStream(filepath); | |
resp.pipe(file); | |
file.on('finish', () => { | |
console.log('✓', filepath); | |
file.close(); | |
resolve(); | |
}); | |
} else { | |
let data = ''; | |
resp.on('data', chunk => { | |
data += chunk; | |
}); | |
resp.on('end', () => { | |
resolve(data); | |
}); | |
} | |
}).on('error', err => { | |
reject(err); | |
}); | |
}); | |
}; |
Köszönöm szépen, hogy ilyen későn is segítesz! Utána nézek a dolognak.
Edit: Sikerült, nagyon szépen köszönöm! ;)
Nagyon király a cucc, köszönöm szépen.
Arra esetleg van valahogy lehetőség, hogy 128kb/s-nél jobb minőségben töltse le a mixeket?
A választ előre is köszönöm!
Sziasztok!
Nekem ezt a hibát dobja, mi lehet a gond?
radio1.hu URL: https://radio1.hu/tracklista/discos-hit-tracklista
Exception calling "DownloadString" with "1" argument(s): "The remote server returned an error: (407) Proxy Authenticati
on Required."
At line:1 char:210
+ ... ding]::UTF8;$Links=$wc.DownloadString($Url.Trim())|Select-String -Pat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WebException
szia,
úgy tűnik valamilyen hálózati proxi mögül próbálkozol amit a powershell script nem támogat.
javaslom próbáld meg helyette a nodejs verziót használni (radio1-downloader.js)
Sajnos céges a gép, nincs jogom nodejs-t telepíteni. Sőt semmit sem, ami nincs benne a céges repo-ban vagy nem munka releváns.
@mucden frissítettem a .bat fájlt, töltsd le újra és próbáld meg megint.
Elméletleg mostantól a rendszer proxy beállításait használja a hálózati kérésekhez ha van ilyen.
@a-sync Így már működik, köszönöm.
Köszönöm! Szuper!! Kellemes ünnepeket!
hogyan lehet életre kelteni eszt ? tök jó lenne letölteni esti mixeket
@mateoo1989
letöltöd a bat fájlt, dupla kattintással elindítod, majd bemásolod a mix weboldal URL-t és enter-t nyomsz.
Sziasztok!
Letöltöttem a szkriptet, s miután a linket beillesztem és az entert lenyomom bezárja magát a program. Tudna esetleg valaki segíteni, hogy hol lehet a probléma?
Korábban működött probléma nélkül, de mióta változott a Rádió1 online felülete, azóta nem megy a letöltés...
Előre is köszönöm!
@Gabor-SG új oldalon bejelentkezéshez van kötve a tartalom, innentől ez a script elavult, nem fog a jövőben működni. 🤷♂️
Sziasztok!
Van esetleg valakinek valamilyen ötlete, hogy hogyan lehetne meghackelni a rendszert?
Van egy pár jó mix fent, ami nagyon kellene.....
@bandesz67 gyanús, hogy ugyanaz a gond nálad mint másnál volt picit feljebb: frissíteni kell a .net keretrendszert.
lehetséges megoldásokat lásd itt: https://gist.github.com/a-sync/e8c1f1d01b8ff8ce0181051cb72bda04?permalink_comment_id=3906951#gistcomment-3906951
ha nem sikerülne, akkor javaslom hogy telepítsd fel a nodejs futtató környezetet, és utána parancssorból a .js fájlt futtasd. pl.:
node radio1-downloader.js