Move all functions to scripts folder
This commit is contained in:
		
							
								
								
									
										132
									
								
								scripts/update-readme.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								scripts/update-readme.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,132 @@ | ||||
| const helper = require('./helper') | ||||
|  | ||||
| let output = { | ||||
|   countries: [], | ||||
|   languages: [], | ||||
|   categories: [] | ||||
| } | ||||
|  | ||||
| function main() { | ||||
|   console.log(`Parsing index...`) | ||||
|   parseIndex() | ||||
|   console.log(`Generating countries table...`) | ||||
|   generateCountriesTable() | ||||
|   console.log(`Generating languages table...`) | ||||
|   generateLanguagesTable() | ||||
|   console.log(`Generating categories table...`) | ||||
|   generateCategoriesTable() | ||||
|   console.log(`Generating README.md...`) | ||||
|   generateReadme() | ||||
|   console.log(`Done.`) | ||||
| } | ||||
|  | ||||
| function parseIndex() { | ||||
|   const root = helper.parsePlaylist('index.m3u') | ||||
|  | ||||
|   let languages = {} | ||||
|   let categories = {} | ||||
|   for(let rootItem of root.items) { | ||||
|     const playlist = helper.parsePlaylist(rootItem.url) | ||||
|     const countryCode = helper.getBasename(rootItem.url).toUpperCase() | ||||
|     const epg = playlist.header.attrs['x-tvg-url'] ? `<code>${playlist.header.attrs['x-tvg-url']}</code>` : '' | ||||
|  | ||||
|     // country | ||||
|     output.countries.push({  | ||||
|       country: rootItem.name,  | ||||
|       channels: playlist.items.length,  | ||||
|       playlist: `<code>https://iptv-org.github.io/iptv/${rootItem.url}</code>`,  | ||||
|       epg | ||||
|     }) | ||||
|  | ||||
|     for(let item of playlist.items) { | ||||
|        | ||||
|       // language | ||||
|       const languageName = item.tvg.language || 'Undefined' | ||||
|       const languageCode = helper.getISO6391Code(languageName) || 'undefined' | ||||
|       if(languages[languageCode]) {  | ||||
|         languages[languageCode].channels++ | ||||
|       } else { | ||||
|         languages[languageCode] = {  | ||||
|           language: languageName,  | ||||
|           channels: 1,  | ||||
|           playlist: `<code>https://iptv-org.github.io/iptv/languages/${languageCode}.m3u</code>`  | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       // category | ||||
|       const categoryName = item.group.title || 'Other' | ||||
|       const categoryCode = categoryName.toLowerCase() | ||||
|       if(categories[categoryCode]) { | ||||
|         categories[categoryCode].channels++ | ||||
|       } else { | ||||
|         categories[categoryCode] = {  | ||||
|           category: categoryName,  | ||||
|           channels: 1,  | ||||
|           playlist: `<code>https://iptv-org.github.io/iptv/categories/${categoryCode}.m3u</code>`  | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   output.languages = Object.values(languages) | ||||
|   output.categories = Object.values(categories) | ||||
| } | ||||
|  | ||||
| function generateCountriesTable() { | ||||
|   const table = helper.generateTable(output.countries, { | ||||
|     columns: [ | ||||
|       { name: 'Country', align: 'left' }, | ||||
|       { name: 'Channels', align: 'right' }, | ||||
|       { name: 'Playlist', align: 'left', nowrap: true }, | ||||
|       { name: 'EPG', align: 'left' } | ||||
|     ] | ||||
|   }) | ||||
|  | ||||
|   helper.createFile('./.readme/_countries.md', table) | ||||
| } | ||||
|  | ||||
| function generateLanguagesTable() { | ||||
|   output.languages.sort((a, b) => { | ||||
|     if(a.language === 'Undefined') { return 1 } | ||||
|     if(b.language === 'Undefined') { return -1 } | ||||
|     if(a.language < b.language) { return -1 } | ||||
|     if(a.language > b.language) { return 1 } | ||||
|     return 0 | ||||
|   }) | ||||
|  | ||||
|   const table = helper.generateTable(output.languages, { | ||||
|     columns: [ | ||||
|       { name: 'Language', align: 'left' }, | ||||
|       { name: 'Channels', align: 'right' }, | ||||
|       { name: 'Playlist', align: 'left' } | ||||
|     ] | ||||
|   }) | ||||
|  | ||||
|   helper.createFile('./.readme/_languages.md', table) | ||||
| } | ||||
|  | ||||
| function generateCategoriesTable() { | ||||
|   output.categories.sort((a, b) => { | ||||
|     if(a.category === 'Other') { return 1 } | ||||
|     if(b.category === 'Other') { return -1 } | ||||
|     if(a.category < b.category) { return -1 } | ||||
|     if(a.category > b.category) { return 1 } | ||||
|     return 0 | ||||
|   }) | ||||
|  | ||||
|   const table = helper.generateTable(output.categories, { | ||||
|     columns: [ | ||||
|       { name: 'Category', align: 'left' }, | ||||
|       { name: 'Channels', align: 'right' }, | ||||
|       { name: 'Playlist', align: 'left' } | ||||
|     ] | ||||
|   }) | ||||
|  | ||||
|   helper.createFile('./.readme/_categories.md', table) | ||||
| } | ||||
|  | ||||
| function generateReadme() { | ||||
|   helper.compileMarkdown('../.readme/config.json') | ||||
| } | ||||
|  | ||||
| main() | ||||
		Reference in New Issue
	
	Block a user