Added script to generate "all in one" playlist
This commit is contained in:
parent
f2ce3682f5
commit
097d66bf21
@ -10,7 +10,8 @@
|
||||
],
|
||||
"main": "index.m3u",
|
||||
"scripts": {
|
||||
"test": "node test/index.js"
|
||||
"test": "node test/index.js",
|
||||
"generate": "node src/generate.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
71
src/generate.js
Normal file
71
src/generate.js
Normal file
@ -0,0 +1,71 @@
|
||||
const parsers = require('playlist-parser')
|
||||
const M3U = parsers.M3U
|
||||
const fs = require("fs")
|
||||
const path = require('path')
|
||||
const helper = require('./helper')
|
||||
|
||||
let outputPath = path.resolve(__dirname) + '/../index.all.m3u'
|
||||
let channels = 0
|
||||
let duplicates = 0
|
||||
let cache = {}
|
||||
|
||||
fs.writeFileSync(outputPath, '#EXTM3U\n')
|
||||
|
||||
function init() {
|
||||
|
||||
let countries = loadPlaylist('index.m3u')
|
||||
// countries = countries.slice(0, 2)
|
||||
|
||||
for(let country of countries) {
|
||||
|
||||
const playlist = loadPlaylist(country.file)
|
||||
|
||||
for(let item of playlist) {
|
||||
|
||||
let title = (item.artist) ? item.length + ',' + item.artist + '-' + item.title : item.title
|
||||
|
||||
let url = item.file
|
||||
|
||||
if(checkCache(url)) {
|
||||
|
||||
duplicates++
|
||||
|
||||
} else {
|
||||
|
||||
writeToFile(title, url)
|
||||
|
||||
addToCache(url)
|
||||
|
||||
}
|
||||
|
||||
channels++
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
init()
|
||||
|
||||
console.log(`Total: ${channels}. Duplicates: ${duplicates}.`)
|
||||
|
||||
|
||||
function loadPlaylist(filename) {
|
||||
return M3U.parse(fs.readFileSync(path.resolve(__dirname) + `/../${filename}`, { encoding: "utf8" }))
|
||||
}
|
||||
|
||||
function writeToFile(title, file) {
|
||||
fs.appendFileSync(outputPath, '#EXTINF:' + title + '\n' + file + '\n')
|
||||
}
|
||||
|
||||
function addToCache(url) {
|
||||
let id = helper.getUrlPath(url)
|
||||
|
||||
cache[id] = true
|
||||
}
|
||||
|
||||
function checkCache(url) {
|
||||
let id = helper.getUrlPath(url)
|
||||
|
||||
return cache.hasOwnProperty(id)
|
||||
}
|
12
src/helper.js
Normal file
12
src/helper.js
Normal file
@ -0,0 +1,12 @@
|
||||
const parser = require('url')
|
||||
|
||||
function getUrlPath(u) {
|
||||
let parsedUrl = parser.parse(u)
|
||||
let searchQuery = parsedUrl.search || ''
|
||||
|
||||
return parsedUrl.host + parsedUrl.pathname + searchQuery
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getUrlPath
|
||||
}
|
Loading…
Reference in New Issue
Block a user