From 682824a45dfcb6125cc6cdbe87eae58dd3844caf Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Mon, 14 Feb 2022 02:48:11 +0300 Subject: [PATCH] Update database/create.js --- scripts/commands/database/create.js | 27 ++++++++++++++------------- scripts/store/setters/channel.js | 3 +++ scripts/store/setters/index.js | 1 + 3 files changed, 18 insertions(+), 13 deletions(-) create mode 100644 scripts/store/setters/channel.js diff --git a/scripts/commands/database/create.js b/scripts/commands/database/create.js index e4095db974..e0cfb6ec55 100644 --- a/scripts/commands/database/create.js +++ b/scripts/commands/database/create.js @@ -30,13 +30,24 @@ async function findStreams() { await api.channels.load() await db.streams.load() - const files = await file.list(`${options.inputDir}/**/*.m3u`) const streams = [] + const files = await file.list(`${options.inputDir}/**/*.m3u`) for (const filepath of files) { const items = await parser.parsePlaylist(filepath) for (const item of items) { item.filepath = filepath - streams.push(item) + + const stream = store.create() + const channel = await api.channels.find({ id: item.tvg.id }) + + stream.set('channel', { channel: channel ? channel.id : null }) + stream.set('title', { title: item.name }) + stream.set('filepath', { filepath: item.filepath }) + stream.set('url', { url: item.url }) + stream.set('http_referrer', { http_referrer: item.http.referrer }) + stream.set('user_agent', { user_agent: item.http['user-agent'] }) + + streams.push(stream) } } logger.info(`found ${streams.length} streams`) @@ -50,17 +61,7 @@ async function saveToDatabase(streams = []) { await db.streams.reset() const chunks = split(_.shuffle(streams), options.maxClusters) for (const [i, chunk] of chunks.entries()) { - for (const item of chunk) { - const stream = store.create() - const channel = await api.channels.find({ id: item.tvg.id }) - const channel_id = channel ? channel.id : null - - stream.set('channel', { channel: channel_id }) - stream.set('title', { title: item.name }) - stream.set('filepath', { filepath: item.filepath }) - stream.set('url', { url: item.url }) - stream.set('http_referrer', { http_referrer: item.http.referrer }) - stream.set('user_agent', { user_agent: item.http['user-agent'] }) + for (const stream of chunk) { stream.set('cluster_id', { cluster_id: i + 1 }) await db.streams.insert(stream.data()) diff --git a/scripts/store/setters/channel.js b/scripts/store/setters/channel.js new file mode 100644 index 0000000000..5d9c3ea3c3 --- /dev/null +++ b/scripts/store/setters/channel.js @@ -0,0 +1,3 @@ +module.exports = function ({ channel }) { + return channel || null +} diff --git a/scripts/store/setters/index.js b/scripts/store/setters/index.js index fafc2088fb..ff02bcce3e 100644 --- a/scripts/store/setters/index.js +++ b/scripts/store/setters/index.js @@ -1,3 +1,4 @@ exports.url = require('./url') exports.http_referrer = require('./http_referrer') exports.user_agent = require('./user_agent') +exports.channel = require('./channel')