Merge branch 'iptv-org:master' into orangetv.orange.es

This commit is contained in:
David Claeys 2024-12-02 11:31:51 +01:00 committed by GitHub
commit 62d02baa88
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 1303 additions and 708 deletions

View file

@ -0,0 +1,379 @@
[
{
"Title": "Alo Cake: Episode 12",
"Arab_Title": "ألو كيك: الحلقة 12",
"EPGUNIQID": "FTF-202426111955",
"IsPlaying": "0",
"EmptyDivWidth": 240,
"TotalDivWidth": 24,
"IsLastRow": false,
"StartTime": "23:55",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "26 Nov 2024, 23:55"
},
{
"Title": "House Of Desserts: Episode 3",
"Arab_Title": "بيت الحلويات: الحلقة 3",
"EPGUNIQID": "FTF-202426112050",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "00:50",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 00:50"
},
{
"Title": "Ekhtar Sehetak (Choose Healthy): 11",
"Arab_Title": "اختار صحتك: 11",
"EPGUNIQID": "FTF-202426112145",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 240,
"IsLastRow": false,
"StartTime": "01:45",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 01:45"
},
{
"Title": "Matbakh Manal Al Alem (Manal Alalem\u0027s Kitchen): Episode 10",
"Arab_Title": "مطبخ منال العالم: الحلقة 10",
"EPGUNIQID": "FTF-202426112235",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 240,
"IsLastRow": false,
"StartTime": "02:35",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 02:35"
},
{
"Title": "The Mattar Kitchen: Episode 15",
"Arab_Title": "شوّاية مطر: الحلقة 15",
"EPGUNIQID": "FTF-202426112325",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "03:25",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 03:25"
},
{
"Title": "Fi Beit Atyab (Tastes Better At Home): Episode 3",
"Arab_Title": "فالبيت اطيب: الحلقة 3",
"EPGUNIQID": "FTF-202427110020",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "04:20",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 04:20"
},
{
"Title": "Alo Cake: Episode 12",
"Arab_Title": "ألو كيك: الحلقة 12",
"EPGUNIQID": "FTF-202427110115",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "05:15",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 05:15"
},
{
"Title": "House Of Desserts: Episode 3",
"Arab_Title": "بيت الحلويات: الحلقة 3",
"EPGUNIQID": "FTF-202427110210",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 240,
"IsLastRow": false,
"StartTime": "06:10",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 06:10"
},
{
"Title": "Matbakh Manal Al Alem (Manal Alalem\u0027s Kitchen): Episode 10",
"Arab_Title": "مطبخ منال العالم: الحلقة 10",
"EPGUNIQID": "FTF-202427110300",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 240,
"IsLastRow": false,
"StartTime": "07:00",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 07:00"
},
{
"Title": "Ekhtar Sehetak (Choose Healthy): 11",
"Arab_Title": "اختار صحتك: 11",
"EPGUNIQID": "FTF-202427110350",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "07:50",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 07:50"
},
{
"Title": "Wala Ahla Ma\u0027 Loulou: Episode 1",
"Arab_Title": "ولا أحلى مع لولو: الحلقة 1",
"EPGUNIQID": "FTF-202427110445",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 240,
"IsLastRow": false,
"StartTime": "08:45",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 08:45"
},
{
"Title": "The Mattar Kitchen: Episode 15",
"Arab_Title": "شوّاية مطر: الحلقة 15",
"EPGUNIQID": "FTF-202427110535",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "09:35",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 09:35"
},
{
"Title": "Fi Beit Atyab (Tastes Better At Home): Episode 3",
"Arab_Title": "فالبيت اطيب: الحلقة 3",
"EPGUNIQID": "FTF-202427110630",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "10:30",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 10:30"
},
{
"Title": "Alo Cake: Episode 12",
"Arab_Title": "ألو كيك: الحلقة 12",
"EPGUNIQID": "FTF-202427110725",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "11:25",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 11:25"
},
{
"Title": "House Of Desserts: Episode 3",
"Arab_Title": "بيت الحلويات: الحلقة 3",
"EPGUNIQID": "FTF-202427110820",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "12:20",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 12:20"
},
{
"Title": "Wala Ahla Ma\u0027 Loulou: Episode 1",
"Arab_Title": "ولا أحلى مع لولو: الحلقة 1",
"EPGUNIQID": "FTF-202427110915",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 240,
"IsLastRow": false,
"StartTime": "13:15",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 13:15"
},
{
"Title": "Ekhtar Sehetak (Choose Healthy): 11",
"Arab_Title": "اختار صحتك: 11",
"EPGUNIQID": "FTF-202427111005",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "14:05",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 14:05"
},
{
"Title": "Matbakh Manal Al Alem (Manal Alalem\u0027s Kitchen): Episode 11",
"Arab_Title": "مطبخ منال العالم: الحلقة 11",
"EPGUNIQID": "FTF-202427111100",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 240,
"IsLastRow": false,
"StartTime": "15:00",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 15:00"
},
{
"Title": "Fatafeat Kitchen Tales: Episode 104",
"Arab_Title": "حكايات مطبخ من فتافيت: الحلقة 104",
"EPGUNIQID": "FTF-202427111150",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 120,
"IsLastRow": false,
"StartTime": "15:50",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 15:50"
},
{
"Title": "Sahetak Ala Bali: Episode 4",
"Arab_Title": "صحتك على بالي: الحلقة 4",
"EPGUNIQID": "FTF-202427111215",
"IsPlaying": "1",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "16:15",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 16:15"
},
{
"Title": "Shu Bihib El Orf: Episode 14",
"Arab_Title": "شو بحب الأورف: الحلقة 14",
"EPGUNIQID": "FTF-202427111310",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "17:10",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 17:10"
},
{
"Title": "Street Food: Episode 4",
"Arab_Title": "أكل شوارع: الحلقة 4",
"EPGUNIQID": "FTF-202427111405",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "18:05",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 18:05"
},
{
"Title": "Marwan\u0027s Innovations (Ibtikarat Marwan): Episode 14",
"Arab_Title": "ابتكارات مروان: الحلقة 14",
"EPGUNIQID": "FTF-202427111500",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "19:00",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 19:00"
},
{
"Title": "Wala Ahla Ma\u0027 Loulou: Episode 2",
"Arab_Title": "ولا أحلى مع لولو: الحلقة 2",
"EPGUNIQID": "FTF-202427111555",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 240,
"IsLastRow": false,
"StartTime": "19:55",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 19:55"
},
{
"Title": "Ekhtar Sehetak (Choose Healthy): 12",
"Arab_Title": "اختار صحتك: 12",
"EPGUNIQID": "FTF-202427111645",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "20:45",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 20:45"
},
{
"Title": "Fatafeat Kitchen Tales: Episode 104",
"Arab_Title": "حكايات مطبخ من فتافيت: الحلقة 104",
"EPGUNIQID": "FTF-202427111740",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 120,
"IsLastRow": false,
"StartTime": "21:40",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 21:40"
},
{
"Title": "Sahetak Ala Bali: Episode 4",
"Arab_Title": "صحتك على بالي: الحلقة 4",
"EPGUNIQID": "FTF-202427111805",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "22:05",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 22:05"
},
{
"Title": "Shu Bihib El Orf: Episode 14",
"Arab_Title": "شو بحب الأورف: الحلقة 14",
"EPGUNIQID": "FTF-202427111900",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 264,
"IsLastRow": false,
"StartTime": "23:00",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 23:00"
},
{
"Title": "Street Food: Episode 4",
"Arab_Title": "أكل شوارع: الحلقة 4",
"EPGUNIQID": "FTF-202427111955",
"IsPlaying": "0",
"EmptyDivWidth": 0,
"TotalDivWidth": 24,
"IsLastRow": false,
"StartTime": "23:55",
"ChannelCode": "FTF",
"ChannelNumber": 25,
"StartDateTime": "27 Nov 2024, 23:55"
}
]

View file

@ -5,75 +5,64 @@ const timezone = require('dayjs/plugin/timezone')
dayjs.extend(utc)
dayjs.extend(timezone)
const packages = { 'OSNTV CONNECT': 3720, 'OSNTV PRIME': 3733, 'ALFA': 1281, 'OSN PINOY PLUS EXTRA': 3519 }
const country = 'AE'
const tz = 'Asia/Dubai'
module.exports = {
site: 'osn.com',
days: 2,
url({ channel, date }) {
return `https://www.osn.com/api/TVScheduleWebService.asmx/GetTVChannelsProgramTimeTable?newDate=${encodeURIComponent(
date.format('MM/DD/YYYY')
)}&selectedCountry=AE&channelCode=${channel.site_id}&isMobile=false&hoursForMobile=0`
return `https://www.osn.com/api/TVScheduleWebService.asmx/time?dt=${
encodeURIComponent(date.format('MM/DD/YYYY'))
}&co=${country}&ch=${
channel.site_id
}&mo=false&hr=0`
},
request: {
headers({ channel }) {
return {
Referer: `https://www.osn.com/${channel.lang}-ae/watch/tv-schedule`
Referer: `https://www.osn.com/${channel.lang}-${country.toLowerCase()}/watch/tv-schedule`
}
}
},
parser({ content, channel }) {
const programs = []
const items = parseItems(content)
items.forEach(item => {
const start = parseStart(item, channel)
const duration = parseDuration(item)
const stop = start.add(duration, 'm')
programs.push({
title: parseTitle(item, channel),
category: parseCategory(item, channel),
start: start.toString(),
stop: stop.toString()
})
})
const items = JSON.parse(content) || []
if (Array.isArray(items)) {
for (const item of items) {
const title = channel.lang === 'ar' ? item.Arab_Title : item.Title
const start = dayjs.tz(item.StartDateTime, 'DD MMM YYYY, HH:mm', tz)
const duration = parseInt(item.TotalDivWidth / 4.8)
const stop = start.add(duration, 'm')
programs.push({ title, start, stop })
}
}
return programs
},
async channels({ lang = 'ar' }) {
const result = {}
const axios = require('axios')
const result = await axios
.get('https://www.osn.com/api/tvchannels.ashx?culture=en-US&packageId=3519&country=AE')
.then(response => response.data)
.catch(console.error)
for (const pkg of Object.values(packages)) {
const channels = await axios
.get(`https://www.osn.com/api/tvchannels.ashx?culture=en-US&packageId=${pkg}&country=${country}`)
.then(response => response.data)
.catch(console.error)
const channels = result.map(channel => {
return {
lang: lang,
site_id: channel.channelCode,
name: channel.channeltitle
if (Array.isArray(channels)) {
for (const ch of channels) {
if (result[ch.channelCode] === undefined) {
result[ch.channelCode] = {
lang,
site_id: ch.channelCode,
name: ch.channeltitle
}
}
}
}
})
}
return channels
return Object.values(result)
}
}
function parseTitle(item, channel) {
return channel.lang === 'ar' ? item.Arab_Title : item.Title
}
function parseCategory(item, channel) {
return channel.lang === 'ar' ? item.GenreArabicName : item.GenreEnglishName
}
function parseDuration(item) {
return parseInt(item.TotalDivWidth / 4.8)
}
function parseStart(item) {
const time = item.StartDateTime
return dayjs.tz(time, 'DD MMM YYYY, HH:mm', 'Asia/Dubai')
}
function parseItems(content) {
return content ? JSON.parse(content) : []
}

View file

@ -1,15 +1,17 @@
const { parser, url, request } = require('./osn.com.config.js')
const { parser, url, request } = require('./osn.com.config')
const fs = require('fs')
const path = require('path')
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-10-24', 'YYYY-MM-DD').startOf('d')
const channelAR = { site_id: 'AAN', xmltv_id: 'AlAanTV.ae', lang: 'ar' }
const channelEN = { site_id: 'AAN', xmltv_id: 'AlAanTV.ae', lang: 'en' }
const content =
'[{"IsPlaying":"0","Durationtime":null,"StartMinute":0,"EndMinute":0,"EmptyDivWidth":1152,"TotalDivWidth":576,"IsTodayDate":false,"IsLastRow":false,"StartDateTime":"24 Oct 2021, 22:00","EndDateTime":"\\/Date(-62135596800000)\\/","Title":"Al Aan TV","Arab_Title":"تلفزيون الآن","GenreEnglishName":null,"GenreArabicName":null,"ChannelNumber":140,"ChannelCode":"AAN","Duration":"\\/Date(-62135596800000)\\/","Showtime":"\\/Date(-62135596800000)\\/","EpisodeId":738257,"ProgramType":null,"EPGUNIQID":"AAN202110271800738257"}]'
const date = dayjs.utc('2024-11-27', 'YYYY-MM-DD').startOf('d')
const channelAR = { site_id: 'FTF', xmltv_id: 'Fatafeat.ae', lang: 'ar' }
const channelEN = { site_id: 'FTF', xmltv_id: 'Fatafeat.ae', lang: 'en' }
const content = fs.readFileSync(path.join(__dirname, '__data__', 'content.json'))
it('can generate valid request headers', () => {
const result = request.headers({ channel: channelAR, date })
@ -21,32 +23,38 @@ it('can generate valid request headers', () => {
it('can generate valid url', () => {
const result = url({ channel: channelAR, date })
expect(result).toBe(
'https://www.osn.com/api/TVScheduleWebService.asmx/GetTVChannelsProgramTimeTable?newDate=10%2F24%2F2021&selectedCountry=AE&channelCode=AAN&isMobile=false&hoursForMobile=0'
'https://www.osn.com/api/TVScheduleWebService.asmx/time?dt=11%2F27%2F2024&co=AE&ch=FTF&mo=false&hr=0'
)
})
it('can parse response (ar)', () => {
const result = parser({ date, channel: channelAR, content })
expect(result).toMatchObject([
{
start: 'Sun, 24 Oct 2021 18:00:00 GMT',
stop: 'Sun, 24 Oct 2021 20:00:00 GMT',
title: 'تلفزيون الآن',
category: null
}
])
.map(a => {
a.start = a.start.toJSON()
a.stop = a.stop.toJSON()
return a
})
expect(result.length).toBe(29)
expect(result[1]).toMatchObject({
start: '2024-11-26T20:50:00.000Z',
stop: '2024-11-26T21:45:00.000Z',
title: 'بيت الحلويات: الحلقة 3',
})
})
it('can parse response (en)', () => {
const result = parser({ date, channel: channelEN, content })
expect(result).toMatchObject([
{
start: 'Sun, 24 Oct 2021 18:00:00 GMT',
stop: 'Sun, 24 Oct 2021 20:00:00 GMT',
title: 'Al Aan TV',
category: null
}
])
.map(a => {
a.start = a.start.toJSON()
a.stop = a.stop.toJSON()
return a
})
expect(result.length).toBe(29)
expect(result[1]).toMatchObject({
start: '2024-11-26T20:50:00.000Z',
stop: '2024-11-26T21:45:00.000Z',
title: 'House Of Desserts: Episode 3',
})
})
it('can handle empty guide', () => {

View file

@ -1,14 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="DWR">DWRR 101.9</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OBG">OSN TV Crime</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OCM">OSNtv Movies Horror</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OFM">OSN TV Movies Family</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OLH">OSN TV Now</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OMC">OSN TV Movies Comedy</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OST">OSN TV Showcase Classics</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OTO">OSN TV One</channel>
<channel site="osn.com" lang="ar" xmltv_id="AksyonTVInternational.ph" site_id="AKS">Kapatid TV5</channel>
<channel site="osn.com" lang="ar" xmltv_id="AlfaSeries.ae" site_id="SE2">Alfa Series +2</channel>
<channel site="osn.com" lang="ar" xmltv_id="AlfaSeriesPlus2.ae" site_id="SER">Alfa Series Channel</channel>
<channel site="osn.com" lang="ar" xmltv_id="AlSafwa.ae" site_id="SAF">Al Safwa</channel>
<channel site="osn.com" lang="ar" xmltv_id="AlYawm.ae" site_id="YAW">Alfa Al Yawm</channel>
<channel site="osn.com" lang="ar" xmltv_id="ANC.ph" site_id="ANC">ANC</channel>
<channel site="osn.com" lang="ar" xmltv_id="BabyTV.uk" site_id="BAB">BabyTV</channel>
<channel site="osn.com" lang="ar" xmltv_id="AnimalPlanet.ae" site_id="APL">Animal Planet</channel>
<channel site="osn.com" lang="ar" xmltv_id="BloombergTVEurope.uk" site_id="BTV">Bloomberg</channel>
<channel site="osn.com" lang="ar" xmltv_id="CartoonNetworkArabic.ae" site_id="TCN">Cartoon Network</channel>
<channel site="osn.com" lang="ar" xmltv_id="Cinema1.ae" site_id="CM1">Alfa Cinema 1</channel>
<channel site="osn.com" lang="ar" xmltv_id="Cinema2.ae" site_id="CM2">Alfa Cinema 2</channel>
<channel site="osn.com" lang="ar" xmltv_id="CinemaOneGlobal.ph" site_id="COG">Cinema One Global</channel>
@ -17,11 +25,9 @@
<channel site="osn.com" lang="ar" xmltv_id="CNNArabic.ae" site_id="CNN">CNN</channel>
<channel site="osn.com" lang="ar" xmltv_id="CrimePlusInvestigation.uk" site_id="CAI">Crime &amp; Investigation Network</channel>
<channel site="osn.com" lang="ar" xmltv_id="DiscoveryChannelMiddleEastAfrica.us" site_id="DSC">Discovery HD</channel>
<channel site="osn.com" lang="ar" xmltv_id="DiscoveryScienceMiddleEast.uk" site_id="SCI">Discovery Science HD</channel>
<channel site="osn.com" lang="ar" xmltv_id="DisneyChannelMENA.uk" site_id="DIS">Disney HD</channel>
<channel site="osn.com" lang="ar" xmltv_id="DisneyJuniorMENA.uk" site_id="DJR">Disney Junior</channel>
<channel site="osn.com" lang="ar" xmltv_id="EMiddleEast.us" site_id="ETV">E! Entertainment</channel>
<channel site="osn.com" lang="ar" xmltv_id="Fann.ae" site_id="FAN">Alfa Fann</channel>
<channel site="osn.com" lang="ar" xmltv_id="Fatafeat.ae" site_id="FTF">Fatafeat</channel>
<channel site="osn.com" lang="ar" xmltv_id="GMALifeTV.ph" site_id="GML">GMA Life TV</channel>
<channel site="osn.com" lang="ar" xmltv_id="GMANewsTV.ph" site_id="GMN">GMA News TV</channel>
<channel site="osn.com" lang="ar" xmltv_id="GMAPinoyTVMiddleEast.ph" site_id="GMA">GMA Pinoy TV</channel>
@ -33,33 +39,23 @@
<channel site="osn.com" lang="ar" xmltv_id="MTVLive.uk" site_id="MTL">MTV Live HD</channel>
<channel site="osn.com" lang="ar" xmltv_id="MusicNow.ae" site_id="NOW">Music Now</channel>
<channel site="osn.com" lang="ar" xmltv_id="MyxMiddleEast.ph" site_id="MYX">Myx</channel>
<channel site="osn.com" lang="ar" xmltv_id="NationalGeographicMiddleEast.uk" site_id="NGO">Nat Geo HD</channel>
<channel site="osn.com" lang="ar" xmltv_id="NationalGeographicWildMiddleEast.uk" site_id="NHD">Nat Geo Wild HD</channel>
<channel site="osn.com" lang="ar" xmltv_id="NickelodeonArabia.ae" site_id="NIC">Nickelodeon HD</channel>
<channel site="osn.com" lang="ar" xmltv_id="NickJrArabia.ae" site_id="NJR">Nick Jr.</channel>
<channel site="osn.com" lang="ar" xmltv_id="NickJrArabia.ae" site_id="NJR">Nick Jr</channel>
<channel site="osn.com" lang="ar" xmltv_id="NicktoonsArabia.ae" site_id="NKT">NickToons HD</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNComedy.ae" site_id="OCO">OSN TV Comedy</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OBG">OSN TV Crime</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNKids.ae" site_id="OMK">OSN TV Kids</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNKidzone.ae" site_id="KDZ">OSN TV Kidzone</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNMezze.ae" site_id="OMZ">OSN TV Mezze</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNMoviesAction.ae" site_id="AHD">OSN TV Movies Action</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OMC">OSN TV Movies Comedy</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OFM">OSN TV Movies Family</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNMoviesHollywood.ae" site_id="OPR">OSN TV Movies Hollywood</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNMoviesPremiere.ae" site_id="OM1">OSN TV Movies Premiere</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNNews.ae" site_id="ONS">OSN TV News</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OLH">OSN TV Now</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OTO">OSN TV One</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNShowcase.ae" site_id="OFH">OSN TV Showcase</channel>
<channel site="osn.com" lang="ar" xmltv_id="" site_id="OST">OSN TV Showcase Classics</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNYahala.ae" site_id="OYH">OSN TV Yahala</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNYahalaAflam.ae" site_id="OYC">OSN TV Yahala Aflam</channel>
<channel site="osn.com" lang="ar" xmltv_id="OSNYahalaBilArabi.ae" site_id="OYA">OSN TV Yahala Bil Arabi</channel>
<channel site="osn.com" lang="ar" xmltv_id="PBARush.ph" site_id="PBA">PBA Rush</channel>
<channel site="osn.com" lang="ar" xmltv_id="SkyNewsInternational.uk" site_id="SKH">Sky News HD</channel>
<channel site="osn.com" lang="ar" xmltv_id="StarMoviesMiddleEast.ae" site_id="STM">Star Movies HD</channel>
<channel site="osn.com" lang="ar" xmltv_id="StarWorldMiddleEast.ae" site_id="STW">Star World HD</channel>
<channel site="osn.com" lang="ar" xmltv_id="TeleRadyoGlobal.ph" site_id="DZM">DZMM Teleradyo</channel>
<channel site="osn.com" lang="ar" xmltv_id="TheFilipinoChannelMiddleEast.us" site_id="TFC">TFC</channel>
<channel site="osn.com" lang="ar" xmltv_id="TLCArabia.us" site_id="TLC">TLC HD</channel>

View file

@ -1,14 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="osn.com" lang="en" xmltv_id="" site_id="DWR">DWRR 101.9</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OBG">OSN TV Crime</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OCM">OSNtv Movies Horror</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OFM">OSN TV Movies Family</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OLH">OSN TV Now</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OMC">OSN TV Movies Comedy</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OST">OSN TV Showcase Classics</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OTO">OSN TV One</channel>
<channel site="osn.com" lang="en" xmltv_id="AksyonTVInternational.ph" site_id="AKS">Kapatid TV5</channel>
<channel site="osn.com" lang="en" xmltv_id="AlfaSeries.ae" site_id="SE2">Alfa Series +2</channel>
<channel site="osn.com" lang="en" xmltv_id="AlfaSeriesPlus2.ae" site_id="SER">Alfa Series Channel</channel>
<channel site="osn.com" lang="en" xmltv_id="AlSafwa.ae" site_id="SAF">Al Safwa</channel>
<channel site="osn.com" lang="en" xmltv_id="AlYawm.ae" site_id="YAW">Alfa Al Yawm</channel>
<channel site="osn.com" lang="en" xmltv_id="ANC.ph" site_id="ANC">ANC</channel>
<channel site="osn.com" lang="en" xmltv_id="BabyTV.uk" site_id="BAB">BabyTV</channel>
<channel site="osn.com" lang="en" xmltv_id="AnimalPlanet.ae" site_id="APL">Animal Planet</channel>
<channel site="osn.com" lang="en" xmltv_id="BloombergTVEurope.uk" site_id="BTV">Bloomberg</channel>
<channel site="osn.com" lang="en" xmltv_id="CartoonNetworkArabic.ae" site_id="TCN">Cartoon Network</channel>
<channel site="osn.com" lang="en" xmltv_id="Cinema1.ae" site_id="CM1">Alfa Cinema 1</channel>
<channel site="osn.com" lang="en" xmltv_id="Cinema2.ae" site_id="CM2">Alfa Cinema 2</channel>
<channel site="osn.com" lang="en" xmltv_id="CinemaOneGlobal.ph" site_id="COG">Cinema One Global</channel>
@ -17,11 +25,9 @@
<channel site="osn.com" lang="en" xmltv_id="CNNArabic.ae" site_id="CNN">CNN</channel>
<channel site="osn.com" lang="en" xmltv_id="CrimePlusInvestigation.uk" site_id="CAI">Crime &amp; Investigation Network</channel>
<channel site="osn.com" lang="en" xmltv_id="DiscoveryChannelMiddleEastAfrica.us" site_id="DSC">Discovery HD</channel>
<channel site="osn.com" lang="en" xmltv_id="DiscoveryScienceMiddleEast.uk" site_id="SCI">Discovery Science HD</channel>
<channel site="osn.com" lang="en" xmltv_id="DisneyChannelMENA.uk" site_id="DIS">Disney HD</channel>
<channel site="osn.com" lang="en" xmltv_id="DisneyJuniorMENA.uk" site_id="DJR">Disney Junior</channel>
<channel site="osn.com" lang="en" xmltv_id="EMiddleEast.us" site_id="ETV">E! Entertainment</channel>
<channel site="osn.com" lang="en" xmltv_id="Fann.ae" site_id="FAN">Alfa Fann</channel>
<channel site="osn.com" lang="en" xmltv_id="Fatafeat.ae" site_id="FTF">Fatafeat</channel>
<channel site="osn.com" lang="en" xmltv_id="GMALifeTV.ph" site_id="GML">GMA Life TV</channel>
<channel site="osn.com" lang="en" xmltv_id="GMANewsTV.ph" site_id="GMN">GMA News TV</channel>
<channel site="osn.com" lang="en" xmltv_id="GMAPinoyTVMiddleEast.ph" site_id="GMA">GMA Pinoy TV</channel>
@ -33,33 +39,23 @@
<channel site="osn.com" lang="en" xmltv_id="MTVLive.uk" site_id="MTL">MTV Live HD</channel>
<channel site="osn.com" lang="en" xmltv_id="MusicNow.ae" site_id="NOW">Music Now</channel>
<channel site="osn.com" lang="en" xmltv_id="MyxMiddleEast.ph" site_id="MYX">Myx</channel>
<channel site="osn.com" lang="en" xmltv_id="NationalGeographicMiddleEast.uk" site_id="NGO">Nat Geo HD</channel>
<channel site="osn.com" lang="en" xmltv_id="NationalGeographicWildMiddleEast.uk" site_id="NHD">Nat Geo Wild HD</channel>
<channel site="osn.com" lang="en" xmltv_id="NickelodeonArabia.ae" site_id="NIC">Nickelodeon HD</channel>
<channel site="osn.com" lang="en" xmltv_id="NickJrArabia.ae" site_id="NJR">Nick Jr.</channel>
<channel site="osn.com" lang="en" xmltv_id="NickJrArabia.ae" site_id="NJR">Nick Jr</channel>
<channel site="osn.com" lang="en" xmltv_id="NicktoonsArabia.ae" site_id="NKT">NickToons HD</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNComedy.ae" site_id="OCO">OSN TV Comedy</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OBG">OSN TV Crime</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNKids.ae" site_id="OMK">OSN TV Kids</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNKidzone.ae" site_id="KDZ">OSN TV Kidzone</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNMezze.ae" site_id="OMZ">OSN TV Mezze</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNMoviesAction.ae" site_id="AHD">OSN TV Movies Action</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OMC">OSN TV Movies Comedy</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OFM">OSN TV Movies Family</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNMoviesHollywood.ae" site_id="OPR">OSN TV Movies Hollywood</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNMoviesPremiere.ae" site_id="OM1">OSN TV Movies Premiere</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNNews.ae" site_id="ONS">OSN TV News</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OLH">OSN TV Now</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OTO">OSN TV One</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNShowcase.ae" site_id="OFH">OSN TV Showcase</channel>
<channel site="osn.com" lang="en" xmltv_id="" site_id="OST">OSN TV Showcase Classics</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNYahala.ae" site_id="OYH">OSN TV Yahala</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNYahalaAflam.ae" site_id="OYC">OSN TV Yahala Aflam</channel>
<channel site="osn.com" lang="en" xmltv_id="OSNYahalaBilArabi.ae" site_id="OYA">OSN TV Yahala Bil Arabi</channel>
<channel site="osn.com" lang="en" xmltv_id="PBARush.ph" site_id="PBA">PBA Rush</channel>
<channel site="osn.com" lang="en" xmltv_id="SkyNewsInternational.uk" site_id="SKH">Sky News HD</channel>
<channel site="osn.com" lang="en" xmltv_id="StarMoviesMiddleEast.ae" site_id="STM">Star Movies HD</channel>
<channel site="osn.com" lang="en" xmltv_id="StarWorldMiddleEast.ae" site_id="STW">Star World HD</channel>
<channel site="osn.com" lang="en" xmltv_id="TeleRadyoGlobal.ph" site_id="DZM">DZMM Teleradyo</channel>
<channel site="osn.com" lang="en" xmltv_id="TheFilipinoChannelMiddleEast.us" site_id="TFC">TFC</channel>
<channel site="osn.com" lang="en" xmltv_id="TLCArabia.us" site_id="TLC">TLC HD</channel>

View file

@ -1,51 +1,241 @@
<div class="hour">
<div class="bg" id="item-10-12-2023">
<div class="bg" id="item-26-11-2024">
<h4 class="big-title text-uppercase mt-0 fadeInRight animated " data-animation-in="fadeInRight"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>الأحد</span>
2023-12-10
</h4>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-239849">
<div class="iq-accordion-title" onclick="getData(239849)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>00:36
</span>
<span>كتكوت</span>
</h5>
</div>
<div class="iq-accordion-details" style="display: none;">
</div>
</div>
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>الثلاثاء</span> 2024-11-26 </h4>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-239850">
<div class="iq-accordion-title" onclick="getData(239850)">
<div class="iq-accordion-block " id="item-736961">
<div class="iq-accordion-title" onclick="getData(736961)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>02:46
</span>
<span>عيار ناري</span>
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>05:00 </span><span>المولد</span>
</h5>
</div>
<div class="iq-accordion-details" style="display: none;">
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736970">
<div class="iq-accordion-title" onclick="getData(736970)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>23:00 </span><span>خيانة
مشروعة</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736969">
<div class="iq-accordion-title" onclick="getData(736969)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>21:00 </span><span>عسل
إسود</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2" id="playing-now-event">
<div class="iq-accordion-block iq-active " id="item-736968">
<div class="iq-accordion-title" onclick="getData(736968)">
<div class="egp-live"><i aria-hidden="true" class="fa fa-tv"></i></div>
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>19:00 </span><span>ولاد
العم</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736967">
<div class="iq-accordion-title" onclick="getData(736967)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>16:30 </span><span>كتكوت</span>
</h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736966">
<div class="iq-accordion-title" onclick="getData(736966)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>14:00 </span><span>أربعة في مهمة
رسمية</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736965">
<div class="iq-accordion-title" onclick="getData(736965)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>12:00 </span><span>غاوي
حب</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736964">
<div class="iq-accordion-title" onclick="getData(736964)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>10:00 </span><span>بنك
الحظ</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736963">
<div class="iq-accordion-title" onclick="getData(736963)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>09:00 </span><span>عرب
وود</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736962">
<div class="iq-accordion-title" onclick="getData(736962)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>07:00 </span><span>سمير وشهير
وبهير</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736960">
<div class="iq-accordion-title" onclick="getData(736960)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>03:00 </span><span>خط دم</span>
</h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736959">
<div class="iq-accordion-title" onclick="getData(736959)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>01:00 </span><span>الكنز الحب
والمصير</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="bg" id="item-27-11-2024">
<h4 class="big-title text-uppercase mt-0 fadeInRight animated " data-animation-in="fadeInRight"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>الأربعاء</span> 2024-11-27 </h4>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736981">
<div class="iq-accordion-title" onclick="getData(736981)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>23:00 </span><span>دكان
شحاتة</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736980">
<div class="iq-accordion-title" onclick="getData(736980)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>21:00 </span><span>القرموطي في
أرض النار</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736979">
<div class="iq-accordion-title" onclick="getData(736979)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>19:00 </span><span>حملة
فريزر</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736978">
<div class="iq-accordion-title" onclick="getData(736978)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>16:30
</span><span>المصلحة</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736977">
<div class="iq-accordion-title" onclick="getData(736977)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>14:00 </span><span>نأسف لهذا
الخطأ</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736975">
<div class="iq-accordion-title" onclick="getData(736975)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>10:00 </span><span>ولاد
العم</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736974">
<div class="iq-accordion-title" onclick="getData(736974)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>07:30 </span><span>كتكوت</span>
</h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736973">
<div class="iq-accordion-title" onclick="getData(736973)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>05:00 </span><span>أربعة في مهمة
رسمية</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736972">
<div class="iq-accordion-title" onclick="getData(736972)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>03:00 </span><span>غاوي
حب</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736971">
<div class="iq-accordion-title" onclick="getData(736971)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>01:00 </span><span>بنك
الحظ</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736976">
<div class="iq-accordion-title" onclick="getData(736976)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>12:00 </span><span>عسل
إسود</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
</div>

View file

@ -1,51 +1,241 @@
<div class="hour">
<div class="bg" id="item-10-12-2023">
<div class="bg" id="item-26-11-2024">
<h4 class="big-title text-uppercase mt-0 fadeInRight animated " data-animation-in="fadeInRight"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>Sunday</span>
2023-12-10
</h4>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-239849">
<div class="iq-accordion-title" onclick="getData(239849)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>00:36
</span>
<span>Katkout</span>
</h5>
</div>
<div class="iq-accordion-details" style="display: none;">
</div>
</div>
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>Tuesday</span> 2024-11-26 </h4>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-239850">
<div class="iq-accordion-title" onclick="getData(239850)">
<div class="iq-accordion-block " id="item-736961">
<div class="iq-accordion-title" onclick="getData(736961)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>02:46
</span>
<span>Gunshot</span>
</h5>
</div>
<div class="iq-accordion-details" style="display: none;">
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>05:00
</span><span>Almualid</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736970">
<div class="iq-accordion-title" onclick="getData(736970)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>23:00 </span><span>Khiyana
Mashroua</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736969">
<div class="iq-accordion-title" onclick="getData(736969)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>21:00 </span><span>Black
Honey</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736968">
<div class="iq-accordion-title" onclick="getData(736968)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>19:00
</span><span>Cousins</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2" id="playing-now-event">
<div class="iq-accordion-block iq-active " id="item-736967">
<div class="iq-accordion-title" onclick="getData(736967)">
<div class="egp-live"><i aria-hidden="true" class="fa fa-tv"></i></div>
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>16:30
</span><span>Katkout</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736966">
<div class="iq-accordion-title" onclick="getData(736966)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>14:00 </span><span>Four on an
Official Mission</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736965">
<div class="iq-accordion-title" onclick="getData(736965)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>12:00 </span><span>Ghawy
Hob</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736964">
<div class="iq-accordion-title" onclick="getData(736964)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>10:00
</span><span>Monopoly</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736963">
<div class="iq-accordion-title" onclick="getData(736963)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>09:00
</span><span>Arabwood</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736962">
<div class="iq-accordion-title" onclick="getData(736962)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>07:00 </span><span>Samir and
Shahir and Bahir</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736960">
<div class="iq-accordion-title" onclick="getData(736960)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>03:00 </span><span>Blood
Line</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736959">
<div class="iq-accordion-title" onclick="getData(736959)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>01:00 </span><span>The Treasure
2 Love and Destiny</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="bg" id="item-27-11-2024">
<h4 class="big-title text-uppercase mt-0 fadeInRight animated " data-animation-in="fadeInRight"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>Wednesday</span> 2024-11-27 </h4>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736981">
<div class="iq-accordion-title" onclick="getData(736981)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>23:00 </span><span>Dokan
Shehata</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736980">
<div class="iq-accordion-title" onclick="getData(736980)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>21:00 </span><span>El Qarmouti
in the Land of Fire</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736979">
<div class="iq-accordion-title" onclick="getData(736979)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>19:00 </span><span>Freezer
Mission</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736978">
<div class="iq-accordion-title" onclick="getData(736978)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>16:30 </span><span>Al
Maslaha</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736977">
<div class="iq-accordion-title" onclick="getData(736977)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>14:00 </span><span>Nasaf lhdha
alkhata</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736975">
<div class="iq-accordion-title" onclick="getData(736975)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>10:00
</span><span>Cousins</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736974">
<div class="iq-accordion-title" onclick="getData(736974)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>07:30
</span><span>Katkout</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736973">
<div class="iq-accordion-title" onclick="getData(736973)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>05:00 </span><span>Four on an
Official Mission</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736972">
<div class="iq-accordion-title" onclick="getData(736972)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>03:00 </span><span>Ghawy
Hob</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736971">
<div class="iq-accordion-title" onclick="getData(736971)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>01:00
</span><span>Monopoly</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
<div class="iq-accordion iq-accordion-square mt-2">
<div class="iq-accordion-block " id="item-736976">
<div class="iq-accordion-title" onclick="getData(736976)">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>12:00 </span><span>Black
Honey</span></h5>
</div>
<div class="iq-accordion-details" style="display: none;"></div>
</div>
</div>
</div>

View file

@ -1,240 +1,131 @@
<div class="row">
<div class="col-lg-6 col-md-12 col-sm-12 ">
<img src="https://imgsrv.rotana.net/spider_storage/1398X1000/1690882129.webp?w=450&amp;fit=max"
loading="lazy" alt="كتكوت">
</div>
<div class="col-lg-6 col-md-12 col-sm-12">
<div class="iq-blog-detail">
<div class="trending-info">
<div class="row">
<div class="col-md-12 col-12 mb-auto">
<div class="d-md-flex trending-box">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
كتكوت
</h5>
</div>
<ul class="p-0 list-inline d-flex flex-wrap align-items-center mb-3 mt-4 iq_tag-list">
<li class="text-primary text-lable mr-3">
<i class="fa fa-tags" aria-hidden="true"></i>
التصنيف
</li>
<li class="trending-list mr-3">
<a class="title"
href="#">كوميديا , عائلة , إثارة
</a>
</li>
<div class="iq-accordion-details" style="display: block;">
<div class="row">
<div class="col-lg-6 col-md-12 col-sm-12 "><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/spider_storage/1398X1000/1687084565"
loading="lazy" alt="خيانة مشروعة"></div>
<div class="col-lg-6 col-md-12 col-sm-12">
<div class="iq-blog-detail">
<div class="trending-info">
<div class="row">
<div class="col-md-12 col-12 mb-auto">
<div class="d-md-flex trending-box">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated"
data-animation-in="fadeInLeft" data-delay-in="0.6"
style="opacity: 1; animation-delay: 0.6s"> خيانة مشروعة </h5>
</div>
<ul class="p-0 list-inline d-flex flex-wrap align-items-center mb-3 mt-4 iq_tag-list">
<li class="text-primary text-lable mr-3"><i class="fa fa-tags" aria-hidden="true"></i>
التصنيف </li>
<li class="trending-list mr-3"><a class="title" href="#">جريمة , إثارة , دراما </a></li>
</ul>
<div class="blog-button">
<button id="modal-open-button"
type="button" class="btn btn-primary button-link" data-toggle="modal"
data-target="#exampleModal"
onclick="throttle(getPlayer_epg, 1000, 'https://hiplayer.hibridcdn.net/l/rotana-cinemamasrdvr',1702168573,1702176316); showCatchUpStatus();"
<i class="ri-tv-line"></i>
الأرشيف
</button>
<div class="blog-button"></div><br><span>
<p><strong></strong></p> يعلم هشام البحيري أن والده قد حرمه من الميراث، ووهب كل ثروته لشقيقه اﻷكبر، وهو ما يدفعه لتدبير جريمة قتل شقيقه لتبدو وكأنها دفاع عن الشرف، وذلك حين يقتل هشام زوجته مع شقيقه. <br><br>
<span> البلد : مصر </span><br>
<span> سنة الإصدار :2006 </span><br>
<span> التصنيف : فيلم </span><br>
<span> اللغة : عربي</span><br>
<span> المخرج : خالد يوسف </span><br><br>
</span>
</div>
<br>
<span>
<p><strong></strong></p>
في إطار كوميدي تدور أحداث الفيلم، حول (كتكوت) الصعيدي الذي تحاول عمته كبيرة العائلة الصعيدية إجباره على تقديم نفسه للقتل ليفدي عائلته، ولكنه يهرب وتخطفه جهة أمنية لاكتشاف شبه كبير بينه وبين (يوسف خوري...
<br><br>
<span> البلد
:
مصر
</span>
<br>
<span> سنة الإصدار
:
2006
</span>
<br>
<span> التصنيف
:
فيلم
</span>
<br>
<span> اللغة
:
عربي
</span>
<br>
<br>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 ">
<div class="iq-accordion-title">
<h5 class="big-title text-uppercase mt-0 fadeInDown animated" data-animation-in="fadeInDown"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>طاقم العمل</span>
</h5>
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>طاقم العمل</span></h5>
</div>
<div class="">
<ul class=" row list-inline mb-0 iq-rtl-direction iq_genres-contents">
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 2">
<a
href="https://rotana.net/ar/actor-details/2619/%D9%85%D8%AD%D9%85%D8%AF-%D8%B3%D8%B9%D8%AF" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677278061?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="محمد سعد">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
محمد سعد
</h6>
<h6 class="iq-title">ممثل</h6>
</div>
<ul class=" row list-inline mb-0 iq-rtl-direction iq_genres-contents">
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 2"><a
href="https://rotana.net/ar/actor-details/1392/%D9%87%D8%A7%D9%86%D9%8A-%D8%B3%D9%84%D8%A7%D9%85%D8%A9"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677266060"
class="img-fluid" loading="lazy" alt="هاني سلامة"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> هاني سلامة </h6>
<h6 class="iq-title">ممثل</h6>
</div>
</a>
</li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 3">
<a
href="https://rotana.net/ar/actor-details/714/%D8%AD%D8%B3%D9%86-%D8%AD%D8%B3%D9%86%D9%8A" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677264896?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="حسن حسني">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
حسن حسني
</h6>
<h6 class="iq-title">ممثل</h6>
</div>
</div>
</a></li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 3"><a
href="https://rotana.net/ar/actor-details/476/%D9%85%D9%8A-%D8%B9%D8%B2-%D8%A7%D9%84%D8%AF%D9%8A%D9%86"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677281286"
class="img-fluid" loading="lazy" alt="مي عز الدين"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> مي عز الدين </h6>
<h6 class="iq-title">ممثل</h6>
</div>
</a>
</li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 4">
<a
href="https://rotana.net/ar/actor-details/6148/%D9%87%D8%A8%D9%87-%D8%A7%D9%84%D8%B3%D9%8A%D8%B3%D9%8A" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677266249?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="هبه السيسي">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
هبه السيسي
</h6>
<h6 class="iq-title">ممثل</h6>
</div>
</div>
</a></li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 4"><a
href="https://rotana.net/ar/actor-details/1393/%D8%B3%D9%85%D9%8A%D8%A9-%D8%A7%D9%84%D8%AE%D8%B4%D8%A7%D8%A8"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677290429"
class="img-fluid" loading="lazy" alt="سمية الخشاب"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> سمية الخشاب </h6>
<h6 class="iq-title">مغني</h6>
</div>
</a>
</li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 5">
<a
href="https://rotana.net/ar/actor-details/2589/%D8%B9%D9%84%D9%8A-%D8%AD%D8%B3%D9%86%D9%8A%D9%86" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677253689?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="علي حسنين">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
علي حسنين
</h6>
<h6 class="iq-title">ممثل</h6>
</div>
</div>
</a></li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 5"><a
href="https://rotana.net/ar/actor-details/2358/%D9%87%D8%B4%D8%A7%D9%85-%D8%B3%D9%84%D9%8A%D9%85"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677266419"
class="img-fluid" loading="lazy" alt="هشام سليم"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> هشام سليم </h6>
<h6 class="iq-title">ممثل</h6>
</div>
</a>
</li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 6">
<a
href="https://rotana.net/ar/actor-details/987/%D9%85%D8%AD%D9%85%D8%AF-%D9%88%D9%81%D9%8A%D9%82" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677278771?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="محمد وفيق">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
محمد وفيق
</h6>
<h6 class="iq-title">ممثل</h6>
</div>
</div>
</a></li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 6"><a
href="https://rotana.net/ar/actor-details/2807/%D8%B3%D8%A7%D9%85%D8%AD-%D8%A7%D9%84%D8%B5%D8%B1%D9%8A%D8%B7%D9%8A"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677288796"
class="img-fluid" loading="lazy" alt="سامح الصريطي"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> سامح الصريطي </h6>
<h6 class="iq-title">ممثل</h6>
</div>
</a>
</li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 7">
<a
href="https://rotana.net/ar/actor-details/1035/%D8%AD%D8%B3%D9%86-%D8%B9%D8%A8%D8%AF%D8%A7%D9%84%D9%81%D8%AA%D8%A7%D8%AD" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677264953?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="حسن عبدالفتاح">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
حسن عبدالفتاح
</h6>
<h6 class="iq-title">ممثل</h6>
</div>
</div>
</a></li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 7"><a
href="https://rotana.net/ar/actor-details/1210/%D8%B9%D9%85%D8%B1%D9%88-%D8%B3%D8%B9%D8%AF"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677253966"
class="img-fluid" loading="lazy" alt="عمرو سعد"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> عمرو سعد </h6>
<h6 class="iq-title">ممثل</h6>
</div>
</a>
</li>
</div>
</a></li>
</ul>
</div>
</div>
</div>
</div>

View file

@ -1,240 +1,132 @@
<div class="row">
<div class="col-lg-6 col-md-12 col-sm-12 ">
<img src="https://imgsrv.rotana.net/spider_storage/1398X1000/1690882129.webp?w=450&amp;fit=max"
loading="lazy" alt="Katkout">
</div>
<div class="col-lg-6 col-md-12 col-sm-12">
<div class="iq-blog-detail">
<div class="trending-info">
<div class="row">
<div class="col-md-12 col-12 mb-auto">
<div class="d-md-flex trending-box">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated" data-animation-in="fadeInLeft"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
Katkout
</h5>
</div>
<ul class="p-0 list-inline d-flex flex-wrap align-items-center mb-3 mt-4 iq_tag-list">
<li class="text-primary text-lable mr-3">
<i class="fa fa-tags" aria-hidden="true"></i>
Genres
<div class="iq-accordion-details" style="display: block;">
<div class="row">
<div class="col-lg-6 col-md-12 col-sm-12 "><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/spider_storage/1398X1000/1687084565"
loading="lazy" alt="Khiyana Mashroua"></div>
<div class="col-lg-6 col-md-12 col-sm-12">
<div class="iq-blog-detail">
<div class="trending-info">
<div class="row">
<div class="col-md-12 col-12 mb-auto">
<div class="d-md-flex trending-box">
<h5 class="big-title text-uppercase mt-0 fadeInLeft animated"
data-animation-in="fadeInLeft" data-delay-in="0.6"
style="opacity: 1; animation-delay: 0.6s"> Khiyana Mashroua </h5>
</div>
<ul class="p-0 list-inline d-flex flex-wrap align-items-center mb-3 mt-4 iq_tag-list">
<li class="text-primary text-lable mr-3"><i class="fa fa-tags" aria-hidden="true"></i>
Genres </li>
<li class="trending-list mr-3"><a class="title" href="#">Crime , Thriller , Drama </a>
</li>
<li class="trending-list mr-3">
<a class="title"
href="#">Comedy , Family , Thriller
</a>
</li>
</ul>
<div class="blog-button">
<button id="modal-open-button"
type="button" class="btn btn-primary button-link" data-toggle="modal"
data-target="#exampleModal"
onclick="throttle(getPlayer_epg, 1000, 'https://hiplayer.hibridcdn.net/l/rotana-cinemamasrdvr',1702168573,1702176316); showCatchUpStatus();"
<i class="ri-tv-line"></i>
Catch up
</button>
<div class="blog-button"></div><br><span>
<p><strong></strong></p> 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... <br><br>
<span> Country : Egypt</span><br>
<span> Release Year : 2006 </span><br>
<span> Category : Movie</span><br>
<span> Language : Arabic </span><br>
<span> Director : Khaled Youssef</span><br><br>
</span>
</div>
<br>
<span>
<p><strong></strong></p>
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...
<br><br>
<span> Country
:
Egypt
</span>
<br>
<span> Release Year
:
2006
</span>
<br>
<span> Category
:
Movie
</span>
<br>
<span> Language
:
Arabic
</span>
<br>
<br>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 ">
<div class="iq-accordion-title">
<h5 class="big-title text-uppercase mt-0 fadeInDown animated" data-animation-in="fadeInDown"
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>Cast</span>
</h5>
data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s"><span>Cast</span></h5>
</div>
<div class="">
<ul class=" row list-inline mb-0 iq-rtl-direction iq_genres-contents">
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 2">
<a
href="https://rotana.net/en/actor-details/2619/%D9%85%D8%AD%D9%85%D8%AF-%D8%B3%D8%B9%D8%AF" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677278061?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="Mohamed Saad">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
Mohamed Saad
</h6>
<h6 class="iq-title">Actor</h6>
</div>
<ul class=" row list-inline mb-0 iq-rtl-direction iq_genres-contents">
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 2"><a
href="https://rotana.net/en/actor-details/1392/%D9%87%D8%A7%D9%86%D9%8A-%D8%B3%D9%84%D8%A7%D9%85%D8%A9"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677266060"
class="img-fluid" loading="lazy" alt="Hani Salama"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> Hani Salama </h6>
<h6 class="iq-title">Actor</h6>
</div>
</a>
</li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 3">
<a
href="https://rotana.net/en/actor-details/714/%D8%AD%D8%B3%D9%86-%D8%AD%D8%B3%D9%86%D9%8A" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677264896?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="Hassan Hosny">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
Hassan Hosny
</h6>
<h6 class="iq-title">Actor</h6>
</div>
</div>
</a></li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 3"><a
href="https://rotana.net/en/actor-details/476/%D9%85%D9%8A-%D8%B9%D8%B2-%D8%A7%D9%84%D8%AF%D9%8A%D9%86"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677281286"
class="img-fluid" loading="lazy" alt="Mai Ezz El Din"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> Mai Ezz El Din </h6>
<h6 class="iq-title">Actor</h6>
</div>
</a>
</li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 4">
<a
href="https://rotana.net/en/actor-details/6148/%D9%87%D8%A8%D9%87-%D8%A7%D9%84%D8%B3%D9%8A%D8%B3%D9%8A" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677266249?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="Heba El Sisi">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
Heba El Sisi
</h6>
<h6 class="iq-title">Actor</h6>
</div>
</div>
</a></li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 4"><a
href="https://rotana.net/en/actor-details/1393/%D8%B3%D9%85%D9%8A%D8%A9-%D8%A7%D9%84%D8%AE%D8%B4%D8%A7%D8%A8"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677290429"
class="img-fluid" loading="lazy" alt="Somaya El Khashab"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> Somaya El Khashab </h6>
<h6 class="iq-title">Singer</h6>
</div>
</a>
</li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 5">
<a
href="https://rotana.net/en/actor-details/2589/%D8%B9%D9%84%D9%8A-%D8%AD%D8%B3%D9%86%D9%8A%D9%86" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677253689?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="Ali Hassanein">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
Ali Hassanein
</h6>
<h6 class="iq-title">Actor</h6>
</div>
</div>
</a></li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 5"><a
href="https://rotana.net/en/actor-details/2358/%D9%87%D8%B4%D8%A7%D9%85-%D8%B3%D9%84%D9%8A%D9%85"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677266419"
class="img-fluid" loading="lazy" alt="Hesham Selim"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> Hesham Selim </h6>
<h6 class="iq-title">Actor</h6>
</div>
</a>
</li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 6">
<a
href="https://rotana.net/en/actor-details/987/%D9%85%D8%AD%D9%85%D8%AF-%D9%88%D9%81%D9%8A%D9%82" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677278771?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="Mohammad Wafik">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
Mohammad Wafik
</h6>
<h6 class="iq-title">Actor</h6>
</div>
</div>
</a></li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 6"><a
href="https://rotana.net/en/actor-details/2807/%D8%B3%D8%A7%D9%85%D8%AD-%D8%A7%D9%84%D8%B5%D8%B1%D9%8A%D8%B7%D9%8A"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677288796"
class="img-fluid" loading="lazy" alt="Sameh El-Sereety"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> Sameh El-Sereety </h6>
<h6 class="iq-title">Actor</h6>
</div>
</a>
</li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 7">
<a
href="https://rotana.net/en/actor-details/1035/%D8%AD%D8%B3%D9%86-%D8%B9%D8%A8%D8%AF%D8%A7%D9%84%D9%81%D8%AA%D8%A7%D8%AD" target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677264953?w=165&amp;fit=max"
class="img-fluid" loading="lazy" alt="Hassan Abdulfattah">
</div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title">
Hassan Abdulfattah
</h6>
<h6 class="iq-title">Actor</h6>
</div>
</div>
</a></li>
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 7"><a
href="https://rotana.net/en/actor-details/1210/%D8%B9%D9%85%D8%B1%D9%88-%D8%B3%D8%B9%D8%AF"
target="_blank">
<div class="block-images position-relative watchlist-first">
<div class="img-box"><img
src="https://s3.eu-central-1.amazonaws.com/rotana.website/elcinema_persons/1677253966"
class="img-fluid" loading="lazy" alt="Amr Saad"></div>
<div
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
<h6 class="iq-title"> Amr Saad </h6>
<h6 class="iq-title">Actor</h6>
</div>
</a>
</li>
</div>
</a></li>
</ul>
</div>
</div>
</div>
</div>

View file

@ -10,6 +10,9 @@ dayjs.extend(timezone)
dayjs.extend(utc)
dayjs.extend(customParseFormat)
const tz = 'Asia/Riyadh'
const nworker = 25
const headers = {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 OPR/104.0.0.0'
@ -33,11 +36,33 @@ module.exports = {
}
const items = parseItems(content, date)
for (const item of items) {
const program = await parseProgram(item, channel)
if (program) {
programs.push(program)
if (items.length) {
const workers = []
const n = Math.min(nworker, items.length)
while (workers.length < n) {
const worker = () => {
if (items.length) {
const item = items.shift()
parseProgram(item, channel)
.then(() => {
programs.push(item)
worker()
})
} else {
workers.splice(workers.indexOf(worker), 1)
}
}
workers.push(worker)
worker()
}
await new Promise(resolve => {
const interval = setInterval(() => {
if (workers.length === 0) {
clearInterval(interval)
resolve()
}
}, 500)
})
}
return programs
@ -58,85 +83,116 @@ module.exports = {
}
}
async function parseProgram(item, channel, options = {}) {
options = options || {}
const deep = options.deep !== undefined ? options.deep : true
const raw = options.raw !== undefined ? options.raw : false
const top = item.find('.iq-accordion-block')
const info = top.find('.iq-accordion-title .big-title span')
if (info.length) {
const [time, title] = info.text().split('\n')
const [d, m, y] = item._date.split('-')
const start = dayjs.tz(`${y}-${m}-${d} ${time.trim()}`, 'YYYY-MM-DD HH:mm', 'Asia/Riyadh')
let description, image, stop
if (deep) {
const pid = top.attr('id').split('-')[1]
if (pid) {
const url = `https://rotana.net/${channel.lang}/streams?channel=${channel.site_id}&itemId=${pid}`
const params = {
headers: Object.assign({}, headers, { 'X-Requested-With': 'XMLHttpRequest' }),
Cookie: cookies[channel.lang]
}
debug(`fetching description ${url}`)
const result = await axios
.get(url, params)
.then(response => response.data)
.catch(console.error)
async function parseProgram(item, channel) {
if (item.program) {
const url = `https://rotana.net/${channel.lang}/streams?channel=${channel.site_id}&itemId=${item.program}`
const params = {
headers: Object.assign({}, headers, { 'X-Requested-With': 'XMLHttpRequest' }),
Cookie: cookies[channel.lang]
}
debug(`fetching description ${url}`)
const result = await axios
.get(url, params)
.then(response => response.data)
.catch(console.error)
const $ = cheerio.load(result)
const details = $('.trending-info div > span')
if (details.length) {
description = details.text().split('\n')[3].trim()
}
const img = $('.row > div > img')
if (img.length) {
image = img.attr('src')
}
}
if (item._next) {
const next = await parseProgram(item._next, channel, { deep: false, raw: true })
if (next.start) {
stop = next.start
const $ = cheerio.load(result)
const details = $('.trending-info .row div > span')
if (details.length) {
for (const el of details[0].children) {
switch (el.constructor.name) {
case 'Text':
if (item.description === undefined) {
const desc = $(el).text().trim()
if (desc) {
item.description = desc
}
}
break;
case 'Element':
if (el.name === 'span') {
const [k, v] = $(el).text().split(':').map(a => a.trim())
switch (k) {
case 'Category':
case 'التصنيف':
item.category = v;
break;
case 'Country':
case 'البلد':
item.country = v;
break;
case 'Director':
case 'المخرج':
item.director = v;
break;
case 'Language':
case 'اللغة':
item.language = v;
break;
case 'Release Year':
case 'سنة الإصدار':
item.date = v;
break;
}
}
break;
}
}
}
return {
title: title?.trim(),
description: description?.trim(),
image,
start: raw ? start : start?.toISOString(),
stop: raw ? stop : stop?.toISOString()
const img = $('.row > div > img')
if (img.length) {
item.image = img.attr('src')
}
delete item.program
}
}
function parseItems(content, date) {
const result = []
const $ = cheerio.load(content)
const expectedId = `item-${date.format('DD-MM-YYYY')}`
let lastId
const items = []
let curDate
$('.hour > div').each((_, item) => {
const $item = $(item)
if ($item.hasClass('bg')) {
lastId = $item.attr('id')
curDate = $item.attr('id')
curDate = curDate.substr(curDate.indexOf('-') + 1).split('-')
} else if ($item.hasClass('iq-accordion')) {
$item._date = lastId.substr(lastId.indexOf('-') + 1)
// is date match?
if (lastId === expectedId) {
// set next item
if (result.length) {
result[result.length - 1]._next = $item
}
result.push($item)
} else if (result.length && !result[result.length - 1]._next) {
// set next item
result[result.length - 1]._next = $item
const top = $item.find('.iq-accordion-block')
const heading = top.find('.iq-accordion-title .big-title')
if (heading.length) {
const progId = top.attr('id')
const title = heading.find('span:eq(1)').text()
.split('\n')
.map(a => a.trim())
.join(' ')
const time = heading.find('span:eq(0)').text()
const [d, m, y] = curDate
items.push({
program: progId.substr(progId.indexOf('-') + 1),
title: title ? title.trim() : title,
start: `${y}-${m}-${d} ${time.trim()}`,
})
}
}
})
return result
items.sort((a, b) => a.start.localeCompare(b.start))
for (let i = 0; i < items.length; i++) {
if (i < items.length - 2) {
items[i].stop = items[i + 1].start
} else {
const dt = dayjs.tz(items[i].start).add(1, 'd')
items[i].stop = `${dt.format('YYYY-MM-DD')} 00:00`
}
}
const expectedDate = `${date.format('YYYY-MM-DD')}`
return items
.filter(a => a.start.startsWith(expectedDate) || a.stop.startsWith(expectedDate))
.map(a => {
a.start = dayjs.tz(a.start, tz)
a.stop = dayjs.tz(a.stop, tz)
return a
})
}
function parseCookies(headers) {

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: 'فيلم'
})
})

View file

@ -3,11 +3,8 @@
<channel site="rotana.net" lang="ar" xmltv_id="" site_id="432">روتانا أتش دي</channel>
<channel site="rotana.net" lang="ar" xmltv_id="" site_id="433">روتانا سينما فرنسا</channel>
<channel site="rotana.net" lang="ar" xmltv_id="AlResalah.sa" site_id="446">الرساله</channel>
<channel site="rotana.net" lang="ar" xmltv_id="AlResalahInternational.sa" site_id="449">قناة رسالة الدولية</channel>
<channel site="rotana.net" lang="ar" xmltv_id="DahkwaBass.sa" site_id="447">ضحك وبس</channel>
<channel site="rotana.net" lang="ar" xmltv_id="LBC.sa" site_id="434">إل بي سي</channel>
<channel site="rotana.net" lang="ar" xmltv_id="MPlusHD.sa" site_id="445">M+ HD</channel>
<channel site="rotana.net" lang="ar" xmltv_id="Romance.sa" site_id="450">رومانس</channel>
<channel site="rotana.net" lang="ar" xmltv_id="RotanaAflam.sa" site_id="440">روتانا أفلام</channel>
<channel site="rotana.net" lang="ar" xmltv_id="RotanaAmerica.sa" site_id="442">روتانا أمريكا</channel>
<channel site="rotana.net" lang="ar" xmltv_id="RotanaCinemaEgypt.eg" site_id="439">روتانا سينما مصر</channel>
@ -19,5 +16,4 @@
<channel site="rotana.net" lang="ar" xmltv_id="RotanaKhalijia.sa" site_id="435">روتانا خليجية</channel>
<channel site="rotana.net" lang="ar" xmltv_id="RotanaKids.sa" site_id="441">روتانا كيدز</channel>
<channel site="rotana.net" lang="ar" xmltv_id="RotanaMusic.sa" site_id="444">روتانا موسيقي</channel>
<channel site="rotana.net" lang="ar" xmltv_id="SayedatAlshasha.sa" site_id="448">سيدة الشاشة</channel>
</channels>

View file

@ -3,11 +3,8 @@
<channel site="rotana.net" lang="en" xmltv_id="" site_id="432">Rotana HD</channel>
<channel site="rotana.net" lang="en" xmltv_id="" site_id="433">Rotana Cinema France</channel>
<channel site="rotana.net" lang="en" xmltv_id="AlResalah.sa" site_id="446">Al Resalah</channel>
<channel site="rotana.net" lang="en" xmltv_id="AlResalahInternational.sa" site_id="449">Al Resalah International</channel>
<channel site="rotana.net" lang="en" xmltv_id="DahkwaBass.sa" site_id="447">Dahk wa Bass</channel>
<channel site="rotana.net" lang="en" xmltv_id="LBC.sa" site_id="434">LBC</channel>
<channel site="rotana.net" lang="en" xmltv_id="MPlusHD.sa" site_id="445">M+ HD</channel>
<channel site="rotana.net" lang="en" xmltv_id="Romance.sa" site_id="450">Romance</channel>
<channel site="rotana.net" lang="en" xmltv_id="RotanaAflam.sa" site_id="440">Rotana Aflam</channel>
<channel site="rotana.net" lang="en" xmltv_id="RotanaAmerica.sa" site_id="442">Rotana USA</channel>
<channel site="rotana.net" lang="en" xmltv_id="RotanaCinemaEgypt.eg" site_id="439">Rotana Cinema Masr</channel>
@ -19,5 +16,4 @@
<channel site="rotana.net" lang="en" xmltv_id="RotanaKhalijia.sa" site_id="435">Rotana Khalijea HD</channel>
<channel site="rotana.net" lang="en" xmltv_id="RotanaKids.sa" site_id="441">Rotana Kids</channel>
<channel site="rotana.net" lang="en" xmltv_id="RotanaMusic.sa" site_id="444">Rotana Music</channel>
<channel site="rotana.net" lang="en" xmltv_id="SayedatAlshasha.sa" site_id="448">Sayedat Alshasha</channel>
</channels>