diff --git a/scripts/commands/readme/update.js b/scripts/commands/readme/update.js
index 157ed92d..b327325a 100644
--- a/scripts/commands/readme/update.js
+++ b/scripts/commands/readme/update.js
@@ -12,20 +12,79 @@ const options = program
async function main() {
await api.countries.load().catch(console.error)
const logPath = `${LOGS_DIR}/guides/update.log`
- let results = await parser.parseLogs(logPath)
- let files = results.reduce((acc, curr) => {
- if (acc[curr.filename]) {
- acc[curr.filename].channels++
- } else {
- acc[curr.filename] = {
- country: curr.country,
- channels: 1,
- filename: curr.filename
- }
- }
+ let log = await parser.parseLogs(logPath)
- return acc
- }, {})
+ await createCountriesTable(log)
+ await createSourcesTable(log)
+
+ await updateReadme()
+}
+
+main()
+
+async function createSourcesTable(log) {
+ let files = log
+ .filter(c => c.groupedBy === 'site+lang')
+ .reduce((acc, curr) => {
+ if (!acc[curr.filename]) {
+ acc[curr.filename] = {
+ site: curr.site,
+ lang: curr.lang,
+ channels: 0,
+ filename: curr.filename
+ }
+ }
+
+ acc[curr.filename].channels++
+
+ return acc
+ }, {})
+
+ let data = []
+ for (const filename in files) {
+ const item = files[filename]
+
+ data.push([
+ item.site,
+ item.lang,
+ item.channels,
+ `https://iptv-org.github.io/epg/guides/${filename}.xml
`
+ ])
+ }
+
+ data = _.orderBy(
+ data,
+ [item => item[0], item => (item[1] === 'en' ? Infinity : item[2])],
+ ['asc', 'desc']
+ )
+ data = data.map(i => {
+ i.splice(1, 1)
+ return i
+ })
+ data = Object.values(_.groupBy(data, item => item[0]))
+
+ const output = table.create(data, ['Site', 'Channels', 'EPG'])
+
+ await file.create('./.readme/_sources.md', output)
+}
+
+async function createCountriesTable(log) {
+ let files = log
+ .filter(c => c.groupedBy === 'country')
+ .reduce((acc, curr) => {
+ if (!acc[curr.filename]) {
+ acc[curr.filename] = {
+ country: curr.country,
+ lang: curr.lang,
+ channels: 0,
+ filename: curr.filename
+ }
+ }
+
+ acc[curr.filename].channels++
+
+ return acc
+ }, {})
let data = []
for (const filename in files) {
@@ -35,6 +94,7 @@ async function main() {
data.push([
country.name,
+ item.lang,
`${country.flag} ${country.name}`,
item.channels,
`https://iptv-org.github.io/epg/guides/${filename}.xml
`
@@ -43,11 +103,11 @@ async function main() {
data = _.orderBy(
data,
- [item => item[0], item => (item[3].includes('_en') ? Infinity : item[2])],
+ [item => item[0], item => (item[1] === 'en' ? Infinity : item[3])],
['asc', 'desc']
)
data = data.map(i => {
- i.shift()
+ i.splice(0, 2)
return i
})
data = Object.values(_.groupBy(data, item => item[0]))
@@ -55,12 +115,8 @@ async function main() {
const output = table.create(data, ['Country', 'Channels', 'EPG'])
await file.create('./.readme/_countries.md', output)
-
- await updateReadme()
}
-main()
-
async function updateReadme() {
logger.info('updating readme.md...')