View Single Post
  #2  
Old 31.08.2016, 15:20
mgpai mgpai is offline
Script Master
 
Join Date: Sep 2013
Posts: 555
Default

Save youtube links and basic information to a html page
Code:
// Save youtube links and basic information to a html page.
// Trigger required: "A Download Stopped"

// Get link property
String.prototype.prop = function() {
    return link.getProperty(this);
};

// Convert duration to hh:mm:ss.ms format
Date.prototype.duration = function() {
    var ms = parseInt((this % 1000) / 100);
    var ss = parseInt((this / 1000) % 60);
    var mm = parseInt((this / (1000 * 60)) % 60);
    var hh = parseInt((this / (1000 * 60 * 60)) % 24);

    hh = (hh < 10) ? "0" + hh : hh;
    mm = (mm < 10) ? "0" + mm : mm;
    ss = (ss < 10) ? "0" + ss : ss;

    return hh + ":" + mm + ":" + ss + "." + ms;
};

// Get media bitrate
Number.prototype.toKbps = function() {
    return ((this / mediaDuration) * 8).toFixed(2);
};

// youtube media check
var youtubeMedia = link.getHost() == "youtube.com" && (/\.(m4a|aac|ogg|mp3|mp4|webm)$/).test(link.getName());

// Get Data
if (youtubeMedia) {
    var output = [];
    var variant = JSON.parse("YT_VARIANT".prop());
    var variantData = JSON.parse(variant.data);
    var youtube = "<a href=\"" + "http"+ "s://youtube.com/";
    var saveFile = link.getDownloadPath() + ".info.html";
    var fileSize = link.getBytesTotal();
    var demux = (/DEMUX/).test(variant.id);
    var audioSize = !demux ? "DASH_AUDIO_SIZE".prop() : fileSize;
    var videoSize = "DASH_VIDEO_SIZE".prop();
    var mediaDuration = "YT_DURATION".prop();
    var data = {
        Video: youtube + "watch?v=" + "YT_ID".prop() + "\">" + "YT_TITLE".prop() + "</a>",
        Playlist: "YT_PLAYLIST_ID".prop() && "YT_PLAYLIST_TITLE".prop() ? youtube + "playlist?list=" + "YT_PLAYLIST_ID".prop() + "\">" + "YT_PLAYLIST_TITLE".prop() + "</a>" : null,
        User: youtube + "user/" + "YT_USER_NAME".prop() + "\">" + "YT_USER_NAME".prop() + "</a>",
        Channel: youtube + "channel/" + "YT_CHANNEL_ID".prop() + "\">" + "YT_CHANNEL".prop() + "</a>" + "\r\n",
        Published: new Date("YT_DATE".prop()).toDateString(),
        Size: (fileSize / 1048576).toFixed(2) + " MiB",
        Duration: new Date(mediaDuration).duration(),
        Width: variantData.width,
        Height: variantData.height,
        FPS: variantData.fps,
        Audio_Bitrate: audioSize.toKbps() + " kbps",
        Video_Bitrate: !demux && fileSize > audioSize ? videoSize.toKbps() + " kbps" : null,
        Overall_Bitrate: !demux && fileSize > audioSize ? fileSize.toKbps() + " kbps" : null,
        Variant_ID: variant.id,
    };
    // Generate output[]
    for (i in data) {
        if (data[i] && data[i] != -1) {
            output.push(i.replace(/_/g, " ") + " : " + data[i]);
        }
    }
    // Format output[] and save to html file
    try {
        deleteFile(saveFile, false); // Delete info file if it already exists on the disk.
        writeFile(saveFile, "<pre>" + output.join("<br>") + "</pre>", false);
    } catch (err) {
        log(err + "");
    }
}
Attached Files
File Type: html Sample_Output.html (717 Bytes, 86 views)

Last edited by Jiaz; 15.07.2019 at 13:33.
Reply With Quote