mirror of https://github.com/iptv-org/iptv
				
				
				
			Create scripts/store/setters
							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