Create scripts/store/setters
This commit is contained in:
parent
21b8ce8731
commit
42d8a670d2
|
@ -0,0 +1,8 @@
|
||||||
|
const categories = require('../../data/categories')
|
||||||
|
|
||||||
|
module.exports = function ({ group_title }) {
|
||||||
|
return group_title
|
||||||
|
.split(';')
|
||||||
|
.map(i => categories[i.toLowerCase()])
|
||||||
|
.filter(i => i)
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
const dataRegions = require('../../data/regions')
|
||||||
|
const dataCountries = require('../../data/countries')
|
||||||
|
|
||||||
|
module.exports = function ({ tvg_country, countries = [] }) {
|
||||||
|
if (tvg_country) {
|
||||||
|
return tvg_country
|
||||||
|
.split(';')
|
||||||
|
.reduce((acc, curr) => {
|
||||||
|
const region = dataRegions[curr]
|
||||||
|
if (region) {
|
||||||
|
for (let code of region.country_codes) {
|
||||||
|
if (!acc.includes(code)) acc.push(code)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
acc.push(curr)
|
||||||
|
}
|
||||||
|
|
||||||
|
return acc
|
||||||
|
}, [])
|
||||||
|
.map(item => dataCountries[item])
|
||||||
|
.filter(i => i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return countries
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
module.exports = function ({ tvg_url, guides = [] }) {
|
||||||
|
return tvg_url ? [tvg_url] : guides
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
exports.categories = require('./categories')
|
||||||
|
exports.countries = require('./countries')
|
||||||
|
exports.guides = require('./guides')
|
||||||
|
exports.is_broken = require('./is_broken')
|
||||||
|
exports.is_nsfw = require('./is_nsfw')
|
||||||
|
exports.languages = require('./languages')
|
||||||
|
exports.name = require('./name')
|
||||||
|
exports.regions = require('./regions')
|
||||||
|
exports.resolution = require('./resolution')
|
||||||
|
exports.src_country = require('./src_country')
|
||||||
|
exports.status = require('./status')
|
||||||
|
exports.url = require('./url')
|
|
@ -0,0 +1,7 @@
|
||||||
|
module.exports = function ({ is_broken = false, status }) {
|
||||||
|
if (status) {
|
||||||
|
return status.level > 3 ? true : false
|
||||||
|
}
|
||||||
|
|
||||||
|
return is_broken
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
module.exports = function ({ categories }) {
|
||||||
|
return Array.isArray(categories) ? categories.filter(c => c.nsfw).length > 0 : false
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
const langs = require('../../data/languages')
|
||||||
|
|
||||||
|
module.exports = function ({ tvg_language, languages = [] }) {
|
||||||
|
if (tvg_language) {
|
||||||
|
return tvg_language
|
||||||
|
.split(';')
|
||||||
|
.map(name => langs.find(l => l.name === name))
|
||||||
|
.filter(i => i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return languages
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
module.exports = function ({ title }) {
|
||||||
|
return title
|
||||||
|
.trim()
|
||||||
|
.split(' ')
|
||||||
|
.map(s => s.trim())
|
||||||
|
.filter(s => {
|
||||||
|
return !/\[|\]/i.test(s) && !/\((\d+)P\)/i.test(s)
|
||||||
|
})
|
||||||
|
.join(' ')
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
const _ = require('lodash')
|
||||||
|
|
||||||
|
let regions = require('../../data/regions')
|
||||||
|
|
||||||
|
module.exports = function ({ countries }) {
|
||||||
|
if (!countries.length) return []
|
||||||
|
|
||||||
|
const output = []
|
||||||
|
regions = Object.values(regions)
|
||||||
|
countries.forEach(country => {
|
||||||
|
regions
|
||||||
|
.filter(region => region.country_codes.includes(country.code))
|
||||||
|
.forEach(found => {
|
||||||
|
output.push({
|
||||||
|
name: found.name,
|
||||||
|
code: found.code
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
return _.uniqBy(output, 'code')
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
module.exports = function ({ title, resolution = {} }) {
|
||||||
|
if (title) {
|
||||||
|
const [_, h] = title.match(/\((\d+)P\)/i) || [null, null]
|
||||||
|
|
||||||
|
return h ? { height: parseInt(h), width: null } : resolution
|
||||||
|
}
|
||||||
|
|
||||||
|
return resolution
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
const { file } = require('../../core')
|
||||||
|
const countries = require('../../data/countries')
|
||||||
|
|
||||||
|
module.exports = function ({ filepath }) {
|
||||||
|
if (filepath) {
|
||||||
|
const basename = file.basename(filepath)
|
||||||
|
const [_, code] = basename.match(/([a-z]{2})(|_.*)\.m3u/i) || [null, null]
|
||||||
|
|
||||||
|
return code ? countries[code.toUpperCase()] : null
|
||||||
|
}
|
||||||
|
|
||||||
|
return null
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
const statuses = require('../../data/statuses')
|
||||||
|
|
||||||
|
module.exports = function ({ title, status = {} }) {
|
||||||
|
if (title) {
|
||||||
|
const [_, label] = title.match(/\[(.*)\]/i) || [null, null]
|
||||||
|
|
||||||
|
return Object.values(statuses).find(s => s.label === label) || statuses['online']
|
||||||
|
}
|
||||||
|
|
||||||
|
if (status) {
|
||||||
|
switch (status.code) {
|
||||||
|
case 'not_247':
|
||||||
|
case 'geo_blocked':
|
||||||
|
return status
|
||||||
|
case 'offline':
|
||||||
|
return statuses['not_247']
|
||||||
|
case 'timeout':
|
||||||
|
return statuses['timeout']
|
||||||
|
default:
|
||||||
|
return statuses['online']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return status
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
const normalize = require('normalize-url')
|
||||||
|
|
||||||
|
module.exports = function ({ url }) {
|
||||||
|
const normalized = normalize(url, { stripWWW: false })
|
||||||
|
|
||||||
|
return decodeURIComponent(normalized).replace(/\s/g, '+')
|
||||||
|
}
|
Loading…
Reference in New Issue