Thread: telewizjada.net
View Single Post
  #17  
Old 02-11-2016, 02:04 AM
slihter slihter is offline
Junior Member
 
Join Date: Feb 2016
Posts: 1
slihter is on a distinguished road
Default

Re: telewizjada.net


Hey, i want to use Python to create a automatic generate m3u playlist from the website. To get the real playlist it need "cookies"

But with that form cannot build a m3u playlist.
I protably i need a livestreamer python module and use it.

HTML Code:
cId: 1
Url: http://l149.telewizjada.net:1935/tw/2014tvtvp1/playlist.m3u8
msec: GXries73egCrAb00XYAh632WF8vbHNY8KKZ9iqRT43UBTegxS2kBoJm9qpUF320ea5eRwh7fuNwz0IAqAIZAFZz0ja2n
sessid: ctn1euldiv733sld3kqi7bjqr1
That's why i need to insert into livestreamer with parameters in Python.

On Windows i send:
HTML Code:
livestreamer --stream-url --http-header "Cookie=msec=DD7jKsG2I1yrG%2BkyWMUh6H%2BeA5CGDch0P6V9iqRT43UBTegxS20YvNvzrooUyXMDfZvL3UyF8JZjmdVtQcJeVpe1m7KhvdTcijbB1j4hzxXW; sessid=v0oaj458ilc566lg1ce2jst9e2"   "hlsvariant://http://l133.telewizjada.net:1935/tw/2014tvpolsatsportextra/playlist.m3u8" best
And i get what i need:
HTML Code:
http://l133.telewizjada.net:1935/tw/2014tvpolsatsportextra/chunklist_w792338458.m3u8
But on linux i get:
HTML Code:
error: Unable to open URL: http://l133.telewizjada.net:1935/tw/2014tvpolsatsportextra/playlist.m3u8 (403 Client Error: Forbidden for url: http://l133.telewizjada.net:1935/tw/2014tvpolsatsportextra/p
laylist.m3u8)

Full Script:

HTML Code:
#!/usr/bin/env python

import urllib, urllib2, httplib, sys, StringIO, cookielib, re, socket
from xml.etree import ElementTree
import json
import threading
import time
import os
import subprocess
from livestreamer import Livestreamer

HOST       = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20121213 Firefox/19.0'


class Something:
    def logCall(self, message):
        print self.__class__.__name__ + ' ' + message

    def getJsonFromExtendedAPI(self, url, post_data = None, save_cookie = False, load_cookie = False, cookieFile = None, jsonLoadsResult = False):
        result_json = None
        customOpeners = []
        cj = cookielib.LWPCookieJar()

        def urlOpen(req, customOpeners):
            if len(customOpeners) > 0:
                opener = urllib2.build_opener( *customOpeners )
                response = opener.open(req, timeout = 4)
            else:
                response = urllib2.urlopen(req, timeout = 4)
            return response

        try:
            if cookieFile is not None:
                customOpeners.append( urllib2.HTTPCookieProcessor(cj) )
                if load_cookie == True:
                    cj.load(cookieFile, ignore_discard = True)

            headers = { 'User-Agent' : HOST }
            data = urllib.urlencode(post_data)
            reqUrl = urllib2.Request(url, data, headers)

            failedCounter = 0
            while failedCounter < 50:
                try:
                    raw_json = urlOpen(reqUrl, customOpeners)
                    result_json = raw_json.read()
                    if jsonLoadsResult == True:
                        result_json = json.loads(result_json)
                    break
                except (httplib.IncompleteRead, socket.timeout) as ex:
                    failedCounter = failedCounter + 1
                    self.logCall('getJsonFromExtendedAPI exception: %s - retrying failedCounter = %s' % (str(ex), failedCounter))
                    if xbmc.abortRequested:
                        break
                    time.sleep(.050)

            if cookieFile is not None and save_cookie == True:
                cj.save(cookieFile, ignore_discard = True)

        except (urllib2.URLError, NameError, ValueError, httplib.BadStatusLine) as ex:
            self.logCall('ShowList getJsonFromExtendedAPI exception: %s - aborting!' % str(ex))
            return None

        return result_json
    
    def getCookieItem(self, cookiefile, item):
        ret = ''
        if os.path.isfile(cookiefile):
            cj = cookielib.LWPCookieJar()
            cj.load(cookiefile, ignore_discard = True)
            for cookie in cj:
                if cookie.name == item:
                    ret = cookie.value
        return ret
    
sth = Something()
coockie = 'coockie.coock'

try:
    id = sys.argv[1]
except:
    id = raw_input()
if id == None or id == '':
    print "Forgot about cId?"
    quit()
print "cId: " + id

#id = 1
data = { 'cid': id}
output = sth.getJsonFromExtendedAPI('http://www.telewizjada.net/get_mainchannel.php', post_data = data, jsonLoadsResult = True)
data = { 'url': output['url'] }
sth.getJsonFromExtendedAPI('http://www.telewizjada.net/set_cookie.php', post_data = data, cookieFile = coockie, save_cookie = True)
data = { 'cid': id }
tmp_url = sth.getJsonFromExtendedAPI('http://www.telewizjada.net/get_channel_url.php', post_data = data, cookieFile = coockie, load_cookie = True, jsonLoadsResult = True)
tmp_url = tmp_url['url']


msec = sth.getCookieItem(coockie, 'msec')
sessid = sth.getCookieItem(coockie, 'sessid')
urlstream = tmp_url.split("?")[0]

subprocess.call(["livestreamer", "hls://hlsvariant://" + urlstream,"--stream-url --http-header Cookie=msec=" + msec + "; sessid=" + sessid])

print "Url: " + urlstream
print "msec: " + msec
print "sessid: " + sessid
Reply With Quote