mirror of https://github.com/iptv-org/iptv
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
const markdownInclude = require('markdown-include')
|
|
const path = require('path')
|
|
const glob = require('glob')
|
|
const fs = require('fs')
|
|
|
|
const rootPath = path.resolve(__dirname) + '/../../'
|
|
const file = {}
|
|
|
|
file.list = function (include = [], exclude = []) {
|
|
return new Promise(resolve => {
|
|
glob('channels/**/*.m3u', function (err, files) {
|
|
if (include.length) {
|
|
include = include.map(filename => `channels/${filename}.m3u`)
|
|
files = files.filter(filename => include.includes(filename))
|
|
}
|
|
|
|
if (exclude.length) {
|
|
exclude = exclude.map(filename => `channels/${filename}.m3u`)
|
|
files = files.filter(filename => !exclude.includes(filename))
|
|
}
|
|
|
|
resolve(files)
|
|
})
|
|
})
|
|
}
|
|
|
|
file.getFilename = function (filename) {
|
|
return path.parse(filename).name
|
|
}
|
|
|
|
file.createDir = function (dir) {
|
|
if (!fs.existsSync(dir)) {
|
|
fs.mkdirSync(dir)
|
|
}
|
|
}
|
|
|
|
file.read = function (filename) {
|
|
return fs.readFileSync(rootPath + filename, { encoding: 'utf8' })
|
|
}
|
|
|
|
file.append = function (filename, data) {
|
|
fs.appendFileSync(rootPath + filename, data)
|
|
}
|
|
|
|
file.create = function (filename, data = '') {
|
|
fs.writeFileSync(rootPath + filename, data)
|
|
}
|
|
|
|
file.compileMarkdown = function (filename) {
|
|
markdownInclude.compileFiles(rootPath + filename)
|
|
}
|
|
|
|
module.exports = file
|