J'ai créé un outil de téléchargement youtube

Cyniquetristev8
2022-01-13 00:59:08

Oui je sais ça existe déjà mais là c'est un site web local qui vous est propre, la vitesse n'est pas bridée et vous pouvez choisir:

  • Telecharger l'audio ou la vidéo
  • Télécharger un nombre illimité de fichiers en même temps
  • Choisir le format de fichier

En plus si vous le mettez en réseau vous pourrez l'utiliser depuis n'importe quel appareil de votre maison.

Prérequis :

- Un OS linux (testé sur ubuntu)
- Apache https://doc.ubuntu-fr.org/apache2 ( sudo apt install apache2 pour les grotteux)
- ytp-dl (l'outil pyhton utilisé pour le téléchargement) (https://github.com/yt-dlp/yt-dlp)
Pour l'installer :
sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp

Et c'est tout

Vous n'avez plus qu'à mettre les 2 fichiers suivants à la racine de votre serveur apache et tout est prêt (/var/www/html)

Lien pour télécharger les 2 fichiers : https://www.filemail.com/d/sebtmchtebwegiw

Code source des 2 fichiers :

url.php

<!DOCTYPE html>
<html lang="fr">
<head>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<h1> Outil de telechargement de vidéos youtube</h1>
<form action="download.php" method="post" style="margin-top: 15px; margin-left: 15px;">
<div id="inputFormRow">
<div class="input-group mb-3">
<input type="text" name="title[]" class="form-control m-input" placeholder="Entrer URL" autocomplete="off" required>
</div>
</div>
<button id="addRow" type="button" class="btn btn-info">Ajouter un lien</button>

<div id="newRow"></div>
<div>
<input type="radio" id="mptrois" name="type" value="mptrois"
checked>
<label for="mptrois">Audio</label>
<div id="formataudio" style="margin-left: 50px;">
<div id="xx">
<legend>Format audio</legend>
<input type="radio" id="firstaud" name="format" value="best"
checked>
<label for="format">par défaut (le meilleur possible)</label>
<input type="radio" id="formataud" name="format" value="aac">
<label for="mptrois">aac</label>
<input type="radio" id="formataud" name="format" value="flac">
<label for="mptrois">flac</label>
<input type="radio" id="formataud" name="format" value="mp3">
<label for="mptrois">mp3</label>
<input type="radio" id="formataud" name="format" value="m4a">
<label for="mptrois">m4a</label>
<input type="radio" id="formataud" name="format" value="opus">
<label for="mptrois">opus</label>
<input type="radio" id="formataud" name="format" value="vorbis">
<label for="mptrois">vorbis</label>
<input type="radio" id="formataud" name="format" value="wav">
<label for="mptrois">wav</label>
<input type="radio" id="formataud" name="format" value="alac">
<label for="mptrois">alac</label>
</div>
</div>
</div>
<div>
<input type="radio" id="mpquatre" name="type" value="mpquatre">
<label for="mpquatre">Video</label>
<div id="formatvideo" style="visibility: hidden; display: none;">
<div id="xy">
<legend>Format video</legend>
<input type="radio" id="firstvid" name="format" value="best">
<label for="format">par défaut (le meilleur possible)</label>
<input type="radio" id="format" name="format" value="3gp">
<label for="mptrois">3gp</label>
<input type="radio" id="format" name="format" value="aac">
<label for="mptrois">aac</label>
<input type="radio" id="format" name="format" value="flv">
<label for="mptrois">flv</label>
<input type="radio" id="format" name="format" value="m4a">
<label for="mptrois">m4a</label>
<input type="radio" id="format" name="format" value="mp3">
<label for="mptrois">mp3</label>
<input type="radio" id="format" name="format" value="mp4">
<label for="mptrois">mp4</label>
<input type="radio" id="format" name="format" value="ogg">
<label for="mptrois">ogg</label>
<input type="radio" id="format" name="format" value="webm">
<label for="mptrois">webm</label>
</div>
</div>
</div>
<input type="submit" name="submit" value="TELECHARGER" style="background-color: #1a53ff; border-radius: 6px; padding: 5px; padding-left: 12px; padding-right: 12px; cursor: pointer;">
</form>
<h3 style="margin-left: 2%; margin-top: 50px;"> A noter </h3>
<div>
<p style="width: 80%; margin-left: 2%;">
Si une erreur apparaît ou que un ou plusieurs fichiers sont manquants, cela est très probablement dû au fait que le ou les fichiers souhaités n'est ou ne sont pas disponibles dans votre pays, ou bien que le format souhaité n'est pas disponible.
</p>
<p style="width: 80%; margin-left: 2%;">
Made with love comme on dit. Vous pouvez me MP sur JVC: cyniquetristev8
</p>
</div>
</body>
</html>


<script type="text/javascript">
// add row
$("#addRow").click(function () {
var html = '';
html += '<div id="inputFormRow">';
html += '<div class="input-group mb-3">';
html += '<input type="text" name="title[]" class="form-control m-input" placeholder="Entrer URL" autocomplete="off">';
html += '<div class="input-group-append">';

html += '<button id="removeRow" type="button" class="btn btn-danger">Supprimer</button>';
html += '</div>';
html += '</div>';

$('#newRow').append(html);
});

// remove row
$(document).on('click', '#removeRow', function () {
$(this).closest('#inputFormRow').remove();
});

$("#mptrois").click(function ()
{
$("#formatvideo").css('visibility', 'hidden');
$("#formatvideo").css('display', 'none');
$("#formataudio").css('visibility', 'visible');
$("#formataudio").css('display', 'contents');
$("#xx").css('margin-left', '50px');
$("#firstvid").prop('checked', false);
$("#firstaud").prop('checked', true);


});
$("#mpquatre").click(function ()
{
$("#formataudio").css('visibility', 'hidden');
$("#formataudio").css('display', 'none');
$("#formatvideo").css('visibility', 'visible');
$("#formatvideo").css('display', 'contents');
$("#xy").css('margin-left', '50px');
$("#firstaud").prop('checked', false);
$("#firstvid").prop('checked', true);
});
</script>

download.php

<?php
$type = $_POST['type'];
$format = $_POST['format'];
$title = $_POST['title'];

if(!file_exists('contenu')) //vérifie si le dossier "contenu" existe, sinon le crée
{
mkdir( 'contenu' );
}

echo 'yt-dlp -f ' . $format . ' ' . $title[0];
echo "<br>";

switch ($type) {
case 'mptrois':
for ($i=0; $i < sizeof($title); $i++)
{
if(sizeof($title)>1)
{
if ($format == 'best')
{
exec('cd contenu && yt-dlp -x ' . $title[$i], $output, $retval); //telecharge uniquement l'audio
}
else
{
exec('cd contenu && yt-dlp -x --audio-format ' . $format . ' ' . $title[$i], $output, $retval); //telecharge uniquement l'audio
}

}
else
{
if ($format == 'best')
{
exec('yt-dlp -x ' . $title[$i], $output, $retval); //telecharge uniquement l'audio
}
else
{
exec('yt-dlp -x --audio-format ' . $format . ' ' . $title[$i], $output, $retval); //telecharge uniquement l'audio
}

}
$input = array_slice($output, 5, 1); //récupère la partie de la réponse à la commande où se trouve le nom du fichier
$rest = implode("','",$input); //la convertit en une chaîne
$restarr[$i] = substr($rest, 28); //récupère uniquement le nom du fichier
}
break;
case 'mpquatre':
for ($i=0; $i < sizeof($title); $i++)
{
if(sizeof($title)>1)
{
if ($format == 'best')
{
exec('cd contenu && yt-dlp ' . $title[$i], $output, $retval); //telecharge la video (et l'audio)
}
else
{
exec('cd contenu && yt-dlp -f ' . $format . ' ' . $title[$i], $output, $retval); //telecharge la video (et l'audio)
}
}
else
{
if ($format == 'best')
{
exec('yt-dlp ' . $title[$i], $output, $retval); //telecharge la video (et l'audio)
}
else
{
exec('yt-dlp -f ' . $format . ' ' . $title[$i], $output, $retval); //telecharge la video (et l'audio)
}

}
if ($format == 'best')
{
$input = array_slice($output, 7, 1); //récupère la partie de la réponse à la commande où se trouve le nom du fichier
$rest = implode("','",$input); //la convertit en une chaîne
$restarr[$i] = substr($rest, 31, -1); //récupère uniquement le nom du fichier
}
else
{
$input = array_slice($output, 3, 1); //récupère la partie de la réponse à la commande où se trouve le nom du fichier
$rest = implode("','",$input); //la convertit en une chaîne
$restarr[$i] = substr($rest, 24); //récupère uniquement le nom du fichier
}
}
break;
default:
echo "erreur : aucun bouton n'a été coché"; //erreur
break;
}

if(sizeof($title)>1)
{
exec('tar -cvf content.tar contenu'); //crée l'archive
$rest = 'content.tar';
}
else
{
$rest = $restarr[0];
}


if (file_exists($rest)) { //télécharge le fichier
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($rest).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($rest));
readfile($rest);
}
else
{
echo "erreur, un bug est apparu, pas de chance :/";
}

exec('rm ' . $rest); //supprime le fichier

if(sizeof($title)>1)
{
exec('rm contenu/*'); //supprime les fichiers
}
?>
<a href="url.php"> retour </a>

Cyniquetristev8
2022-01-13 01:00:15

Si quelqu'un pouvait me citer pour les liens ce serait coolhttps://image.noelshack.com/fichiers/2021/25/6/1624665833-1611492741-ahi-gros.png

KensingtonChad
2022-01-13 01:01:06

Pourquoi s'emmerder à faire tourner du PHP sur Apache quand tu peux juste utiliser youtube-dl en ligne de commande ?

Cyniquetristev8
2022-01-13 01:02:13

J'ai oublié de le préciser, quand vous télécharger plusieurs fichiers ça les met dans une archive

Moellhumain
2022-01-13 01:03:34

Trojan installez surtout pas

Cyniquetristev8
2022-01-13 01:04:11

Le 13 janvier 2022 à 01:01:06 KensingtonChad a écrit :
Pourquoi s'emmerder à faire tourner du PHP sur Apache quand tu peux juste utiliser youtube-dl en ligne de commande ?

Parceque de 1 c'est plus fastidieux, faut regarder sur internet pour les options, si tu veux télécharger plusieurs fichiers etc... et si tu veux l'utiliser sur plusieurs appareils faut installer youtube dl sur tous les appareils alors que là pas besoin

Cyniquetristev8
2022-01-13 01:04:48

Le 13 janvier 2022 à 01:03:34 Moellhumain a écrit :
Trojan installez surtout pas

Ca tombe bien y a rien à installerhttps://image.noelshack.com/fichiers/2021/04/4/1611841177-ahiahiahi.png

Moellhumain
2022-01-13 01:05:19

Le 13 janvier 2022 à 01:04:48 :

Le 13 janvier 2022 à 01:03:34 Moellhumain a écrit :
Trojan installez surtout pas

Ca tombe bien y a rien à installerhttps://image.noelshack.com/fichiers/2021/04/4/1611841177-ahiahiahi.png

Téléchargez surtout pas

mov_eax_0
2022-01-13 01:05:31

c'est plus rapide d'utiliser un service déja existant en fait

Cyniquetristev8
2022-01-13 01:05:45

https://image.noelshack.com/fichiers/2022/02/4/1642032101-outil.pngVoilà à quoi ça ressemblehttps://image.noelshack.com/fichiers/2021/25/6/1624665833-1611492741-ahi-gros.png

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    Partenaire: JVFlux
    Ce site n'est pas associé à Jeuxvideo.com ou Webedia. Nous utilisons seulement des archives publiques.
    Il est inutile de me spammer par e-mail pour supprimer un topic. Au contraire, en conséquence, je mettrais votre topic dans le bloc ci-dessous.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.