mirror of
https://github.com/iptv-org/epg
synced 2026-05-07 01:46:59 -04:00
add channels scraping
This commit is contained in:
@@ -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&#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>
|
||||||
|
|||||||
@@ -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 []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user