- إنضم
- 29 أوت 2010
- المشاركات
- 2.486
- مستوى التفاعل
- 12.633
سنقوم بشرح بسيط لكيفية اضافة موقع في TSIPLAYER و سيكون على عدة ايام حتى يتمكن من يريد المتابعة و التعلم
سيكون العمل على موقع TukTukCinema
اولا باسم الله
أول شيئ نأخذ ملف جديد يكون فيه هذه الاسطر التي لا بد منها في كل هوسة جديد:
- getinfo هي function لاعطاء المعلومات العامة للهوسة يكفي تعميرها بما يناسب
- class TSIPHost هو البرنامج الرئيسي الذي سنعمل عليه و سيحتوي على عدة مكتبات
- في هذا ال class يجب توفر هذه الأشياء:
• __init__ لوضع كل ما نحتاجه في اول البرنامج مبدئيا لن نغير شيئ فيه ماعدا domaine الموقع
• Start هذه ال function ستقوم بتوجيهنا الى ال menu المطلوب , اول ما يبدئ البرنامج سيكون ال mode الذي سنتحدث عنه بعد قليل 00 , يعني سنتوجه الى showmenu التي هي فارغة حاليا و ستحتوي على القائمة الرئيسية
ستكون النتيجة هكذا (اعادة تشغيل enigma واجبة بعد كل تغيير)
- لكي نقوم بالقائمة الرئيسة يجب الكتابة في showmenu :
بعد النضر في الموقع نلاحض انه يحتوي أربعة اقسام أفلام, مسلسلا, انمي و برامج
البرامج موجودة في قسم المسلسلات يعني لا داعي لاضافتها
اذا سنضيف قائمة تحتوي على 3 عناصر
نلاحظ ان في كل الاقسام هناك تقسيم حسب النوع لذلك سنقوم بتوجيههم الى قائمة اختيار النوع
اذا سنضيف هذه الاسطر
كما نلاحظ لاضافة عنصر الى القائمة يجب استعمال addDir التي تحتوي على بعض الكلمات المفاتيح:
• Import و category لا نغير فيها شيئ نكتبها دائما هكذا للربط مع e2iplayer
• Title تحتوي على اسم القائمة
• Icon صورة للقائمة اذا اردنا ذلك
• url رابط الصفحة التي سنستخرج منها القائمة
• mode يحتوي على رقم التوجيه الموجود في start
الmode هنا 10 يعني سنضيف سطر في start يحتوي على هذا الرقم يوجهنا الى menu جديد سنسميه showgenre
و نضيف function جديدة فارغة حاليا اسمها showgenre
ستكون النتيجة هكذا:
نأتي الان على كتابة showgenre
اول شيئ نقوم ب تحميل الصفحة التي تحتوي على الاختيارات ثم نبحث فيها على المعلومات التي نريد و في المرحلة الأخيرة نقوم باضهار القائمة
سيكون الكود هكذا
طبعا هنا دخلنا في لب الموضوع:
- أولا قمنا ب اخذ ال url باستعمال cItem الذي يحتوي جميع المعلومات السابقة
- ثم نقوم باستعمال getPage لتحميل الصفحة وتحويلها الى string موجودة في data
- sts تعطنا نتيجة عملية التحميل: يعني if sts = اذا التحميل انتهى بشكل صحيح
- ثم نقوم بالبحث عن الفقرة التي تحتوي على قوائم الاختيار
• سنستعمل ال regex لذلك , لا ننسى إضافة import re في الأول
• طبعا لكي نتمكن من إيجاد patern مناسب لاسخراج الفقرة المطلوبة يجب التجربة و تعلم regex وكل ما كان الاختيار افضل للpatern كانت النتائج اسرع
- ثم نبحث في وسط الفقرة عن القوائم باسعمال كالعادة regex باستعمال patern مناسب يعطينا في حالنا هذا list تحتوي على قائمة url و أسماء قائمة الاختيار
- ثم نقوم باضهار النتائج باستعمال addDir كما رأينا سابقا و هذه المرة نختار mode جديد 20 مثلا لتوجيهنا الى ال menu القادم الذي سنسميه مثلا showitms ولا ننسى إضافة ذلك في start كما رأينا
و ستكون النتيجة هكذا
والكود النهائي هكذا:
سنكتفي اليوم بهذا و في الأيام القادمة سنكمل الهوسة تدريجيا
طبعا يمكن التجربة على مواقع أخرى و نضيف القوائم التي نريد
واذا هناك مشكل يمكن طرح أسئلة مع نسخة من الكود المستعمل
قبل الختام اريد ان انبه ان هناك طرق عديدة لاضافة هوسة, قمت ببداية شرح لاسهل طريقة ممكنة وتعمل مع اغلب الهوستات ولكن اذا كانت هوستات محمية فالامر سيختلف كثيرا
قمت مؤخرا بالقيام بطريقة جديدة لكتابة الهوستات تكون اسرع و اقل جهد و لكن يجب المرور و تعلم المراحل السابقة لكي نتمكن من فهمها و مثلا عوضا عما كتبنا سابقا سيكون الكود النهائي هكذا و باستعمال فقط add_menu التي تحتوي على كل ما تكلمنا عنه:
طبعا هي فقط عملية اختصار وربما أقوم بتفسير ذلك يوم من الايام
الملفان النهائيان لهذه المرحلة في المرفق
يجب الانتباه عند الكتابة في python حتى espace في مكان خاطئ فلن يعمل
شكرا
سيكون العمل على موقع TukTukCinema
اولا باسم الله
أول شيئ نأخذ ملف جديد يكون فيه هذه الاسطر التي لا بد منها في كل هوسة جديد:
كود:
# -*- coding: utf-8 -*-
from Plugins.Extensions.IPTVPlayer.tools.iptvtools import printDBG
from Plugins.Extensions.IPTVPlayer.tsiplayer.libs.tstools import TSCBaseHostClass
def getinfo():
info_={}
info_['name'] = 'TukTukCinema'
info_['version']='0.1'
info_['dev']='Tunisia-Sat'
info_['cat_id']='21'
info_['desc']='هنا معلومات عن الموقع'
info_['icon']='https://tuktukcinema.net/wp-content/uploads/2021/01/lela.png'
return info_
class TSIPHost(TSCBaseHostClass):
def __init__(self):
TSCBaseHostClass.__init__(self,{})
self.MAIN_URL = 'https://tuktukcinema.net'
def showmenu(self,cItem):
printDBG('start menu0')
def start(self,cItem):
mode=cItem.get('mode', None)
if mode=='00':
self.showmenu(cItem)
- getinfo هي function لاعطاء المعلومات العامة للهوسة يكفي تعميرها بما يناسب
- class TSIPHost هو البرنامج الرئيسي الذي سنعمل عليه و سيحتوي على عدة مكتبات
- في هذا ال class يجب توفر هذه الأشياء:
• __init__ لوضع كل ما نحتاجه في اول البرنامج مبدئيا لن نغير شيئ فيه ماعدا domaine الموقع
• Start هذه ال function ستقوم بتوجيهنا الى ال menu المطلوب , اول ما يبدئ البرنامج سيكون ال mode الذي سنتحدث عنه بعد قليل 00 , يعني سنتوجه الى showmenu التي هي فارغة حاليا و ستحتوي على القائمة الرئيسية
ستكون النتيجة هكذا (اعادة تشغيل enigma واجبة بعد كل تغيير)
- لكي نقوم بالقائمة الرئيسة يجب الكتابة في showmenu :
بعد النضر في الموقع نلاحض انه يحتوي أربعة اقسام أفلام, مسلسلا, انمي و برامج
البرامج موجودة في قسم المسلسلات يعني لا داعي لاضافتها
اذا سنضيف قائمة تحتوي على 3 عناصر
نلاحظ ان في كل الاقسام هناك تقسيم حسب النوع لذلك سنقوم بتوجيههم الى قائمة اختيار النوع
اذا سنضيف هذه الاسطر
كود:
def showmenu(self,cItem):
printDBG('Start menu0')
self.addDir({'import':cItem['import'],'category' : 'host2','title':'Film' ,'icon':'','mode':'10','url':self.MAIN_URL+'/category/movies/'})
self.addDir({'import':cItem['import'],'category' : 'host2','title':'Anime' ,'icon':'','mode':'10','url':self.MAIN_URL+'/category/انمي/'})
self.addDir({'import':cItem['import'],'category' : 'host2','title':'TV' ,'icon':'','mode':'10','url':self.MAIN_URL+'/category/series/?sercat=all'})
كما نلاحظ لاضافة عنصر الى القائمة يجب استعمال addDir التي تحتوي على بعض الكلمات المفاتيح:
• Import و category لا نغير فيها شيئ نكتبها دائما هكذا للربط مع e2iplayer
• Title تحتوي على اسم القائمة
• Icon صورة للقائمة اذا اردنا ذلك
• url رابط الصفحة التي سنستخرج منها القائمة
• mode يحتوي على رقم التوجيه الموجود في start
الmode هنا 10 يعني سنضيف سطر في start يحتوي على هذا الرقم يوجهنا الى menu جديد سنسميه showgenre
كود:
def start(self,cItem):
mode=cItem.get('mode', None)
if mode=='00':
self.showmenu(cItem)
if mode=='10':
self.showgenre(cItem)
و نضيف function جديدة فارغة حاليا اسمها showgenre
كود:
def showgenre(self,cItem):
printDBG('Start menu Genre')
ستكون النتيجة هكذا:
نأتي الان على كتابة showgenre
اول شيئ نقوم ب تحميل الصفحة التي تحتوي على الاختيارات ثم نبحث فيها على المعلومات التي نريد و في المرحلة الأخيرة نقوم باضهار القائمة
سيكون الكود هكذا
كود:
def showgenre(self,cItem):
printDBG('Start menu Genre')
URL = cItem.get('url','')
sts, data = self.getPage(URL)
if sts:
data = re.findall('(?:class="genresCat">|class="sercat">)(.*?)</ul>', data, re.S)
if data:
Liste_els = re.findall('<li.*?href="(.*?)".*?>(.*?)</li>', data[0], re.S)
for (url,titre) in Liste_els:
titre = self.cleanHtmlStr(titre)
self.addDir({'import':cItem['import'],'category' : 'host2','title':titre,'icon':'','mode':'20','url':url})
طبعا هنا دخلنا في لب الموضوع:
- أولا قمنا ب اخذ ال url باستعمال cItem الذي يحتوي جميع المعلومات السابقة
- ثم نقوم باستعمال getPage لتحميل الصفحة وتحويلها الى string موجودة في data
- sts تعطنا نتيجة عملية التحميل: يعني if sts = اذا التحميل انتهى بشكل صحيح
- ثم نقوم بالبحث عن الفقرة التي تحتوي على قوائم الاختيار
• سنستعمل ال regex لذلك , لا ننسى إضافة import re في الأول
• طبعا لكي نتمكن من إيجاد patern مناسب لاسخراج الفقرة المطلوبة يجب التجربة و تعلم regex وكل ما كان الاختيار افضل للpatern كانت النتائج اسرع
- ثم نبحث في وسط الفقرة عن القوائم باسعمال كالعادة regex باستعمال patern مناسب يعطينا في حالنا هذا list تحتوي على قائمة url و أسماء قائمة الاختيار
- ثم نقوم باضهار النتائج باستعمال addDir كما رأينا سابقا و هذه المرة نختار mode جديد 20 مثلا لتوجيهنا الى ال menu القادم الذي سنسميه مثلا showitms ولا ننسى إضافة ذلك في start كما رأينا
و ستكون النتيجة هكذا
والكود النهائي هكذا:
كود:
# -*- coding: utf-8 -*-
from Plugins.Extensions.IPTVPlayer.tools.iptvtools import printDBG
from Plugins.Extensions.IPTVPlayer.tsiplayer.libs.tstools import TSCBaseHostClass
import re
def getinfo():
info_={}
info_['name'] = 'TukTukCinema'
info_['version']='0.1'
info_['dev']='Tunisia-Sat'
info_['cat_id']='21'
info_['desc']='هنا معلومات عن الموقع'
info_['icon']='https://tuktukcinema.net/wp-content/uploads/2021/01/lela.png'
return info_
class TSIPHost(TSCBaseHostClass):
def __init__(self):
TSCBaseHostClass.__init__(self,{})
self.MAIN_URL = 'https://tuktukcinema.net'
def showmenu(self,cItem):
printDBG('Start menu0')
self.addDir({'import':cItem['import'],'category' : 'host2','title':'Film' ,'icon':'','mode':'10','url':self.MAIN_URL+'/category/movies/'})
self.addDir({'import':cItem['import'],'category' : 'host2','title':'Anime' ,'icon':'','mode':'10','url':self.MAIN_URL+'/category/انمي/'})
self.addDir({'import':cItem['import'],'category' : 'host2','title':'TV' ,'icon':'','mode':'10','url':self.MAIN_URL+'/category/series/?sercat=all'})
def showgenre(self,cItem):
printDBG('Start menu Genre')
URL = cItem.get('url','')
sts, data = self.getPage(URL)
if sts:
data = re.findall('(?:class="genresCat">|class="sercat">)(.*?)</ul>', data, re.S)
if data:
Liste_els = re.findall('<li.*?href="(.*?)".*?>(.*?)</li>', data[0], re.S)
for (url,titre) in Liste_els:
titre = self.cleanHtmlStr(titre)
self.addDir({'import':cItem['import'],'category' : 'host2','title':titre,'icon':'','mode':'20','url':url})
def start(self,cItem):
mode=cItem.get('mode', None)
if mode=='00':
self.showmenu(cItem)
if mode=='10':
self.showgenre(cItem)
سنكتفي اليوم بهذا و في الأيام القادمة سنكمل الهوسة تدريجيا
طبعا يمكن التجربة على مواقع أخرى و نضيف القوائم التي نريد
واذا هناك مشكل يمكن طرح أسئلة مع نسخة من الكود المستعمل
قبل الختام اريد ان انبه ان هناك طرق عديدة لاضافة هوسة, قمت ببداية شرح لاسهل طريقة ممكنة وتعمل مع اغلب الهوستات ولكن اذا كانت هوستات محمية فالامر سيختلف كثيرا
قمت مؤخرا بالقيام بطريقة جديدة لكتابة الهوستات تكون اسرع و اقل جهد و لكن يجب المرور و تعلم المراحل السابقة لكي نتمكن من فهمها و مثلا عوضا عما كتبنا سابقا سيكون الكود النهائي هكذا و باستعمال فقط add_menu التي تحتوي على كل ما تكلمنا عنه:
كود:
# -*- coding: utf-8 -*-
from Plugins.Extensions.IPTVPlayer.tsiplayer.libs.tstools import TSCBaseHostClass
def getinfo():
info_={}
info_['name'] = 'TukTukCinema'
info_['version']='0.1'
info_['dev']='Tunisia-Sat'
info_['cat_id']='21'
info_['desc']='هنا معلومات عن الموقع'
info_['icon']='https://tuktukcinema.net/wp-content/uploads/2021/01/lela.png'
return info_
class TSIPHost(TSCBaseHostClass):
def __init__(self):
TSCBaseHostClass.__init__(self,{})
self.MAIN_URL = 'https://tuktukcinema.net'
def showmenu(self,cItem):
TAB = [('Film','/category/movies/','10',''),('Anime','/category/انمي/','10',''),('TV','/category/series/?sercat=all','10','')]
self.add_menu(cItem,'','','','','',TAB=TAB)
def showmenu1(self,cItem):
self.add_menu(cItem,'(?:class="genresCat">|class="sercat">)(.*?)</ul>','<li.*?href="(.*?)".*?>(.*?)</li>','','20')
طبعا هي فقط عملية اختصار وربما أقوم بتفسير ذلك يوم من الايام
الملفان النهائيان لهذه المرحلة في المرفق
يجب الانتباه عند الكتابة في python حتى espace في مكان خاطئ فلن يعمل
شكرا
المرفقات
التعديل الأخير بواسطة المشرف: