mirror of
https://github.com/WebTools-NG/WebTools-NG
synced 2025-02-18 12:28:26 +00:00
#461 Metadata now done
This commit is contained in:
parent
190f16da2d
commit
71fbd33531
9 changed files with 54 additions and 17 deletions
|
@ -22,6 +22,7 @@
|
||||||
* [#478 Refactor time and status for ET Module](https://github.com/WebTools-NG/WebTools-NG/issues/478)
|
* [#478 Refactor time and status for ET Module](https://github.com/WebTools-NG/WebTools-NG/issues/478)
|
||||||
* [#463 plex.tv add friendly name](https://github.com/WebTools-NG/WebTools-NG/issues/463)
|
* [#463 plex.tv add friendly name](https://github.com/WebTools-NG/WebTools-NG/issues/463)
|
||||||
* [#398 Playlists imported from music.app doesn't show](https://github.com/WebTools-NG/WebTools-NG/issues/398)
|
* [#398 Playlists imported from music.app doesn't show](https://github.com/WebTools-NG/WebTools-NG/issues/398)
|
||||||
|
* [#461 Playlists imported from music.app doesn't show](https://github.com/WebTools-NG/WebTools-NG/issues/461)
|
||||||
|
|
||||||
## V0.3.15 (20220413)
|
## V0.3.15 (20220413)
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@
|
||||||
{ text: i18n.t('Modules.ET.Custom.optCustExpType.Movies'), value: et.ETmediaType.Movie, disabled: false },
|
{ text: i18n.t('Modules.ET.Custom.optCustExpType.Movies'), value: et.ETmediaType.Movie, disabled: false },
|
||||||
{ text: i18n.t('Modules.ET.Custom.optCustExpType.TVSeries'), value: et.ETmediaType.Show, disabled: false },
|
{ text: i18n.t('Modules.ET.Custom.optCustExpType.TVSeries'), value: et.ETmediaType.Show, disabled: false },
|
||||||
{ text: i18n.t('Modules.ET.Custom.optCustExpType.TVEpisodes'), value: et.ETmediaType.Episode, disabled: false },
|
{ text: i18n.t('Modules.ET.Custom.optCustExpType.TVEpisodes'), value: et.ETmediaType.Episode, disabled: false },
|
||||||
{ text: i18n.t('Modules.ET.Custom.optCustExpType.AudioArtist'), value: et.ETmediaType.Album, disabled: false },
|
{ text: i18n.t('Modules.ET.Custom.optCustExpType.AudioArtist'), value: et.ETmediaType.Artist, disabled: false },
|
||||||
{ text: i18n.t('Modules.ET.Custom.optCustExpType.AudioAlbum'), value: et.ETmediaType.Album, disabled: false },
|
{ text: i18n.t('Modules.ET.Custom.optCustExpType.AudioAlbum'), value: et.ETmediaType.Album, disabled: false },
|
||||||
{ text: i18n.t('Modules.ET.Custom.optCustExpType.AudioTrack'), value: et.ETmediaType.Track, disabled: false },
|
{ text: i18n.t('Modules.ET.Custom.optCustExpType.AudioTrack'), value: et.ETmediaType.Track, disabled: false },
|
||||||
{ text: i18n.t('Modules.ET.Custom.optCustExpType.Photos'), value: et.ETmediaType.Photo, disabled: false },
|
{ text: i18n.t('Modules.ET.Custom.optCustExpType.Photos'), value: et.ETmediaType.Photo, disabled: false },
|
||||||
|
@ -291,9 +291,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
log.info(`LevelCount for "${this.selCustLevel}" of the type "${this.selMediaType}" was calculated as:${curLevel}`);
|
log.info(`[custom.vue] (updateLevelCount) LevelCount for "${this.selCustLevel}" of the type "${this.selMediaType}" was calculated as:${curLevel}`);
|
||||||
wtconfig.set(`ET.CustomLevels.${this.selMediaType}.LevelCount.${this.selCustLevel}`, curLevel);
|
wtconfig.set(`ET.CustomLevels.${this.selMediaType}.LevelCount.${this.selCustLevel}`, curLevel);
|
||||||
log.info(`includeFields for "${this.selCustLevel}" of the type "${this.selMediaType}" was calculated as:${includeFields}`);
|
log.info(`[custom.vue] (updateLevelCount) includeFields for "${this.selCustLevel}" of the type "${this.selMediaType}" was calculated as:${includeFields}`);
|
||||||
wtconfig.set(`ET.CustomLevels.${this.selMediaType}.Include.${this.selCustLevel}`, includeFields);
|
wtconfig.set(`ET.CustomLevels.${this.selMediaType}.Include.${this.selCustLevel}`, includeFields);
|
||||||
},
|
},
|
||||||
changeType: function() {
|
changeType: function() {
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
"Locked Fields",
|
"Locked Fields",
|
||||||
"Loudness Analysis Version",
|
"Loudness Analysis Version",
|
||||||
"Mood",
|
"Mood",
|
||||||
|
"PMS Metadata Path",
|
||||||
"Poster url",
|
"Poster url",
|
||||||
"Rating",
|
"Rating",
|
||||||
"Release Date",
|
"Release Date",
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
"Locked Fields",
|
"Locked Fields",
|
||||||
"Mood",
|
"Mood",
|
||||||
"Original Title",
|
"Original Title",
|
||||||
|
"PMS Metadata Path",
|
||||||
"Poster url",
|
"Poster url",
|
||||||
"Release Date",
|
"Release Date",
|
||||||
"Similar",
|
"Similar",
|
||||||
|
|
|
@ -106,6 +106,7 @@
|
||||||
"Part Size as Bytes",
|
"Part Size as Bytes",
|
||||||
"Part Size",
|
"Part Size",
|
||||||
"Part Video Profile",
|
"Part Video Profile",
|
||||||
|
"PMS Metadata Path",
|
||||||
"Poster url",
|
"Poster url",
|
||||||
"Rating",
|
"Rating",
|
||||||
"Release Date",
|
"Release Date",
|
||||||
|
|
|
@ -1012,6 +1012,13 @@
|
||||||
"call": 1,
|
"call": 1,
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"PMS Metadata Path":
|
||||||
|
{
|
||||||
|
"key": "$.guid",
|
||||||
|
"call": 1,
|
||||||
|
"type": "string",
|
||||||
|
"postProcess": true
|
||||||
|
},
|
||||||
"Poster url":
|
"Poster url":
|
||||||
{
|
{
|
||||||
"key": "$.thumb",
|
"key": "$.thumb",
|
||||||
|
|
|
@ -123,6 +123,7 @@
|
||||||
"Part Size",
|
"Part Size",
|
||||||
"Part Size as Bytes",
|
"Part Size as Bytes",
|
||||||
"Part Video Profile",
|
"Part Video Profile",
|
||||||
|
"PMS Metadata Path",
|
||||||
"Poster url",
|
"Poster url",
|
||||||
"Rating",
|
"Rating",
|
||||||
"Release Date",
|
"Release Date",
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
"Locked Fields",
|
"Locked Fields",
|
||||||
"Original Title",
|
"Original Title",
|
||||||
"Part Duration",
|
"Part Duration",
|
||||||
|
"PMS Metadata Path",
|
||||||
"Poster url",
|
"Poster url",
|
||||||
"Rating",
|
"Rating",
|
||||||
"Release Date",
|
"Release Date",
|
||||||
|
|
|
@ -552,9 +552,9 @@ const etHelper = new class ETHELPER {
|
||||||
}
|
}
|
||||||
|
|
||||||
async postProcess( {name, val, title="", data} ){
|
async postProcess( {name, val, title="", data} ){
|
||||||
log.debug(`ETHelper(postProcess) - Val is: ${JSON.stringify(val)}`);
|
log.debug(`[ETHelper] (postProcess) - Val is: ${JSON.stringify(val)}`);
|
||||||
log.debug(`ETHelper(postProcess) - name is: ${name}`);
|
log.debug(`[ETHelper] (postProcess) - name is: ${name}`);
|
||||||
log.debug(`ETHelper(postProcess) - title is: ${title}`);
|
log.debug(`[ETHelper] (postProcess) - title is: ${title}`);
|
||||||
let retArray = [];
|
let retArray = [];
|
||||||
let guidArr;
|
let guidArr;
|
||||||
let x, retVal, start, strStart, end, result;
|
let x, retVal, start, strStart, end, result;
|
||||||
|
@ -796,17 +796,46 @@ const etHelper = new class ETHELPER {
|
||||||
for(const item of guidArr) {
|
for(const item of guidArr) {
|
||||||
if ( item.startsWith("tmdb://") )
|
if ( item.startsWith("tmdb://") )
|
||||||
{
|
{
|
||||||
retVal = result = 'https://www.themoviedb.org/movie/' + item.substring(7);
|
retVal = 'https://www.themoviedb.org/movie/' + item.substring(7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "PMS Metadata Path":
|
||||||
|
retVal = wtconfig.get('ET.NotAvail');
|
||||||
|
var libTypeName;
|
||||||
|
switch ( String(this.RevETmediaType[this.Settings.libTypeSec]) ){
|
||||||
|
case "Movie":
|
||||||
|
libTypeName = 'Movies';
|
||||||
|
break;
|
||||||
|
case "Show":
|
||||||
|
libTypeName = 'TV Shows';
|
||||||
|
break;
|
||||||
|
case "Episode":
|
||||||
|
libTypeName = 'TV Shows';
|
||||||
|
// We need another guid sadly
|
||||||
|
val = JSONPath({path: '$..grandparentGuid', json: data})[0];
|
||||||
|
break;
|
||||||
|
case "Album":
|
||||||
|
libTypeName = 'Albums';
|
||||||
|
break;
|
||||||
|
case "Artist":
|
||||||
|
libTypeName = 'Artists';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var crypto = require('crypto');
|
||||||
|
var shasum = crypto.createHash('sha1');
|
||||||
|
shasum.update(val);
|
||||||
|
var sha1 = shasum.digest('hex');
|
||||||
|
var path = require('path');
|
||||||
|
retVal = path.join('Metadata', libTypeName, sha1[0], sha1.slice(1) + '.bundle');
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
log.error(`postProcess no hit for: ${name}`)
|
log.error(`[ETHelper] (postProcess) no hit for: ${name}`)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
retVal = 'ERROR'
|
retVal = 'ERROR'
|
||||||
log.error(`ETHelper(postProcess) - We had an error as: ${error} . So postProcess retVal set to ERROR`);
|
log.error(`[ETHelper] (postProcess) - We had an error as: ${error} . So postProcess retVal set to ERROR`);
|
||||||
}
|
}
|
||||||
return await retVal;
|
return await retVal;
|
||||||
}
|
}
|
||||||
|
@ -815,7 +844,7 @@ const etHelper = new class ETHELPER {
|
||||||
this.Settings.currentItem +=1;
|
this.Settings.currentItem +=1;
|
||||||
status.updateStatusMsg( status.RevMsgType.Items, i18n.t('Common.Status.Msg.ProcessItem_0_1', {count: this.Settings.count, total: this.Settings.endItem}));
|
status.updateStatusMsg( status.RevMsgType.Items, i18n.t('Common.Status.Msg.ProcessItem_0_1', {count: this.Settings.count, total: this.Settings.endItem}));
|
||||||
log.debug(`Start addRowToTmp item ${this.Settings.currentItem} (Switch to Silly log to see contents)`)
|
log.debug(`Start addRowToTmp item ${this.Settings.currentItem} (Switch to Silly log to see contents)`)
|
||||||
log.silly(`Data is: ${JSON.stringify(data)}`)
|
log.silly(`[ethelper.js] (addRowToTmp) Data is: ${JSON.stringify(data)}`)
|
||||||
let name, key, type, subType, subKey, doPostProc;
|
let name, key, type, subType, subKey, doPostProc;
|
||||||
let date, year, month, day, hours, minutes, seconds;
|
let date, year, month, day, hours, minutes, seconds;
|
||||||
let val, array, i, valArray, valArrayVal
|
let val, array, i, valArray, valArrayVal
|
||||||
|
@ -845,12 +874,10 @@ const etHelper = new class ETHELPER {
|
||||||
val = wtconfig.get('ET.NotAvail', 'N/A');
|
val = wtconfig.get('ET.NotAvail', 'N/A');
|
||||||
}
|
}
|
||||||
val = etHelper.isEmpty( { "val": val } );
|
val = etHelper.isEmpty( { "val": val } );
|
||||||
// val = setQualifier( {str: val} );
|
|
||||||
break;
|
break;
|
||||||
case "array":
|
case "array":
|
||||||
array = JSONPath({path: key, json: data});
|
array = JSONPath({path: key, json: data});
|
||||||
if (array === undefined || array.length == 0) {
|
if (array === undefined || array.length == 0) {
|
||||||
// val = setQualifier( {str: wtconfig.get('ET.NotAvail', 'N/A')} );
|
|
||||||
val = wtconfig.get('ET.NotAvail', 'N/A');
|
val = wtconfig.get('ET.NotAvail', 'N/A');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -887,8 +914,7 @@ const etHelper = new class ETHELPER {
|
||||||
}
|
}
|
||||||
valArray.push(valArrayVal)
|
valArray.push(valArrayVal)
|
||||||
}
|
}
|
||||||
val = valArray.join(wtconfig.get('ET.ArraySep', ' * '))
|
val = valArray.join(wtconfig.get('ET.ArraySep', ' * '));
|
||||||
// val = setQualifier( {str: val} );
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "array-count":
|
case "array-count":
|
||||||
|
@ -912,7 +938,6 @@ const etHelper = new class ETHELPER {
|
||||||
{
|
{
|
||||||
val = wtconfig.get('ET.NotAvail', 'N/A')
|
val = wtconfig.get('ET.NotAvail', 'N/A')
|
||||||
}
|
}
|
||||||
// val = setQualifier( {str: val} );
|
|
||||||
break;
|
break;
|
||||||
case "datetime":
|
case "datetime":
|
||||||
//val = JSONPath({path: String(lookup), json: data});
|
//val = JSONPath({path: String(lookup), json: data});
|
||||||
|
@ -935,13 +960,12 @@ const etHelper = new class ETHELPER {
|
||||||
{
|
{
|
||||||
val = wtconfig.get('ET.NotAvail', 'N/A')
|
val = wtconfig.get('ET.NotAvail', 'N/A')
|
||||||
}
|
}
|
||||||
// val = setQualifier( {str: val} );
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ( doPostProc )
|
if ( doPostProc )
|
||||||
{
|
{
|
||||||
const title = JSONPath({path: String('$.title'), json: data})[0];
|
const title = JSONPath({path: String('$.title'), json: data})[0];
|
||||||
log.debug(`ETHelper(addRowToTmp doPostProc) - Name is: ${name} - Title is: ${title} - Val is: ${val}`)
|
log.debug(`[ETHelper] (addRowToTmp doPostProc) - Name is: ${name} - Title is: ${title} - Val is: ${val}`)
|
||||||
val = await this.postProcess( {name: name, val: val, title: title, data: data} );
|
val = await this.postProcess( {name: name, val: val, title: title, data: data} );
|
||||||
}
|
}
|
||||||
// Here we add qualifier, if not a number
|
// Here we add qualifier, if not a number
|
||||||
|
|
Loading…
Add table
Reference in a new issue