Youtube to MP3 - parancssorbol

Sziasztok,

szeretnek Youtube videokbol MP3-at csinalni parancssorbol. a cel a kovetkezo lenne:

- kimasolom a kivant video URL-jet

- keszitek egy sajat szerveren (helyi halon) egy weboldalt (php?) aminek egy sima form-on beadom az URL-t

- majd a hatterben ezt atadja a youtube-dl nevu parancssori toolnak (https://github.com/ytdl-org/youtube-dl) az meg jol felparameterezve megcsinalja nekem az MP3-at es elmenti

Tudnatok javasolni, hogy merre induljak el? Neztem mar a php-nak a shell_exec parancsat, de nem tudom, hogy hogyan kombinaljam ossze a form-ot es a shell_exec-et.

koszi

Gergo

 

<!DOCTYPE html>
<html>
<body>
<?php
       if(isset($_POST['arg']){
       $your_input = $_POST['arg'];
       $output = shell_exec("parancs {$your_input}");
       echo $output;
       }
 ?>

<form action="" method="POST">
<input type="text" name="arg">
<input type="submit" value="Submit">
</form>

</body>
</html> 

Hozzászólások

Szerkesztve: 2023. 01. 03., k – 10:42

"Tudnatok javasolni, hogy merre induljak el? "

Ez megvolt https://www.php.net/manual/en/ ?

Amúgy mi a gond? Mi nem megy?

 

 

shell_exec — Execute command via shell and return the complete output as a string

exec — Execute an external program

Jól értem, hogy a form elemeit kellene összefűzni egy stringgé, amit végrehajtatsz a shellel? Bátor, bátor... :))

Debian - The "What?!" starts not!
http://nyizsa.blogspot.com

Ez saját használatra lenne vagy egy publikus weboldal, ahol bárki letöltheti bármely YouTube videó MP3 fájlját?

És hány darab videóról van szó?

Ha csak néhány videó, akkor töltsd le kézzel, nem éri meg rá programot írni. Aztán át tudod konvertálni a videót kézzel MP3-ba.

Ha publikus eszköz lenne, akkor viszont: https://www.youtube.com/static?template=terms

Azt mondja:

The following restrictions apply to your use of the Service. You are not allowed to:

    access, reproduce, download, distribute, transmit, broadcast, display, sell, license, alter, modify or otherwise use any part of the Service or any Content except: (a) as specifically permitted by the Service;  (b) with prior written permission from YouTube and, if applicable, the respective rights holders; or (c) as permitted by applicable law;

access the Service using any automated means (such as robots, botnets or scrapers) except: (a) in the case of public search engines, in accordance with YouTube’s robots.txt file; (b) with YouTube’s prior written permission; or (c) as permitted by applicable law;

Tehát sajnos amit akarsz, az nincsen engedélyezve a YouTube ÁSZF alapján.

Van olyan a szerzői jogban, hogy saját használatra készített másolat nem kereskedelmi céllal, annak feltételeit a szerzői jogi törvény mondja ki.

Amúgy meg ennek az egésznek mi a lényege, mi a végső cél?

Nos, én igazán nem értek annyira a php-hoz, de szerintem ez az echo egy string kimenetet fog visszaadni. Már, ha sikerül jól paraméterezned. Ha programot akarsz futtatni (én nem tenném) ezt kell megetetned az exec segítségével.

Egyébként mi a célod? Ha youtube videókat akarsz konvertálni vannak szuper pythonos frontendek pl a videomass csilivili GUI-val.

“The basic tool for the manipulation of reality is the manipulation of words. If you can control the meaning of words, you can control the people who must use them.”

― Philip K. Dick

Hasznalok mindenfelere youtube-dl-t (jellemzoen musorokat/interjukat/hirmusorokat toltok vele telefonra). Inkabb ugy allnek neki, hogy egy file-ba leteszed a url-eket (vagy a 11 karakteres azonositokat), es egy scriptbol/cronbol figyeled ezt a file-t, es letoltod ami uj. Igazabol nem csak igy allnek neki, hanem a sajat scriptemnek van is hasonlo modja (csak az nem webes).

Persze file helyett lehet DB is, igazabol mindegy. Ami neked egyszerubb.

A webes php-vel az a baj, hogy normalis esetben elegge korlatozott a futasido, egy hosszabb video nem biztos, hogy lejon amig fut. (jo, novelheted a limitet, de nem az igazi)

A strange game. The only winning move is not to play. How about a nice game of chess?

koszi a valaszokat.

Dob tanulashoz van egy programom telefonra (amazing slow downer) amivel lehet lassitani a lejatszast, igy konnyebb megtanulni uj szamokat.

eddig ez a program tudott spotify-rol beolvasni szamokat, de nemreg megszuntettek ezt a funkciot. Ami jo, hogy tovabbra is tud kezelni fajlrendszeren levo mp3-kat. erre kerestem megoldast, de nem szeretnek letolteni semmi ingyenes appot, mert nem bizom bennuk.

Ezert gondoltam parancssoros eszkozre. Valoban nincs sok szam amit le akarok tolteni, csak technikailag erdekelt volna, hogy hogy lehet megcsinalni.

Nem muszáj -x, meg konvertálni. Simán -F kapcsolóval ki lehet listázni:
yt-dlp -F https://www.youtube.com/blaBLAb14bla

Ez ki fogja listázni a formátumokat, hogy milyen kód alatt tölthető le, pl. mp4a, opus, audio only, tipikusan 140 vagy 251 szokott lenni a kód. Utána ezzel a kóddal kell meghívni ugyanezt a parancsot:
yt-dlp -f kód https://www.youtube.com/blaBLAb14bla

The world runs on Excel spreadsheets. (Dylan Beattie)

Pont ahogy mondod!

Illetve a yt-download halott project, csodalkozom h. még le lehet vele tölteni bármit is jutubról. A yt-dlp a jelenleg életben levő, és aktívan karbantartott szoftver. Ezekből havonta jön ki update, mert a jutub kb. havonta módosítja az oldalt h. a régebbi letöltőket ellehetetlenítse/hibára fussanak, így mindig muszáj up-to-date letöltőt használni.

A yt-download helyett a youtube-dl-re gondolsz? Mert az utóbbi az megy most is, csak iszonyat lassan tölt bármit is le, nem frissült 2021 decembere óta. Egyébként youtube-dl-nél is pont azok a kapcsolók kellenek, amit említettem a hozzászólásban.

A másik részében teljesen igazad van, pont ez a célja a Google-nek, időnként átvariálja a YouTube-ot, hogy az ilyen nagyon okos downloaderek és pluginek ne működjenek tovább. A Netflix is ezt csinálja, szándékosan törik el hozzá a böngészős és lejátszós plugineket.

The world runs on Excel spreadsheets. (Dylan Beattie)

sziasztok,

eddig igy allok. nem volt sok idom meg ra (es nem vagyok programozo) :)

root@base:/var/www/html# cat index.html

<!DOCTYPE html>
<html>
<head>
<title>Youtube to MP3</title>
</head>
<body>

<h1>Enter Youtube URL</h1>
<form action="backend.php" method="post" >
<button type="submit" name="url" value="url">Submit</button>
<input type="text" name="url">

</form>

</body>
</html>

root@base:/var/www/html# cat backend.php

<html>
 <head>
  <title>Youtube to MP3</title>
 </head>
 <body>
 <?php
        $url = ($_POST["url"]);
        shell_exec('youtube-dl -x --audio-format mp3 $url');                              
 ?>
 </body>
</html>

csak nem csinal semmit. ps -ef sem mutatja a processzt, hogy elindulna.. van esetleg otletetek, hogy hogyan tovabb?

elore is koszi

Gergo

Nem. Az egy örökzöld klasszikus sláger Elvistől. Az is igaz, hogy a modern rm implementációk már védenek ellene valamennyire, mióta a --preserve-root kapcsoló alapértelmezett, de azért még így is csúnya ilyet bekapni, mert a /home-ot meg még pár fontos, nem rendszermappát épp úgy bedarál. Nagyon szűrjed az userinputot, az egyik legveszélyebb műfaj a kódinjektációt engedni, nem csak az rm parancs miatt, de ha egyéb hibával is párosul, priviliégiumszint emelést is végre lehet vele hajtani.

The world runs on Excel spreadsheets. (Dylan Beattie)

Ez már majdnem jó alapnak.

A shell_exec helyett tedd bele egy fájlba az url-t.

Aztán rá lehet hívni a yt-dlp -t mondjuk ötpercenként. Vagy valahogy úgy. Figyelve arra, hogy ha már fut, akkor még egyszer ne induljon el.

Úgy látom van shell hozzáférésed, így innentől kezdve kedved/lehetőséged szerint futtathatod akár screenből, akár systemd unitként, cronból, mittomén.

Lásd: https://hup.hu/comment/2870289#comment-2870289

A jelenlegi megoldásod, ahogy írták is, kb. nettó öngyilkosság.