mirror of
https://github.com/iptv-org/epg
synced 2026-05-09 19:07:03 -04:00
changed api for epg parser
updated channels parsing to remove duplicates removed *_ditrotv.channels.xml changed content.json updated test.js
This commit is contained in:
@@ -3,9 +3,7 @@ const dayjs = require('dayjs')
|
||||
|
||||
const HEADERS = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36',
|
||||
'Origin': 'https://www.airtelxstream.in',
|
||||
'Referer': 'https://www.airtelxstream.in/',
|
||||
'Accept': 'application/json'
|
||||
'Referer': 'https://www.airtelxstream.in/'
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
@@ -20,12 +18,13 @@ module.exports = {
|
||||
|
||||
// full url 1 = https://livetv.airtel.tv/v1/epg/page?appId=WEB&start=now&end=nowPLUS1d&os=WEBOS&bn=87&dt=BROWSER&nonLinear=true
|
||||
// full url 2 = https://epg.airtel.tv/app/v3/content/epg?dt=BROWSER&os=WEBOS&ln=en&lg=en,hi&isDth=false&xpprbe=false&dth=false&chromecast=false&bn=87&mwTvPack=200292&startTime=1765218600000&endTime=1765305000000&appId=WEB
|
||||
// full url 3 = https://epg.airtel.tv/app/v2/content/channel/epg?dt=BROWSER&os=WEBOS&ln=en&lg=en,hi&isDth=false&xpprbe=false&dth=false&chromecast=false&bn=87&mwTvPack=200292&channelId=MWTV_LIVETVCHANNEL_547&startTime=1766860200001&endTime=1766946599999&appId=WEB
|
||||
url({ channel, date }) {
|
||||
const startTime = date.valueOf()
|
||||
const endTime = date.add(1, 'day').valueOf()
|
||||
const baseUrl = 'https://livetv.airtel.tv/v1/epg'
|
||||
const baseUrl = 'https://epg.airtel.tv/app/v2/content/channel/epg'
|
||||
|
||||
return `${baseUrl}?channelId=${channel.site_id}&appId=WEB&startTime=${startTime}&endTime=${endTime}&dt=&bn=&os=`
|
||||
return `${baseUrl}?channelId=${channel.site_id}&startTime=${startTime}&endTime=${endTime}`
|
||||
},
|
||||
|
||||
parser({ content }) {
|
||||
@@ -33,7 +32,8 @@ module.exports = {
|
||||
|
||||
try {
|
||||
const parsed = JSON.parse(content)
|
||||
programs = parsed.data || []
|
||||
const dynamicSiteId = Object.keys(parsed.programGuide)[0]
|
||||
programs = parsed.programGuide[dynamicSiteId] || []
|
||||
} catch (e) {
|
||||
console.error('Error parsing JSON content', e)
|
||||
return []
|
||||
@@ -42,7 +42,7 @@ module.exports = {
|
||||
return programs.map(program => {
|
||||
return {
|
||||
title: program.title,
|
||||
description: program.ldesc || program.sdesc || null,
|
||||
description: program.desc || null,
|
||||
start: dayjs(program.startTime),
|
||||
stop: dayjs(program.endTime),
|
||||
image: program.images.LANDSCAPE_169_HD || program.images.LANDSCAPE_169 || program.images.FEATURE_BANNER_HD || null,
|
||||
@@ -54,9 +54,8 @@ module.exports = {
|
||||
|
||||
// full url = https://livetv.airtel.tv/v1/livechannel?appId=WEB&nonLinear=true&os=WEBOS&bn=87&dt=BROWSER
|
||||
async channels() {
|
||||
const baseUrl = 'https://livetv.airtel.tv/v1/livechannel'
|
||||
const url = `${baseUrl}?appId=WEB`
|
||||
|
||||
const url = 'https://livetv.airtel.tv/v1/livechannel'
|
||||
|
||||
try {
|
||||
const response = await axios.get(url, { headers: HEADERS })
|
||||
const jsonPayload = response.data
|
||||
@@ -66,14 +65,22 @@ module.exports = {
|
||||
return []
|
||||
}
|
||||
|
||||
return jsonPayload.data.map(channel => {
|
||||
return {
|
||||
lang: 'en',
|
||||
site_id: channel.id,
|
||||
name: channel.title,
|
||||
logo: channel.images.LOGO_HD || channel.images.LOGO || channel.images.LANDSCAPE_169 || null
|
||||
}
|
||||
const channelsMap = new Map()
|
||||
|
||||
jsonPayload.data.forEach(channel => {
|
||||
const siteId = channel.epgChannelId || channel.id
|
||||
|
||||
if (!channelsMap.has(siteId)) {
|
||||
channelsMap.set(siteId, {
|
||||
lang: 'en',
|
||||
site_id: siteId,
|
||||
name: channel.title,
|
||||
// logo: channel.images.LOGO_HD || channel.images.LOGO || channel.images.LANDSCAPE_169 || null
|
||||
})
|
||||
}
|
||||
})
|
||||
return Array.from(channelsMap.values())
|
||||
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch channels list:', error.message)
|
||||
return []
|
||||
|
||||
Reference in New Issue
Block a user