مشاكل وأسئلة برمجة وتطوير الاضافات والسكين وبناء الصور للانيجما

لا اتفق معك بان الريموت الجديد غير مريح ولكن لكل ذوقه
عموما تغيير خصائص الريموت يكون بشكل عام من keymap.xml واضافة هذا السطر يجب يعبن channellist to ok rc button
screenshot_357.png

اذا لم ينجح هذه الامر يكون في مكان من الصوره جرى التعديل على الوظائف وممكن مراجعة اصحاب الصوره لمعرفة اين هذا المكان والتعديل عليه
 
....للمطورين....
صياغة script لتنصيب الباكجات
افضل طريقه لتنصيب اي بلاكن هي وضع سكريبت التنصيب على سيرفر ان توفر وميزة هذا الطريقه
امر واحد للتنصيب لكل الاصدارات
مثال
لتنصيب اخر اصدار من iptvplayer مثلا بدون البحث عن باكج اخر اصدار
كود:
wget http://iptvplayer.vline.pl/iptvinstaller.sh -O - | /bin/sh

لتنصيب اخر اصدار من TSmedia
كود:
wget http://tunisia-dreambox.info/TSmedia/software_official/installer.sh -O - | /bin/sh
هذا الامر يستخدم نفسه مع تغيير اي اصدار ل TSmedia لذلك يحفظه المستخدم ويستعمله اي وقت
لا يلزم التعديل على الاصدار الجديد للبلاكن لاضافة عملية التحديث
يعطي مرونه اكثر في التحكم في تنصيب البلاكن
يعطي مجالا لتنصيب dependent packages
اضافة اية ارشادات للمستعمل

فقط يتطلب الامر وضع script التنصيب على السيرفر ويفضل في نفس مكان الباكج
هذا مثال على السكريبت وممكن التعديل عليه ليتناسب مع الباكج الذي يخصك

كود:
#!/bin/sh

##### remove old version,optional remove this line if you  want to overwrite previous version#####
opkg remove enigma2-plugin-extensions-tsmedia
set -e ### this option execution of following lines obligetaory and if line failed,setup will fail
cd /tmp  ## change current directory totmp
wget "http://tunisia-dreambox.info/TSmedia/software_official/enigma2-plugin-extensions-tsmedia_12.2_all.ipk" ###download current package version,this line only needed to change with new version
opkg update  ##update image packages
opkg install -force-overwrite enigma2-plugin-extensions-tsmedia_12.2_all.ipk ##install current package version
set +e remove obligatory execution,any failed following line will not affact package setup
rm "enigma2-plugin-extensions-tsmedia_12.2_all.ipk" ##emove downloaded package from tmp

###install dependent packages
opkg install python-json
if [  $? -ne 0 ];

then

    opkg install python-simplejson

fi
opkg install python-xmlrpc
opkg install python-difflib
sync
##add comments
echo "#####################################################"

echo "#          TSmedia INSTALLED SUCCESSFULLY         #"

echo "#####################################################"

echo "#             PLEASE RESTART YOUR STB               #"

echo "#####################################################"

echo "#  restart enigma by typing killall -9 enigma2   #"



#killall -9 enigma2

#reboot

عملية التنصيب
screenshot_358.png
 
التعديل الأخير:
تحليل وقراءة روابط m3u8
سبق ان نوقش الموضوع في مكان اخر يحفظ هنا كمرجع

كود:
# Embedded file name: /usr/lib/enigma2/python/Plugins/Extensions/TSmedia/scripts/script.module.main/lib/m3u8player/__init__.py
import m3u8

def readnet(url):
    try:
        import requests
        session = requests.Session()
        USER_AGENT = 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:30.0) Gecko/20100101 Firefox/30.0'
        session.headers.update({'User-Agent': USER_AGENT})
        return session.get(url, verify=False).content
    except:
        print 'download error'
        return


def getDirectM3U8Playlist(M3U8Url, checkExt = True, variantCheck = True, cookieParams = {}, checkContent = False, sortWithMaxBitrate = -1):
    if checkExt and not M3U8Url.split('?', 1)[0].endswith('.m3u8'):
        return []
    else:
        retPlaylists = []
        data = readnet(M3U8Url)
        if data is None:
            return []
        try:
            m3u8Obj = m3u8.inits(data, M3U8Url)
            if m3u8Obj.is_variant:
                for playlist in m3u8Obj.playlists:
                    item = {}
                    if not variantCheck or playlist.absolute_uri.split('?')[-1].endswith('.m3u8'):
                        item['url'] = playlist.absolute_uri
                    else:
                        item['url'] = playlist.absolute_uri
                    item['bitrate'] = playlist.stream_info.bandwidth
                    if None != playlist.stream_info.resolution:
                        item['with'] = playlist.stream_info.resolution[0]
                        item['heigth'] = playlist.stream_info.resolution[1]
                    else:
                        item['with'] = 0
                        item['heigth'] = 0
                    item['width'] = item['with']
                    item['height'] = item['heigth']
                    try:
                        tmpCodecs = playlist.stream_info.codecs.split(',')
                        codecs = []
                        for c in tmpCodecs[::-1]:
                            codecs.append(c.split('.')[0].strip())
                            item['codecs'] = ','.join(codecs)

                    except Exception:
                        item['codecs'] = None

                    item['name'] = 'bitrate: %s res: %dx%d %s' % (item['bitrate'],
                     item['width'],
                     item['height'],
                     item['codecs'])
                    retPlaylists.append(item)

                if sortWithMaxBitrate > -1:

                    def __getLinkQuality(itemLink):
                        try:
                            return int(itemLink['bitrate'])
                        except Exception:
                            return []

                    retPlaylists = CSelOneLink(retPlaylists, __getLinkQuality, sortWithMaxBitrate).getSortedLinks()
            else:
                if checkContent and 0 == len(m3u8Obj.segments):
                    return []
                item = {'name': 'm3u8',
                 'url': M3U8Url,
                 'codec': 'unknown',
                 'with': 0,
                 'heigth': 0,
                 'width': 0,
                 'height': 0,
                 'bitrate': 'unknown'}
                retPlaylists.append(item)
        except:
            pass

        return retPlaylists
        return


def getm3u8playlist(url):
    list = []
    data = getDirectM3U8Playlist(url)
    if len(data) < 2:
        return list.append(('m3u8_0', url, 'img/play.png'))
    else:
        for item in data:
            print 'quality', item['heigth'], 'stream_url', item['url']
            list.append((item['heigth'], item['url'], 'img/play.png'))

        return list
 

المرفقات

  • m3u8player.zip
    17,6 KB · المشاهدات: 20
سكريبت لتنصيب serviceapp,exteplayer3 and gstplayer
كود:
wget http://tunisia-dreambox.info/TSmedia/software_official/ServiceApp_installer.sh -O - | /bin/sh
 
التحويل بين المشغلات من خلال الكود
كود:
sref = eServiceReference(4097, 0, str(self.stream_url)) ###default enigmaplayer
sref = eServiceReference(5001, 0, str(self.stream_url)) ###gstplayer
sref = eServiceReference(5002, 0, str(self.stream_url)) ###exteplayer3
 
السلام عليكم ورحمة الله وبركاته
كل عام و الجميع بخير

نظراً لعدم وجود دعم من فريق openpli
لاجهزة دريم الحديثة os
اتاح فريق openpli
لاصحاب الاجهزة بناء صور لاجهزتهم
صورة منزلية ليس لها دعم ولكن يمكن تجميع الفيد
الخاص بالصورة علي جهاز الكمبيوتر الخاص بك
تم بناء صورة لجهازي الخاص بي وهو دريم DM 820 HD
وتم تجميع الفيد الخاص به علي جهاز الكمبيوتر الخاص بي
وهنا ياتي السؤال او الاستفسار
اريد تنصيب اضافة backupsuite و openmultiboot
هذه الاضافات تحتاج الي اعتماديات او اضافات اخري كي تعمل
فما هي الاعتماديات الاضافات التي يجب تنصيبها كي يعمل البلوجن backupsuite و openmultiboot
مع العلم الفيد بالكامل موجود لدي علي جهاز الكمبيوتر الخاص بي
تحياتي وشكرا مقدماً

هذا رابط الجت الخاص بالبناء لمن ارد ان يبني صورة

PLi-metas/pli-extras
 
التعديل الأخير:
هل بنيت الفيد لصورة ؟! إذا نعم .. بالتالي سوف تحصل على جميع الملفات و البكيجات ...
كل ما عليك فعله هو نقل اي بلجن تريد تثبيت الى tmp/ وتقوم باعطاءه امر التثبيت ..
بعدها التلنت سوف يخبرك بنقص الملفات التي يحتاجها البلجن لتثبيته تنظر الى تلك الملفات وتأخذ أسمائها وتبحث عنها في مجلد ipk الذي في مجلد بناء الصورة وتنقل الملفات الى الدريم بوكس وتثبتهم وينتهي الامر
 
هل بنيت الفيد لصورة ؟! إذا نعم .. بالتالي سوف تحصل على جميع الملفات و البكيجات ...
كل ما عليك فعله هو نقل اي بلجن تريد تثبيت الى tmp/ وتقوم باعطاءه امر التثبيت ..
بعدها التلنت سوف يخبرك بنقص الملفات التي يحتاجها البلجن لتثبيته تنظر الى تلك الملفات وتأخذ أسمائها وتبحث عنها في مجلد ipk الذي في مجلد بناء الصورة وتنقل الملفات الى الدريم بوكس وتثبتهم وينتهي الامر

معلش اخي حسين هاتعبك معاي شوية
دي الصورة بعد تنصيب الملتي بوت
بس انا ما فهمت المطلوب حتي يتم تنصيبه
من الملفات الموجودة عندي ارجو التوضيح
المطلوب بالضبط وشكراً لك ورمضان كريم

1_0_1_8_65_1_2AE0F3C_0_0_0_20180522002122.jpg
1_0_1_8_65_1_2AE0F3C_0_0_0_20180522002153.jpg
1_0_1_8_65_1_2AE0F3C_0_0_0_20180522002302.jpg
 
في هذه الحالة البلجن يقوم بتحديث الفيد وبما غن الصورة لا تحتوي على فيد فلن يتحدث .. وبالتالي البلجن لن يقوم بتحميل الملفات الذي يحتاجها ...

لذلك يجب أن تقراء بتمعن ما هي الملفات التي يحتاجها مثلاً في الصورة الثانية وااااضح جداً إن البلجن يخبرك بغنعه يريد تثبيت ملف إسمه nfidump وهو مختص بتفكيك الصور ... لذلك ابحث عنه في مجلد ipk وانقله الى الدريم بوكس وثبته واتعمل restart enigma2 وجرب من جديد فتح البلجن ..

وهكذا ...
 
في هذه الحالة البلجن يقوم بتحديث الفيد وبما غن الصورة لا تحتوي على فيد فلن يتحدث .. وبالتالي البلجن لن يقوم بتحميل الملفات الذي يحتاجها ...

لذلك يجب أن تقراء بتمعن ما هي الملفات التي يحتاجها مثلاً في الصورة الثانية وااااضح جداً إن البلجن يخبرك بغنعه يريد تثبيت ملف إسمه nfidump وهو مختص بتفكيك الصور ... لذلك ابحث عنه في مجلد ipk وانقله الى الدريم بوكس وثبته واتعمل restart enigma2 وجرب من جديد فتح البلجن ..

وهكذا ...

لاسف اخي حسين الملفات كثيرة ولم اجد بها اي شيئ بهذا الاسم
ويبدو انها عدة اضافات تدرج تحت هذا الاسم ولكل اضافة منهم اسم
علي العموم وجدت هذه الاضافة واظنها من المتطلبات سوف اجرب اي اضافة
تخص فك وتجميع الصور الي ان اصل لحل وان كان لديك اي معلومة ارجو ان تمدني بها
وشكرا لك
22-05-2018 02-25-07 ص.png
 
أعلى