Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  ok
Language: C/C++
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import difflib
import json

import xml.etree.ElementTree as ET

from urllib import urlencode
from urllib2 import Request, urlopen



""" USTAWIENIA """
login = 'spider'  
passwd = 'spider'  
loc = 'UK'  # Lokalizacja serwera, dostępne to: Holandia, Rumunia, Niemcy, UK, USA
port = "80"  # Port serwera, dostępne to: 80 i 1935

dodaj_nawet_jezeli_nie_dziala = False  # Dodaj kanał do listy m3u, nawet jeżeli podczas generowania on nie działa
ignorowane_kanaly = ["BAJKI NOWE", "BELFER SEZON 2", "BOTOKS SERIAL", "FILMY NOWE", "WATAHA SEZON 2", "TESTOWY"]  # Te kanały nie będą dodane w liscie m3u
generuj_w_zgodzie_z_epg = False  # Jeżeli chcesz aby wygenerowana lista była "kombatybilna" z twoją listą EPG, umieść plik o nazwie epg.xml w folderze z skryptem, i ustaw tę wartość na True



""" SKRYPT - NIE MODYFIKUJ JEŻELI NIE WIESZ CO ROBISZ!!! """
""" Get Channel List """
url = 'http://185.35.139.177/api/index.php?page=get_tv_channels'
headers = { 'User-Agent': 'XBMC', 'ContentType': 'application/x-www-form-urlencoded' }
post = { 'login': login, 'pass': passwd, 'location': loc, 'port': port }
data = urlencode(post).encode('utf-8')
reqUrl = Request(url, data, headers)
red_json = urlopen(reqUrl)
m3udata = json.load(red_json)

channel_ids = []
for channel in m3udata:
    channel_ids.append(channel['id'])

print("Znaleziono " + str(len(channel_ids)) + " kanalów")

""" Get Channel Stream URLs """
url = 'http://185.35.139.177/api/index.php?page=get_tv_channel'
headers = { 'User-Agent': 'XBMC', 'ContentType': 'application/x-www-form-urlencoded' }

channels = [] # 'id':{'name':'test','url_sd':'','url_hd':''}

for channel_id in channel_ids:
    print("Czekaj laczenie z numerem 997 przez serwer  " + str(channel_id))
    post = { 'login': login, 'pass': passwd, 'location': loc, 'port': port, 'id': str(channel_id) }
    data = urlencode(post).encode('utf-8')
    reqUrl = Request(url, data, headers)
    red_json = urlopen(reqUrl)
    try:
        channeldata = json.load(red_json)
    except:
        continue
   
    if channeldata['name'] in ignorowane_kanaly:
        #print("UWAGA: Podany kanał jest na liscie 'ignorowane_kanaly'. Ignorowanie...")
        continue
   
    if channeldata['url_sd'] == 'rtmp://198.255.36.90' and dodaj_nawet_jezeli_nie_dziala:
        print("UWAGA: Kanał nie nadaje")
    elif channeldata['url_sd'] == 'rtmp://198.255.36.90' and not dodaj_nawet_jezeli_nie_dziala:
        print("UWAGA: Kanał nie nadaje. Ignorowanie...")
        continue
    channels.append({'name': channeldata['name'], 'url_sd': channeldata['url_sd'], 'icon': channeldata['icon'], 'url_hd': channeldata['url_hd']})

if generuj_w_zgodzie_z_epg:
    print("Analizowanie pliku EPG...")
    epgdata = ET.parse('epg.xml')
    epgroot = epgdata.getroot()
    epgids = []
    epgids_upper = []

    for id in epgroot:
        epgids.append(id.attrib['id'])
        epgids_upper.append(id.attrib['id'].upper())

print("Generowanie listy m3u...")

newm3u = "#EXTM3Un"

for channel in channels:

    channelm3udata = "#EXTINF:-1"
   
    name = channel['name'].upper()

    try:
        correct_name = str(difflib.get_close_matches(name, epgids_upper)[0])
    except:
        correct_name = name
   
    try:
        correct_id = epgids[epgids_upper.index(correct_name)]
    except:
        correct_id = name
   
    channelm3udata += ' tvg-id="' + correct_id + '"'
    channelm3udata += ' tvg-logo="' + channel['icon'] + '"'
    channelm3udata += ',' + correct_id + "n"
   
    if len(channel['url_hd']) != 0:
        channelm3udata += channel['url_hd'] + 'n'
    else:
        channelm3udata += channel['url_sd'] + 'n'
   
    newm3u += channelm3udata

print("Zapisywanie listy m3u...")
with open('lista Goldvod KS.m3u', 'w') as file:
    file.write(newm3u)
    file.close()
   
print("Gotowe! Życzę miłego dnia! :)")
          
          
Comments: