Update tv.nu guide.

Test:

```sh
npm test -- tv.nu

> test
> run-script-os tv.nu

> test:win32
> SET "TZ=Pacific/Nauru" && npx jest --runInBand tv.nu

 PASS  sites/tv.nu/tv.nu.test.js (6.72 s)
  √ can generate valid url (5 ms)
  √ can parse response (7 ms)
  √ can handle empty guide (1 ms)

Test Suites: 1 passed, 1 total
Tests:       3 passed, 3 total
Snapshots:   0 total
Time:        7.246 s
Ran all test suites matching /tv.nu/i.
```

Grab:

```sh
npm run grab -- --site=tv.nu

> grab
> npx tsx scripts/commands/epg/grab.ts --site=tv.nu

starting...
config:
  output: guide.xml
  maxConnections: 1
  gzip: false
  site: tv.nu
loading channels...
  found 199 channel(s)
run #1:
  [1/398] tv.nu (da) - dk4.dk - Dec 4, 2024 (41 programs)
  [2/398] tv.nu (da) - dk4.dk - Dec 5, 2024 (43 programs)
  ...
  [397/398] tv.nu (sv) - VSportUltraHD.se - Dec 4, 2024 (7 programs)
  [398/398] tv.nu (sv) - VSportUltraHD.se - Dec 5, 2024 (7 programs)
  saving to "guide.xml"...
  done in 00h 02m 40s
```

Signed-off-by: Toha <tohenk@yahoo.com>
This commit is contained in:
Toha
2024-12-04 12:59:29 +07:00
parent 864e0ac2c4
commit 9c6978deba
5 changed files with 131 additions and 129 deletions
+14 -15
View File
@@ -1,3 +1,5 @@
const fs = require('fs')
const path = require('path')
const { parser, url } = require('./tv.nu.config.js')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
@@ -5,7 +7,7 @@ const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2022-03-06', 'YYYY-MM-DD').startOf('d')
const date = dayjs.utc('2024-12-03', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '3sat',
xmltv_id: '3sat.de'
@@ -13,13 +15,12 @@ const channel = {
it('can generate valid url', () => {
expect(url({ channel, date })).toBe(
'https://web-api.tv.nu/channels/3sat/schedule?date=2022-03-06&fullDay=true'
'https://web-api.tv.nu/channels/3sat/schedule?date=2024-12-03&fullDay=true'
)
})
it('can parse response', () => {
const content =
'{"meta":{"status":200},"data":{"id":30139,"name":"RTL","slug":"rtl","themedLogo":{"light":{"url":"https://new.static.tv.nu/19402170","isFallback":false},"dark":{"url":"https://new.static.tv.nu/59995595","isFallback":true}},"broadcasts":[{"type":"broadcast","id":"1OoSZY-7Q7-1DzQ","slug":"csi","programId":"2452","isPlay":true,"isMovie":false,"isSeries":true,"isLive":false,"title":"CSI: Den Tätern auf der Spur","description":"Hellseherin Sedona Wiley wird tot aufgefunden. Die Ermittlungen führen zu einem alten Mord. Gordon Wallace wurde vor 15 Jahren beschuldigt, seine Frau getötet zu haben, jedoch wurde nie eine Leiche gefunden.","imagePortrait":"https://new.static.tv.nu/16686512","imageLandscape":"https://new.static.tv.nu/13119997","year":2006,"genres":["Action","Kriminaldrama","Mysterium","Spänning","Thriller"],"imdb":{"rating":"7.7","link":"https://www.imdb.com/title/tt0247082"},"playProviders":[{"name":"Viaplay","slug":"viaplay","themedLogo":{"light":{"url":"https://new.static.tv.nu/17048879","isFallback":false},"dark":{"url":"https://new.static.tv.nu/119659437","isFallback":false}},"url":"https://viaplay.se/serier/csi-crime-scene-investigation/sasong-6/avsnitt-19?utm_source=tv.nu&utm_content=CSI%3A+Crime+Scene+Investigation"},{"name":"Tele2 Play","slug":"tele2play","themedLogo":{"light":{"url":"https://new.static.tv.nu/158747195","isFallback":false},"dark":{"url":"https://new.static.tv.nu/158747194","isFallback":false}},"url":"https://www.comhemplay.se/open/vod/SH016259780000?utm_source=tv.nu&utm_medium=partner&utm_campaign=tabla&utm_content=CSI%3A+Crime+Scene+Investigation"},{"name":"Prime Video","slug":"prime-video","themedLogo":{"light":{"url":"https://new.static.tv.nu/23085972","isFallback":false},"dark":{"url":"https://new.static.tv.nu/275111","isFallback":true}},"url":"https://app.primevideo.com/detail?gti=amzn1.dv.gti.54af67f9-e58f-e6db-4991-81eb4f2efa37&utm_source=tv.nu"}],"broadcast":{"id":"1OoSZY-7Q7-1DzQ","startTime":1660878900000,"endTime":1660881600000,"channel":{"name":"RTL","slug":"rtl","themedLogo":{"light":{"url":"https://new.static.tv.nu/19402170","isFallback":false},"dark":{"url":"https://new.static.tv.nu/59995595","isFallback":true}}}},"totalEpisodes":24,"episodeNumber":19,"seasonNumber":6}]}}'
const content = fs.readFileSync(path.join(__dirname, '__data__', 'content.json'))
const result = parser({ content }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
@@ -28,22 +29,20 @@ it('can parse response', () => {
expect(result).toMatchObject([
{
start: '2022-08-19T03:15:00.000Z',
stop: '2022-08-19T04:00:00.000Z',
title: 'CSI: Den Tätern auf der Spur',
start: '2024-12-03T11:50:00.000Z',
stop: '2024-12-03T12:15:00.000Z',
title: 'Natur im Garten',
description:
'Hellseherin Sedona Wiley wird tot aufgefunden. Die Ermittlungen führen zu einem alten Mord. Gordon Wallace wurde vor 15 Jahren beschuldigt, seine Frau getötet zu haben, jedoch wurde nie eine Leiche gefunden.',
image: 'https://new.static.tv.nu/13119997',
category: ['Action', 'Kriminaldrama', 'Mysterium', 'Spänning', 'Thriller'],
season: 6,
episode: 19
'Der Gartenbuchautor Karl Ploberger gibt in der Sendung Tipps und Tricks zur Gartenpflege.',
category: ['Konsument', 'Underhållning', 'Trädgård'],
season: 29,
episode: 9
}
])
})
it('can handle empty guide', () => {
const result = parser({
content: '{"meta":{"status":200},"data":{"broadcasts":[]}}'
})
const content = fs.readFileSync(path.join(__dirname, '__data__', 'no_content.json'))
const result = parser({ content })
expect(result).toMatchObject([])
})