mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 00:50:09 -04:00
Merge pull request #2277 from tohenk/fix/rotana.net
Update rotana.net guide.
This commit is contained in:
commit
99ae79c9b1
8 changed files with 707 additions and 466 deletions
|
@ -1,203 +1,51 @@
|
|||
<div class="hour">
|
||||
<div class="bg" id="item-11-11-2023">
|
||||
<div class="bg" id="item-10-12-2023">
|
||||
|
||||
<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>
|
||||
11/11/2023
|
||||
<span>الأحد</span>
|
||||
2023-12-10
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
<div class="iq-accordion iq-accordion-square mt-2">
|
||||
<div class="iq-accordion-block ">
|
||||
<div class="iq-accordion-title">
|
||||
|
||||
<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>02:00
|
||||
|
||||
<span>00:36
|
||||
</span>
|
||||
<span>حريم كريم</span>
|
||||
|
||||
<span>كتكوت</span>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="iq-accordion-details" id="" style="display: none;">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-12 col-sm-12 ">
|
||||
<img src="https://imgsrv.rotana.net/spider_storage/1398X1000/1686579733?w=450&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>
|
||||
</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',1699653600,1699660800); showCatchUpStatus();">
|
||||
<i class="ri-tv-line"></i>
|
||||
الأرشيف
|
||||
</button>
|
||||
</div>
|
||||
<br>
|
||||
<span>
|
||||
<p><strong>2h</strong></p>
|
||||
كريم وجيهان ينفصلا بعد عام من الزواج بسبب اكتشافها لخيانته في منزلها، يحاول كريم استعادة زوجته، لكنها ترفض، فيتصل كريم بزميلته القديمة مها، لتساعده، لكن متاعب تحدث بين مها وزوجها، فتأتي لتعيش مع كريم،...
|
||||
<br><br>
|
||||
<span> البلد
|
||||
:
|
||||
مصر
|
||||
</span>
|
||||
<br>
|
||||
<span> سنة الإصدار
|
||||
:
|
||||
2005
|
||||
</span>
|
||||
<br>
|
||||
<span> التصنيف
|
||||
:
|
||||
فيلم
|
||||
</span>
|
||||
<br>
|
||||
<span> اللغة
|
||||
:
|
||||
عربي
|
||||
</span>
|
||||
<br>
|
||||
<br>
|
||||
</span>
|
||||
|
||||
<div class="iq-accordion-details" style="display: none;">
|
||||
</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"
|
||||
<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)">
|
||||
|
||||
<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>طاقم العمل</span>
|
||||
|
||||
<span>02:46
|
||||
</span>
|
||||
|
||||
<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">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677279797?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="مصطفى قمر">
|
||||
</div>
|
||||
<a href="https://rotana.net/ar/actor-details/1065773">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
مصطفى قمر
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 3">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677296222?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="ياسمين عبدالعزيز">
|
||||
</div>
|
||||
<a href="https://rotana.net/ar/actor-details/1073676">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
ياسمين عبدالعزيز
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 4">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677257989?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="داليا البحيري">
|
||||
</div>
|
||||
<a href="https://rotana.net/ar/actor-details/1070026">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
داليا البحيري
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 5">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677255054?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="بسمة">
|
||||
</div>
|
||||
<a href="https://rotana.net/ar/actor-details/1039904">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
بسمة
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 6">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677284150?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="علا غانم">
|
||||
</div>
|
||||
<a href="https://rotana.net/ar/actor-details/1074816">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
علا غانم
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 7">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677288303?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="ريهام عبدالغفور">
|
||||
</div>
|
||||
<a href="https://rotana.net/ar/actor-details/1077680">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
ريهام عبدالغفور
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="iq-accordion-details" style="display: none;">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
|
@ -1,203 +1,51 @@
|
|||
<div class="hour">
|
||||
<div class="bg" id="item-11-11-2023">
|
||||
<div class="bg" id="item-10-12-2023">
|
||||
|
||||
<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>Saturday</span>
|
||||
11/11/2023
|
||||
<span>Sunday</span>
|
||||
2023-12-10
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
<div class="iq-accordion iq-accordion-square mt-2">
|
||||
<div class="iq-accordion-block ">
|
||||
<div class="iq-accordion-title">
|
||||
|
||||
<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>02:00
|
||||
|
||||
<span>00:36
|
||||
</span>
|
||||
<span>Harim Karim</span>
|
||||
|
||||
<span>Katkout</span>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="iq-accordion-details" id="" style="display: none;">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-12 col-sm-12 ">
|
||||
<img src="https://imgsrv.rotana.net/spider_storage/1398X1000/1686579733?w=450&fit=max"
|
||||
loading="lazy" alt="1">
|
||||
</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">
|
||||
Harim Karim
|
||||
</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="#">Comedy
|
||||
</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',1699653600,1699660800); showCatchUpStatus();">
|
||||
<i class="ri-tv-line"></i>
|
||||
Catch up
|
||||
</button>
|
||||
</div>
|
||||
<br>
|
||||
<span>
|
||||
<p><strong>2h</strong></p>
|
||||
Karim and Jihan separate after a year of marriage due to her discovering his betrayal in her home. Karim tries to get his wife back, but she refuses. Karim calls his old colleague Maha to help him. Ho...
|
||||
<br><br>
|
||||
<span> Country
|
||||
:
|
||||
Egypt
|
||||
</span>
|
||||
<br>
|
||||
<span> Release Year
|
||||
:
|
||||
2005
|
||||
</span>
|
||||
<br>
|
||||
<span> Category
|
||||
:
|
||||
Movie
|
||||
</span>
|
||||
<br>
|
||||
<span> Language
|
||||
:
|
||||
Arabic
|
||||
</span>
|
||||
<br>
|
||||
<br>
|
||||
</span>
|
||||
|
||||
<div class="iq-accordion-details" style="display: none;">
|
||||
</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"
|
||||
<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)">
|
||||
|
||||
<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>Cast</span>
|
||||
|
||||
<span>02:46
|
||||
</span>
|
||||
|
||||
<span>Gunshot</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">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677279797?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="Mostafa Amar">
|
||||
</div>
|
||||
<a href="https://rotana.net/en/actor-details/1065773">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
Mostafa Amar
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 3">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677296222?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="Yasmin Abdulaziz">
|
||||
</div>
|
||||
<a href="https://rotana.net/en/actor-details/1073676">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
Yasmin Abdulaziz
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 4">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677257989?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="Dalia Al Beheri">
|
||||
</div>
|
||||
<a href="https://rotana.net/en/actor-details/1070026">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
Dalia Al Beheri
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 5">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677255054?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="Basma">
|
||||
</div>
|
||||
<a href="https://rotana.net/en/actor-details/1039904">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
Basma
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 6">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677284150?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="Ola Ghanem">
|
||||
</div>
|
||||
<a href="https://rotana.net/en/actor-details/1074816">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
Ola Ghanem
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="slide-item col-6 col-lg-2 col-md-4 col-sm-6 col-xs-6 7">
|
||||
<div class="block-images position-relative watchlist-first">
|
||||
<div class="img-box">
|
||||
<img src="https://imgsrv.rotana.net/elcinema_persons/1677288303?w=165&fit=max"
|
||||
class="img-fluid" loading="lazy" alt="Riham Abdulghafour">
|
||||
</div>
|
||||
<a href="https://rotana.net/en/actor-details/1077680">
|
||||
<div
|
||||
class="block-description d-flex justify-content-center flex-column text-center cast-small-title">
|
||||
<h6 class="iq-title">
|
||||
Riham Abdulghafour
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="iq-accordion-details" style="display: none;">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
240
sites/rotana.net/__data__/program_ar.html
Normal file
240
sites/rotana.net/__data__/program_ar.html
Normal file
|
@ -0,0 +1,240 @@
|
|||
<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&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>
|
||||
|
||||
</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>
|
||||
<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>
|
||||
</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&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/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&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/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&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/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&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/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&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/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&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>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
240
sites/rotana.net/__data__/program_en.html
Normal file
240
sites/rotana.net/__data__/program_en.html
Normal file
|
@ -0,0 +1,240 @@
|
|||
<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&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
|
||||
</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>
|
||||
<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>
|
||||
</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&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>
|
||||
</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&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 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&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 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&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 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&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 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&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>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
|
@ -1,8 +1,10 @@
|
|||
const axios = require('axios')
|
||||
const cheerio = require('cheerio')
|
||||
const dayjs = require('dayjs')
|
||||
const timezone = require('dayjs/plugin/timezone')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||
const debug = require('debug')('site:rotana.net')
|
||||
|
||||
dayjs.extend(timezone)
|
||||
dayjs.extend(utc)
|
||||
|
@ -11,80 +13,100 @@ dayjs.extend(customParseFormat)
|
|||
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'
|
||||
}
|
||||
const cookies = {}
|
||||
|
||||
module.exports = {
|
||||
site: 'rotana.net',
|
||||
days: 2,
|
||||
url({ channel }) {
|
||||
return `https://rotana.net/${channel.lang}/streams?channel=${channel.site_id}`
|
||||
return `https://rotana.net/${channel.lang}/streams?channel=${channel.site_id}&tz=`
|
||||
},
|
||||
request: {
|
||||
headers,
|
||||
timeout: 15000
|
||||
},
|
||||
parser({ content, date }) {
|
||||
async parser({ content, headers, channel, date }) {
|
||||
const programs = []
|
||||
if (!cookies[channel.lang]) {
|
||||
cookies[channel.lang] = parseCookies(headers)
|
||||
}
|
||||
|
||||
const items = parseItems(content, date)
|
||||
items.forEach(item => {
|
||||
const info = item.find('.iq-accordion-block > .iq-accordion-title .big-title span')
|
||||
if (info.length) {
|
||||
const details = item.find('.trending-info div > span')
|
||||
const [ time, title ] = info.text().split('\n')
|
||||
const [ _, duration, description ] = details.text().split('\n')
|
||||
if (duration) {
|
||||
const start = dayjs.tz(`${date.format('YYYY-MM-DD')} ${time.trim()}`, 'YYYY-MM-DD HH:mm', 'Asia/Riyadh')
|
||||
const stop = addDuration(start, duration.trim())
|
||||
|
||||
programs.push({
|
||||
title: title.trim(),
|
||||
description: description.trim(),
|
||||
start: start.toISOString(),
|
||||
stop: stop.toISOString()
|
||||
})
|
||||
for (const item of items) {
|
||||
const program = await parseProgram(item, channel)
|
||||
if (program) {
|
||||
programs.push(program)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return programs
|
||||
},
|
||||
async channels({ lang = 'en'}) {
|
||||
const axios = require('axios')
|
||||
const options = {headers}
|
||||
async channels({ lang = 'en' }) {
|
||||
const result = await axios
|
||||
.get(`https://rotana.net/${lang}/streams`, options)
|
||||
.get(`https://rotana.net/api/channels`)
|
||||
.then(response => response.data)
|
||||
.catch(console.error)
|
||||
|
||||
return result.data.map(item => {
|
||||
return {
|
||||
lang,
|
||||
site_id: item.id,
|
||||
name: item.name[lang]
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
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, icon, 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)
|
||||
|
||||
const $ = cheerio.load(result)
|
||||
const items = $('#channels-list a').toArray()
|
||||
const channels = items.map(item => {
|
||||
const $item = $(item)
|
||||
const data = $item.attr('href').match(/channel=([A-Za-z0-9]+)/)
|
||||
|
||||
const details = $('.trending-info div > span')
|
||||
if (details.length) {
|
||||
description = details.text().split('\n')[3].trim()
|
||||
}
|
||||
const img = $('.row > div > img')
|
||||
if (img.length) {
|
||||
icon = img.attr('src')
|
||||
}
|
||||
}
|
||||
if (item._next) {
|
||||
const next = await parseProgram(item._next, channel, { deep: false, raw: true })
|
||||
if (next.start) {
|
||||
stop = next.start
|
||||
}
|
||||
}
|
||||
}
|
||||
return {
|
||||
lang,
|
||||
site_id: data[1],
|
||||
name: $item.text().trim()
|
||||
}
|
||||
})
|
||||
|
||||
return channels
|
||||
}
|
||||
}
|
||||
|
||||
function addDuration(date, duration) {
|
||||
const matches = duration.matchAll(/(\d+)(h|m|s|ms)/g)
|
||||
while (true) {
|
||||
const m = matches.next()
|
||||
if (!m.value) {
|
||||
break
|
||||
}
|
||||
if (m.value[1] && m.value[2]) {
|
||||
date = date.add(parseInt(m.value[1]), m.value[2])
|
||||
title: title?.trim(),
|
||||
description: description?.trim(),
|
||||
icon: icon,
|
||||
start: raw ? start : start?.toISOString(),
|
||||
stop: raw ? stop : stop?.toISOString()
|
||||
}
|
||||
}
|
||||
return date
|
||||
}
|
||||
|
||||
function parseItems(content, date) {
|
||||
|
@ -93,14 +115,35 @@ function parseItems(content, date) {
|
|||
|
||||
const expectedId = `item-${date.format('DD-MM-YYYY')}`
|
||||
let lastId
|
||||
$('.hour > div').toArray().forEach(item => {
|
||||
$('.hour > div').each((_, item) => {
|
||||
const $item = $(item)
|
||||
if ($item.hasClass('bg')) {
|
||||
lastId = $item.attr('id')
|
||||
} else if ($item.hasClass('iq-accordion') && lastId === expectedId) {
|
||||
} 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
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
function parseCookies(headers) {
|
||||
const cookies = []
|
||||
if (headers && Array.isArray(headers['set-cookie'])) {
|
||||
headers['set-cookie'].forEach(cookie => {
|
||||
cookies.push(cookie.split('; ')[0])
|
||||
})
|
||||
}
|
||||
return cookies.length ? cookies.join('; ') : null
|
||||
}
|
|
@ -1,4 +1,7 @@
|
|||
const { parser, url, request } = require('./rotana.net.config.js')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const axios = require('axios')
|
||||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||
|
@ -6,17 +9,30 @@ const customParseFormat = require('dayjs/plugin/customParseFormat')
|
|||
dayjs.extend(customParseFormat)
|
||||
dayjs.extend(utc)
|
||||
|
||||
const date = dayjs.utc('2023-11-11').startOf('d')
|
||||
jest.mock('axios')
|
||||
|
||||
const date = dayjs.utc('2023-12-10').startOf('d')
|
||||
const channel = {
|
||||
lang: 'en',
|
||||
site_id: '439',
|
||||
xmltv_id: 'RotanaCinemaMasr.sa'
|
||||
}
|
||||
const channelAr = {
|
||||
lang: 'ar',
|
||||
site_id: '439',
|
||||
xmltv_id: 'RotanaCinemaMasr.sa'
|
||||
}
|
||||
const channelAr = Object.assign({}, channel, { lang: 'ar' })
|
||||
|
||||
axios.get.mockImplementation((url, opts) => {
|
||||
if (url === 'https://rotana.net/en/streams?channel=439&itemId=239849') {
|
||||
return Promise.resolve({
|
||||
data: fs.readFileSync(path.resolve(__dirname, '__data__/program_en.html'))
|
||||
})
|
||||
}
|
||||
if (url === 'https://rotana.net/ar/streams?channel=439&itemId=239849') {
|
||||
return Promise.resolve({
|
||||
data: fs.readFileSync(path.resolve(__dirname, '__data__/program_ar.html'))
|
||||
})
|
||||
}
|
||||
|
||||
return Promise.resolve({ data: '' })
|
||||
})
|
||||
|
||||
it('can use defined user agent', () => {
|
||||
const result = request.headers['User-Agent']
|
||||
|
@ -27,56 +43,48 @@ it('can use defined user agent', () => {
|
|||
|
||||
it('can generate valid english url', () => {
|
||||
const result = url({ channel, date })
|
||||
expect(result).toBe('https://rotana.net/en/streams?channel=439')
|
||||
expect(result).toBe('https://rotana.net/en/streams?channel=439&tz=')
|
||||
})
|
||||
|
||||
it('can generate valid arabic url', () => {
|
||||
const result = url({ channel: channelAr, date })
|
||||
expect(result).toBe('https://rotana.net/ar/streams?channel=439')
|
||||
expect(result).toBe('https://rotana.net/ar/streams?channel=439&tz=')
|
||||
})
|
||||
|
||||
it('can parse english response', () => {
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const result = parser({
|
||||
it('can parse english response', async () => {
|
||||
const result = await parser({
|
||||
channel,
|
||||
date,
|
||||
content: fs.readFileSync(path.join(__dirname, '/__data__/content_en.html'))
|
||||
})
|
||||
expect(result).toMatchObject([
|
||||
{
|
||||
start: '2023-11-10T23:00:00.000Z',
|
||||
stop: '2023-11-11T01:00:00.000Z',
|
||||
title: 'Harim Karim',
|
||||
expect(result[0]).toMatchObject({
|
||||
start: '2023-12-09T21:36:00.000Z',
|
||||
stop: '2023-12-09T23:46:00.000Z',
|
||||
title: 'Katkout',
|
||||
description:
|
||||
'Karim and Jihan separate after a year of marriage due to her discovering his betrayal in her home. Karim tries to get his wife back, but she refuses. Karim calls his old colleague Maha to help him. Ho...'
|
||||
}
|
||||
])
|
||||
'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...',
|
||||
icon: 'https://imgsrv.rotana.net/spider_storage/1398X1000/1690882129.webp?w=450&fit=max'
|
||||
})
|
||||
})
|
||||
|
||||
it('can parse arabic response', () => {
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const result = parser({
|
||||
channelAr,
|
||||
it('can parse arabic response', async () => {
|
||||
const result = await parser({
|
||||
channel: channelAr,
|
||||
date,
|
||||
content: fs.readFileSync(path.join(__dirname, '/__data__/content_ar.html'))
|
||||
})
|
||||
expect(result).toMatchObject([
|
||||
{
|
||||
start: '2023-11-10T23:00:00.000Z',
|
||||
stop: '2023-11-11T01:00:00.000Z',
|
||||
title: 'حريم كريم',
|
||||
expect(result[0]).toMatchObject({
|
||||
start: '2023-12-09T21:36:00.000Z',
|
||||
stop: '2023-12-09T23:46:00.000Z',
|
||||
title: 'كتكوت',
|
||||
description:
|
||||
'كريم وجيهان ينفصلا بعد عام من الزواج بسبب اكتشافها لخيانته في منزلها، يحاول كريم استعادة زوجته، لكنها ترفض، فيتصل كريم بزميلته القديمة مها، لتساعده، لكن متاعب تحدث بين مها وزوجها، فتأتي لتعيش مع كريم،...'
|
||||
}
|
||||
])
|
||||
'في إطار كوميدي تدور أحداث الفيلم، حول (كتكوت) الصعيدي الذي تحاول عمته كبيرة العائلة الصعيدية إجباره على تقديم نفسه للقتل ليفدي عائلته، ولكنه يهرب وتخطفه جهة أمنية لاكتشاف شبه كبير بينه وبين (يوسف خوري...',
|
||||
icon: 'https://imgsrv.rotana.net/spider_storage/1398X1000/1690882129.webp?w=450&fit=max'
|
||||
})
|
||||
})
|
||||
|
||||
it('can handle empty guide', () => {
|
||||
const result = parser({
|
||||
it('can handle empty guide', async () => {
|
||||
const result = await parser({
|
||||
content: '<!DOCTYPE html><html><head></head><body></body></html>',
|
||||
date,
|
||||
channel
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channels>
|
||||
<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>
|
||||
<channel site="rotana.net" lang="ar" xmltv_id="RotanaCinemaKSA.sa" site_id="431">روتانا سينما السعودية</channel>
|
||||
<channel site="rotana.net" lang="ar" xmltv_id="RotanaClassic.sa" site_id="438">روتانا كلاسيك</channel>
|
||||
|
@ -12,5 +17,7 @@
|
|||
<channel site="rotana.net" lang="ar" xmltv_id="RotanaComedy.sa" site_id="437">روتانا كوميدي</channel>
|
||||
<channel site="rotana.net" lang="ar" xmltv_id="RotanaDrama.sa" site_id="436">روتانا دراما</channel>
|
||||
<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>
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channels>
|
||||
<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>
|
||||
<channel site="rotana.net" lang="en" xmltv_id="RotanaCinemaKSA.sa" site_id="431">Rotana Cinema KSA</channel>
|
||||
<channel site="rotana.net" lang="en" xmltv_id="RotanaClassic.sa" site_id="438">Rotana Classic</channel>
|
||||
|
@ -12,5 +17,7 @@
|
|||
<channel site="rotana.net" lang="en" xmltv_id="RotanaComedy.sa" site_id="437">Rotana Comedy</channel>
|
||||
<channel site="rotana.net" lang="en" xmltv_id="RotanaDrama.sa" site_id="436">Rotana Drama</channel>
|
||||
<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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue