Skip to content

Instantly share code, notes, and snippets.

@jhubble
Created March 18, 2023 19:11
Show Gist options
  • Save jhubble/e24746e17c6a182381ae6f7a5016dce5 to your computer and use it in GitHub Desktop.
Save jhubble/e24746e17c6a182381ae6f7a5016dce5 to your computer and use it in GitHub Desktop.
get genre information from a medianfo json file
const fs = require('fs');
const filename = process.argv[2];
const mediacontents = JSON.parse(fs.readFileSync(filename, "utf8"));
const index = {};
const genres = {};
mediacontents.forEach((file) => {
try {
const filename = file.media["@ref"];
const meta = file.media.track.find((track) => track["@type"] === "General");
const filedir = filename.replace(/\/[^\/]+$/,'');
const genre = meta.Genre;
if (!genres[genre]) {
genres[genre] = {};
}
if (!genres[genre][filedir]) {
genres[genre][filedir] = 0;
}
genres[genre][filedir] += 1;
if (!index[filedir]) {
index[filedir] = {};
}
if (!index[filedir][genre]) {
index[filedir][genre] = 0;
}
index[filedir][genre] = index[filedir][genre] + 1;
}
catch(e) {
console.log("Error", file, e);
}
});
const sortIt = (obj) => {
Object.keys(obj).sort().forEach((key) => {
console.log(key,obj[key]);
});
}
sortIt(index);
sortIt(genres);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment