All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
0.10 - 2018-12-20
- CurlClient respects curl options again
- Breaking:
YoutubeDownloader\Http\CurlClient::createRequest()
was removed, useYoutubeDownloader\Http\CurlClient::createFullRequest()
instead
0.9 - 2018-12-10
- make preparations for implementing PSR-17 and PSR-18
- new method
YoutubeDownloader\Http\CurlClient::createFullRequest()
to create a PSR-7 request instance with headers and body
- Set correct
Psr\Log\LoggerAwareInterface
intoYoutubeDownloader\Provider\Youtube\VideoInfo
inYoutubeDownloader\Provider\Youtube\Provider
- Set correct
Psr\Log\LoggerAwareInterface
intoYoutubeDownloader\Provider\Youtube\Format
inYoutubeDownloader\Provider\Youtube\VideoInfo
YoutubeDownloader\Http\CurlClient::createRequest()
will be removed in 0.10, useYoutubeDownloader\Http\CurlClient::createFullRequest()
instead
0.8 - 2018-12-06
- Add support for PSR-3 Logger Interface
- Add support for PSR-7 HTTP Message Interface
- Add support for PSR-11 Container Interface
- Add support for PSR-16 Simple Cache
- Breaking: Argument 1 in
YoutubeDownloader\Application\App::__construct()
must be aPsr\Container\ContainerInterface
instance instead ofYoutubeDownloader\Cache\Cache
- Breaking: Argument 1 in
YoutubeDownloader\Cache\CacheAware::setCache()
must be aPsr\SimpleCache\CacheInterface
instance instead ofYoutubeDownloader\Cache\Cache
- Breaking: Argument 1 in
YoutubeDownloader\Cache\CacheAwareTrait::setCache()
must be aPsr\SimpleCache\CacheInterface
instance instead ofYoutubeDownloader\Cache\Cache
- Breaking:
YoutubeDownloader\Cache\CacheAwareTrait::getCache()
returns aPsr\SimpleCache\CacheInterface
instance instead ofYoutubeDownloader\Cache\Cache
YoutubeDownloader\Cache\CacheException
implementsPsr\SimpleCache\CacheException
YoutubeDownloader\Cache\InvalidArgumentException
implementsPsr\SimpleCache\InvalidArgumentException
- Breaking:
YoutubeDownloader\Cache\FileCache
implementsPsr\SimpleCache\CacheInterface
instead ofYoutubeDownloader\Cache\Cache
- Breaking:
YoutubeDownloader\Cache\NullCache
implementsPsr\SimpleCache\CacheInterface
instead ofYoutubeDownloader\Cache\Cache
YoutubeDownloader\Container\ContainerException
implementsPsr\Container\ContainerExceptionInterface
YoutubeDownloader\Container\NotFoundException
implementsPsr\Container\NotFoundExceptionInterface
- Breaking:
YoutubeDownloader\Container\SimpleContainer
implementsPsr\Container\ContainerInterface
instead ofYoutubeDownloader\Container\Container
- Breaking:
YoutubeDownloader\Http\Client::createRequest()
returnsPsr\Http\Message\RequestInterface
instead ofYoutubeDownloader\Http\Message\Request
- Breaking: Argument 1 in
YoutubeDownloader\Http\Client::send()
must be aPsr\Http\Message\RequestInterface
instance instead ofYoutubeDownloader\Http\Message\Request
- Breaking:
YoutubeDownloader\Http\Request
implementsPsr\Http\Message\RequestInterface
instead ofYoutubeDownloader\Http\Message\Request
- Breaking:
YoutubeDownloader\Http\Response
implementsPsr\Http\Message\ResponseInterface
instead ofYoutubeDownloader\Http\Message\Response
- Breaking:
YoutubeDownloader\Logger\HandlerAwareLogger
implementsPsr\Log\LoggerInterface
instead ofYoutubeDownloader\Logger\Logger
- Breaking:
YoutubeDownloader\Logger\LoggerAwareTrait::getLogger()
returns aPsr\Log\LoggerInterface
instance instead ofYoutubeDownloader\Logger\Logger
- Breaking: Argument 1 in
YoutubeDownloader\Logger\LoggerAwareTrait::setLogger()
must be aPsr\Log\LoggerInterface
instance instead ofYoutubeDownloader\Logger\Logger
- Breaking:
YoutubeDownloader\Provider\Youtube\Format
implementsPsr\Log\LoggerAwareInterface
instance instead ofYoutubeDownloader\Logger\LoggerAware
- Breaking:
YoutubeDownloader\Provider\Youtube\Provider
implementsPsr\Log\LoggerAwareInterface
instance instead ofYoutubeDownloader\Logger\LoggerAware
- Breaking: Argument 2 in
YoutubeDownloader\Provider\Youtube\SignatureDecipher::extractDecipherOpcode()
must be aPsr\Log\LoggerInterface
instance instead ofYoutubeDownloader\Logger\Logger
- Breaking: Argument 4 in
YoutubeDownloader\Provider\Youtube\SignatureDecipher::executeSignaturePattern()
must be aPsr\Log\LoggerInterface
instance instead ofYoutubeDownloader\Logger\Logger
- Breaking:
YoutubeDownloader\Provider\Youtube\VideoInfo
implementsPsr\Log\LoggerAwareInterface
instance instead ofYoutubeDownloader\Logger\LoggerAware
- Breaking:
YoutubeDownloader\Cache\Cache
interface was removed, usePsr\SimpleCache\CacheInterface
instead - Breaking:
YoutubeDownloader\Container\Container
interface was removed, usePsr\Container\ContainerInterface
instead - Breaking:
YoutubeDownloader\Http\Message\Message
interface was removed, usePsr\Http\Message\MessageInterface
instead - Breaking:
YoutubeDownloader\Http\Message\Request
interface was removed, usePsr\Http\Message\RequestInterface
instead - Breaking:
YoutubeDownloader\Http\Message\Response
interface was removed, usePsr\Http\Message\ResponseInterface
instead - Breaking:
YoutubeDownloader\Http\Message\ServerRequest
interface was removed, usePsr\Http\Message\ServerRequestInterface
instead - Breaking:
YoutubeDownloader\Http\MessageTrait::getBodyAsString()
was removed - Breaking:
YoutubeDownloader\Http\MessageTrait::withStringAsBody()
was removed - Breaking:
YoutubeDownloader\Logger\Logger
interface was removed, usePsr\Log\LoggerInterface
instead - Breaking:
YoutubeDownloader\Logger\LoggerAware
interface was removed, usePsr\Log\LoggerAwareInterface
instead - Breaking:
YoutubeDownloader\Logger\LogLevel
was removed , usePsr\Log\LogLevel
instead - Breaking:
YoutubeDownloader\Logger\NullLogger
was removed , usePsr\Log\NullLogger
instead - Breaking:
YoutubeDownloader\Provider\Youtube\SignatureDecipher::decipherSignatureWithRawPlayerScript()
isn't used anymore and was removed
0.7 - 2018-11-30
- new dictionary for
YoutubeDownloader\Provider\Youtube\SignatureDecipher
to handle the YouTube signature change composer.lock
as it is needed by some services- new method
YoutubeDownloader\Provider\Youtube\SignatureDecipher::extractDecipherOpcode()
for extracting the decipher operation codes - new method
YoutubeDownloader\Provider\Youtube\VideoInfo::getDuration()
to get the video duration - Autofocus on video search input
- Non-latin letters in the title of downloaded files won't be remove anymore
- Some bugs fixed in decipher dictionary
YoutubeDownloader\Provider\Youtube\SignatureDecipher::decipherSignatureWithRawPlayerScript()
isn't used anymore and will be removed in 0.8
- Breaking:
YoutubeDownloader\Provider\Youtube\Provider::createFromConfigAndToolkit()
was removed, useYoutubeDownloader\Provider\Youtube\Provider::createFromOptions()
instead - Breaking:
YoutubeDownloader\Provider\Youtube\VideoInfo::createFromStringWithConfig()
was removed, useYoutubeDownloader\Provider\Youtube\VideoInfo::createFromStringWithOptions()
instead - Breaking:
YoutubeDownloader\Toolkit::validateVideoId()
isn't used anymore and was removed - Breaking:
YoutubeDownloader\Toolkit::formatBytes()
isn't used anymore and was removed - Breaking:
YoutubeDownloader\Toolkit::is_chrome()
isn't used anymore and was removed - Breaking:
YoutubeDownloader\Toolkit::getDownloadMP3()
isn't used anymore and was removed
0.6 - 2018-01-02
- New support for creation of RSS feeds from YouTube channels and user pages
YoutubeDownloader\Provider\Youtube\Provider::createFromOptions()
to create the Youtube Provider with an options arrayYoutubeDownloader\Provider\Youtube\VideoInfo::createFromStringWithOptions()
to create the Youtube VideoInfo with an options array
- Support for PHP 5.4 and 5.5 was dropped
- The mp3 downloader was improved and has no dependendy to aria2 anymore
- Code Style was changed to PSR-2
- A bug in the downloader with adaptive format was fixed
- The path to the yearly logs folder was fixed
YoutubeDownloader\Provider\Youtube\Provider::createFromConfigAndToolkit()
will be removed in 0.7, useYoutubeDownloader\Provider\Youtube\Provider::createFromOptions()
insteadYoutubeDownloader\Provider\Youtube\VideoInfo::createFromStringWithConfig()
will be removed in 0.7, useYoutubeDownloader\Provider\Youtube\VideoInfo::createFromStringWithOptions()
insteadYoutubeDownloader\Toolkit::validateVideoId()
isn't used anymore and will be removed in 0.7YoutubeDownloader\Toolkit::formatBytes()
isn't used anymore and will be removed in 0.7YoutubeDownloader\Toolkit::is_chrome()
isn't used anymore and will be removed in 0.7YoutubeDownloader\Toolkit::getDownloadMP3()
isn't used anymore and will be removed in 0.7
- Breaking:
YoutubeDownloader\Provider\Youtube\VideoInfo::setToCache()
was removed, useYoutubeDownloader\Provider\Youtube\VideoInfo::getCache()->set()
instead - Breaking:
YoutubeDownloader\Provider\Youtube\VideoInfo::getFromCache()
was removed, useYoutubeDownloader\Provider\Youtube\VideoInfo::getCache()->get()
instead - Breaking:
YoutubeDownloader\Container\SimpleContainer::set()
requires an optional Closure or a string as alias in second argument ($value) - Breaking:
YoutubeDownloader\Toolkit::curlGet()
was removed, useYoutubeDownloader\Http\CurlClient
instead - Breaking:
YoutubeDownloader\Toolkit::get_size()
was removed, useYoutubeDownloader\Http\CurlClient
instead - Breaking:
YoutubeDownloader\Toolkit::getDownloadUrlByFormats()
was removed
0.5.1 - 2017-09-22
- A bug in the mp3 downloader was fixed
0.5 - 2017-09-15
- new
YoutubeDownloader\Http\CurlClient
as an implementation of the newYoutubeDownloader\Http\Client
interface - new
YoutubeDownloader\Http\HttpClientAware
interface YoutubeDownloader\Provider\Youtube\Format
implementsYoutubeDownloader\Http\HttpClientAware
interfaceYoutubeDownloader\Provider\Youtube\Provider
implementsYoutubeDownloader\Http\HttpClientAware
interfaceYoutubeDownloader\Provider\Youtube\VideoInfo
implementsYoutubeDownloader\Http\HttpClientAware
interface- new
YoutubeDownloader\Cache\CacheAware
interface YoutubeDownloader\Provider\Youtube\Format
implementsYoutubeDownloader\Cache\CacheAware
interfaceYoutubeDownloader\Provider\Youtube\Provider
implementsYoutubeDownloader\Cache\CacheAware
interfaceYoutubeDownloader\Provider\Youtube\VideoInfo
implementsYoutubeDownloader\Cache\CacheAware
interface
YoutubeDownloader\Provider\Youtube\VideoInfo::setToCache()
will be removed in 0.6, useYoutubeDownloader\Provider\Youtube\VideoInfo::getCache()->set()
insteadYoutubeDownloader\Provider\Youtube\VideoInfo::getFromCache()
will be removed in 0.6, useYoutubeDownloader\Provider\Youtube\VideoInfo::getCache()->get()
insteadYoutubeDownloader\Container\SimpleContainer::set()
will require an optional Closure or a string as alias in second argument ($value) in 0.6, provide a Closure or a string as alias in second argument ($value) insteadYoutubeDownloader\Toolkit::curlGet()
will be removed in 0.6, useYoutubeDownloader\Http\CurlClient
insteadYoutubeDownloader\Toolkit::get_size()
will be removed in 0.6, useYoutubeDownloader\Http\CurlClient
insteadYoutubeDownloader\Toolkit::getDownloadUrlByFormats()
isn't used anymore and will be removed in 0.6
- Breaking: The
YoutubeDownloader\Format
class was removed, use theYoutubeDownloader\Provider\Youtube\Format
class instead - Breaking: The
YoutubeDownloader\SignatureDecipher
class was removed, use theYoutubeDownloader\Provider\Youtube\SignatureDecipher
class instead - Breaking: The
YoutubeDownloader\VideoInfo
class was removed, use theYoutubeDownloader\Provider\Youtube\VideoInfo
class instead - Breaking:
YoutubeDownloader\Toolkit::isMobileUrl()
isn't used anymore and was removed - Breaking:
YoutubeDownloader\Toolkit::treatMobileUrl()
isn't used anymore and was removed
0.4 - 2017-08-30
- new PSR-3 compatible logger implementation
YoutubeDownloader\Logger\Logger
to log all kind of events - new
YoutubeDownloader\VideoInfo\Provider
interface for describing an implementation how to get aVideoInfo
for an input like a youtube url - (a not so) new provider for downloading videos from Youtube
YoutubeDownloader\Container\SimpleContainer
has a newlogger
service with aYoutubeDownloader\Logger\Logger
instance- new folder
/logs
for log files YoutubeDownloader\Format
implementsLogger\LoggerAware
interfaceYoutubeDownloader\VideoInfo
implementsLogger\LoggerAware
interfaceYoutubeDownloader\SignatureDecipher::decipherSignatureWithRawPlayerScript()
expects an optional logger as 3rd parameter
- Logs are now stored in
/logs
, the fileDeciphers.log
can be deleted
- The
YoutubeDownloader\Format
class will be removed in 0.5, use theYoutubeDownloader\Provider\Youtube\Format
class instead - The
YoutubeDownloader\SignatureDecipher
class will be removed in 0.5, use theYoutubeDownloader\Provider\Youtube\SignatureDecipher
class instead - The
YoutubeDownloader\VideoInfo
class will be removed in 0.5, use theYoutubeDownloader\Provider\Youtube\VideoInfo
class instead YoutubeDownloader\Toolkit::isMobileUrl()
isn't used anymore and will be removed in 0.5YoutubeDownloader\Toolkit::treatMobileUrl()
isn't used anymore and will be removed in 0.5
- Breaking: method
YoutubeDownloader\SignatureDecipher::downloadPlayerScript()
was removed, useYoutubeDownloader\SignatureDecipher::downloadRawPlayerScript()
instead - Breaking: method
YoutubeDownloader\SignatureDecipher::decipherSignature()
was removed, useYoutubeDownloader\SignatureDecipher::decipherSignatureWithRawPlayerScript()
instead
0.3 - 2017-07-28
- new PSR-16 compatible cache implementation
Cache\FileCache
to store data in the filesystem SignatureDecipher::getPlayerInfoByVideoId()
to get the player ID and player url of a cipher videoSignatureDecipher::downloadRawPlayerScript()
to download the raw player script of a cipher videoSignatureDecipher::decipherSignatureWithRawPlayerScript()
to decipher a signature with a raw dicipher scriptVideoInfo::setCache()
to set a Cache implemantationVideoInfo::getFromCache()
to get a value from the Cache implemantationVideoInfo::setToCache()
to set a value to the Cache implemantation
- the web UI now uses Bootstrap 3.3.7 and has been improved
- all cache files are now saved in folder
cache
, theplayerscript
folder can be removed
- an issue in
Format
was fixed, that led to wrong download sizes for some formats - an issue in
ToolKit
was fixed, that led to an error with str_replace()
- method
SignatureDecipher::downloadPlayerScript()
will be removed in release 0.4, useSignatureDecipher::downloadRawPlayerScript()
instead - method
SignatureDecipher::decipherSignature()
will be removed in release 0.4, useSignatureDecipher::decipherSignatureWithRawPlayerScript()
instead
- Breaking: class
Stream
was removed, useFormat
instead - Breaking: class
StreamMap
was removed, useVideoInfo::getFormats()
andVideoInfo::getAdaptiveFormats()
instead - Breaking: method
VideoInfo::createFromString()
was removed, useVideoInfo::createFromStringWithConfig()
instead - Breaking: method
VideoInfo::getStreamMapString()
was removed, useVideoInfo::getFormats()
instead - Breaking: method
VideoInfo::getAdaptiveFormatsString()
was removed, useVideoInfo::getAdaptiveFormats()
instead
0.2 - 2017-07-21
- new configuration 'enable_youtube_decipher_signature' for automatically decipher a YouTube signature. Default is set to false.
Application\ControllerAbstract::responseWithErrorMessage()
to echo an error message and exitVideoInfo::createFromStringWithConfig()
to pass a configuration while creating the VideoInfoVideoInfo::getFormats()
to get the formats for a videoVideoInfo::getAdaptiveFormats()
to get the adaptive formats for a video
- class
Stream
will be removed in release 0.3, useFormat
instead - class
StreamMap
will be removed in release 0.3, useVideoInfo::getFormats()
andVideoInfo::getAdaptiveFormats()
instead - method
VideoInfo::createFromString()
will be removed in release 0.3, useVideoInfo::createFromStringWithConfig()
instead - method
VideoInfo::getStreamMapString()
will be removed in release 0.3, useVideoInfo::getFormats()
instead - method
VideoInfo::getAdaptiveFormatsString()
will be removed in release 0.3, useVideoInfo::getAdaptiveFormats()
instead
0.1 - 2017-07-19
- Simple library for using the functionality in other projects
- Web interface for downloading youtube videos