Merge pull request #2277 from tohenk/fix/rotana.net

Update rotana.net guide.
This commit is contained in:
Aleksandr Statciuk 2023-12-11 19:02:42 +03:00 committed by GitHub
commit 99ae79c9b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 707 additions and 466 deletions

View file

@ -1,203 +1,51 @@
<div class="hour"> <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" <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"> data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>السبت</span> <span>الأحد</span>
11/11/2023 2023-12-10
</h4> </h4>
</div> </div>
<div class="iq-accordion iq-accordion-square mt-2"> <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" <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"> data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>02:00
<span>00:36
</span> </span>
<span>حريم كريم</span>
<span>كتكوت</span>
</h5> </h5>
</div> </div>
<div class="iq-accordion-details" id="" style="display: none;">
<div class="row"> <div class="iq-accordion-details" style="display: none;">
<div class="col-lg-6 col-md-12 col-sm-12 ">
<img src="https://imgsrv.rotana.net/spider_storage/1398X1000/1686579733?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>
</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>
</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">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677279797?w=165&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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> </div>
</div> </div>
</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)">
<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>
</h5>
</div>
<div class="iq-accordion-details" style="display: none;">
</div>
</div>
</div> </div>
</div> </div>

View file

@ -1,203 +1,51 @@
<div class="hour"> <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" <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"> data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>Saturday</span> <span>Sunday</span>
11/11/2023 2023-12-10
</h4> </h4>
</div> </div>
<div class="iq-accordion iq-accordion-square mt-2"> <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" <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"> data-delay-in="0.6" style="opacity: 1; animation-delay: 0.6s">
<span>02:00
<span>00:36
</span> </span>
<span>Harim Karim</span>
<span>Katkout</span>
</h5> </h5>
</div> </div>
<div class="iq-accordion-details" id="" style="display: none;">
<div class="row"> <div class="iq-accordion-details" style="display: none;">
<div class="col-lg-6 col-md-12 col-sm-12 ">
<img src="https://imgsrv.rotana.net/spider_storage/1398X1000/1686579733?w=450&amp;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>
</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">
<div class="block-images position-relative watchlist-first">
<div class="img-box">
<img src="https://imgsrv.rotana.net/elcinema_persons/1677279797?w=165&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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> </div>
</div> </div>
</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)">
<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;">
</div>
</div>
</div> </div>
</div> </div>

View 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&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>
</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&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/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 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 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 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 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>
</ul>
</div>
</div>
</div>

View 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&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
</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&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>
</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 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 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 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 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>
</ul>
</div>
</div>
</div>

View file

@ -1,8 +1,10 @@
const axios = require('axios')
const cheerio = require('cheerio') const cheerio = require('cheerio')
const dayjs = require('dayjs') const dayjs = require('dayjs')
const timezone = require('dayjs/plugin/timezone') const timezone = require('dayjs/plugin/timezone')
const utc = require('dayjs/plugin/utc') const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat') const customParseFormat = require('dayjs/plugin/customParseFormat')
const debug = require('debug')('site:rotana.net')
dayjs.extend(timezone) dayjs.extend(timezone)
dayjs.extend(utc) dayjs.extend(utc)
@ -11,80 +13,100 @@ dayjs.extend(customParseFormat)
const headers = { 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' '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 = { module.exports = {
site: 'rotana.net', site: 'rotana.net',
days: 2, days: 2,
url({ channel }) { 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: { request: {
headers, headers,
timeout: 15000 timeout: 15000
}, },
parser({ content, date }) { async parser({ content, headers, channel, date }) {
const programs = [] const programs = []
if (!cookies[channel.lang]) {
cookies[channel.lang] = parseCookies(headers)
}
const items = parseItems(content, date) const items = parseItems(content, date)
items.forEach(item => { for (const item of items) {
const info = item.find('.iq-accordion-block > .iq-accordion-title .big-title span') const program = await parseProgram(item, channel)
if (info.length) { if (program) {
const details = item.find('.trending-info div > span') programs.push(program)
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()
})
}
} }
}) }
return programs return programs
}, },
async channels({ lang = 'en'}) { async channels({ lang = 'en' }) {
const axios = require('axios')
const options = {headers}
const result = await axios const result = await axios
.get(`https://rotana.net/${lang}/streams`, options) .get(`https://rotana.net/api/channels`)
.then(response => response.data) .then(response => response.data)
.catch(console.error) .catch(console.error)
const $ = cheerio.load(result) return result.data.map(item => {
const items = $('#channels-list a').toArray() return {
const channels = items.map(item => { lang,
const $item = $(item) site_id: item.id,
const data = $item.attr('href').match(/channel=([A-Za-z0-9]+)/) name: item.name[lang]
}
return { })
lang, }
site_id: data[1],
name: $item.text().trim()
}
})
return channels
}
} }
function addDuration(date, duration) { async function parseProgram(item, channel, options = {}) {
const matches = duration.matchAll(/(\d+)(h|m|s|ms)/g) options = options || {}
while (true) { const deep = options.deep !== undefined ? options.deep : true
const m = matches.next() const raw = options.raw !== undefined ? options.raw : false
if (!m.value) { const top = item.find('.iq-accordion-block')
break 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 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
}
}
} }
if (m.value[1] && m.value[2]) { return {
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) { function parseItems(content, date) {
@ -93,14 +115,35 @@ function parseItems(content, date) {
const expectedId = `item-${date.format('DD-MM-YYYY')}` const expectedId = `item-${date.format('DD-MM-YYYY')}`
let lastId let lastId
$('.hour > div').toArray().forEach(item => { $('.hour > div').each((_, item) => {
const $item = $(item) const $item = $(item)
if ($item.hasClass('bg')) { if ($item.hasClass('bg')) {
lastId = $item.attr('id') lastId = $item.attr('id')
} else if ($item.hasClass('iq-accordion') && lastId === expectedId) { } else if ($item.hasClass('iq-accordion')) {
result.push($item) $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 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
}

View file

@ -1,4 +1,7 @@
const { parser, url, request } = require('./rotana.net.config.js') 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 dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc') const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat') const customParseFormat = require('dayjs/plugin/customParseFormat')
@ -6,17 +9,30 @@ const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat) dayjs.extend(customParseFormat)
dayjs.extend(utc) 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 = { const channel = {
lang: 'en', lang: 'en',
site_id: '439', site_id: '439',
xmltv_id: 'RotanaCinemaMasr.sa' xmltv_id: 'RotanaCinemaMasr.sa'
} }
const channelAr = { const channelAr = Object.assign({}, channel, { lang: 'ar' })
lang: 'ar',
site_id: '439', axios.get.mockImplementation((url, opts) => {
xmltv_id: 'RotanaCinemaMasr.sa' 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', () => { it('can use defined user agent', () => {
const result = request.headers['User-Agent'] const result = request.headers['User-Agent']
@ -27,56 +43,48 @@ it('can use defined user agent', () => {
it('can generate valid english url', () => { it('can generate valid english url', () => {
const result = url({ channel, date }) 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', () => { it('can generate valid arabic url', () => {
const result = url({ channel: channelAr, date }) 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', () => { it('can parse english response', async () => {
const fs = require('fs') const result = await parser({
const path = require('path')
const result = parser({
channel, channel,
date, date,
content: fs.readFileSync(path.join(__dirname, '/__data__/content_en.html')) content: fs.readFileSync(path.join(__dirname, '/__data__/content_en.html'))
}) })
expect(result).toMatchObject([ expect(result[0]).toMatchObject({
{ start: '2023-12-09T21:36:00.000Z',
start: '2023-11-10T23:00:00.000Z', stop: '2023-12-09T23:46:00.000Z',
stop: '2023-11-11T01:00:00.000Z', title: 'Katkout',
title: 'Harim Karim', description:
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...',
'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...' icon: 'https://imgsrv.rotana.net/spider_storage/1398X1000/1690882129.webp?w=450&fit=max'
} })
])
}) })
it('can parse arabic response', () => { it('can parse arabic response', async () => {
const fs = require('fs') const result = await parser({
const path = require('path') channel: channelAr,
const result = parser({
channelAr,
date, date,
content: fs.readFileSync(path.join(__dirname, '/__data__/content_ar.html')) content: fs.readFileSync(path.join(__dirname, '/__data__/content_ar.html'))
}) })
expect(result).toMatchObject([ expect(result[0]).toMatchObject({
{ start: '2023-12-09T21:36:00.000Z',
start: '2023-11-10T23:00:00.000Z', stop: '2023-12-09T23:46:00.000Z',
stop: '2023-11-11T01:00:00.000Z', title: 'كتكوت',
title: 'حريم كريم', description:
description: 'في إطار كوميدي تدور أحداث الفيلم، حول (كتكوت) الصعيدي الذي تحاول عمته كبيرة العائلة الصعيدية إجباره على تقديم نفسه للقتل ليفدي عائلته، ولكنه يهرب وتخطفه جهة أمنية لاكتشاف شبه كبير بينه وبين (يوسف خوري...',
'كريم وجيهان ينفصلا بعد عام من الزواج بسبب اكتشافها لخيانته في منزلها، يحاول كريم استعادة زوجته، لكنها ترفض، فيتصل كريم بزميلته القديمة مها، لتساعده، لكن متاعب تحدث بين مها وزوجها، فتأتي لتعيش مع كريم،...' icon: 'https://imgsrv.rotana.net/spider_storage/1398X1000/1690882129.webp?w=450&fit=max'
} })
])
}) })
it('can handle empty guide', () => { it('can handle empty guide', async () => {
const result = parser({ const result = await parser({
content: '<!DOCTYPE html><html><head></head><body></body></html>', content: '<!DOCTYPE html><html><head></head><body></body></html>',
date, date,
channel channel

View file

@ -1,10 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<channels> <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="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="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="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="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="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="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="RotanaCinemaKSA.sa" site_id="431">روتانا سينما السعودية</channel>
<channel site="rotana.net" lang="ar" xmltv_id="RotanaClassic.sa" site_id="438">روتانا كلاسيك</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="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="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="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> <channel site="rotana.net" lang="ar" xmltv_id="SayedatAlshasha.sa" site_id="448">سيدة الشاشة</channel>
</channels> </channels>

View file

@ -1,10 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<channels> <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="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="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="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="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="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="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="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> <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="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="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="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> <channel site="rotana.net" lang="en" xmltv_id="SayedatAlshasha.sa" site_id="448">Sayedat Alshasha</channel>
</channels> </channels>