Skip to content

Instantly share code, notes, and snippets.

@a-sync
Last active February 16, 2024 12:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save a-sync/14b30f8476dd2323cee0920fb98b0272 to your computer and use it in GitHub Desktop.
Save a-sync/14b30f8476dd2323cee0920fb98b0272 to your computer and use it in GitHub Desktop.
m3 archívum URL vagy M3- ill. RADIO- azonosító alapján letölti a műsort yt-dlp segítségével
@if (@a==@b) @end /*
@echo off & setlocal
title m3-downloader.bat @ https://gist.github.com/a-sync
if "%~1"=="/?" goto usage
if %0 == "%~0" (
set /p INPUT="ID/URL: "
) else (
set "INPUT=%~1"
)
if "%INPUT%"=="" goto usage
if /i "%INPUT:~0,5%"=="https" if /i "%INPUT:~6,21%"=="//nemzetiarchivum.hu/" goto valid
if /i "%INPUT:~0,3%"=="M3-" goto valid
if /i "%INPUT:~0,6%"=="RADIO-" goto valid
goto invalid
:valid
where /q yt-dlp
if ERRORLEVEL 1 (
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe', '%~dp0\yt-dlp.exe')"
)
where /q ffmpeg
if ERRORLEVEL 1 goto dlffmpeg
where /q ffprobe
if ERRORLEVEL 1 goto dlffmpeg
goto main
:dlffmpeg
where /q 7za
if ERRORLEVEL 1 (
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://a-sync.github.io/7z-extra/7za.exe', '%~dp0\7za.exe')"
)
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.7z', '%~dp0\ffmpeg-release-essentials.7z')"
7za e -y -r ffmpeg-release-essentials.7z ffmpeg.exe ffprobe.exe
del ffmpeg-release-essentials.7z 7za.exe 2>nul
:main
rem echo "%INPUT%";
for /f "tokens=1,2,3 delims=|" %%I in ('cscript /nologo /e:jscript "%~f0" "%INPUT%"') do (
rem echo "%%I"
rem echo "%%J"
rem echo "%%K"
if not exist "%%K.srt" (
powershell -Command "$wc=New-Object Net.WebClient;$wc.Encoding=[System.Text.Encoding]::UTF8;$wc.DownloadString('https://nemzetiarchivum.hu/subtitle/%%J.srt') | Out-File -Encoding utf8 '%cd%\%%J.srt'"
for %%F in ("%cd%\%%J.srt") do (
if %%~zF lss 6 ( del %%F ) else ( ren %%F "%%K.srt" )
)
)
yt-dlp -N "16" --fixup "never" -o "%%K.mp4" "%%I"
rem yt-dlp -N "16" --fixup "never" -f - -o "%%K.mp4" "%%I"
)
goto :EOF
:invalid
echo Ervenytelen ID/URL
echo
:usage
echo Hasznalat: %~nx0 ID/URL
echo pl.: %~nx0 M3-59950991739999859
echo %~nx0 RADIO-851168
echo %~nx0 "https://nemzetiarchivum.hu/*"
if %0 == "%~0" pause
goto :EOF
JScript */
var ID = WSH.Arguments(0);
var UA = String('\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x35\x2E\x30\x20\x28\x53\x4D\x41\x52\x54\x2D\x54\x56\x3B\x20\x4C\x69\x6E\x75\x78\x3B\x20\x54\x69\x7A\x65\x6E\x20\x32\x2E\x33\x29\x20\x41\x70\x70\x6C\x65\x57\x65\x62\x6B\x69\x74\x2F\x35\x33\x38\x2E\x31\x20\x28\x4B\x48\x54\x4D\x4C\x2C\x20\x6C\x69\x6B\x65\x20\x47\x65\x63\x6B\x6F\x29\x20\x53\x61\x6D\x73\x75\x6E\x67\x42\x72\x6F\x77\x73\x65\x72\x2F\x31\x2E\x30\x20\x54\x56\x20\x53\x61\x66\x61\x72\x69\x2F\x35\x33\x38\x2E\x31');
var x = new ActiveXObject('Microsoft.XMLHTTP');
var TITLE = '';
if (ID.indexOf('http') === 0) {
x.open('GET',String(ID),true);
x.setRequestHeader('User-Agent',UA);
x.send('');
while (x.readyState!=4) {WSH.Sleep(50)};
if (x.responseText.indexOf('var ACTIVE = "') !== -1) {
ID = x.responseText.split('var ACTIVE = "')[1].split('"')[0];
} else {
ID = x.responseText.split("id: '")[1].split("'")[0];
}
if (x.responseText.indexOf('<h1 class="active-title">') !== -1) {
TITLE = x.responseText.split('<h1 class="active-title">')[1].split('</h1>')[0];
}
if (x.responseText.indexOf('<h6 class="active-subtitle hidden">') !== -1) {
TITLE += ' - '+x.responseText.split('<h6 class="active-subtitle hidden">')[1].split('</h6>')[0];
}
}
var htmlfile = WSH.CreateObject('htmlfile'), JSON;
htmlfile.write('<meta http-equiv="x-ua-compatible" content="IE=9" />');
htmlfile.close(JSON = htmlfile.parentWindow.JSON);
if (!TITLE && ID.toLowerCase().indexOf('m3-') === 0){
x.open('GET',String('\x68\x74\x74\x70\x73\x3A\x2F\x2F\x6E\x65\x6D\x7A\x65\x74\x69\x61\x72\x63\x68\x69\x76\x75\x6D\x2E\x68\x75\x2F\x6D\x33\x2F\x69\x74\x65\x6D\x3F\x69\x64\x3D')+ID,true);
x.setRequestHeader('User-Agent',UA);
x.send('');
while (x.readyState!=4) {WSH.Sleep(50)};
var info = JSON.parse(x.responseText);
TITLE = info.title+(info.subtitle?' - '+info.subtitle:'');
}
TITLE = TITLE.replace(/\\|\/|\:|\*|\?|\"|\<|\>|\|/gi, '_');
if (!TITLE) TITLE = ID;
x.open('GET',String('\x68\x74\x74\x70\x73\x3A\x2F\x2F\x6E\x65\x6D\x7A\x65\x74\x69\x61\x72\x63\x68\x69\x76\x75\x6D\x2E\x68\x75\x2F\x6D\x33\x2F\x73\x74\x72\x65\x61\x6D\x3F\x6E\x6F\x5F\x6C\x62\x3D\x31\x26\x74\x61\x72\x67\x65\x74\x3D')+ID,true);
x.setRequestHeader('User-Agent',UA);
x.send('');
while (x.readyState!=4) {WSH.Sleep(50)};
var res = JSON.parse(x.responseText);
WSH.Echo(res.url+'|'+ID+'|'+TITLE);
@a-sync
Copy link
Author

a-sync commented Dec 15, 2023

...

@zoli83 köszi, hogy jelezted. frissítettem a scriptet, a szükséges változtatásokat itt láthatod: https://gist.github.com/a-sync/14b30f8476dd2323cee0920fb98b0272/revisions#diff-c7afc2394a40a65f39383ea4328f44a83d2e41a3cf2326a5077d16a9c22be706

@MarianoDiviano
Copy link

MarianoDiviano commented Feb 16, 2024

A tévéműsorok fülön van olyan film, amelynek az URL-je hosszabb, pl. https://nemzetiarchivum.hu/m3/open?id=M3-ODhRbkVqM2ZlRXRpMkxWQm1uR3R3RGhiSnRCcHo5eXZaRU5KT0orR1hMZz0
Ha bemásolom az "M3-ODhRbkVqM2ZlRXRpMkxWQm1uR3R3RGhiSnRCcHo5eXZaRU5KT0orR1hMZz0"-t a program kilép. Van erre valami megoldás?

@a-sync
Copy link
Author

a-sync commented Feb 16, 2024

@MarianoDiviano használd a teljes URL-t (parancssorban tedd idézőjelek közé)
ezt az obfuszkált azonosítót nem tudod közvetlenül megadni.
helyette három opciód van:

  1. megadod a teljes urlt és a progi kivadássza az oldal forrásából a tényleges azonosítót
  2. megnézed az oldal forrását és kivadászod magadnak a tényleges azonosítót (var ITEM = { id: 'M3-87A98996450999896' ...) és azt adod meg
  3. használod a kereshető archívumot: https://m3.devs.space és ott kikeresed adott adás tényleges azonosítóját és azt adod meg

sok sikert!

@MarianoDiviano
Copy link

@a-sync Nagyon nagyon köszönöm a segítséget! Mindegyik módszerrel működött, de ez a 3, opció egyszerűen lenyűgöző! Gondolom ez is a te alkotásod, le a kalappal!

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