fixup! refactor: New Video class
This commit is contained in:
parent
4c9af8ad1d
commit
06a631c892
14 changed files with 23 additions and 40 deletions
|
@ -141,9 +141,10 @@ class Config
|
||||||
/**
|
/**
|
||||||
* Throw an exception if some of the options are invalid.
|
* Throw an exception if some of the options are invalid.
|
||||||
*
|
*
|
||||||
* @return void
|
|
||||||
* @throws Exception If youtube-dl is missing
|
* @throws Exception If youtube-dl is missing
|
||||||
* @throws Exception If Python is missing
|
* @throws Exception If Python is missing
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function validateOptions()
|
private function validateOptions()
|
||||||
{
|
{
|
||||||
|
@ -223,8 +224,8 @@ class Config
|
||||||
/**
|
/**
|
||||||
* Manually set some options.
|
* Manually set some options.
|
||||||
*
|
*
|
||||||
* @param array $options Options (see `config/config.example.yml` for available options)
|
* @param array $options Options (see `config/config.example.yml` for available options)
|
||||||
* @param boolean $update True to update an existing instance
|
* @param bool $update True to update an existing instance
|
||||||
*/
|
*/
|
||||||
public static function setOptions(array $options, $update = true)
|
public static function setOptions(array $options, $update = true)
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,8 +8,6 @@ namespace Alltube;
|
||||||
use Barracuda\ArchiveStream\TarArchive;
|
use Barracuda\ArchiveStream\TarArchive;
|
||||||
use GuzzleHttp\Psr7\Stream;
|
use GuzzleHttp\Psr7\Stream;
|
||||||
use Psr\Http\Message\StreamInterface;
|
use Psr\Http\Message\StreamInterface;
|
||||||
use RuntimeException;
|
|
||||||
use stdClass;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class used to create a Tar archive from playlists and stream it to the browser.
|
* Class used to create a Tar archive from playlists and stream it to the browser.
|
||||||
|
@ -41,6 +39,7 @@ class PlaylistArchiveStream extends TarArchive implements StreamInterface
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* True if the archive is complete.
|
* True if the archive is complete.
|
||||||
|
*
|
||||||
* @var bool
|
* @var bool
|
||||||
*/
|
*/
|
||||||
private $isComplete = false;
|
private $isComplete = false;
|
||||||
|
|
|
@ -26,19 +26,22 @@ class Video
|
||||||
private $config;
|
private $config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* URL of the page containing the video
|
* URL of the page containing the video.
|
||||||
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private $webpageUrl;
|
private $webpageUrl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requested video format
|
* Requested video format.
|
||||||
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private $requestedFormat;
|
private $requestedFormat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Password
|
* Password.
|
||||||
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private $password;
|
private $password;
|
||||||
|
@ -68,6 +71,7 @@ class Video
|
||||||
private function getProcess(array $arguments)
|
private function getProcess(array $arguments)
|
||||||
{
|
{
|
||||||
$config = Config::getInstance();
|
$config = Config::getInstance();
|
||||||
|
|
||||||
return new Process(
|
return new Process(
|
||||||
array_merge(
|
array_merge(
|
||||||
[$config->python, $config->youtubedl],
|
[$config->python, $config->youtubedl],
|
||||||
|
@ -90,7 +94,7 @@ class Video
|
||||||
/**
|
/**
|
||||||
* Get a property from youtube-dl.
|
* Get a property from youtube-dl.
|
||||||
*
|
*
|
||||||
* @param string $prop Property
|
* @param string $prop Property
|
||||||
*
|
*
|
||||||
* @throws PasswordException If the video is protected by a password and no password was specified
|
* @throws PasswordException If the video is protected by a password and no password was specified
|
||||||
* @throws Exception If the password is wrong
|
* @throws Exception If the password is wrong
|
||||||
|
@ -172,7 +176,7 @@ class Video
|
||||||
*
|
*
|
||||||
* @param string $name Property
|
* @param string $name Property
|
||||||
*
|
*
|
||||||
* @return boolean
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function __isset($name)
|
public function __isset($name)
|
||||||
{
|
{
|
||||||
|
@ -281,11 +285,11 @@ class Video
|
||||||
/**
|
/**
|
||||||
* Get a process that runs avconv in order to convert a video.
|
* Get a process that runs avconv in order to convert a video.
|
||||||
*
|
*
|
||||||
* @param int $audioBitrate Audio bitrate of the converted file
|
* @param int $audioBitrate Audio bitrate of the converted file
|
||||||
* @param string $filetype Filetype of the converted file
|
* @param string $filetype Filetype of the converted file
|
||||||
* @param bool $audioOnly True to return an audio-only file
|
* @param bool $audioOnly True to return an audio-only file
|
||||||
* @param string $from Start the conversion at this time
|
* @param string $from Start the conversion at this time
|
||||||
* @param string $to End the conversion at this time
|
* @param string $to End the conversion at this time
|
||||||
*
|
*
|
||||||
* @throws Exception If avconv/ffmpeg is missing
|
* @throws Exception If avconv/ffmpeg is missing
|
||||||
*
|
*
|
||||||
|
@ -353,8 +357,8 @@ class Video
|
||||||
/**
|
/**
|
||||||
* Get audio stream of converted video.
|
* Get audio stream of converted video.
|
||||||
*
|
*
|
||||||
* @param string $from Start the conversion at this time
|
* @param string $from Start the conversion at this time
|
||||||
* @param string $to End the conversion at this time
|
* @param string $to End the conversion at this time
|
||||||
*
|
*
|
||||||
* @throws Exception If your try to convert an M3U8 video
|
* @throws Exception If your try to convert an M3U8 video
|
||||||
* @throws Exception If the popen stream was not created correctly
|
* @throws Exception If the popen stream was not created correctly
|
||||||
|
@ -526,7 +530,7 @@ class Video
|
||||||
*/
|
*/
|
||||||
public function withFormat($format)
|
public function withFormat($format)
|
||||||
{
|
{
|
||||||
return new Video($this->webpageUrl, $format, $this->password);
|
return new self($this->webpageUrl, $format, $this->password);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -6,18 +6,13 @@
|
||||||
namespace Alltube\Test;
|
namespace Alltube\Test;
|
||||||
|
|
||||||
use Alltube\Config;
|
use Alltube\Config;
|
||||||
use Alltube\Video;
|
|
||||||
use Alltube\PlaylistArchiveStream;
|
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use RuntimeException;
|
|
||||||
use stdClass;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for the ViewFactory class.
|
* Unit tests for the ViewFactory class.
|
||||||
*/
|
*/
|
||||||
abstract class BaseTest extends TestCase
|
abstract class BaseTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepare tests.
|
* Prepare tests.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
namespace Alltube\Test;
|
namespace Alltube\Test;
|
||||||
|
|
||||||
use Alltube\Config;
|
use Alltube\Config;
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for the Config class.
|
* Unit tests for the Config class.
|
||||||
|
@ -132,7 +131,6 @@ class ConfigTest extends BaseTest
|
||||||
Config::setOptions(['python' => 'foo']);
|
Config::setOptions(['python' => 'foo']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the getInstance function with the CONVERT and PYTHON environment variables.
|
* Test the getInstance function with the CONVERT and PYTHON environment variables.
|
||||||
*
|
*
|
||||||
|
|
|
@ -10,7 +10,6 @@ use Alltube\Controller\FrontController;
|
||||||
use Alltube\LocaleManager;
|
use Alltube\LocaleManager;
|
||||||
use Alltube\ViewFactory;
|
use Alltube\ViewFactory;
|
||||||
use Exception;
|
use Exception;
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
use Slim\Container;
|
use Slim\Container;
|
||||||
use Slim\Http\Environment;
|
use Slim\Http\Environment;
|
||||||
use Slim\Http\Request;
|
use Slim\Http\Request;
|
||||||
|
|
|
@ -7,7 +7,6 @@ namespace Alltube\Test;
|
||||||
|
|
||||||
use Alltube\Locale;
|
use Alltube\Locale;
|
||||||
use Alltube\LocaleManager;
|
use Alltube\LocaleManager;
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for the LocaleManagerTest class.
|
* Unit tests for the LocaleManagerTest class.
|
||||||
|
|
|
@ -8,7 +8,6 @@ namespace Alltube\Test;
|
||||||
use Alltube\Locale;
|
use Alltube\Locale;
|
||||||
use Alltube\LocaleManager;
|
use Alltube\LocaleManager;
|
||||||
use Alltube\LocaleMiddleware;
|
use Alltube\LocaleMiddleware;
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
use Slim\Container;
|
use Slim\Container;
|
||||||
use Slim\Http\Environment;
|
use Slim\Http\Environment;
|
||||||
use Slim\Http\Request;
|
use Slim\Http\Request;
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
namespace Alltube\Test;
|
namespace Alltube\Test;
|
||||||
|
|
||||||
use Alltube\Locale;
|
use Alltube\Locale;
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for the LocaleTest class.
|
* Unit tests for the LocaleTest class.
|
||||||
|
|
|
@ -5,12 +5,8 @@
|
||||||
|
|
||||||
namespace Alltube\Test;
|
namespace Alltube\Test;
|
||||||
|
|
||||||
use Alltube\Config;
|
|
||||||
use Alltube\Video;
|
|
||||||
use Alltube\PlaylistArchiveStream;
|
use Alltube\PlaylistArchiveStream;
|
||||||
use PHPUnit\Framework\TestCase;
|
use Alltube\Video;
|
||||||
use RuntimeException;
|
|
||||||
use stdClass;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for the ViewFactory class.
|
* Unit tests for the ViewFactory class.
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
namespace Alltube\Test;
|
namespace Alltube\Test;
|
||||||
|
|
||||||
use Alltube\UglyRouter;
|
use Alltube\UglyRouter;
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
use Slim\Http\Environment;
|
use Slim\Http\Environment;
|
||||||
use Slim\Http\Request;
|
use Slim\Http\Request;
|
||||||
|
|
||||||
|
|
|
@ -5,11 +5,9 @@
|
||||||
|
|
||||||
namespace Alltube\Test;
|
namespace Alltube\Test;
|
||||||
|
|
||||||
use Alltube\Config;
|
|
||||||
use Alltube\Video;
|
use Alltube\Video;
|
||||||
use Mockery;
|
use Mockery;
|
||||||
use phpmock\mockery\PHPMockery;
|
use phpmock\mockery\PHPMockery;
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for the Video class.
|
* Unit tests for the Video class.
|
||||||
|
|
|
@ -7,14 +7,12 @@ namespace Alltube\Test;
|
||||||
|
|
||||||
use Alltube\Config;
|
use Alltube\Config;
|
||||||
use Alltube\Video;
|
use Alltube\Video;
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for the Video class.
|
* Unit tests for the Video class.
|
||||||
*/
|
*/
|
||||||
class VideoTest extends BaseTest
|
class VideoTest extends BaseTest
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test getExtractors function.
|
* Test getExtractors function.
|
||||||
*
|
*
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
namespace Alltube\Test;
|
namespace Alltube\Test;
|
||||||
|
|
||||||
use Alltube\ViewFactory;
|
use Alltube\ViewFactory;
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
use Slim\Container;
|
use Slim\Container;
|
||||||
use Slim\Http\Environment;
|
use Slim\Http\Environment;
|
||||||
use Slim\Http\Request;
|
use Slim\Http\Request;
|
||||||
|
|
Loading…
Reference in a new issue