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\LoggerAwareInterfaceintoYoutubeDownloader\Provider\Youtube\VideoInfoinYoutubeDownloader\Provider\Youtube\Provider - Set correct
Psr\Log\LoggerAwareInterfaceintoYoutubeDownloader\Provider\Youtube\FormatinYoutubeDownloader\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\ContainerInterfaceinstance instead ofYoutubeDownloader\Cache\Cache - Breaking: Argument 1 in
YoutubeDownloader\Cache\CacheAware::setCache()must be aPsr\SimpleCache\CacheInterfaceinstance instead ofYoutubeDownloader\Cache\Cache - Breaking: Argument 1 in
YoutubeDownloader\Cache\CacheAwareTrait::setCache()must be aPsr\SimpleCache\CacheInterfaceinstance instead ofYoutubeDownloader\Cache\Cache - Breaking:
YoutubeDownloader\Cache\CacheAwareTrait::getCache()returns aPsr\SimpleCache\CacheInterfaceinstance instead ofYoutubeDownloader\Cache\Cache YoutubeDownloader\Cache\CacheExceptionimplementsPsr\SimpleCache\CacheExceptionYoutubeDownloader\Cache\InvalidArgumentExceptionimplementsPsr\SimpleCache\InvalidArgumentException- Breaking:
YoutubeDownloader\Cache\FileCacheimplementsPsr\SimpleCache\CacheInterfaceinstead ofYoutubeDownloader\Cache\Cache - Breaking:
YoutubeDownloader\Cache\NullCacheimplementsPsr\SimpleCache\CacheInterfaceinstead ofYoutubeDownloader\Cache\Cache YoutubeDownloader\Container\ContainerExceptionimplementsPsr\Container\ContainerExceptionInterfaceYoutubeDownloader\Container\NotFoundExceptionimplementsPsr\Container\NotFoundExceptionInterface- Breaking:
YoutubeDownloader\Container\SimpleContainerimplementsPsr\Container\ContainerInterfaceinstead ofYoutubeDownloader\Container\Container - Breaking:
YoutubeDownloader\Http\Client::createRequest()returnsPsr\Http\Message\RequestInterfaceinstead ofYoutubeDownloader\Http\Message\Request - Breaking: Argument 1 in
YoutubeDownloader\Http\Client::send()must be aPsr\Http\Message\RequestInterfaceinstance instead ofYoutubeDownloader\Http\Message\Request - Breaking:
YoutubeDownloader\Http\RequestimplementsPsr\Http\Message\RequestInterfaceinstead ofYoutubeDownloader\Http\Message\Request - Breaking:
YoutubeDownloader\Http\ResponseimplementsPsr\Http\Message\ResponseInterfaceinstead ofYoutubeDownloader\Http\Message\Response - Breaking:
YoutubeDownloader\Logger\HandlerAwareLoggerimplementsPsr\Log\LoggerInterfaceinstead ofYoutubeDownloader\Logger\Logger - Breaking:
YoutubeDownloader\Logger\LoggerAwareTrait::getLogger()returns aPsr\Log\LoggerInterfaceinstance instead ofYoutubeDownloader\Logger\Logger - Breaking: Argument 1 in
YoutubeDownloader\Logger\LoggerAwareTrait::setLogger()must be aPsr\Log\LoggerInterfaceinstance instead ofYoutubeDownloader\Logger\Logger - Breaking:
YoutubeDownloader\Provider\Youtube\FormatimplementsPsr\Log\LoggerAwareInterfaceinstance instead ofYoutubeDownloader\Logger\LoggerAware - Breaking:
YoutubeDownloader\Provider\Youtube\ProviderimplementsPsr\Log\LoggerAwareInterfaceinstance instead ofYoutubeDownloader\Logger\LoggerAware - Breaking: Argument 2 in
YoutubeDownloader\Provider\Youtube\SignatureDecipher::extractDecipherOpcode()must be aPsr\Log\LoggerInterfaceinstance instead ofYoutubeDownloader\Logger\Logger - Breaking: Argument 4 in
YoutubeDownloader\Provider\Youtube\SignatureDecipher::executeSignaturePattern()must be aPsr\Log\LoggerInterfaceinstance instead ofYoutubeDownloader\Logger\Logger - Breaking:
YoutubeDownloader\Provider\Youtube\VideoInfoimplementsPsr\Log\LoggerAwareInterfaceinstance instead ofYoutubeDownloader\Logger\LoggerAware
- Breaking:
YoutubeDownloader\Cache\Cacheinterface was removed, usePsr\SimpleCache\CacheInterfaceinstead - Breaking:
YoutubeDownloader\Container\Containerinterface was removed, usePsr\Container\ContainerInterfaceinstead - Breaking:
YoutubeDownloader\Http\Message\Messageinterface was removed, usePsr\Http\Message\MessageInterfaceinstead - Breaking:
YoutubeDownloader\Http\Message\Requestinterface was removed, usePsr\Http\Message\RequestInterfaceinstead - Breaking:
YoutubeDownloader\Http\Message\Responseinterface was removed, usePsr\Http\Message\ResponseInterfaceinstead - Breaking:
YoutubeDownloader\Http\Message\ServerRequestinterface was removed, usePsr\Http\Message\ServerRequestInterfaceinstead - Breaking:
YoutubeDownloader\Http\MessageTrait::getBodyAsString()was removed - Breaking:
YoutubeDownloader\Http\MessageTrait::withStringAsBody()was removed - Breaking:
YoutubeDownloader\Logger\Loggerinterface was removed, usePsr\Log\LoggerInterfaceinstead - Breaking:
YoutubeDownloader\Logger\LoggerAwareinterface was removed, usePsr\Log\LoggerAwareInterfaceinstead - Breaking:
YoutubeDownloader\Logger\LogLevelwas removed , usePsr\Log\LogLevelinstead - Breaking:
YoutubeDownloader\Logger\NullLoggerwas removed , usePsr\Log\NullLoggerinstead - Breaking:
YoutubeDownloader\Provider\Youtube\SignatureDecipher::decipherSignatureWithRawPlayerScript()isn't used anymore and was removed
0.7 - 2018-11-30
- new dictionary for
YoutubeDownloader\Provider\Youtube\SignatureDecipherto handle the YouTube signature change composer.lockas 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\CurlClientinstead - Breaking:
YoutubeDownloader\Toolkit::get_size()was removed, useYoutubeDownloader\Http\CurlClientinstead - 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\CurlClientas an implementation of the newYoutubeDownloader\Http\Clientinterface - new
YoutubeDownloader\Http\HttpClientAwareinterface YoutubeDownloader\Provider\Youtube\FormatimplementsYoutubeDownloader\Http\HttpClientAwareinterfaceYoutubeDownloader\Provider\Youtube\ProviderimplementsYoutubeDownloader\Http\HttpClientAwareinterfaceYoutubeDownloader\Provider\Youtube\VideoInfoimplementsYoutubeDownloader\Http\HttpClientAwareinterface- new
YoutubeDownloader\Cache\CacheAwareinterface YoutubeDownloader\Provider\Youtube\FormatimplementsYoutubeDownloader\Cache\CacheAwareinterfaceYoutubeDownloader\Provider\Youtube\ProviderimplementsYoutubeDownloader\Cache\CacheAwareinterfaceYoutubeDownloader\Provider\Youtube\VideoInfoimplementsYoutubeDownloader\Cache\CacheAwareinterface
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\CurlClientinsteadYoutubeDownloader\Toolkit::get_size()will be removed in 0.6, useYoutubeDownloader\Http\CurlClientinsteadYoutubeDownloader\Toolkit::getDownloadUrlByFormats()isn't used anymore and will be removed in 0.6
- Breaking: The
YoutubeDownloader\Formatclass was removed, use theYoutubeDownloader\Provider\Youtube\Formatclass instead - Breaking: The
YoutubeDownloader\SignatureDecipherclass was removed, use theYoutubeDownloader\Provider\Youtube\SignatureDecipherclass instead - Breaking: The
YoutubeDownloader\VideoInfoclass was removed, use theYoutubeDownloader\Provider\Youtube\VideoInfoclass 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\Loggerto log all kind of events - new
YoutubeDownloader\VideoInfo\Providerinterface for describing an implementation how to get aVideoInfofor an input like a youtube url - (a not so) new provider for downloading videos from Youtube
YoutubeDownloader\Container\SimpleContainerhas a newloggerservice with aYoutubeDownloader\Logger\Loggerinstance- new folder
/logsfor log files YoutubeDownloader\FormatimplementsLogger\LoggerAwareinterfaceYoutubeDownloader\VideoInfoimplementsLogger\LoggerAwareinterfaceYoutubeDownloader\SignatureDecipher::decipherSignatureWithRawPlayerScript()expects an optional logger as 3rd parameter
- Logs are now stored in
/logs, the fileDeciphers.logcan be deleted
- The
YoutubeDownloader\Formatclass will be removed in 0.5, use theYoutubeDownloader\Provider\Youtube\Formatclass instead - The
YoutubeDownloader\SignatureDecipherclass will be removed in 0.5, use theYoutubeDownloader\Provider\Youtube\SignatureDecipherclass instead - The
YoutubeDownloader\VideoInfoclass will be removed in 0.5, use theYoutubeDownloader\Provider\Youtube\VideoInfoclass 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\FileCacheto 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, theplayerscriptfolder can be removed
- an issue in
Formatwas fixed, that led to wrong download sizes for some formats - an issue in
ToolKitwas 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
Streamwas removed, useFormatinstead - Breaking: class
StreamMapwas 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
Streamwill be removed in release 0.3, useFormatinstead - class
StreamMapwill 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