-
Notifications
You must be signed in to change notification settings - Fork 0
/
JD2_WriteMetadataToCSV.js
66 lines (50 loc) · 2.7 KB
/
JD2_WriteMetadataToCSV.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
Date: 3/30/2024
Author: Juicebox (https://github.com/ALonelyJuicebox/JDownloader-Metadata-To-Stash)
Event Script: JD2_WriteDownloadMetadataToCSV
Description
Based on the writeInfoFile script, this script generates a CSV file in the same location as the downloaded file.
The information in the CSV file includes the filename, the filesize (in bytes) and the URL used to download the file
In a normal instance where there's just one file in the package, this will generate a single line CSV with the filename, filesize (in bytes) and URL.
In a circumstance where a JD2 package has multiple files, this will give you a multi line CSV where each line will have a filename, filesize (in bytes) and the respective URL.
In the event that the URL is undeterminable, the URL field in the CSV will be defined as 'undefinedURL'
Version: 0.2
Requirements:
1 - Install the Event Scripter plugin for JDownloader2
2 - Add this script (making sure to set the trigger to "package finished")
Tested:
JD2 on Windows 10/11 (x64) (see path-creation code at the end of this script)
*/
//---------- Global declarations -----------------
var bWriteFile = false; // Only create a CSV file if the package was indeed downloaded
var sInfoFilePath = ""; // The CSV is packaged based, so if there is a package of files with different filenames inside the package, the CSV file will be appended to, otherwise, a new CSV file will be created.
var sText = ""; // Variable includes all data to be added to the file
var sInfoFileType = ".csv" // If you have a wacky use case, you can change this filetype, but CSV is accurate
var myPackage = package;
var aParts = myPackage.getDownloadLinks();
// Only create the CSV if the items in the package were indeed downloaded
if (myPackage.isFinished() == true) {
bWriteFile = true;
}
// Constructing the CSV
if (bWriteFile == true) {
for (var i = 0; i < aParts.length; i++) {
sText += "\"" + aParts[i].getName() + "\"," + aParts[i].getBytesTotal() + ",";
if (aParts[i].getUrl() != undefined) {
sText += aParts[i].getUrl() + ",\r\n";
}
else{
sText += "undefinedURL,\r\n";
}
}
}
// CSV file path creation (or updating)
if (bWriteFile == true) {
sInfoFilePath = myPackage.getDownloadFolder() + "/" + myPackage.getName() + sInfoFileType; //path creation
// Writing to the filesystem
try {
writeFile(sInfoFilePath, sText, true);
} catch (e) {
//Be aware that no error handling has been implemented. That said, since the CSV file is generated in the same folder as the downloaded file(s), this shouldn't be an issue
}
}