View Single Post
  #1637  
Old 30.12.2020, 10:51
mgpai mgpai is offline
Script Master
 
Join Date: Sep 2013
Posts: 1,553
Default

Quote:
Originally Posted by Jiaz View Post
... script with debug, to write out the result of ffprobe to disk ...
Code:
// Convert aac/m4a/ogg files to mp3.
// Trigger required: "A Download Stopped".
// Requires ffmpeg/ffprobe. Uses JD ffmpeg/ffprobe settings if available.
// Overwrites destination file (mp3) if it already exists.

if (link.isFinished()) {
    var fileName = link.name.replace(/(.+)(\..+$)/, "$1");
    var fileType = link.name.replace(/(.+)(\..+$)/, "$2");
    var sourceFile = link.getDownloadPath();
    var audioFile = /\.(aac|m4a|ogg)$/.test(sourceFile);

    if (audioFile) {
        var downloadFolder = package.getDownloadFolder();
        var destFile = downloadFolder + "/" + fileName + ".mp3";
        var ffmpeg = callAPI("config", "get", "org.jdownloader.controlling.ffmpeg.FFmpegSetup", null, "binarypath");
        var ffprobe = callAPI("config", "get", "org.jdownloader.controlling.ffmpeg.FFmpegSetup", null, "binarypathprobe");
        var json = callSync(ffprobe, "-v", "quiet", "-print_format", "json", "-show_streams", "-show_format", sourceFile);

        writeFile(JD_HOME + "/ffrpobe output.txt", json + "\r\n\r\n", true); // will be created in JDownloader install folder

        try {
            var data = JSON.parse(json);
            var streamsBitrate = data.streams[0].bit_rate ? data.streams[0].bit_rate : 0;
            var formatBitrate = data.format.bit_rate ? data.format.bit_rate : 0;
            var bitrate = Math.max(streamsBitrate, formatBitrate) / 1000;
            var deleteSourceFile = false; // Set this to true to delete source file after conversion.

            if (bitrate > 0) {
                callSync(ffmpeg, "-y", "-i", sourceFile, "-b:a", bitrate + "k", destFile);
                if (deleteSourceFile && getPath(destFile).exists()) deleteFile(sourceFile, false);
            }
        } catch (e) {
            alert("Could not convert " + sourceFile);
        }
    }
}
Reply With Quote