mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 00:50:09 -04:00
commit
71d0a6f312
4 changed files with 0 additions and 157 deletions
|
@ -1,21 +0,0 @@
|
|||
# tva.tv
|
||||
|
||||
https://tva.tv/
|
||||
|
||||
### Download the guide
|
||||
|
||||
```sh
|
||||
npm run grab --- --site=tva.tv
|
||||
```
|
||||
|
||||
### Update channel list
|
||||
|
||||
```sh
|
||||
npm run channels:parse --- --config=./sites/tva.tv/tva.tv.config.js --output=./sites/tva.tv/tva.tv.channels.xml
|
||||
```
|
||||
|
||||
### Test
|
||||
|
||||
```sh
|
||||
npm test --- tva.tv
|
||||
```
|
|
@ -1,31 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channels>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="DocTV.ir" site_id="6f7726c5-b781-4957-ab95-69bc879873e5">Doc TV</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="HamedanTV.ir" site_id="cb013830-a496-48c9-8140-4c1fd8df5794">Hamedan TV</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="IRIB1.ir" site_id="0823beb2-f2fa-4a2c-ae37-d429a0f55d80">IRIB 1</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="IRIB2.ir" site_id="6fcc0a2e-1135-482c-b054-08a96e68b758">IRIB 2</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="IRIB3.ir" site_id="0149e4b4-6027-4be9-af1d-35223920d6db">IRIB 3</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="IRIB4.ir" site_id="10103e6b-1285-466b-bbd0-c523400003d6">IRIB 4</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="IRIB5.ir" site_id="d8b27a06-333e-44ee-a74b-16d51b8f6300">IRIB 5</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="IRIBOmid.ir" site_id="22969e9a-88a1-4c82-8f94-7564d3181331">Omid TV</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="IRINN.ir" site_id="ff76db87-84ff-4b94-bd6e-0656cf1b9428">IRINN</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="IrkalaTV.ir" site_id="fb0ccffb-08c4-4b86-bb0c-a3095a62d9de">Irkala TV</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="JameJamTVNetwork1.ir" site_id="ad87c942-719a-4271-9b29-43dd5c2f1c77">Jame-Jam TV Network 1</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="KhorasanRazaviTV.ir" site_id="1f8924b0-0491-4694-8359-0db5944913fa">Khorasan Razavi TV</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="NamayeshTV.ir" site_id="122f6a18-33ec-4b6a-8af1-0b91cac91329">Namayesh TV</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="Nasim.ir" site_id="c9734bf7-a53e-4748-a60c-20e0d1ede795">Nasim</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="SalaamTV.us" site_id="c7af0211-b644-49b6-8d62-b3710b2a15df">Salaam TV</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="Sepehr.ir" site_id="fcd16b90-28e1-448e-adc9-6f4e6ff4bf07">Sepehr</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="TabanTV.ir" site_id="959132fc-c82a-4b53-89ac-52acca913d8d">Taban TV</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="TVA1.ir" site_id="3111d9be-b289-4a8c-84e8-92a18d33eeda">TVA 1</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="TVA2.ir" site_id="a804bce4-1db5-4f7d-bbca-271dc0d70076">TVA 2</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="TVAAvand.ir" site_id="ec2d6905-6406-44c1-89a1-8a2d83113e6c">TVA Avand</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="TVABourse.ir" site_id="4d6cc8b9-78d4-492c-afda-63a8d004bfbb">TVA Bourse</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="TVAFilm.ir" site_id="374a9cb5-b3cb-438d-9977-7d5f0aba1bad">TVA Film</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="TVAKids.ir" site_id="d286f21f-0767-430c-a442-ab7924e5d361">TVA Kids</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="TVAMahfel.ir" site_id="a5d4a2b3-31a2-4b35-8a8e-59606b57a0b0">TVA Mahfel</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="TVANava.ir" site_id="a5a08946-886e-4e98-be74-b4a315fbf0b5">TVA Nava</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="TVASport.ir" site_id="45cbfa3e-c90b-4c4a-b1bb-d8d24f22851b">TVA Sport</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="TVASport2.ir" site_id="6a19521e-6e44-459b-a1ba-3588e33c6a9b">TVA Sport 2</channel>
|
||||
<channel site="tva.tv" lang="fa" xmltv_id="VelayatTVNetwork.us" site_id="bfd49e5f-3458-4965-b620-cfa0f5a0c0cf">Velayat TV Network</channel>
|
||||
</channels>
|
|
@ -1,58 +0,0 @@
|
|||
const axios = require('axios')
|
||||
const dayjs = require('dayjs')
|
||||
|
||||
module.exports = {
|
||||
site: 'tva.tv',
|
||||
days: 2,
|
||||
url: function ({ date, channel }) {
|
||||
return `https://api.ott.tva.tv/v2/epg/program_events.json?channel_id=${
|
||||
channel.site_id
|
||||
}&pivot_date=${date.format('YYYY-MM-DD')}`
|
||||
},
|
||||
parser: function ({ content }) {
|
||||
const programs = []
|
||||
const items = parseItems(content)
|
||||
items.forEach(item => {
|
||||
programs.push({
|
||||
title: item.name,
|
||||
description: item.description,
|
||||
start: dayjs(item.start_at),
|
||||
stop: dayjs(item.end_at)
|
||||
})
|
||||
})
|
||||
|
||||
return programs
|
||||
},
|
||||
async channels() {
|
||||
const data = await axios
|
||||
.get(
|
||||
'https://api.ott.tva.tv/v1/channels?client_id=66797942-ff54-46cb-a109-3bae7c855370&client_version=0.0.1&expand%5Bchannel%5D=images&locale=en-GB&page%5Blimit%5D=100&page%5Boffset%5D=0&timezone=10800',
|
||||
{
|
||||
headers: {
|
||||
Origin: 'https://tva.tv'
|
||||
}
|
||||
}
|
||||
)
|
||||
.then(r => r.data)
|
||||
.catch(console.log)
|
||||
|
||||
const channels = []
|
||||
for (let item of data.data) {
|
||||
channels.push({
|
||||
lang: 'fa',
|
||||
site_id: item.id,
|
||||
name: item.name,
|
||||
xmltv_id: item.slug
|
||||
})
|
||||
}
|
||||
|
||||
return channels
|
||||
}
|
||||
}
|
||||
|
||||
function parseItems(content) {
|
||||
const data = JSON.parse(content)
|
||||
if (!data || !Array.isArray(data.data)) return []
|
||||
|
||||
return data.data
|
||||
}
|
|
@ -1,47 +0,0 @@
|
|||
const { parser, url } = require('./tva.tv.config.js')
|
||||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||
dayjs.extend(customParseFormat)
|
||||
dayjs.extend(utc)
|
||||
|
||||
const date = dayjs.utc('2021-11-25', 'YYYY-MM-DD').startOf('d')
|
||||
const channel = {
|
||||
site_id: '6fcc0a2e-1135-482c-b054-08a96e68b758',
|
||||
xmltv_id: 'IRIB2.ir'
|
||||
}
|
||||
const content =
|
||||
'{"data":[{"id":"c0667229-eaf8-472f-8ba7-ad4417348baf","start_at":"2021-11-24T00:20:39.000Z","end_at":"2021-11-24T00:32:11.000Z","description":"تلفن های شبکه 5 سیما: تلفن: 23511000 -تلفن گویا:2786500 نمابر:23511289","name":"میان برنامه","subtitle":"","season_number":null,"episode_number":null,"channel_id":"6fcc0a2e-1135-482c-b054-08a96e68b758","program_id":"e495c06e-80de-46ee-9120-619631f554d9","competition_id":null,"object":"program_event","cast_members":[],"genres":[],"images":[],"program_type":null,"certification_ratings":[]}]}'
|
||||
|
||||
it('can generate valid url', () => {
|
||||
expect(url({ channel, date })).toBe(
|
||||
'https://api.ott.tva.tv/v2/epg/program_events.json?channel_id=6fcc0a2e-1135-482c-b054-08a96e68b758&pivot_date=2021-11-25'
|
||||
)
|
||||
})
|
||||
|
||||
it('can parse response', () => {
|
||||
const result = parser({ content, channel, date }).map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
return p
|
||||
})
|
||||
|
||||
expect(result).toMatchObject([
|
||||
{
|
||||
start: '2021-11-24T00:20:39.000Z',
|
||||
stop: '2021-11-24T00:32:11.000Z',
|
||||
title: 'میان برنامه',
|
||||
description: 'تلفن های شبکه 5 سیما: تلفن: 23511000 -تلفن گویا:2786500 نمابر:23511289'
|
||||
}
|
||||
])
|
||||
})
|
||||
|
||||
it('can handle empty guide', () => {
|
||||
const result = parser({
|
||||
date,
|
||||
channel,
|
||||
content:
|
||||
'{"errors":[{"id":"ebbebfb7-ffb0-4e0b-bcfb-1d9cd3e6c03c","code":"not_found","links":{"about":{"href":"https://app.bugsnag.com/jeytv/API/errors?filters[event.since][]=30d&filters[user.name][]=ebbebfb7-ffb0-4e0b-bcfb-1d9cd3e6c03c"}},"title":"Requested resource was not found","fallback_message":null,"object":"error"}],"meta":{"status":404}}'
|
||||
})
|
||||
expect(result).toMatchObject([])
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue