Update rotana.net guide.

Test

```shell
npm test -- rotana.net

> test
> run-script-os rotana.net

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

 PASS  sites/rotana.net/rotana.net.test.js (6.081 s)
  √ can use defined user agent (3 ms)
  √ can generate valid english url (1 ms)
  √ can generate valid arabic url
  √ can parse english response (630 ms)
  √ can parse arabic response (560 ms)
  √ can handle empty guide (3 ms)

Test Suites: 1 passed, 1 total
Tests:       6 passed, 6 total
Snapshots:   0 total
Time:        6.406 s, estimated 8 s
Ran all test suites matching /rotana.net/i.
```

Grab

```shell
npm run grab -- --site=rotana.net --lang=en

> grab
> npx tsx scripts/commands/epg/grab.ts --site=rotana.net --lang=en

starting...
config:
  output: guide.xml
  maxConnections: 1
  gzip: false
  site: rotana.net
  lang: en
loading channels...
  found 16 channel(s)
run #1:
  [1/32] rotana.net (en) - 432 - Nov 26, 2024 (24 programs)
  [2/32] rotana.net (en) - 432 - Nov 27, 2024 (23 programs)
  [3/32] rotana.net (en) - 433 - Nov 27, 2024 (14 programs)
  [4/32] rotana.net (en) - LBC.sa - Nov 27, 2024 (19 programs)
  [5/32] rotana.net (en) - LBC.sa - Nov 26, 2024 (20 programs)
  [6/32] rotana.net (en) - 433 - Nov 26, 2024 (14 programs)
  [7/32] rotana.net (en) - AlResalah.sa - Nov 27, 2024 (54 programs)
  [8/32] rotana.net (en) - RotanaAflam.sa - Nov 26, 2024 (16 programs)
  [9/32] rotana.net (en) - AlResalah.sa - Nov 26, 2024 (57 programs)
  [10/32] rotana.net (en) - MPlusHD.sa - Nov 27, 2024 (2 programs)
  [11/32] rotana.net (en) - MPlusHD.sa - Nov 26, 2024 (240 programs)
  [12/32] rotana.net (en) - RotanaComedy.sa - Nov 26, 2024 (13 programs)
  [13/32] rotana.net (en) - RotanaClip.sa - Nov 27, 2024 (2 programs)
  [14/32] rotana.net (en) - RotanaClip.sa - Nov 26, 2024 (246 programs)
  [15/32] rotana.net (en) - RotanaClassic.sa - Nov 27, 2024 (18 programs)
  [16/32] rotana.net (en) - RotanaClassic.sa - Nov 26, 2024 (18 programs)
  [17/32] rotana.net (en) - RotanaCinemaKSA.sa - Nov 27, 2024 (13 programs)
  [18/32] rotana.net (en) - RotanaCinemaKSA.sa - Nov 26, 2024 (14 programs)
  [19/32] rotana.net (en) - RotanaCinemaEgypt.eg - Nov 27, 2024 (12 programs)
  [20/32] rotana.net (en) - RotanaCinemaEgypt.eg - Nov 26, 2024 (13 programs)
  [21/32] rotana.net (en) - RotanaAmerica.sa - Nov 27, 2024 (18 programs)
  [22/32] rotana.net (en) - RotanaAmerica.sa - Nov 26, 2024 (15 programs)
  [23/32] rotana.net (en) - RotanaAflam.sa - Nov 27, 2024 (16 programs)
  [24/32] rotana.net (en) - RotanaKids.sa - Nov 26, 2024 (83 programs)
  [25/32] rotana.net (en) - RotanaKhalijia.sa - Nov 26, 2024 (23 programs)
  [26/32] rotana.net (en) - RotanaDrama.sa - Nov 27, 2024 (26 programs)
  [27/32] rotana.net (en) - RotanaMusic.sa - Nov 27, 2024 (0 programs)
  [28/32] rotana.net (en) - RotanaMusic.sa - Nov 26, 2024 (0 programs)
  [29/32] rotana.net (en) - RotanaKhalijia.sa - Nov 27, 2024 (24 programs)
  [30/32] rotana.net (en) - RotanaDrama.sa - Nov 26, 2024 (26 programs)
  [31/32] rotana.net (en) - RotanaKids.sa - Nov 27, 2024 (83 programs)
  [32/32] rotana.net (en) - RotanaComedy.sa - Nov 27, 2024 (13 programs)
  saving to "guide.xml"...
  done in 00h 00m 49s
```

Signed-off-by: Toha <tohenk@yahoo.com>
This commit is contained in:
Toha 2024-11-27 03:48:25 +07:00
parent b311572748
commit e09316dc63
No known key found for this signature in database
GPG key ID: 2D7AA6389D44DCAB
8 changed files with 833 additions and 606 deletions

View file

@ -11,7 +11,7 @@ dayjs.extend(utc)
jest.mock('axios')
const date = dayjs.utc('2023-12-10').startOf('d')
const date = dayjs.utc('2024-11-26').startOf('d')
const channel = {
lang: 'en',
site_id: '439',
@ -20,12 +20,12 @@ const channel = {
const channelAr = Object.assign({}, channel, { lang: 'ar' })
axios.get.mockImplementation((url, opts) => {
if (url === 'https://rotana.net/en/streams?channel=439&itemId=239849') {
if (url === 'https://rotana.net/en/streams?channel=439&itemId=736970') {
return Promise.resolve({
data: fs.readFileSync(path.resolve(__dirname, '__data__/program_en.html'))
})
}
if (url === 'https://rotana.net/ar/streams?channel=439&itemId=239849') {
if (url === 'https://rotana.net/ar/streams?channel=439&itemId=736970') {
return Promise.resolve({
data: fs.readFileSync(path.resolve(__dirname, '__data__/program_ar.html'))
})
@ -52,34 +52,50 @@ it('can generate valid arabic url', () => {
})
it('can parse english response', async () => {
const result = await parser({
let result = await parser({
channel,
date,
content: fs.readFileSync(path.join(__dirname, '/__data__/content_en.html'))
})
expect(result[0]).toMatchObject({
start: '2023-12-09T21:36:00.000Z',
stop: '2023-12-09T23:46:00.000Z',
title: 'Katkout',
result = result.map(a => {
a.start = a.start.toJSON()
a.stop = a.stop.toJSON()
return a
})
expect(result.length).toBe(12)
expect(result[11]).toMatchObject({
start: '2024-11-26T20:00:00.000Z',
stop: '2024-11-26T22:00:00.000Z',
title: 'Khiyana Mashroua',
description:
'In a comic framework, the events of the film revolve around (Katkoot) Al-Saedi, whose aunt, the eldest of the Al-Saedi family, tries to force him to kill himself in order to ransom his family. A time...',
image: 'https://imgsrv.rotana.net/spider_storage/1398X1000/1690882129.webp?w=450&fit=max'
'Hisham knows that his father has given all his wealth to his elder brother. This leads him to plan to kill his brother to make it look like a defense of honor, which he does by killing his wife along...',
image: 'https://s3.eu-central-1.amazonaws.com/rotana.website/spider_storage/1398X1000/1687084565',
category: 'Movie'
})
})
it('can parse arabic response', async () => {
const result = await parser({
let result = await parser({
channel: channelAr,
date,
content: fs.readFileSync(path.join(__dirname, '/__data__/content_ar.html'))
})
expect(result[0]).toMatchObject({
start: '2023-12-09T21:36:00.000Z',
stop: '2023-12-09T23:46:00.000Z',
title: 'كتكوت',
result = result.map(a => {
a.start = a.start.toJSON()
a.stop = a.stop.toJSON()
return a
})
expect(result.length).toBe(12)
expect(result[11]).toMatchObject({
start: '2024-11-26T20:00:00.000Z',
stop: '2024-11-26T22:00:00.000Z',
title: 'خيانة مشروعة',
description:
'في إطار كوميدي تدور أحداث الفيلم، حول (كتكوت) الصعيدي الذي تحاول عمته كبيرة العائلة الصعيدية إجباره على تقديم نفسه للقتل ليفدي عائلته، ولكنه يهرب وتخطفه جهة أمنية لاكتشاف شبه كبير بينه وبين (يوسف خوري...',
image: 'https://imgsrv.rotana.net/spider_storage/1398X1000/1690882129.webp?w=450&fit=max'
'يعلم هشام البحيري أن والده قد حرمه من الميراث، ووهب كل ثروته لشقيقه اﻷكبر، وهو ما يدفعه لتدبير جريمة قتل شقيقه لتبدو وكأنها دفاع عن الشرف، وذلك حين يقتل هشام زوجته مع شقيقه.',
image: 'https://s3.eu-central-1.amazonaws.com/rotana.website/spider_storage/1398X1000/1687084565',
category: 'فيلم'
})
})