mirror of
https://github.com/iptv-org/epg
synced 2026-05-06 17:37:06 -04:00
add channels scraping
This commit is contained in:
@@ -1,19 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channels>
|
||||
<channel site="france.tv" site_id="arte" lang="fr" xmltv_id="arte.fr@HD">Arte</channel>
|
||||
<channel site="france.tv" site_id="france-2" lang="fr" xmltv_id="France2.fr@HD">France 2</channel>
|
||||
<channel site="france.tv" site_id="france-3" lang="fr" xmltv_id="France3.fr@HD">France 3</channel>
|
||||
<channel site="france.tv" site_id="france-4" lang="fr" xmltv_id="France4.fr@HD">France 4</channel>
|
||||
<channel site="france.tv" site_id="france-5" lang="fr" xmltv_id="France5.fr@HD">France 5</channel>
|
||||
<channel site="france.tv" site_id="france-24" lang="fr" xmltv_id="France24.fr@HD">France 24</channel>
|
||||
<channel site="france.tv" site_id="france-info" lang="fr" xmltv_id="FranceInfo.fr@HD">franceinfo:</channel>
|
||||
<channel site="france.tv" site_id="lcp-public-senat" lang="fr" xmltv_id="LCPPublicSenat.fr@HD">LCP Public Sénat</channel>
|
||||
<channel site="france.tv" site_id="arte" lang="fr" xmltv_id="Arte.de@France">Arté</channel>
|
||||
<channel site="france.tv" site_id="documentaire" lang="fr" xmltv_id="">France Télévisions Docs</channel>
|
||||
<channel site="france.tv" site_id="france-2" lang="fr" xmltv_id="France2.fr">France 2</channel>
|
||||
<channel site="france.tv" site_id="france-3" lang="fr" xmltv_id="France3.fr">France 3</channel>
|
||||
<channel site="france.tv" site_id="france-4" lang="fr" xmltv_id="France4.fr">France 4</channel>
|
||||
<channel site="france.tv" site_id="france-5" lang="fr" xmltv_id="France5.fr">France 5</channel>
|
||||
<channel site="france.tv" site_id="france-24" lang="fr" xmltv_id="France24.fr">France 24</channel>
|
||||
<channel site="france.tv" site_id="franceinfo" lang="fr" xmltv_id="FranceInfo.fr">Franceinfo</channel>
|
||||
<channel site="france.tv" site_id="francetv" lang="fr" xmltv_id="">France TV</channel>
|
||||
<channel site="france.tv" site_id="ina" lang="fr" xmltv_id="">INA (Institut National de l&#x27;Audiovisuel)</channel>
|
||||
<channel site="france.tv" site_id="lcp-public-senat" lang="fr" xmltv_id="LCPPublicSenat.fr">LCP Public Sénat</channel>
|
||||
<channel site="france.tv" site_id="mieux" lang="fr" xmltv_id="">Mieux</channel>
|
||||
<channel site="france.tv" site_id="tv5-monde" lang="fr" xmltv_id="TV5Monde.fr@HD">TV5 Monde</channel>
|
||||
<channel site="france.tv" site_id="sport" lang="fr" xmltv_id="">France.tv Sport</channel>
|
||||
<channel site="france.tv" site_id="docs" lang="fr" xmltv_id="">France.tv Docs</channel>
|
||||
<channel site="france.tv" site_id="series" lang="fr" xmltv_id="">France.tv Séries</channel>
|
||||
<channel site="france.tv" site_id="ina" lang="fr" xmltv_id="">INA</channel>
|
||||
<!--Channel below is for specific events, won't be used a lot-->
|
||||
<channel site="france.tv" site_id="francetv" lang="fr" xmltv_id="">France.tv</channel>
|
||||
<channel site="france.tv" site_id="serie" lang="fr" xmltv_id="">France Télévisions Séries</channel>
|
||||
<channel site="france.tv" site_id="sport" lang="fr" xmltv_id="">France Télévisions Sport</channel>
|
||||
<channel site="france.tv" site_id="tv5-monde" lang="fr" xmltv_id="">TV5 Monde Plus</channel>
|
||||
</channels>
|
||||
|
||||
@@ -98,8 +98,29 @@ module.exports = {
|
||||
|
||||
return programs
|
||||
},
|
||||
channels() {
|
||||
return 'Website provides no proper channel list, channels must be added manually'
|
||||
async channels() {
|
||||
try {
|
||||
const response = await axios.get('https://www.france.tv/chaines/')
|
||||
const data = response.data || ''
|
||||
const channels = []
|
||||
|
||||
const channelRegex =
|
||||
/<button[^>]+aria-controls="[^"]*content-([a-z0-9-]+)"[\s\S]*?<title>([^<]+)<\/title>/gi
|
||||
|
||||
let match
|
||||
while ((match = channelRegex.exec(data)) !== null) {
|
||||
channels.push({
|
||||
lang: 'fr',
|
||||
site_id: match[1],
|
||||
name: match[2].trim()
|
||||
})
|
||||
}
|
||||
|
||||
return [...new Map(channels.map(channel => [channel.site_id, channel])).values()]
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch channels list:', error.message)
|
||||
return []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user