add channels scraping

This commit is contained in:
theofficialomega
2026-04-18 12:51:50 +02:00
parent c61db1071f
commit a0990513dd
2 changed files with 37 additions and 17 deletions

View File

@@ -1,19 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<channels> <channels>
<channel site="france.tv" site_id="arte" lang="fr" xmltv_id="arte.fr@HD">Arte</channel> <channel site="france.tv" site_id="arte" lang="fr" xmltv_id="Arte.de@France">Arté</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="documentaire" lang="fr" xmltv_id="">France Télévisions Docs</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-2" lang="fr" xmltv_id="France2.fr">France 2</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-3" lang="fr" xmltv_id="France3.fr">France 3</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-4" lang="fr" xmltv_id="France4.fr">France 4</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-5" lang="fr" xmltv_id="France5.fr">France 5</channel>
<channel site="france.tv" site_id="france-info" lang="fr" xmltv_id="FranceInfo.fr@HD">franceinfo:</channel> <channel site="france.tv" site_id="france-24" lang="fr" xmltv_id="France24.fr">France 24</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="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&amp;#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="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="serie" lang="fr" xmltv_id="">France Télévisions Séries</channel>
<channel site="france.tv" site_id="sport" lang="fr" xmltv_id="">France.tv Sport</channel> <channel site="france.tv" site_id="sport" lang="fr" xmltv_id="">France Télévisions Sport</channel>
<channel site="france.tv" site_id="docs" lang="fr" xmltv_id="">France.tv Docs</channel> <channel site="france.tv" site_id="tv5-monde" lang="fr" xmltv_id="">TV5 Monde Plus</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>
</channels> </channels>

View File

@@ -98,8 +98,29 @@ module.exports = {
return programs return programs
}, },
channels() { async channels() {
return 'Website provides no proper channel list, channels must be added manually' 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 []
}
} }
} }