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:
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>
Si quelqu'un pouvait me citer pour les liens ce serait cool
Pourquoi s'emmerder à faire tourner du PHP sur Apache quand tu peux juste utiliser youtube-dl en ligne de commande ?
J'ai oublié de le préciser, quand vous télécharger plusieurs fichiers ça les met dans une archive
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
Le 13 janvier 2022 à 01:03:34 Moellhumain a écrit :
Trojan installez surtout pas
Ca tombe bien y a rien à installer
Le 13 janvier 2022 à 01:04:48 :
Le 13 janvier 2022 à 01:03:34 Moellhumain a écrit :
Trojan installez surtout pasCa tombe bien y a rien à installer
https://image.noelshack.com/fichiers/2021/04/4/1611841177-ahiahiahi.png
Téléchargez surtout pas