Untitled
unknown
plain_text
3 years ago
3.4 kB
9
Indexable
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>YouTube Playlist Downloader</title>
</head>
<body>
<h1>YouTube Playlist Downloader</h1>
<input type="text" id="playlist-url" placeholder="Enter YouTube playlist URL">
<select id="video-quality">
<option value="1080p">1080p</option>
<option value="720p">720p</option>
<option value="480p">480p</option>
<option value="mp3">mp3</option>
</select>
<button onclick="downloadPlaylist()">Download Playlist</button>
<button onclick="downloadThumbnail()">Download Thumbnail</button>
<button onclick="downloadThumbnailCover()">Download Thumbnail Cover</button>
<button onclick="downloadPlaylistAsZip()">Download Playlist as Zip</button>
<script>
function downloadPlaylist() {
// Get the playlist URL from the input field.
var playlistUrl = document.getElementById("playlist-url").value;
// Create a new XMLHttpRequest object.
var xhr = new XMLHttpRequest();
// Set the request method to "GET".
xhr.open("GET", playlistUrl);
// Start the request.
xhr.send();
// Check the response status code.
if (xhr.status === 200) {
// The request was successful.
// Get the response body.
var body = xhr.responseText;
// Parse the response body into a JSON object.
var playlist = JSON.parse(body);
// Create a new directory for the playlist.
var directory = new Date().getTime();
mkdir(directory);
// Iterate over the playlist items.
for (var i = 0; i < playlist.items.length; i++) {
// Get the video URL from the playlist item.
var videoUrl = playlist.items[i].snippet.resourceId.videoId;
// Download the video.
downloadVideo(videoUrl, directory);
}
// Create a zip file for the playlist.
var zip = new JSZip();
// Iterate over the directory.
for (var file in directory) {
// If the file is a regular file.
if (directory.hasOwnProperty(file)) {
// Add the file to the zip file.
zip.file(file, directory + "/" + file);
}
}
// Save the zip file.
zip.generateAsync({type:"blob"}).then(function(content) {
var blob = new Blob([content], {type:"application/zip"});
var filename = playlistUrl.split("/").pop() + ".zip";
saveAs(blob, filename);
});
} else {
// The request failed.
console.log("Request failed: " + xhr.status);
}
}
function downloadVideo(videoUrl, directory) {
// Create a new XMLHttpRequest object.
var xhr = new XMLHttpRequest();
// Set the request method to "GET".
xhr.open("GET", videoUrl);
// Set the request header to "Accept".
xhr.setRequestHeader("Accept", "video/mp4");
// Start the request.
xhr.send();
// Check the response status code.
if (xhr.status === 200) {
// The request was successful.
// Get the response body.
var body = xhr.responseText;
// Save the response body to a file.
var blob = new Blob([body], {type: "video/mp4"});
var filename = videoUrl.split("/").pop();
saveAs(
Editor is loading...