Compare commits

...

20 Commits

Author SHA1 Message Date
Pierre Rudloff ec95a8f1b7
Merge branch 'release/3.2.0-alpha' 2023-04-22 23:21:32 +02:00
Pierre Rudloff a9da2314af
Merge branch 'master' into develop 2023-04-22 23:16:52 +02:00
dependabot[bot] fcb3d2e84c
Bump guzzlehttp/psr7 from 1.9.0 to 1.9.1 (#436)
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 1.9.0 to 1.9.1.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/1.9.1/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/1.9.0...1.9.1)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-19 23:47:18 +02:00
Pierre Rudloff f09b7b43d7
Merge branch 'master' into develop 2023-03-30 21:46:49 +02:00
dependabot[bot] a4146a63c8
Bump smarty/smarty from 4.3.0 to 4.3.1 (#431)
Bumps [smarty/smarty](https://github.com/smarty-php/smarty) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/smarty-php/smarty/releases)
- [Changelog](https://github.com/smarty-php/smarty/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smarty-php/smarty/compare/v4.3.0...v4.3.1)

---
updated-dependencies:
- dependency-name: smarty/smarty
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-30 21:46:39 +02:00
Pierre Rudloff 3e45f19682
Switch to yt-dlp (fixes #432)
youtube-dl has no new release since 2021
2023-03-30 21:41:08 +02:00
Pierre Rudloff 9564764633
ucfirst Smarty modifier is deprecated
See https://github.com/smarty-php/smarty/issues/813
2023-03-21 20:25:47 +01:00
Pierre Rudloff 71647158d3
Stronger typying now that we target PHP 7.4 2023-03-21 20:20:14 +01:00
Pierre Rudloff b23ce88be8
fixup! fix dockerfile permission issue (#426) 2023-03-21 20:07:31 +01:00
Pierre Rudloff b52a582539
Stop supporting PHP 7.3 (#430)
It is unmaintained
2023-03-21 20:07:08 +01:00
Pierre Rudloff 7bfe55fff6
"git describe" needs to be non-interactive so we can get its output 2023-03-11 14:37:28 +01:00
Pierre Rudloff 9d8bff3c42 Updated robo to 3.0
Various dependencies update
 -----BEGIN SSH SIGNATURE-----
 U1NIU0lHAAAAAQAAAZcAAAAHc3NoLXJzYQAAAAMBAAEAAAGBAJ1cjUGHGZz2Xlnuxq9dZ2
 wA/r2ineVomdWGZBiq9GYcfUirCaArD49YsXbdQKkcHhrQ+gMUNQP4iOWjuPBG5WAPrORz
 LXUXwmk0UHdEPdJ2LymHXQsyYyHaldikt3gfsiD0ny/Uf3V9lL3vnrEUhQAxIYN87RaQun
 OL0S5y5wOp3vr8DwMlvAUDfZbzZgJ56nzVWRElVLNuQCQSZta9imqnJpzHQf4KTMut191S
 hgQjBA0TWeOAqGVeIMOctLqNY1gL5QUSyg5RYmBHjResH8tnOkfPElE1Ih19MCCQ9Eaubw
 g1cS6Ls6LgbTIdvyMud6ep+0iF3ifj0g7w1X6NvQfQp0JcWkU3eXyQfOGjdePZG9Kn+27Q
 EeMv47cyCGuMdGbpbFoD/yR82T2n78rPmxbYEnPnJSmuy30Wi8reYeaQUP2z+Krexk5tGQ
 a/thYIk1yhN+Ui3nSr78sATwgqateS6VvNw8nY315PUzmf4Bk0kDCnj7Q7z4wenHAhkayU
 FwAAAANnaXQAAAAAAAAABnNoYTUxMgAAAZQAAAAMcnNhLXNoYTItNTEyAAABgG9ULjUS0q
 UP06d9PYGfxYL3aADqwS5eczhU4B3QsUD5aab3q1qbqUfkRZ7Gvhy3lK4UXJvyy5kGC5Ba
 1u+WBlCuX4ki6Vgum0skw612V5cKOdcr5eDDc5jYRPwNd3P/Aa/YoBc1Ev4a1Ozlj9g2MR
 2XmDHxaoW6tzjsGYgPhihr1eIDAQm+BxeccDdjs9lsSiHfpcW6Vg7MdBzxZFPBEbpeEp6I
 WsvWVntjwBKFXG+cx/nBq+HNwdBHOq5ncE3eLHG7loNb5O3cof9t8Y91z+P6Cnw8r6lulu
 RIOgBfv/fIgZTIXq/UZ/bjUmbDrpCfDm2mtSi57X4Iaj5ZBXAu0tGwl46ZhGjDnwxBcBGn
 DcaLWUhVL19JEhKwq3APdV++ZEpeU4+G4VbuYvjbLe3kT/S/AMaw/5H1D7CFPQB30AeLbl
 l+1QWoc3bW8rY0FqBHpaFl5mgvu3VL23H8O+VhrzueM/CK22aaBt86bvUVHQnqLnQQ82xo
 oARjISpOfp0xjw==
 -----END SSH SIGNATURE-----
gpgsig -----BEGIN SSH SIGNATURE-----
 U1NIU0lHAAAAAQAAAZcAAAAHc3NoLXJzYQAAAAMBAAEAAAGBAJ1cjUGHGZz2Xlnuxq9dZ2
 wA/r2ineVomdWGZBiq9GYcfUirCaArD49YsXbdQKkcHhrQ+gMUNQP4iOWjuPBG5WAPrORz
 LXUXwmk0UHdEPdJ2LymHXQsyYyHaldikt3gfsiD0ny/Uf3V9lL3vnrEUhQAxIYN87RaQun
 OL0S5y5wOp3vr8DwMlvAUDfZbzZgJ56nzVWRElVLNuQCQSZta9imqnJpzHQf4KTMut191S
 hgQjBA0TWeOAqGVeIMOctLqNY1gL5QUSyg5RYmBHjResH8tnOkfPElE1Ih19MCCQ9Eaubw
 g1cS6Ls6LgbTIdvyMud6ep+0iF3ifj0g7w1X6NvQfQp0JcWkU3eXyQfOGjdePZG9Kn+27Q
 EeMv47cyCGuMdGbpbFoD/yR82T2n78rPmxbYEnPnJSmuy30Wi8reYeaQUP2z+Krexk5tGQ
 a/thYIk1yhN+Ui3nSr78sATwgqateS6VvNw8nY315PUzmf4Bk0kDCnj7Q7z4wenHAhkayU
 FwAAAANnaXQAAAAAAAAABnNoYTUxMgAAAZQAAAAMcnNhLXNoYTItNTEyAAABgJrUC15ar9
 VQj/LfmlMNN7+ec1D17Bk4q7/XH27FgUyRCHXLFS4hm0GhtjIZAaA9jErCt23NcAFan7cI
 WQyL6AAqqq/DOshmaYXY7Zj+5vQXbiJjDcGu1IsdGEFAA/DIAr721vxfKrri3aArucWK3T
 ymPliFOqhL1qyxKqFxrADJmcqZeL9XzoQ0RHxayyN8XRYf5Px8vrmxkgvcI7wiy2W554qk
 3DR7UlcHX/rg1H8B6W+PO7WK0JWdFoRRR/EErmo2VzCfEo/3USxJPPNUrhEv6K02WUVzib
 1ac6cjuIsb0xHE2zVQO6hgpIH9L73Ef6pOUcEnlu2zqE1FPgJc5u0q5MDXQyNMGTtcKk8U
 /UfNJw55umSMneOTHnhZ3AfmNYAmxWGGfwpbc2Y/rrOdBXWVhJzoPZWRKuOANk65+9NIjC
 20KLEeZSvodADv+f+WGrsVDHB2NUKLG5YuuWANH/s07a9Mm7I/XedWgRE7wh/WzfT93XKn
 BwDuEKTCMHOZwQ==
 -----END SSH SIGNATURE-----

Merge tag '3.1.1' into develop

Updated robo to 3.0
Various dependencies update
2023-03-11 14:32:35 +01:00
Pierre Rudloff 2bef4d551d
Merge branch 'release/3.1.1' 2023-03-11 14:30:30 +01:00
Pierre Rudloff f475fa2a47
Lint 2023-03-03 00:18:00 +01:00
Pierre Rudloff 8e6e88a2b2
Dependencies update 2023-03-03 00:14:36 +01:00
Pierre Rudloff 2d60fd32ef Merge branch 'master' into develop 2022-11-07 21:20:44 +01:00
Pierre Rudloff f32412e861 fixup! fix dockerfile permission issue (#426) 2022-11-07 21:19:52 +01:00
Samuel Tan d060650833
fix dockerfile permission issue (#426) 2022-10-25 22:43:26 +02:00
Pierre Rudloff 4e09393fd9 Update robo to 3.0
To fix a PHP 8 compatibility notice
2022-10-16 15:42:19 +02:00
Pierre Rudloff 5d5a6624b8 Merge tag '3.1.0' into develop
Removed every reference to alltubedownload.net (#422)
Updated youtube-dl to 2021.12.17
Updated alltube-library to 0.1.3
Updated Smarty to 4.0
PHP 8 compatibility
Various refactoring and typying improvement
2022-10-16 15:36:55 +02:00
28 changed files with 1228 additions and 1323 deletions

View File

@ -9,8 +9,9 @@ jobs:
strategy:
matrix:
php-version:
- '7.3'
- '7.4'
- '8.0'
- '8.1'
steps:
- uses: actions/checkout@v2
- name: Use PHP ${{ matrix.php-version }}

View File

@ -1,7 +1,6 @@
FROM php:7.3-apache
FROM php:7.4-apache
RUN apt-get update
RUN apt-get install -y libicu-dev xz-utils git python libgmp-dev unzip ffmpeg
RUN docker-php-ext-install mbstring
RUN docker-php-ext-install intl
RUN docker-php-ext-install gmp
RUN a2enmod rewrite
@ -10,4 +9,7 @@ COPY resources/php.ini /usr/local/etc/php/
COPY . /var/www/html/
RUN php composer.phar check-platform-reqs --no-dev
RUN php composer.phar install --prefer-dist --no-progress --no-dev --optimize-autoloader
RUN mkdir /var/www/html/templates_c/
RUN chmod 770 -R /var/www/html/templates_c/
RUN chown www-data -R /var/www/html/templates_c/
ENV CONVERT=1

View File

@ -19,90 +19,97 @@ use Jawira\CaseConverter\Convert;
*/
class Config
{
/**
* youtube-dl binary path.
*
* @var string
*/
public $youtubedl = 'vendor/ytdl-org/youtube-dl/youtube_dl/__main__.py';
public string $youtubedl = 'vendor/yt-dlp/yt-dlp/yt_dlp/__main__.py';
/**
* python binary path.
*
* @var string
*/
public $python = '/usr/bin/python';
public string $python = '/usr/bin/python';
/**
* youtube-dl parameters.
*
* @var string[]
*/
public $params = ['--no-warnings', '--ignore-errors', '--flat-playlist', '--restrict-filenames', '--no-playlist'];
public array $params = [
'--no-warnings',
'--ignore-errors',
'--flat-playlist',
'--restrict-filenames',
'--no-playlist',
'--use-extractors',
'default,-generic',
];
/**
* Enable audio conversion.
*
* @var bool
*/
public $convert = false;
public bool $convert = false;
/**
* Enable advanced conversion mode.
*
* @var bool
*/
public $convertAdvanced = false;
public bool $convertAdvanced = false;
/**
* List of formats available in advanced conversion mode.
*
* @var string[]
*/
public $convertAdvancedFormats = ['mp3', 'avi', 'flv', 'wav'];
public array $convertAdvancedFormats = ['mp3', 'avi', 'flv', 'wav'];
/**
* ffmpeg binary path.
*
* @var string
*/
public $ffmpeg = '/usr/bin/ffmpeg';
public string $ffmpeg = '/usr/bin/ffmpeg';
/**
* Path to the directory that contains the phantomjs binary.
*
* @var string
*/
public $phantomjsDir = '/usr/bin/';
public string $phantomjsDir = '/usr/bin/';
/**
* Disable URL rewriting.
*
* @var bool
*/
public $uglyUrls = false;
public bool $uglyUrls = false;
/**
* Stream downloaded files trough server?
*
* @var bool
*/
public $stream = false;
public bool $stream = false;
/**
* Allow to remux video + audio?
*
* @var bool
*/
public $remux = false;
public bool $remux = false;
/**
* MP3 bitrate when converting (in kbit/s).
*
* @var int
*/
public $audioBitrate = 128;
public int $audioBitrate = 128;
/**
* ffmpeg logging level.
@ -110,21 +117,21 @@ class Config
*
* @var string
*/
public $ffmpegVerbosity = 'error';
public string $ffmpegVerbosity = 'error';
/**
* App name.
*
* @var string
*/
public $appName = 'AllTube Download';
public string $appName = 'AllTube Download';
/**
* Generic formats supported by youtube-dl.
*
* @var string[]
*/
public $genericFormats = [
public array $genericFormats = [
'best/bestvideo' => 'Best',
'bestvideo+bestaudio' => 'Remux best video with best audio',
'worst/worstvideo' => 'Worst',
@ -135,21 +142,21 @@ class Config
*
* @var bool
*/
public $debug = false;
public bool $debug = false;
/**
* Default to audio.
*
* @var bool
*/
public $defaultAudio = false;
public bool $defaultAudio = false;
/**
* Disable audio conversion from/to seeker.
*
* @var bool
*/
public $convertSeek = true;
public bool $convertSeek = true;
/**
* Config constructor.

View File

@ -30,21 +30,21 @@ abstract class BaseController
*
* @var Video
*/
protected $video;
protected Video $video;
/**
* Default youtube-dl format.
*
* @var string
*/
protected $defaultFormat = 'best/bestvideo';
protected string $defaultFormat = 'best/bestvideo';
/**
* Slim dependency container.
*
* @var ContainerInterface
*/
protected $container;
protected ContainerInterface $container;
/**
* Config instance.

View File

@ -12,7 +12,6 @@ use Throwable;
*/
class ErrorHandler
{
/**
* Last resort if the error has not been caught by the Slim error handler for some reason.
* @param Throwable $e

View File

@ -10,5 +10,4 @@ use Exception;
*/
class ConfigException extends Exception
{
}

View File

@ -10,5 +10,4 @@ use Exception;
*/
class DependencyException extends Exception
{
}

View File

@ -14,7 +14,6 @@ use Symfony\Component\ErrorHandler\Debug;
*/
class ConfigFactory
{
/**
* @param Container $container
* @return Config

View File

@ -18,7 +18,6 @@ use Slim\Container;
*/
class DebugBarFactory
{
/**
* @param Container $container
* @return DebugBar

View File

@ -13,7 +13,6 @@ use Slim\Container;
*/
class LocaleManagerFactory
{
/**
* @param Container $container
* @return LocaleManager

View File

@ -15,7 +15,6 @@ use Symfony\Component\Console\Output\OutputInterface;
*/
class LoggerFactory
{
/**
* @param Container $container
* @return LoggerManager

View File

@ -15,7 +15,6 @@ use Slim\Container;
*/
class SessionFactory
{
/**
* Get the current session.
*

View File

@ -20,7 +20,6 @@ use SmartyException;
*/
class ViewFactory
{
/**
* @param Uri $uri
* @return Uri

View File

@ -60,7 +60,7 @@ class Locale
*/
public function getFullName(): string
{
return PHPLocale::getDisplayName($this->getIso15897(), $this->getIso15897());
return mb_convert_case(PHPLocale::getDisplayName($this->getIso15897(), $this->getIso15897()), MB_CASE_TITLE);
}
/**

View File

@ -17,7 +17,6 @@ use Symfony\Component\Translation\Loader\PoFileLoader;
*/
class LocaleManager
{
/**
* Path to locales.
*/
@ -28,14 +27,14 @@ class LocaleManager
*
* @var Locale|null
*/
private $curLocale;
private ?Locale $curLocale = null;
/**
* Session segment used to store session variables.
*
* @var Segment
*/
private $sessionSegment;
private Segment $sessionSegment;
/**
* Default locale.
@ -49,7 +48,7 @@ class LocaleManager
*
* @var Translator
*/
private $translator;
private Translator $translator;
/**
* LocaleManager constructor.

View File

@ -15,7 +15,6 @@ use Slim\Http\Response;
*/
class CspMiddleware
{
/**
* @var Config
*/

View File

@ -12,7 +12,6 @@ use Slim\Http\Response;
*/
class LinkHeaderMiddleware
{
/**
* @param Request $request
* @param Response $response

View File

@ -14,7 +14,6 @@ use Robo\Tasks;
*/
class ReleaseCommand extends Tasks
{
/**
* Create release archive
* @return void
@ -27,6 +26,7 @@ class ReleaseCommand extends Tasks
$gitTask = $this->taskExec('git');
$result = $gitTask
->arg('describe')
->interactive(false)
->run();
$tmpDir = $this->_tmpDir();

View File

@ -24,7 +24,7 @@ class PlaylistArchiveStream extends ZipArchive implements StreamInterface
*
* @var Video[]
*/
private $videos = [];
private array $videos = [];
/**
* Stream used to store data before it is sent to the browser.
@ -38,21 +38,21 @@ class PlaylistArchiveStream extends ZipArchive implements StreamInterface
*
* @var StreamInterface
*/
protected $curVideoStream;
protected StreamInterface $curVideoStream;
/**
* True if the archive is complete.
*
* @var bool
*/
private $isComplete = false;
private bool $isComplete = false;
/**
* Downloader object.
*
* @var Downloader
*/
protected $downloader;
protected Downloader $downloader;
/**
* PlaylistArchiveStream constructor.

View File

@ -20,7 +20,7 @@ class YoutubeChunkStream implements StreamInterface
*
* @var ResponseInterface
*/
private $response;
private ResponseInterface $response;
/**
* YoutubeChunkStream constructor.

View File

@ -18,7 +18,7 @@
}
],
"require": {
"php": ">=7.3",
"php": ">=7.4",
"ext-intl": "*",
"ext-json": "*",
"aura/session": "^2.1",
@ -31,17 +31,17 @@
"mathmarques/smarty-view": "^1.2",
"oomphinc/composer-installers-extender": "^2.0",
"paragonie/csp-builder": "^2.5",
"rinvex/countries": "^6.1",
"rinvex/countries": "^7.3",
"rudloff/alltube-library": "^0.1.3",
"symfony/finder": "^5.4",
"symfony/translation": "^4.0",
"symfony/yaml": "^4.0",
"webfontkit/open-sans": "^1.0",
"ytdl-org/youtube-dl": "^2021.12",
"yt-dlp/yt-dlp": "^2023.03",
"zonuexe/http-accept-language": "^0.4.1"
},
"require-dev": {
"consolidation/robo": "^2.1",
"consolidation/robo": "^3.0",
"enlightn/security-checker": "^1.4",
"ergebnis/composer-normalize": "^2.20",
"insite/composer-dangling-locked-deps": "^0.2.1",
@ -62,11 +62,11 @@
{
"type": "package",
"package": {
"name": "ytdl-org/youtube-dl",
"version": "2021.12.17",
"name": "yt-dlp/yt-dlp",
"version": "2023.03.04",
"dist": {
"type": "tar",
"url": "https://yt-dl.org/downloads/2021.12.17/youtube-dl-2021.12.17.tar.gz"
"url": "https://github.com/yt-dlp/yt-dlp/releases/download/2023.03.04/yt-dlp.tar.gz"
}
}
}
@ -88,10 +88,11 @@
"ergebnis/composer-normalize": true,
"insite/composer-dangling-locked-deps": true,
"oomphinc/composer-installers-extender": true,
"php-http/discovery": true,
"phpro/grumphp": true
},
"platform": {
"php": "7.3.11"
"php": "7.4.33"
},
"sort-packages": true
},
@ -107,11 +108,7 @@
"installer-types": [
"library"
],
"patches": {
"ytdl-org/youtube-dl": {
"Disable the generic extractor": "patches/youtube-dl-disable-generic.diff"
}
}
"patches": {}
},
"scripts": {
"lint": "grumphp run --ansi",

2414
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
---
# Path to your youtube-dl binary
youtubedl: vendor/ytdl-org/youtube-dl/youtube_dl/__main__.py
youtubedl: vendor/yt-dlp/yt-dlp/yt_dlp/__main__.py
# Path to your python binary
python: /usr/bin/python
@ -12,6 +12,8 @@ params:
- --flat-playlist
- --restrict-filenames
- --no-playlist
- --use-extractors
- default,-generic
# True to enable audio conversion
convert: false

View File

@ -1,12 +0,0 @@
diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py
index 18d8dbcd6..4d3edfac3 100644
--- a/youtube_dl/extractor/__init__.py
+++ b/youtube_dl/extractor/__init__.py
@@ -13,7 +13,6 @@ except ImportError:
for name, klass in globals().items()
if name.endswith('IE') and name != 'GenericIE'
]
- _ALL_CLASSES.append(GenericIE)
def gen_extractor_classes():

View File

@ -18,7 +18,7 @@
{if $supportedLocale->getCountry()}
{$supportedLocale->getCountry()->getEmoji()}
{/if}
{$supportedLocale->getFullName()|ucfirst}
{$supportedLocale->getFullName()}
</a>
</li>
{/if}

View File

@ -14,7 +14,6 @@ use Alltube\Exception\ConfigException;
*/
class ConfigTest extends BaseTest
{
/**
* Test the getInstance function.
*

View File

@ -17,7 +17,6 @@ use SmartyException;
*/
class ConvertedPlaylistArchiveStreamTest extends StreamTest
{
/**
* Prepare tests.
*

View File

@ -54,7 +54,7 @@ class LocaleTest extends ContainerTest
*/
public function testGetFullName()
{
$this->assertEquals('français (France)', $this->localeObject->getFullName());
$this->assertEquals('Français (France)', $this->localeObject->getFullName());
}
/**