-
-
Save a-sync/14b30f8476dd2323cee0920fb98b0272 to your computer and use it in GitHub Desktop.
@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" ) | |
) | |
) | |
rem yt-dlp --user-agent "" -o "%%K.mp4" "%%I" | |
yt-dlp -f - --user-agent "" -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: Hello! Elképzelhető, hogy ez a script már nem kezeli az archívum cuccait? A fiamnak szeretném letölteni a Rumini hangoskönyveket (pl.: https://archivum.mtva.hu/radio?series=UnVtaW5p, az egyik rész pl. a RADIO-bE9ndG0yMzdmY0VlWDdTb09jdFNVUT09), de nem igazán akar menni. Nézettem a 41. sor körüli echo-kon keresztül a változók értékét, hogy mivel próbálja hívni a yt letöltőt, de szerintem valami nem jó, mert az m3u8 playlistben nincs semmi... Valami ötlet? :) Nagyon szuper lenne, ha le tudnám tölteni a Rumini részeket. :) Köszi szépen!
... (pl.: https://archivum.mtva.hu/radio?series=UnVtaW5p, az egyik rész pl. a RADIO-bE9ndG0yMzdmY0VlWDdTb09jdFNVUT09),
@bbence84 szia. ha a teljes url-t adod meg tedd idézőjelek közé:
nekem legalább is működik fenti url 😐
... (pl.: https://archivum.mtva.hu/radio?series=UnVtaW5p, az egyik rész pl. a RADIO-bE9ndG0yMzdmY0VlWDdTb09jdFNVUT09),
@bbence84 szia. ha a teljes url-t adod meg tedd idézőjelek közé:
nekem legalább is működik fenti url 😐
Nagyon köszönöm, így tényleg működik, nem is értem, miért nem próbáltam meg így. :) Nagy lesz az öröm, köszi!
Domain name-váltás történt (most már https://nemzetiarchivum.hu/m3 oldalon jön be az m3.hu), átírtam az érintett internetes címeket a fájlban, de kód beírása után simán kilép. Mi mást kell(ene) még módosítani benne?
...
@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
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?
@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:
- megadod a teljes urlt és a progi kivadássza az oldal forrásából a tényleges azonosítót
- 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 - 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!
@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!
Tisztelettel, kérdezni szeretném, hogy most 2024 júliusában, mivel és hogy lehet letölteni tetszőleges M3-... azonosítójú videót a nemzetiarchivum.hu oldalról? Mert, sajnos, kb. egy hónapja az addigi módszerek már nem működnek. (Legalábbis nekem nem sikerül)
Köszönöm előre is, minden jót!
@mente081 töltsd le a .bat fájl legfrissebb verzióját
@mojorisin577 nem windows-on vagy? vagy mi az akadálya, hogy nem tudod a m3-downloader.bat-ot használni? 🤨 yt_dlp python csomagot még nem használtam, csak ezért nem is próbálnám, nézd meg mivel lehet a user agent-et megadni és üresre próbáld beállítani. 🤷♂️
Windows 10 igen. De már sikerült az m3-downloader.bat-al letölteni. Nagyon köszi a válaszodat, megy minden flottul! :)
@Medwyn80 letöltöd zip csomagfájlt és kicsomagolod belőle az m3-downloader.bat fájlt. Az m3-downloader.bat fájlt elindítod, és megadod a videó azonosítót (pl.: M3-A8808080126). Enter. Többit megoldja a script. Letöltés után az m3-downloader.bat fájl mellett lesz a videó és a felirat fájl ha van hozzá. Sok sikert.
@mente081
Ezen ne múljon, bár annak az oldalnak a címe máshol is fellelhető (ráadásul itt is fel lett tüntetve már az első hozzászólásom előtt). Arról nem beszélve, hogy ennyi erővel ezt az egész oldalt törölni kellene.
@Medwyn80
Nézd, az óvatosság nem árt, a másutt föltüntetett is csak az ahhoz járul hozzá, hogy ellehetetlenítsék. Mert pl. még pár hónapja többet tudott az a bizonyos oldal, aztán az mtva-nál valamit mókoltak és azt már nem tudja. Gondolhatod, hogy folyamatosan azon fáradoznak, hogy NE lehessen letölteni ezeket a régi műsorokat. Más ezzel a témával foglalkozó fórum(ok)on a tagok az ilyen "kényes" bejegyzéseket rögtön törlik és kérik a hozzászólót, hogy privát üzenetet küldjön.
Igen, tudom, hogy többet tudott. Konkrétan nézni is lehetett a műsorokat. Egyébként a jogi részét illetően szerintem árnyaltabb a kép.
De milyen "kényes bejegyzésre" gondolsz? Itt konkrétan az összes bejegyzés ezzel a témával kapcsolatos, és évek óta fent vannak.
@a-sync
Kedves Mester!
Ránéznél ezekre: M3-59910998659999359, M3-8773899A8A0999595 ?
Többek közt ezek a linkek is okt. 29-én kerültek föl. Az ennél régebbiek működnek (mármint letölthetőek), az újabbak nem.
Szerintem megint variáltak valamit. Lehet, hogy DRM-mel védett lett?
Megtennéd, hogy megnézed, mi lehet a probléma?
Előre is köszönöm!
Ahogy mondod, valamit változtattak és már nem tölthető le a drm nélküli playlist. Szerintem ezzel ez az alkalmazás befejezte a szolgálatot. Továbbiakhoz itt találhattok segítséget: https://prohardver.hu/tema/video_stream_letoltese_mivel/friss.html
sok sikert!
Minőség beállítása (720p)
A
yt-dlp
kezdetű sort cseréld ki az alábbira:Minőség választó dokumentáció: https://github.com/yt-dlp/yt-dlp#format-selection
Minőség választó megjelenítése
A
yt-dlp
kezdetű sort cseréld ki az alábbira:(2022-es vagy újabb yt-dlp szükséges)