diff --git a/src/components/modules/ExportTools/Export.vue b/src/components/modules/ExportTools/Export.vue index 00284d5..181e1b4 100644 --- a/src/components/modules/ExportTools/Export.vue +++ b/src/components/modules/ExportTools/Export.vue @@ -53,7 +53,7 @@ v-model="selLibrary" id="selLibrary" :options="selLibraryOptions" - @change="selLibraryChanged" + @change="selLibraryChanged($event, selLibrary)" name="selLibrary"> @@ -175,26 +175,32 @@ await this.getPMSSections(); this.selLibraryWait = true; }, + /* selLibrary: async function(){ this.$store.commit("UPDATE_SELECTEDSECTION", this.selLibrary); }, + */ selMediaType: async function(){ - this.$store.commit("UPDATE_SELECTEDLIBTYPE", this.selMediaType); +// this.$store.commit("UPDATE_SELECTEDLIBTYPE", this.selMediaType); this.selLevel = ""; this.selLibrary = ""; }, +/* selExpTypeSec: async function(){ this.$store.commit("UPDATE_SELECTEDLIBTYPESEC", this.selExpTypeSec); }, selLevel: async function(){ this.$store.commit("UPDATE_EXPORTLEVEL", this.selLevel); }, + */ selectedServerAddressUpdateInProgress: async function(){ this.selLibraryWait = false; }, +/* selPType: async function(){ this.$store.commit("UPDATE_SELECTEDPLISTTYPE", this.selPType); } + */ }, created() { log.info("ET Created"); @@ -209,12 +215,12 @@ } else if ( this.selExpTypeSec == et.ETmediaType.Libraries) { - this.$store.commit("UPDATE_EXPORTLEVEL", 'all'); + //this.$store.commit("UPDATE_EXPORTLEVEL", 'all'); return false; } else if (this.selExpTypeSec == et.ETmediaType.Playlists) { - this.$store.commit("UPDATE_EXPORTLEVEL", 'all'); + //this.$store.commit("UPDATE_EXPORTLEVEL", 'all'); return false; } else @@ -339,9 +345,12 @@ } log.verbose(`Sections to select among are: ${JSON.stringify(this.selLibraryOptions)}`); }, - selLibraryChanged: async function(){ + selLibraryChanged: async function(value, name){ + + console.log('Ged 5566', value, name) + log.verbose(`Library key to export selected as: ${arguments[0]}`); - + et.expSettings.selLibKey = this.selLibrary; }, selExpTypeSecChanged: async function(){ @@ -444,7 +453,7 @@ } this.selLibraryOptions = result; }, - getMedia() { + async getMedia() { log.info("getMedia Called"); if (wtconfig.get('General.ExportPath', "") == "") { @@ -458,11 +467,20 @@ }) return } - this.$store.commit("UPDATE_EXPORTLEVEL", this.selLevel); - this.$store.commit("UPDATE_SELECTEDSECTION", this.selLibrary); this.$store.commit("UPDATE_EXPORTSTATUS", i18n.t("Modules.ET.Status.StartExport")); - et.exportMedias(); - //this.$store.dispatch("exportMedias"); + console.log('Ged before export') + + // Populate et. settings with the selected values + et.expSettings.baseURL = this.$store.getters.getSelectedServerAddress; + et.expSettings.accessToken = this.$store.getters.getSelectedServerToken; + et.expSettings.libType = this.selMediaType; + et.expSettings.libTypeSec = this.selExpTypeSec; + et.expSettings.exportLevel = this.selLevel; + //et.expSettings.selLibKey = this.selLibrary; + + + await et.exportMedias(); + console.log('Ged after export') }, async checkSrvSelected() { log.debug("checkSrvSelected started"); diff --git a/src/components/modules/ExportTools/scripts/et.js b/src/components/modules/ExportTools/scripts/et.js index 9f33ac4..ff59f32 100644 --- a/src/components/modules/ExportTools/scripts/et.js +++ b/src/components/modules/ExportTools/scripts/et.js @@ -70,7 +70,7 @@ const et = new class ET { 2003: 'Photo', 3001: 'Playlists' }, - this.selSecOption ={ + this.selSecOption = { 1: [ { "text": i18n.t('Modules.ET.optExpType.SecMovies'), @@ -131,55 +131,48 @@ const et = new class ET { "value": this.ETmediaType.Libraries } ] + }, + this.expSettings = { + baseURL: '', + accessToken: '', + libType: '', + libTypeSec: '', + exportLevel: '', + selLibKey: '', + levelName: '', + libName: '' } } + async exportMedias() { - var baseURL = store.getters.getSelectedServerAddress; - var accessToken = store.getters.getSelectedServerToken; - var libType = store.getters.getLibType; - var pListType = store.getters.getSelectedLibTypeSec; - - console.log('Ged 1', baseURL) - console.log('Ged 2', accessToken) - console.log('Ged 3', libType) - console.log('Ged 4', pListType) - - let levelName; - var libName = et.getLibDisplayName(store.getters.getSelectedSection, store.getters.getPmsSections); - if ([ et.ETmediaType.Libraries, et.ETmediaType.Playlists].indexOf(libType) > -1) + this.expSettings.libName = et.getLibDisplayName(this.expSettings.selLibKey, store.getters.getPmsSections); + if ([ et.ETmediaType.Libraries, et.ETmediaType.Playlists].indexOf(this.expSettings.libType) > -1) { - levelName = 'All' + this.expSettings.levelName = 'All' } else { - levelName = et.getLevelDisplayName(store.getters.getSelectedExportLevel, libType); + this.expSettings.levelName = et.getLevelDisplayName(this.expSettings.exportLevel, this.expSettings.libType); } - console.log('Ged 7', levelName) - - - excel2.createOutFile( { - libName: libName, - level: levelName, - libType: libType, - baseURL: baseURL, - accessToken: accessToken, - exType: libType, - pListType: pListType, - libTypeSec: store.getSelectedLibTypeSec + await excel2.createOutFile( { + libName: this.expSettings.libName, + level: this.expSettings.levelName, + libType: this.expSettings.libType, + baseURL: this.expSettings.baseURL, + accessToken: this.expSettings.accessToken, + exType: this.expSettings.libType, + pListType: this.expSettings.libTypeSec, + libTypeSec: this.expSettings.libTypeSec } ); } - async getSectionData({sectionName, baseURL, accessToken, libType, libTypeSec}) + async getSectionData() { const sectionData = [] // Find LibType steps - const step = wtconfig.get("PMS.ContainerSize." + libType, 20) + const step = wtconfig.get("PMS.ContainerSize." + this.expSettings.libType, 20) log.debug(`Got Step size as: ${step}`) - let libKey, element - - // Get Section Key - libKey = await et.getSectionKey({libName: sectionName, baseURL: baseURL, accessToken: accessToken}) - log.debug(`Got SectionKey as: ${libKey}`) + let element // Now read the fields and level defs // Current item let idx = 0 @@ -187,33 +180,34 @@ const et = new class ET { let chuncks, postURI let size do { - if (libType == et.ETmediaType.Photo) + if (this.expSettings.libType == et.ETmediaType.Photo) { - element = '/library/sections/' + libKey + '/all'; - postURI = `?addedAt>>=-2208992400&X-Plex-Container-Start=${idx}&X-Plex-Container-Size=${step}&type=${libTypeSec}&${this.uriParams}`; + element = '/library/sections/' + this.expSettings.selLibKey + '/all'; + postURI = `?addedAt>>=-2208992400&X-Plex-Container-Start=${idx}&X-Plex-Container-Size=${step}&type=${this.expSettings.libTypeSec}&${this.uriParams}`; } - else if (libType == et.ETmediaType.Playlist) + else if (this.expSettings.libType == et.ETmediaType.Playlist) { - element = '/playlists/' + libKey; + element = '/playlists/' + this.expSettings.selLibKey; postURI = `/items?X-Plex-Container-Start=${idx}&X-Plex-Container-Size=${step}`; } - else if (libType == et.ETmediaType.Libraries) + else if (this.expSettings.libType == et.ETmediaType.Libraries) { element = '/library/sections/all'; postURI = `?X-Plex-Container-Start=${idx}&X-Plex-Container-Size=${step}`; } - else if (libType == et.ETmediaType.Playlists) + else if (this.expSettings.libType == et.ETmediaType.Playlists) { element = '/playlists/all'; postURI = `?X-Plex-Container-Start=${idx}&X-Plex-Container-Size=${step}`; } else { - element = '/library/sections/' + libKey + '/all'; - postURI = `?X-Plex-Container-Start=${idx}&X-Plex-Container-Size=${step}&type=${libTypeSec}&${this.uriParams}`; + element = '/library/sections/' + this.expSettings.selLibKey + '/all'; + postURI = `?X-Plex-Container-Start=${idx}&X-Plex-Container-Size=${step}&type=${this.expSettings.libTypeSec}&${this.uriParams}`; } - log.info(`Calling getSectionData url ${baseURL + element + postURI}`); - chuncks = await et.getItemData({baseURL: baseURL, accessToken: accessToken, element: element, postURI: postURI}); + + log.info(`Calling getSectionData url ${this.expSettings.baseURL + element + postURI}`); + chuncks = await et.getItemData({baseURL: this.expSettings.baseURL, accessToken: this.expSettings.accessToken, element: element, postURI: postURI}); size = JSONPath({path: '$.MediaContainer.size', json: chuncks}); const totalSize = JSONPath({path: '$.MediaContainer.totalSize', json: chuncks}); log.info(`getSectionData chunck size is ${size} and idx is ${idx} and totalsize is ${totalSize}`) @@ -227,34 +221,6 @@ const et = new class ET { return sectionData; } - async getSectionSizeByKey({sectionKey, baseURL, accessToken, libType}) - { - let sizeURI, sizePostURI, sizeContents; - if (libType == 'playlist') - { - sizeURI = '/playlists/' + sectionKey - sizePostURI = '/items?X-Plex-Container-Start=0&X-Plex-Container-Size=0' - } - else - { - sizeURI = '/library/sections/' + sectionKey - sizePostURI = '/all?X-Plex-Container-Start=0&X-Plex-Container-Size=0' - } - sizeContents = await et.getItemData({baseURL: baseURL, accessToken: accessToken, element: sizeURI, postURI: sizePostURI}); - const size = await JSONPath({path: '$..totalSize', json: sizeContents}); - return size - } - - async getSectionSizeByName({sectionName, baseURL, accessToken}) - { - const libKey = await et.getSectionKey({libName: sectionName, baseURL: baseURL, accessToken: accessToken}) - const sizeURI = '/library/sections/' + libKey - const sizePostURI = '/all?X-Plex-Container-Start=0&X-Plex-Container-Size=0' - const sizeContents = await et.getItemData({baseURL: baseURL, accessToken: accessToken, element: sizeURI, postURI: sizePostURI}); - const size = await JSONPath({path: '$..totalSize', json: sizeContents}); - return size - } - async getItemData({baseURL, accessToken, element, postURI=defpostURI}) { const url = baseURL + element + postURI; @@ -535,7 +501,6 @@ const et = new class ET { return defFields['fields'][fieldName]['subtype']; } - getFieldsKeyVal( libType, level) { // Get fields for level let fields @@ -1349,7 +1314,7 @@ const excel2 = new class Excel { }); } - async createOutFile( {libName, level, libType, baseURL, accessToken, exType, pListType, libTypeSec} ) + async createOutFile( {libName, level, libType, baseURL, accessToken, exType, pListType} ) { const header = excel2.GetHeader(level, libType, pListType); log.debug(`header: ${header}`); @@ -1365,7 +1330,7 @@ const excel2 = new class Excel { var sectionData, x; { // Get all the items in small chuncks - sectionData = await et.getSectionData({sectionName: libName, baseURL: baseURL, accessToken: accessToken, libType: libType, libTypeSec: libTypeSec}); + sectionData = await et.getSectionData(); log.verbose(`Amount of chunks in sectionData are: ${sectionData.length}`); let item; let counter = 1; @@ -1451,4 +1416,4 @@ const excel2 = new class Excel { } } -export {et, excel2}; \ No newline at end of file +export { et, excel2 }; \ No newline at end of file