Skip to content

Instantly share code, notes, and snippets.

@a-sync
Last active May 31, 2023 20:25
Show Gist options
  • Save a-sync/e8c1f1d01b8ff8ce0181051cb72bda04 to your computer and use it in GitHub Desktop.
Save a-sync/e8c1f1d01b8ff8ce0181051cb72bda04 to your computer and use it in GitHub Desktop.
radio1.hu tracklista URL alapján letölti az mp3 fájlokat
@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);
});
});
};
@a-sync
Copy link
Author

a-sync commented Mar 6, 2022

...

@norbika87 ha már telepítetted a homebrew-t akkor a terminálba csak pötyögd be: brew install node (https://www.newline.co/@Adele/how-to-install-nodejs-and-npm-on-macos--22782681#2-using-homebrew-to-install-and-update-nodejs)
miután feltelepítetted a nodejs futtatókörnyezetet a fentebb található radio1-downloader.js fájlt kell futtatnod pl.: node radio1-downloader.js parancsal

jobban nem mennék itt bele, van több tucat videó arról, hogyan futtathatsz nodejs fájlokat macos-en
sok sikert!

@norbika87
Copy link

norbika87 commented Mar 9, 2022 via email

@mva-one
Copy link

mva-one commented Mar 14, 2022

Ez alapján írtam egy módosított Python verziót is. Egy héten egyszer futtatom, hogy letöltse az összes WordIsMine RadioShow müsort mp3-ba.
Itt található: https://gist.github.com/mva-one/b6426b7469faa7c572c3d1be93082c6c

@a-sync
Copy link
Author

a-sync commented Mar 15, 2022 via email

@bandesz67
Copy link

Szia,
Sikeresen letöltöttem a szkriptet, sikerült is elindítanom, viszont miután a linket beillesztem és az entert lenyomom bezárja magát a program és nem találom a mixet sehol. Tudnál esetleg segíteni, hogy hol lehet a probléma?

ui.: Volt mikor enter után a vírusirtótól kaptam egy üzenetet, hogy valamit megváltoztatott a dolog, de nem láttam változást. Még valami, próbáltam kikapcsolni a tűzfalat és a vírusírtót is és akkor is csak bezárja magát.

Előre is köszönöm a válaszod!

@a-sync
Copy link
Author

a-sync commented Mar 20, 2022

@bandesz67 ha a hibaüzenetet megosztod itt akkor talán tudok segíteni
de először is mi a link amivel próbálkozol?

a hibaüzenet elkapására kétféle megoldás:

  1. először nyiss egy parancssort abban a könyvtárban ahova a bat fájlt letöltötted, majd a fájl nevét bepötyögve indítsd el. így futtatás után megmarad az ablak és láthatóvá válnak az esetleges hibaüzenetek
  2. a bat fájl végébe egy új sorba beírod h pause és elmented, majd futtatod. így szintén megmarad az ablak a hibaüzenettel a végén a következő gombnyomásig

ha megvan, shift+win+s -el kivágod az ablakból a lényeget és ide beszúrod

@bandesz67
Copy link

bandesz67 commented Mar 20, 2022

@a-sync
Copy link
Author

a-sync commented Mar 20, 2022

@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

@bandesz67
Copy link

bandesz67 commented Mar 20, 2022

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! ;)

@roxor933
Copy link

roxor933 commented May 6, 2022

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!

@a-sync
Copy link
Author

a-sync commented May 6, 2022 via email

@mucden
Copy link

mucden commented May 20, 2022

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

@a-sync
Copy link
Author

a-sync commented May 20, 2022

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)

@mucden
Copy link

mucden commented May 23, 2022

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.

@a-sync
Copy link
Author

a-sync commented May 24, 2022

@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.

@mucden
Copy link

mucden commented May 24, 2022

@a-sync Így már működik, köszönöm.

@fofika78
Copy link

Köszönöm! Szuper!! Kellemes ünnepeket!

@mateoo1989
Copy link

hogyan lehet életre kelteni eszt ? tök jó lenne letölteni esti mixeket

@a-sync
Copy link
Author

a-sync commented May 31, 2023

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment