Skip to content

Commit

Permalink
Fixed bug with qualities.
Browse files Browse the repository at this point in the history
Changed piwik ids.
Fixed WS.
  • Loading branch information
Zemistr committed Apr 14, 2016
1 parent c405bb6 commit eee894a
Show file tree
Hide file tree
Showing 13 changed files with 400 additions and 406 deletions.
188 changes: 93 additions & 95 deletions StreamCzDownloader/Downloader.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,99 +13,97 @@
* @version 3.1.0
*/
class Downloader {
private $detect_driver = false;

/** @var IDriver */
private $driver;

/** @var ILoader */
private $loader;

/** @var ILogger */
private $logger;

public function __construct() {
spl_autoload_register([$this, 'autoload']);
}

protected function setHeaders($result = true) {
header('Content-Type: application/json; charset=UTF-8');

if (!$result) {
header('HTTP/1.0 404 Not Found');
}
}

public function autoload($class_name) {
$class_name = ltrim($class_name, '\\');
$file_name = '';

if ($last_namespace_pos = strrpos($class_name, '\\')) {
$namespace = substr($class_name, 0, $last_namespace_pos);
$class_name = substr($class_name, $last_namespace_pos + 1);
$file_name = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$file_name .= str_replace('_', DIRECTORY_SEPARATOR, $class_name) . '.php';

require $file_name;
}

public function detectDriver($enable = true) {
$this->detect_driver = (bool)$enable;
}

public function load($url) {
if (!$this->loader) {
$this->logger->log('You must set Loader!');
throw new \RuntimeException('You must set Loader!');
}

if (!$this->driver && $this->detect_driver) {
if (strpos($url, 'old.stream.cz') !== false) {
$this->logger->log('Autodetect driver: OldDriver');
$this->driver = new OldDriver($this->loader, $this->logger);
}
else {
$this->logger->log('Autodetect driver: NewDriver');
$this->driver = new NewDriver($this->loader, $this->logger);
}
}

if (!$this->driver) {
$this->logger->log('You must set Driver!');
throw new \RuntimeException('You must set Driver!');
}

return $this->driver->getData($url) + [
'title' => null,
'qualities' => []
];
}

public function send($url) {
$data = $this->load($url);
$found = !empty($data['title']);

$this->setHeaders($found);

if ($found) {
echo json_encode($data);

return $data;
}

exit();
}

public function setDriver(IDriver $driver) {
$this->driver = $driver;
}

public function setLogger(ILogger $logger) {
$this->logger = $logger;
}

public function setLoader(ILoader $loader) {
$this->loader = $loader;
}
private $detect_driver = false;

/** @var IDriver */
private $driver;

/** @var ILoader */
private $loader;

/** @var ILogger */
private $logger;

public function __construct() {
spl_autoload_register([$this, 'autoload']);
}

protected function setHeaders($result = true) {
header('Content-Type: application/json; charset=UTF-8');

if (!$result) {
header('HTTP/1.0 404 Not Found');
}
}

public function autoload($class_name) {
$class_name = ltrim($class_name, '\\');
$file_name = '';

if ($last_namespace_pos = strrpos($class_name, '\\')) {
$namespace = substr($class_name, 0, $last_namespace_pos);
$class_name = substr($class_name, $last_namespace_pos + 1);
$file_name = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$file_name .= str_replace('_', DIRECTORY_SEPARATOR, $class_name) . '.php';

require $file_name;
}

public function detectDriver($enable = true) {
$this->detect_driver = (bool)$enable;
}

public function load($url) {
if (!$this->loader) {
$this->logger->log('You must set Loader!');
throw new \RuntimeException('You must set Loader!');
}

if (!$this->driver && $this->detect_driver) {
if (strpos($url, 'old.stream.cz') !== false) {
$this->logger->log('Autodetect driver: OldDriver');
$this->driver = new OldDriver($this->loader, $this->logger);
}
else {
$this->logger->log('Autodetect driver: NewDriver');
$this->driver = new NewDriver($this->loader, $this->logger);
}
}

if (!$this->driver) {
$this->logger->log('You must set Driver!');
throw new \RuntimeException('You must set Driver!');
}

return $this->driver->getData($url) + [
'title' => null,
'qualities' => []
];
}

public function send($url) {
$data = $this->load($url);
$found = !empty($data['title']);

$this->setHeaders($found);

if ($found) {
echo json_encode($data);

return $data;
}
}

public function setDriver(IDriver $driver) {
$this->driver = $driver;
}

public function setLogger(ILogger $logger) {
$this->logger = $logger;
}

public function setLoader(ILoader $loader) {
$this->loader = $loader;
}
}
4 changes: 2 additions & 2 deletions StreamCzDownloader/Drivers/IDriver.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use StreamCzDownloader\Loggers\ILogger;

interface IDriver {
public function __construct(ILoader $loader, ILogger $logger);
public function __construct(ILoader $loader, ILogger $logger);

public function getData($url);
public function getData($url);
}
95 changes: 47 additions & 48 deletions StreamCzDownloader/Drivers/NewDriver.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,67 +5,66 @@
use StreamCzDownloader\Loggers\ILogger;

class NewDriver implements IDriver {
/** @var ILoader */
private $loader;
/** @var ILoader */
private $loader;

/** @var ILogger */
private $logger;
/** @var ILogger */
private $logger;

public function __construct(ILoader $loader, ILogger $logger) {
$this->loader = $loader;
$this->logger = $logger;
}
public function __construct(ILoader $loader, ILogger $logger) {
$this->loader = $loader;
$this->logger = $logger;
}

public function getData($url) {
$this->logger->log(__METHOD__ . ': ' . $url);
public function getData($url) {
$this->logger->log(__METHOD__ . ': ' . $url);

$result = [
'title' => null,
'qualities' => []
];
$result = [
'title' => null,
'qualities' => []
];

$original_url = $url;
$original_url = $url;

if (preg_match('~/(?<id>[0-9]{5,})\-~', $url, $matches)) {
$url = "http://www.stream.cz/API/episode/$matches[id]";
}
if (preg_match('~/(?<id>[0-9]{5,})\-~', $url, $matches)) {
$url = "http://www.stream.cz/API/episode/$matches[id]";
}

$json = $this->loader->load($url, $original_url);
$json = $this->loader->load($url, $original_url);

if ($json) {
$data = @json_decode($json, true);
if ($json) {
$data = @json_decode($json, true);

/********************** TITLE **********************/
$title_parts = [];
/********************** TITLE **********************/
$title_parts = [];

if (!empty($data['_embedded']['stream:show']['name'])) {
$title_parts[] = $data['_embedded']['stream:show']['name'];
}
if (!empty($data['_embedded']['stream:show']['name'])) {
$title_parts[] = $data['_embedded']['stream:show']['name'];
}

if (!empty($data['name'])) {
$title_parts[] = $data['name'];
}
if (!empty($data['name'])) {
$title_parts[] = $data['name'];
}

$result['title'] = implode(' - ', $title_parts);
/********************** TITLE **********************/
$result['title'] = implode(' - ', $title_parts);
/********************** TITLE **********************/

/******************** QUALITIES ********************/
if (!empty($data['video_qualities'])) {
foreach ($data['video_qualities'] as $quality) {
if (!empty($quality['quality_label'])) {
$quality_format =& $quality['formats'][0];
/******************** QUALITIES ********************/
if (!empty($data['video_qualities'])) {
foreach ($data['video_qualities'] as $quality) {
if (!empty($quality['formats'][0]['quality'])) {
$quality_format = $quality['formats'][0];

$result['qualities'][$quality['quality_label']] = [
'source' => $quality_format['source'],
'quality' => $quality_format['quality'],
'quality_label' => $quality['quality_label']
];
}
}
}
/******************** QUALITIES ********************/
}
$result['qualities'][$quality_format['quality']] = [
'source' => $quality_format['source'],
'quality' => $quality_format['quality']
];
}
}
}
/******************** QUALITIES ********************/
}

return $result;
}
return $result;
}
}
Loading

0 comments on commit eee894a

Please sign in to comment.