вот оригинал от consros:
имя пасс demo demo, должны работать
имя пасс demo demo, должны работать
Код:
<?php ############################################################################# # Library with all functions needed to connect rodnoe.tv. # # These functions allow to log on to rodnoe.tv, get information about # # available channels and to get the channels URLs themselves. # # # # Author: consros 2010 # ############################################################################# require_once("lightJSON.inc"); define("BASE_URL", "core.rodnoe.tv"); define("SID", "RtvSid"); define("UID", "RtvUid"); define("TO", "RtvTo"); class RtvFunctions { var $traces; var $user; var $pass; var $sid; var $uid; var $to; function RtvFunctions($traces = false) { $this->traces = $traces; $ini_array = parse_ini_file("auth.ini"); $this->user = $ini_array['user']; $this->pass = $ini_array['pass']; $this->sid = isset($_SESSION[SID]) ? $_SESSION[SID] : ""; $this->uid = isset($_SESSION[UID]) ? $_SESSION[UID] : ""; $this->to = isset($_SESSION[TO]) ? $_SESSION[TO] : ""; } function forgetSessionId() { $_SESSION[SID] = ""; $_SESSION[UID] = ""; $_SESSION[TO] = ""; $this->sid = ""; $this->uid = ""; $this->to = ""; } function trace($msg) { if ($this->traces) { print "DEBUG: " . $this->user . ": $msg\n"; } } function authorize() { $this->trace("Authorization started"); # Step 1 of 3: get DIV $params = $this->sendRequest("/tv_root.php?cmd=get_div&idn=1"); if (isset($params['err']) && "" != $params['err']) { die($this->user . ": wrong user data"); } $div = $params['div']; $this->trace("Key: " . $this->user . $div . $this->pass); $key = md5($this->user . $div . $this->pass); # Step 2 of 3: send authentication data $params = $this->sendRequest("/tv_root.php?cmd=auth&idn=1&key=$key"); if (isset($params['err']) && "" != $params['err']) { die($this->user . ": wrong user data"); } $this->uid = $params['uid']; $this->to = $params['to']; # Step 3 of 3: session id reading $url = "/tv_root.php?cmd=get_init&idn=1&uid=$this->uid&to=$this->to"; $params = $this->sendRequest($url); if (isset($params['err']) && "" != $params['err']) { die($this->user . ": wrong user data"); } $this->sid = $params['sid']; $this->trace("Authorization returned: $this->sid"); $_SESSION[SID] = $this->sid; $_SESSION[UID] = $this->uid; $_SESSION[TO] = $this->to; } function isAuthorized($params = null) { $ok = (! isset($params['err']) || "" == $params['err']) && isset($this->sid) && "" != $this->sid && isset($this->uid) && "" != $this->uid && isset($this->to) && "" != $this->to; if (! $ok) { $this->trace("Authorization missed or lost"); } return $ok; } function getChannelsList() { if (! $this->isAuthorized()) { $this->authorize(); } $url = "/tv_root.php?cmd=tv_list&idn=1&uid=$this->uid&to=$this->to"; $params = $this->sendRequest($url); if (! $this->isAuthorized($params)) { $this->authorize(); } else { return $params; } $url = "/tv_root.php?cmd=tv_list&idn=1&uid=$this->uid&to=$this->to"; return $this->sendRequest($url); } function getStreamUrl($alias) { $this->trace("Getting URL of stream $alias"); if (! $this->isAuthorized()) { $this->authorize(); } # old way: # http://core.rodnoe.tv/go.php?t=ru-znanie&k=$sid # return "http://" . BASE_URL . "/go.php?t=$alias&k=$this->sid"; # new way: # http://core.rodnoe.tv/get.php?ch=t+od-ru-ort+$sid return "http://" . BASE_URL . "/get.php?ch=t+$alias+$this->sid"; } function getEpg($id, $date = null) { # date format is yyyy-mm-dd: 2010-09-20 # NOTE: at 03:00 starts another EPG day $date = date('Y-m-d', $date); $timeZone = 120; if (! $this->isAuthorized()) { $this->authorize(); } $url = "/tv_root.php?cmd=get_epg_ch&idn=1&uid=$this->uid"; $url .= "&ch_id=$id&day=$date&tzo=$timeZone"; $params = $this->sendRequest($url); if (! $this->isAuthorized($params)) { $this->authorize(); } else { return $params; } $url = "/tv_root.php?cmd=get_epg_ch&idn=1&uid=$this->uid"; $url .= "&ch_id=$id&day=$date&tzo=$timeZone"; return $this->sendRequest($url); } function sendRequest($url) { # try to connect to host $fp = fsockopen(BASE_URL, 80, $errno, $errstr, 30); if (! $fp) { return array('err' => 'NO_CONNECTION'); } # generate request $request = "GET $url HTTP/1.1\r\n" . "Host: " . BASE_URL . "\r\n" . "User-Agent: Mozilla/5.0 (PCH & XTR plugin by consros)\r\n". "Accept: application/json, text/javascript, */*\r\n". "Content-Type: application/x-www-form-urlencoded\r\n". "Connection: close\r\n". "X-Requested-With: XMLHttpRequest\r\n\r\n"; $this->trace("===>$request\n\n"); # send request and read response fwrite($fp, $request); $response = ""; while (! feof($fp)) { $response .= fgets($fp, 1024); } fclose($fp); $this->trace("<===$response\n\n"); # cut json object $response = substr($response, strpos($response, '{')); $response = substr($response, 0, strrpos($response, '}') + 1); # correct some weired response corruption coming with channels list $response = preg_replace('|\r\n[A-Za-z0-9]{1,4}\r\n|', '', $response); # exclude any new lines $response = str_replace(array("\r", "\n"), '', $response); $params = json_decode($response, true); return null != $params ? $params : array('err' => 'JSON_ERROR_SYNTAX'); } } ?>
Комментарий