diff --git a/common/lkt.js b/common/lkt.js index 6f65b1e02d8d5ef80f18407aa4d8207b211d15e8..d791194d6f02dc8b13e0d926c239b3d3e35724b2 100644 --- a/common/lkt.js +++ b/common/lkt.js @@ -1,3 +1,5 @@ +const { match } = require('assert'); + const logger = require.main.require('./common/logger.js'), net = require('net'), { finished } = require('stream'), @@ -137,8 +139,12 @@ class LktClient { static commandPlaylistListKaras(playlist) { var client = new this(); var once = false; - var result = {}; + var result = []; + var matches; var dataObj; + var karaList; + const regex = /([0-9]+) (vo|va|amv|cdg|autres|vtuber) - (jp|fr|en|ru|sp|it|ch|latin|multi|undefined) \/ (.+) - (OP|ED|IS|AMV|PV|MV|LIVE)([0-9]*) - (.+) \[ (.+) \]/; + var reg = new RegExp(regex); function __getResult(client) { return new Promise(resolv => { client.m_socket.setTimeout(0); @@ -150,8 +156,21 @@ class LktClient { } else { client.close(); dataObj = __mpdToObject(data); - result = data.split("\n"); - result.splice(dataObj.continue); + karaList = data.split("\n"); + karaList.splice(dataObj.continue); + karaList.forEach(kara => { + matches = reg.exec(kara); + result.push( { + id:matches[1], + cat: matches[2], + language:matches[3], + source:matches[4], + type:matches[5]+matches[6], + title:matches[7], + author:matches[8] + }); + //logger.info("kara",matches[1]); + }); resolv(result); } }); diff --git a/instance/main.js b/instance/main.js index 264603febaff3fc61175509fabaac84e58c58bed..03f35329140a6ec272e8c009da3de32f93610398 100644 --- a/instance/main.js +++ b/instance/main.js @@ -177,6 +177,7 @@ function configureLeftPanel() { playlistSelect.onchange = () => { currentPlaylist = playlistSelect.value; + logger.info("cc"); ipcRenderer.send('get-playlist-data',playlistSelect.value); } @@ -200,6 +201,7 @@ ipcRenderer.on('reload-queue-responce', (event, arg) => { logger.debug('instance', `Web page got reload-queue`); countKaraInQueue = 0; document.getElementById('queueList').innerHTML = ''; + logger.info("queue",JSON.stringify(arg[0])); arg.forEach(kara => { countKaraInQueue++; ejs.renderFile(__dirname + '/views/karaQueueListItem.ejs', { kara: kara }, (err, data) => { @@ -235,6 +237,9 @@ ipcRenderer.on('send-runnings', (event, arg) => { }); ipcRenderer.on('playlists-updated', (event, playlists) => { + if(!playlists) { + return; + } var selector = document.getElementById("playlist-selector") selector.innerHTML = ''; if(!selector.value) { @@ -250,10 +255,10 @@ ipcRenderer.on('playlists-updated', (event, playlists) => { }); ipcRenderer.on('playlist-data-responce', (event,karas) => { - var playListPanel = document.getElementById('playlistList') + var playListPanel = document.getElementById('playlistList'); playListPanel.innerHTML = ''; karas.forEach(kara => { - ejs.renderFile(__dirname + '/views/kara.ejs', { kara: kara }, (err, data) => { + ejs.renderFile(__dirname + '/views/karaPlaylistListItem.ejs', { kara: kara }, (err, data) => { if (err) logger.error('instance', err); playListPanel.innerHTML = ` ${playListPanel.innerHTML} diff --git a/instance/views/karaPlaylistListItem.ejs b/instance/views/karaPlaylistListItem.ejs new file mode 100644 index 0000000000000000000000000000000000000000..941e76c0f2244c0014a7e0bbaff09ea0802717ee --- /dev/null +++ b/instance/views/karaPlaylistListItem.ejs @@ -0,0 +1,10 @@ +<%# vim: ts=4 syntax=html + The template for the kara card in lists %> +<li class="card p-2 bd-highlight shadow-none d-flex flex-row bd-highlight mb-3 karaCard karaPlaylist"> + <%- include('kara.ejs'); %> + <div class="karaElement p-2 bd-highlight"> + <div class="d-flex flex-row bd-highlight mb-3 btn-group karaActionBtnGroup" role="group"> + <button class="btn btn-outline-light karaActionBtn karaDeleteBtn" title="Delete"><i class="fas fa-times"></i></button> + </div> + </div> +</li> diff --git a/instance/views/panels.ejs b/instance/views/panels.ejs index 57f0e19c9fc08db4ed055e42927b49514386e202..f563bd7c8a26effa7c5d06a11d3c77c1d20f363b 100644 --- a/instance/views/panels.ejs +++ b/instance/views/panels.ejs @@ -32,7 +32,7 @@ <ul class="panel bd-highlight mb-3 pl-0" id="queueList"></ul> </div> <div id="playlist-panel" class="tab-pane fade" role="tabpanel" aria-labelledby="playlist-tab"> - <ul id="playlistList"></ul> + <ul class="panel bd-highlight mb-3 pl-0" id="playlistList"></ul> </div> </div> </div> diff --git a/main.js b/main.js index 790fbf0af0d9882eee0635f8b42d4eb195233867..cdc17c26383714ab7b25f6e517dbb7b512f70d94 100644 --- a/main.js +++ b/main.js @@ -280,6 +280,7 @@ ipcMain.on('add-kara-queue-pos', (event, addparams) => { lkt.commandQueueAddId(addparams.id).then(() => lkt.commandMove(addparams.queueSize + 1, addparams.position)); }); +var currentPlaylist = ""; ipcMain.on('verify-lektord', (event, arg) => { lkt.ping().then(sta => { logger.debug('main', `Status from ping is ${sta}`); @@ -350,7 +351,16 @@ ipcMain.on('verify-lektord', (event, arg) => { win.webContents.send('playlists-updated', playlists); }); } - }, 50) + }, 50); + + setInterval(() => { + if(currentPlaylist != "" && lkt.isPlaylistsUpdated()) { + lkt.setPlaylistsUpdated(false); + lkt.commandPlaylistListKaras(currentPlaylist).then((karas) => { + win.webContents.send('playlist-data-responce', karas); + }); + } + }, 50); }); }); @@ -389,7 +399,10 @@ ipcMain.on('verify-playlists-reloaded-request',(event,arg) => { }); ipcMain.on('get-playlist-data', (event, playlist) => { - lkt.commandPlaylistListKaras(playlist).then((karas) => { - event.reply('playlist-data-responce',karas); - }) + if(playlist) { + currentPlaylist = playlist; + lkt.commandPlaylistListKaras(currentPlaylist).then((karas) => { + win.webContents.send('playlist-data-responce',karas); + }); + } }); \ No newline at end of file