Как переделать javascript на обратное преобразование

125
20 ноября 2019, 04:30

Есть локальный конвертер для преобразования файла m3u в enigma2.
Как сделать обратный конвертер для преобразования --- файла enigma2 в m3u ?

  1. На входе мы имеем такой файл формата m3u:

    #EXTM3U
    #EXTINF:-1,1 Armenia HD
    http://amtv1.livestreamingcdn.com/am2abr/tracks-v2a1/index.m3u8
    #EXTINF:-1, 1HD 
    https://daserstehdint-lh.akamaihd.net/i/daserstehd_int@629195/index_1992_av-p.m3u8?
    #EXTINF:-1, 1 Moldova
    http://live.trm.md:1935/live/M1Mlive/playlist.m3u8
    #EXTINF:-1, 1 Music Channel (HU)
    http://stream.1music.hu/stream/1music.m3u8
    
  1. После конвертации в enigma2 имеем:

    #NAME OpenPLi based IPTV converter - 4097:0:1:0
    #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a//amtv1.livestreamingcdn.com/am2abr/tracks-v2a1/index.m3u8:1 Armenia HD
    #DESCRIPTION 1 Armenia HD
    #SERVICE 4097:0:1:0:0:0:0:0:0:0:https%3a//daserstehdint-lh.akamaihd.net/i/daserstehd_int@629195/index_1992_av-p.m3u8?:1HD
    #DESCRIPTION 1HD
    #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a//live.trm.md%3a1935/live/M1Mlive/playlist.m3u8:1 Moldova
    #DESCRIPTION 1 Moldova
    #SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3a//stream.1music.hu/stream/1music.m3u8:1 Music Channel (HU)
    #DESCRIPTION 1 Music Channel (HU)
    

=================================================================== Это сам исходный конвертер (IPTV converter - 4097.html):

<html> 
<body bgcolor="#76ace2">    
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script language="javascript" type="text/javascript">

        String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };
        function WriteForm(e)
        {
            try
            {
                var base=document.getElementById("baseUrl").value;   
                e=document.getElementById("ExampleOutput");
                l=e.value.split("\n");
                s='#NAME OpenPLi based IPTV converter - 4097:0:1:0\n';    
                name='';
                for (var i=0;i<l.length;i++)
                    {
                        v=l[i].trim();if (v=='') continue;
                        if (v.indexOf("#")!==-1)
                            {
                                if (v.toUpperCase().indexOf("#EXTINF")!=-1)
                                    {
                                        ci=v.indexOf(',');
                                        if (ci!==-1) name=v.substr(ci+1);
                                    }
                            }
                        else
                            {
                                 if (v.trim().toUpperCase().indexOf('UDP:')!=-1) 
                                     {                                         
                                         url=base+v.replace('udp://@', "udp/","i");
                                     }
                                 else url=v;
                                 url=url.replace(/:/g,'%3a');
                                 name=name.replace(/#EXTINF:|[0-9],|-[1-9],|,/g,'');
                                 name=name.replace(/^\s+/g,'');
                                 if (name=='') name='Channel '+i;
                                 s+='#SERVICE 4097:0:1:0:0:0:0:0:0:0:';
                                 s+=url;
                                 s+=':';
                                 s+=name+'\n';
                                 s+='#DESCRIPTION '
                                 s+=name+'\n';
                                 name='';
                            }
                    }
                s=s.split('&').join('&');
                e.value=s;

            }
            catch(Err)
            {
                alert("Error: " + Err.description);               
            }
            return false;
        }

        function OpenForm(e)
        {
            var e=document.getElementById("ExampleOutput");            
            window.open('data:text/xml;charset=utf-8,' + encodeURIComponent(e.value),'webtv_usr.xml');
        }
        function OpenFormData(e)
        {
            var e=document.getElementById("ExampleOutput");                        
            window.open('data:application/octet-stream;charset=utf-8,' + encodeURIComponent(e.value),'userbouquet.Bica_OpenPLI_Based_4097_IPTV');
        }

    </script>
</head>
<body>
    <br /> <b>IPTV Enigma2 (4097) Converter by SATmax</b> 
    <p>
    <br /> Аddress udp <input id="baseUrl" value="http://localhost:81/">
    <br />
   <a href="#" onclick="WriteForm();"> </a><br />
   <!--<a href="#" onclick="OpenForm();"> Otvoriti.</a><br />-->
   <!--<a href="#" onclick="OpenFormData();"> Skinuti.</a><br />-->
    <b>Ubacite m3u link/ove i kliknite na konvertiraj. Linkove iskopirajte u praznu datoteku userbouqet.myiptv.tv i prebacite u etc/enigma2. Restart Enigma2</b>
    <p>
    <br />
    <form>
    <div><input type="button" name="convert" class="viptvButtons" value="Convert" onClick="WriteForm();" /></div>
    <div id="footer">
    </div>
    <p>
    <input type="reset" value="Reset">
    </p>    
    <textarea id="ExampleOutput" style="width:100%" rows="35"></textarea>
    </form>
</body>
</html>

================================================================= Есть скрипт который работает с enigma2 linux:

#!/bin/sh
#Преобразует ваш enigma2 userbouquet в плейлист.m3u
cd /tmp
urbt=`find -name "userbouquet.*.tv" | sed 's/^..//'`
if [ ! -f "$urbt" ] ; then
    echo ""
    echo "Нет файла для конвертации"
    echo ""
    echo "Поместите ваш userbouquet в папку /tmp и попробуйте ещё раз "
    echo ""
    exit 0
else
sed -i '/http/,/DESCRIPTION/!d' $urbt
if ! grep -q "DESCRIPTION" $urbt ; then
    grep SERVICE $urbt | sed -e "s/.*http/http/g" -e 's/:/\n&#/g' -e 's/:#/#EXTINF:0,/' -e 's/%3a/:/g' -i $urbt
    echo "#EXTM3U" > shift
    cat $urbt | awk 'NR%2==0 {print $0; print p} {p=$0}' >> shift
elif grep -q "DESCRIPTION" $urbt ; then
    echo "#EXTM3U" > shift
    cat $urbt | awk 'NR%2==0 {print $0; print p} {p=$0}' >> shift
    grep SERVICE shift | sed -e "s/.*http/http/g" -e 's/:.*//g' -e 's/%3a/:/g' -e 's/DESCRIPTION//g' -e '2,$s/#/#EXTINF:0,/' -i shift
fi
name=`echo "$urbt" | sed -e 's/userbouquet.//;s/.m3u//;s/.tv$//'`
mv shift "$name".m3u
rm $urbt
echo ""
echo "Ваш $urbt успешно переконвертирован в плейлист $name.m3u"
echo ""
echo "Можно забирать в папке /tmp"
echo ""
fi
exit 0
READ ALSO
Фильтрация на сайте JS без jquery

Фильтрация на сайте JS без jquery

Задача: есть несколько h3, при вводе в input букв - начать выводить подходящие h3html-разметка

177
Проблема с созданием файла в google drive service account через Api

Проблема с созданием файла в google drive service account через Api

На данном этапе, у меня получилось сделать авторизацию в service account по jwt, создать папку и пермишеныС файлами проблема: когда я перехожу по ссылке...

135
Скрытие меню при скроле

Скрытие меню при скроле

Есть появление меню при клике

122