Merge branch 'release-1.2.5'

This commit is contained in:
Pierre Rudloff 2019-01-20 11:33:52 +01:00
commit aa04d773ef
16 changed files with 405 additions and 107 deletions

View File

@ -90,7 +90,8 @@ module.exports = function (grunt) {
'i18n/zh_CN/LC_MESSAGES/Alltube.mo': 'i18n/zh_CN/LC_MESSAGES/Alltube.po',
'i18n/es_ES/LC_MESSAGES/Alltube.mo': 'i18n/es_ES/LC_MESSAGES/Alltube.po',
'i18n/de_DE/LC_MESSAGES/Alltube.mo': 'i18n/de_DE/LC_MESSAGES/Alltube.po',
'i18n/pt_BR/LC_MESSAGES/Alltube.mo': 'i18n/pt_BR/LC_MESSAGES/Alltube.po'
'i18n/pt_BR/LC_MESSAGES/Alltube.mo': 'i18n/pt_BR/LC_MESSAGES/Alltube.po',
'i18n/ar_001/LC_MESSAGES/Alltube.mo': 'i18n/ar_001/LC_MESSAGES/Alltube.po'
}
}
},

View File

@ -196,5 +196,3 @@ Please read the [FAQ](resources/FAQ.md) before reporting any issue.
## License
This software is available under the [GNU General Public License](http://www.gnu.org/licenses/gpl.html).
Please __use a different name and logo__ if you run it on a public server.

View File

@ -112,6 +112,13 @@ class Config
*/
public $avconvVerbosity = 'error';
/**
* App name.
*
* @var string
*/
public $appName = 'AllTube Download';
/**
* YAML config file path.
*

View File

@ -19,7 +19,7 @@ class LocaleManager
*
* @var array
*/
private $supportedLocales = ['en_US', 'fr_FR', 'zh_CN', 'es_ES', 'pt_BR', 'de_DE'];
private $supportedLocales = ['en_US', 'fr_FR', 'zh_CN', 'es_ES', 'pt_BR', 'de_DE', 'ar_001'];
/**
* Current locale.

View File

@ -5,25 +5,25 @@
"homepage": "http://alltubedownload.net/",
"type": "project",
"require": {
"slim/slim": "~3.9.2",
"slim/slim": "~3.11.0",
"mathmarques/smarty-view": "~1.1.0",
"symfony/yaml": "~3.4.1",
"symfony/process": "~3.4.1",
"guzzlehttp/guzzle": "~6.3.0",
"aura/session": "~2.1.0",
"barracudanetworks/archivestream-php": "~1.0.5",
"smarty-gettext/smarty-gettext": "~1.5.1",
"smarty-gettext/smarty-gettext": "~1.6.0",
"zonuexe/http-accept-language": "~0.4.1",
"rinvex/country": "~3.1.0",
"php-mock/php-mock-mockery": "~1.2.0"
"rinvex/countries": "~3.1.0",
"php-mock/php-mock-mockery": "~1.3.0"
},
"require-dev": {
"symfony/var-dumper": "~3.4.1",
"squizlabs/php_codesniffer": "~3.2.2",
"squizlabs/php_codesniffer": "~3.4.0",
"phpunit/phpunit": "~6.5.2",
"doctrine/instantiator": "~1.0.0",
"ffmpeg/ffmpeg": "4.0.3",
"rg3/youtube-dl": "2018.11.07",
"rg3/youtube-dl": "2019.01.17",
"heroku/heroku-buildpack-php": "*",
"anam/phantomjs-linux-x86-binary": "~2.1.1"
},
@ -39,10 +39,10 @@
"type": "package",
"package": {
"name": "rg3/youtube-dl",
"version": "2018.11.07",
"version": "2019.01.17",
"dist": {
"type": "zip",
"url": "https://github.com/rg3/youtube-dl/archive/2018.11.07.zip"
"url": "https://github.com/rg3/youtube-dl/archive/2019.01.17.zip"
}
}
},

200
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "2f25c657ba117b6ebbe7992c501bd890",
"content-hash": "06c7619047b2e62246e52f538b982231",
"packages": [
{
"name": "aura/session",
@ -257,32 +257,33 @@
},
{
"name": "guzzlehttp/psr7",
"version": "1.4.2",
"version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
"reference": "9f83dded91781a01c63574e387eaa769be769115"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
"reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115",
"reference": "9f83dded91781a01c63574e387eaa769be769115",
"shasum": ""
},
"require": {
"php": ">=5.4.0",
"psr/http-message": "~1.0"
"psr/http-message": "~1.0",
"ralouphie/getallheaders": "^2.0.5"
},
"provide": {
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"phpunit/phpunit": "~4.0"
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
"dev-master": "1.5-dev"
}
},
"autoload": {
@ -312,13 +313,14 @@
"keywords": [
"http",
"message",
"psr-7",
"request",
"response",
"stream",
"uri",
"url"
],
"time": "2017-03-20T17:10:46+00:00"
"time": "2018-12-04T20:46:45+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@ -531,30 +533,29 @@
},
{
"name": "php-mock/php-mock",
"version": "1.0.1",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-mock/php-mock.git",
"reference": "bfa2d17d64dbf129073a7ba2051a96ce52749570"
"reference": "22d297231118e6fd5b9db087fbe1ef866c2b95d2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-mock/php-mock/zipball/bfa2d17d64dbf129073a7ba2051a96ce52749570",
"reference": "bfa2d17d64dbf129073a7ba2051a96ce52749570",
"url": "https://api.github.com/repos/php-mock/php-mock/zipball/22d297231118e6fd5b9db087fbe1ef866c2b95d2",
"reference": "22d297231118e6fd5b9db087fbe1ef866c2b95d2",
"shasum": ""
},
"require": {
"php": ">=5.5",
"php": ">=5.6",
"phpunit/php-text-template": "^1"
},
"replace": {
"malkusch/php-mock": "*"
},
"require-dev": {
"phpunit/phpunit": "^4|^5"
"phpunit/phpunit": "^5.7"
},
"suggest": {
"php-mock/php-mock-mockery": "Allows using PHPMockery for Mockery integration",
"php-mock/php-mock-phpunit": "Allows integration into PHPUnit testcase with the trait PHPMock."
},
"type": "library",
@ -562,7 +563,7 @@
"psr-4": {
"phpmock\\": [
"classes/",
"tests/unit/"
"tests/"
]
}
},
@ -589,25 +590,25 @@
"test",
"test double"
],
"time": "2015-11-11T22:37:09+00:00"
"time": "2017-02-17T20:52:52+00:00"
},
{
"name": "php-mock/php-mock-integration",
"version": "1.0.0",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-mock/php-mock-integration.git",
"reference": "e83fb65dd20cd3cf250d554cbd4682b96b684f4b"
"reference": "5a0d7d7755f823bc2a230cfa45058b40f9013bc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-mock/php-mock-integration/zipball/e83fb65dd20cd3cf250d554cbd4682b96b684f4b",
"reference": "e83fb65dd20cd3cf250d554cbd4682b96b684f4b",
"url": "https://api.github.com/repos/php-mock/php-mock-integration/zipball/5a0d7d7755f823bc2a230cfa45058b40f9013bc4",
"reference": "5a0d7d7755f823bc2a230cfa45058b40f9013bc4",
"shasum": ""
},
"require": {
"php": ">=5.5",
"php-mock/php-mock": "^1",
"php": ">=5.6",
"php-mock/php-mock": "^2",
"phpunit/php-text-template": "^1"
},
"require-dev": {
@ -642,26 +643,26 @@
"test",
"test double"
],
"time": "2015-10-26T21:21:42+00:00"
"time": "2017-02-17T21:31:34+00:00"
},
{
"name": "php-mock/php-mock-mockery",
"version": "1.2.0",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/php-mock/php-mock-mockery.git",
"reference": "f3d67a36558c6d1fb912ed8ba786fffaf94e0755"
"reference": "d6d3df9d9232f1623f1ca3cfdaacd53415593825"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-mock/php-mock-mockery/zipball/f3d67a36558c6d1fb912ed8ba786fffaf94e0755",
"reference": "f3d67a36558c6d1fb912ed8ba786fffaf94e0755",
"url": "https://api.github.com/repos/php-mock/php-mock-mockery/zipball/d6d3df9d9232f1623f1ca3cfdaacd53415593825",
"reference": "d6d3df9d9232f1623f1ca3cfdaacd53415593825",
"shasum": ""
},
"require": {
"mockery/mockery": "^1",
"php": ">=5.6",
"php-mock/php-mock-integration": "^1"
"php-mock/php-mock-integration": "^2"
},
"require-dev": {
"phpunit/phpunit": "^4|^5"
@ -696,7 +697,7 @@
"test",
"test double"
],
"time": "2017-10-13T09:34:01+00:00"
"time": "2018-03-27T07:00:25+00:00"
},
{
"name": "phpunit/php-text-template",
@ -889,16 +890,56 @@
"time": "2016-08-06T14:39:51+00:00"
},
{
"name": "rinvex/country",
"name": "ralouphie/getallheaders",
"version": "2.0.5",
"source": {
"type": "git",
"url": "https://github.com/ralouphie/getallheaders.git",
"reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
"reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
"shasum": ""
},
"require": {
"php": ">=5.3"
},
"require-dev": {
"phpunit/phpunit": "~3.7.0",
"satooshi/php-coveralls": ">=1.0"
},
"type": "library",
"autoload": {
"files": [
"src/getallheaders.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ralph Khattar",
"email": "ralph.khattar@gmail.com"
}
],
"description": "A polyfill for getallheaders.",
"time": "2016-02-11T07:05:27+00:00"
},
{
"name": "rinvex/countries",
"version": "v3.1.0",
"source": {
"type": "git",
"url": "https://github.com/rinvex/renamed-country.git",
"url": "https://github.com/rinvex/countries.git",
"reference": "e32228ef43f26d3b02296be9454f842c52d492f3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rinvex/renamed-country/zipball/e32228ef43f26d3b02296be9454f842c52d492f3",
"url": "https://api.github.com/repos/rinvex/countries/zipball/e32228ef43f26d3b02296be9454f842c52d492f3",
"reference": "e32228ef43f26d3b02296be9454f842c52d492f3",
"shasum": ""
},
@ -960,21 +1001,20 @@
"rinvex",
"svg"
],
"abandoned": "rinvex/countries",
"time": "2017-03-07T18:40:20+00:00"
},
{
"name": "slim/slim",
"version": "3.9.2",
"version": "3.11.0",
"source": {
"type": "git",
"url": "https://github.com/slimphp/Slim.git",
"reference": "4086d0106cf5a7135c69fce4161fe355a8feb118"
"reference": "d378e70431e78ee92ee32ddde61ecc72edf5dc0a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/slimphp/Slim/zipball/4086d0106cf5a7135c69fce4161fe355a8feb118",
"reference": "4086d0106cf5a7135c69fce4161fe355a8feb118",
"url": "https://api.github.com/repos/slimphp/Slim/zipball/d378e70431e78ee92ee32ddde61ecc72edf5dc0a",
"reference": "d378e70431e78ee92ee32ddde61ecc72edf5dc0a",
"shasum": ""
},
"require": {
@ -1032,20 +1072,20 @@
"micro",
"router"
],
"time": "2017-11-26T19:13:09+00:00"
"time": "2018-09-16T10:54:21+00:00"
},
{
"name": "smarty-gettext/smarty-gettext",
"version": "1.5.1",
"version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/smarty-gettext/smarty-gettext.git",
"reference": "00fe2fcbc41e24e0245cd9d73f96bc7b0337972d"
"reference": "9a7d9284b5374caeae5eb226cf486efb4bc748b4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/smarty-gettext/smarty-gettext/zipball/00fe2fcbc41e24e0245cd9d73f96bc7b0337972d",
"reference": "00fe2fcbc41e24e0245cd9d73f96bc7b0337972d",
"url": "https://api.github.com/repos/smarty-gettext/smarty-gettext/zipball/9a7d9284b5374caeae5eb226cf486efb4bc748b4",
"reference": "9a7d9284b5374caeae5eb226cf486efb4bc748b4",
"shasum": ""
},
"require": {
@ -1055,6 +1095,7 @@
},
"require-dev": {
"azatoth/php-pgettext": "~1.0",
"phpunit/phpunit": ">=4.8.36",
"smarty/smarty": "3.1.*"
},
"suggest": {
@ -1072,7 +1113,7 @@
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1+"
"LGPL-2.1"
],
"authors": [
{
@ -1086,7 +1127,7 @@
],
"description": "Gettext plugin enabling internationalization in Smarty Package files",
"homepage": "https://github.com/smarty-gettext/smarty-gettext",
"time": "2017-05-12T12:14:46+00:00"
"time": "2019-01-17T23:06:53+00:00"
},
{
"name": "smarty/smarty",
@ -1201,16 +1242,16 @@
},
{
"name": "symfony/process",
"version": "v3.4.18",
"version": "v3.4.21",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "35c2914a9f50519bd207164c353ae4d59182c2cb"
"reference": "0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/35c2914a9f50519bd207164c353ae4d59182c2cb",
"reference": "35c2914a9f50519bd207164c353ae4d59182c2cb",
"url": "https://api.github.com/repos/symfony/process/zipball/0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c",
"reference": "0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c",
"shasum": ""
},
"require": {
@ -1246,20 +1287,20 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2018-10-14T17:33:21+00:00"
"time": "2019-01-02T21:24:08+00:00"
},
{
"name": "symfony/yaml",
"version": "v3.4.18",
"version": "v3.4.21",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f"
"reference": "554a59a1ccbaac238a89b19c8e551a556fd0e2ea"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/640b6c27fed4066d64b64d5903a86043f4a4de7f",
"reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f",
"url": "https://api.github.com/repos/symfony/yaml/zipball/554a59a1ccbaac238a89b19c8e551a556fd0e2ea",
"reference": "554a59a1ccbaac238a89b19c8e551a556fd0e2ea",
"shasum": ""
},
"require": {
@ -1305,7 +1346,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
"time": "2018-10-02T16:33:53+00:00"
"time": "2019-01-01T13:45:19+00:00"
},
{
"name": "zonuexe/http-accept-language",
@ -1462,16 +1503,16 @@
},
{
"name": "heroku/heroku-buildpack-php",
"version": "v146",
"version": "v148",
"source": {
"type": "git",
"url": "https://github.com/heroku/heroku-buildpack-php.git",
"reference": "a380d44126a056cc5b7daaa0714714e3c888689f"
"reference": "d331bfb9251d8a091d3a0d29e25ffcdb801577e1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/heroku/heroku-buildpack-php/zipball/a380d44126a056cc5b7daaa0714714e3c888689f",
"reference": "a380d44126a056cc5b7daaa0714714e3c888689f",
"url": "https://api.github.com/repos/heroku/heroku-buildpack-php/zipball/d331bfb9251d8a091d3a0d29e25ffcdb801577e1",
"reference": "d331bfb9251d8a091d3a0d29e25ffcdb801577e1",
"shasum": ""
},
"bin": [
@ -1502,7 +1543,7 @@
"nginx",
"php"
],
"time": "2018-11-08T19:23:29+00:00"
"time": "2018-12-20T21:53:40+00:00"
},
{
"name": "myclabs/deep-copy",
@ -2219,10 +2260,10 @@
},
{
"name": "rg3/youtube-dl",
"version": "2018.11.07",
"version": "2019.01.17",
"dist": {
"type": "zip",
"url": "https://github.com/rg3/youtube-dl/archive/2018.11.07.zip",
"url": "https://github.com/rg3/youtube-dl/archive/2019.01.17.zip",
"reference": null,
"shasum": null
},
@ -2789,16 +2830,16 @@
},
{
"name": "squizlabs/php_codesniffer",
"version": "3.2.3",
"version": "3.4.0",
"source": {
"type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
"reference": "4842476c434e375f9d3182ff7b89059583aa8b27"
"reference": "379deb987e26c7cd103a7b387aea178baec96e48"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/4842476c434e375f9d3182ff7b89059583aa8b27",
"reference": "4842476c434e375f9d3182ff7b89059583aa8b27",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/379deb987e26c7cd103a7b387aea178baec96e48",
"reference": "379deb987e26c7cd103a7b387aea178baec96e48",
"shasum": ""
},
"require": {
@ -2836,7 +2877,7 @@
"phpcs",
"standards"
],
"time": "2018-02-20T21:35:23+00:00"
"time": "2018-12-19T23:57:18+00:00"
},
{
"name": "symfony/polyfill-mbstring",
@ -2899,16 +2940,16 @@
},
{
"name": "symfony/var-dumper",
"version": "v3.4.18",
"version": "v3.4.21",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "ff8ac19e97e5c7c3979236b584719a1190f84181"
"reference": "a5f39641bb62e8b74e343467b145331273f615a2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/ff8ac19e97e5c7c3979236b584719a1190f84181",
"reference": "ff8ac19e97e5c7c3979236b584719a1190f84181",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/a5f39641bb62e8b74e343467b145331273f615a2",
"reference": "a5f39641bb62e8b74e343467b145331273f615a2",
"shasum": ""
},
"require": {
@ -2964,7 +3005,7 @@
"debug",
"dump"
],
"time": "2018-10-02T16:33:53+00:00"
"time": "2019-01-01T13:45:19+00:00"
},
{
"name": "theseer/tokenizer",
@ -3008,20 +3049,21 @@
},
{
"name": "webmozart/assert",
"version": "1.3.0",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
"reference": "0df1908962e7a3071564e857d86874dad1ef204a"
"reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
"reference": "0df1908962e7a3071564e857d86874dad1ef204a",
"url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
"reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
"shasum": ""
},
"require": {
"php": "^5.3.3 || ^7.0"
"php": "^5.3.3 || ^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"require-dev": {
"phpunit/phpunit": "^4.6",
@ -3054,7 +3096,7 @@
"check",
"validate"
],
"time": "2018-01-29T19:49:41+00:00"
"time": "2018-12-25T11:19:39+00:00"
}
],
"aliases": [],

View File

@ -37,5 +37,11 @@ uglyUrls: false
# True to stream videos through server
stream: false
# True to enable remux mode (merge best audio and best video)
remux: false
# MP3 bitrate when converting (in kbit/s)
audioBitrate: 128
# App name
appName: AllTube Download

View File

@ -162,6 +162,7 @@ class FrontController
$response,
'extractors.tpl',
[
'config' => $this->config,
'extractors' => $this->download->listExtractors(),
'class' => 'extractors',
'title' => _('Supported websites'),
@ -189,6 +190,7 @@ class FrontController
$response,
'password.tpl',
[
'config' => $this->config,
'class' => 'password',
'title' => _('Password prompt'),
'description' => _('You need a password in order to download this video with Alltube Download'),
@ -378,6 +380,7 @@ class FrontController
$response,
'error.tpl',
[
'config' => $this->config,
'errors' => $exception->getMessage(),
'class' => 'video',
'title' => _('Error'),
@ -473,15 +476,15 @@ class FrontController
}
$webpageUrl = $request->getQueryParam('url');
return $response->withHeader('Content-Disposition', 'attachment; filename="'.pathinfo(
$this->download->getFileNameWithExtension(
return $response->withHeader(
'Content-Disposition',
'attachment; filename="'.$this->download->getFileNameWithExtension(
'mkv',
$webpageUrl,
$format,
$this->sessionSegment->getFlash($webpageUrl)
),
PATHINFO_FILENAME
).'.mkv"');
)
);
}
/**

View File

@ -0,0 +1,237 @@
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: POEditor.com\n"
"Project-Id-Version: AllTube Download\n"
"Language: ar\n"
#: templates/error.tpl:6
msgid "Please check the URL of your video."
msgstr "رجاء راجع الرابط المكتوب"
#: templates/playlist.tpl:5
msgid "Videos extracted from"
msgstr "الفيديوات مستخلصة من"
#: templates/playlist.tpl:7
msgid ":"
msgstr ":"
#: templates/playlist.tpl:26 templates/video.tpl:96 templates/video.tpl:99
#: templates/password.tpl:10 templates/index.tpl:19
#: controllers/FrontController.php:315
msgid "Download"
msgstr "حمل"
#: templates/playlist.tpl:27
msgid "More options"
msgstr "خيارات أكثر"
#: templates/password.tpl:5
msgid "This video is protected"
msgstr "الفيديو محمي عن التحميل"
#: templates/password.tpl:6
msgid "You need a password in order to download this video."
msgstr "تحتاج لكلمة سر كي تستطع تحميل هذا الفيديو"
#: templates/password.tpl:8
msgid "Video password"
msgstr "كلمة سر الفيديو"
#: templates/extractors.tpl:4 controllers/FrontController.php:167
msgid "Supported websites"
msgstr "المواقع المدعومة"
#: templates/video.tpl:6
msgid "You are going to download"
msgstr "تريد تحميل"
#: templates/video.tpl:24
msgid "Available formats:"
msgstr "الصيغ المدعومة"
#: templates/video.tpl:29
msgid "Generic formats"
msgstr "الصيغ العامة"
#: templates/video.tpl:32
msgid "Best"
msgstr "الأفضل"
#: templates/video.tpl:37
msgid "Remux best video with best audio"
msgstr "اجمع الصوت الأفضل مع الفيديو الأفضل جودة"
#: templates/video.tpl:41
msgid "Worst"
msgstr "الاسوأ"
#: templates/video.tpl:44
msgid "Detailed formats"
msgstr "الصيغ بتعمق أكثر"
#: templates/inc/footer.tpl:4
msgid "Code by"
msgstr "برمجه"
#: templates/inc/footer.tpl:6
msgid "Design by"
msgstr "صممه"
#: templates/inc/footer.tpl:10
msgid "Get the code"
msgstr "للحصول على أصل البرنامج"
#: templates/inc/footer.tpl:12
msgid "Based on"
msgstr "مبني على"
#: templates/inc/header.tpl:21
msgid "Share on Twitter"
msgstr "شاركها على تويتر"
#: templates/inc/header.tpl:23
msgid "Share on Facebook"
msgstr "شاركها على فيسبوك"
#: templates/index.tpl:8
msgid "Copy here the URL of your video (Youtube, Dailymotion, etc.)"
msgstr "انسخ هنا رابط الفيديو (يوتيوب، انستقرام، وغيرها)"
#: templates/index.tpl:25
msgid "Audio only (MP3)"
msgstr "صوت فقط (MP3)"
#: templates/index.tpl:36
msgid "See all supported websites"
msgstr "لمراجعة جميع المواقع المدعومة"
#: templates/index.tpl:38
msgid "Drag this to your bookmarks bar:"
msgstr "اسحب هذا الموقع لقائمة المفضلة في متصفحك"
#: templates/index.tpl:39
msgid "Bookmarklet"
msgstr "موشر الصفحة"
#: templates/inc/header.tpl:4
msgid "Switch language"
msgstr "غير اللغة"
#: templates/error.tpl:5
msgid "An error occurred"
msgstr "حصل خطأ ما"
#: templates/video.tpl:85
msgid "Convert into a custom format:"
msgstr "حول لصيغة خاصة"
#: templates/video.tpl:93
msgid "kbit/s audio"
msgstr "كيلوبايتات صوت"
#: templates/video.tpl:91
msgid "with"
msgstr "مع"
#: classes/VideoDownload.php:117
msgid "Wrong password"
msgstr "كلمة السر خاطئة"
#: classes/VideoDownload.php:364 classes/VideoDownload.php:526
msgid "Conversion of M3U8 files is not supported."
msgstr "تحويل ملفات M3U8 غير مدعوم حاليًا."
#: classes/VideoDownload.php:375 classes/VideoDownload.php:412
#: classes/VideoDownload.php:445 classes/VideoDownload.php:478
#: classes/VideoDownload.php:534
msgid "Could not open popen stream."
msgstr "لم يمكن بدأ Popen"
#: classes/VideoDownload.php:502
msgid "Could not open fopen stream."
msgstr "لم يمكن بدأ fopen"
#: controllers/FrontController.php:124
msgid "Easily download videos from Youtube, Dailymotion, Vimeo and other websites."
msgstr "حمل مقاطع الفيديو بكل سهولة من يوتيوب، انستقرام، فيميو وغيره."
#: controllers/FrontController.php:168
msgid "List of all supported websites from which Alltube Download can extract video or audio files"
msgstr "قائمة كل المواقع التي يدعم Alltube Download تحميل الفيديوات أو مقاطع الصوت منها"
#: controllers/FrontController.php:193
msgid "Password prompt"
msgstr "ادخل كلمة السر"
#: controllers/FrontController.php:194
msgid "You need a password in order to download this video with Alltube Download"
msgstr "تحتاج لكلمة السر لكي تستطع تحميل هذا الفيديو باستخدام Alltube Donwload"
#: controllers/FrontController.php:311
msgid "Video download"
msgstr "تحميل الفيديو"
#: controllers/FrontController.php:312
msgid "Download video from "
msgstr "تحميل الفيديو من"
#: controllers/FrontController.php:315
msgid "from"
msgstr "من"
#: controllers/FrontController.php:378
msgid "Error"
msgstr "مشكلة"
#: controllers/FrontController.php:450
msgid "You need to enable remux mode to merge two formats."
msgstr "لابد من اختيار نمط الريمكس ليمكن دمج صيغتين مختلفتين."
#: controllers/FrontController.php:525
msgid "Can't find URL of video."
msgstr "لم أستطع الوجود على رابط الفيديو."
#: classes/VideoDownload.php:289 classes/VideoDownload.php:394
msgid "Can't find avconv or ffmpeg at "
msgstr "لم يمكن الوجود على avconv أو ffmpeg في"
#: templates/inc/footer.tpl:14
msgid "Donate"
msgstr "تبرع"
#: classes/VideoDownload.php:158
msgid "youtube-dl returned an empty URL."
msgstr "Youtube-DL عاد برابط فارغ"
#: classes/VideoDownload.php:359
msgid "Conversion of playlists is not supported."
msgstr "تحويل القائمات غير مدعوم حاليًا."
#: classes/VideoDownload.php:366
msgid "Conversion of DASH segments is not supported."
msgstr "تحويل مقاطع DASH غير مدعوم حاليًا."
#: templates/inc/footer.tpl:14
msgid "Donate using Liberapay"
msgstr "تبرع عن طريق Liberapay"
#: classes/VideoDownload.php:302
msgid "Invalid start time: "
msgstr "وقت بداية خاطئ:"
#: classes/VideoDownload.php:309
msgid "Invalid end time: "
msgstr "وقت نهاية خاطئ:"
#: templates/index.tpl:28
msgid "From"
msgstr "من"
#: templates/index.tpl:29
msgid "to"
msgstr "إلى"

View File

@ -1,7 +1,7 @@
{
"name": "alltube",
"description": "HTML GUI for youtube-dl",
"version": "1.2.4",
"version": "1.2.5",
"author": "Pierre Rudloff",
"bugs": "https://github.com/Rudloff/alltube/issues",
"dependencies": {

View File

@ -152,7 +152,11 @@ So AllTube will offer you video-only and audio-only formats in the format list.
You then need to merge them together with a tool like ffmpeg.
You can also enable the experimental remux mode
that will merge the best video and the best audio format on the fly.
that will merge the best video and the best audio format on the fly:
```yaml
remux: true
```
## Convert videos to something other than MP3

View File

@ -10,13 +10,13 @@
<meta property="og:description" content="{$description|escape}" />
{/if}
<link rel="stylesheet" href="{base_url}/dist/main.css" />
<title>AllTube Download{if isset($title)} - {$title|escape}{/if}</title>
<title>{$config->appName}{if isset($title)} - {$title|escape}{/if}</title>
<link rel="canonical" href="{$canonical}" />
<link rel="icon" href="{base_url}/img/favicon.png" />
<meta property="og:title" content="AllTube Download{if isset($title)} - {$title|escape}{/if}" />
<meta property="og:title" content="{$config->appName}{if isset($title)} - {$title|escape}{/if}" />
<meta property="og:image" content="{base_url}/img/logo.png" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="AllTube Download{if isset($title)} - {$title|escape}{/if}" />
<meta name="twitter:title" content="{$config->appName}{if isset($title)} - {$title|escape}{/if}" />
<meta name="twitter:image" content="{base_url}/img/logo.png" />
<meta name="twitter:creator" content="@Tael67" />
<meta name="theme-color" content="#4F4F4F">

View File

@ -1,4 +1,4 @@
<h1 class="logobis">
<a class="logocompatible" href="{base_url}">
AllTube Download<span class="logocompatiblemask"><img src="{base_url}/img/logocompatiblemask.png" width="447" height="107" alt="" /></span>
<span class="logocompatiblemask"><img src="{base_url}/img/logocompatiblemask.png" width="447" height="107" alt="{$config->appName}" /></span>
</a></h1>

View File

@ -2,7 +2,7 @@
{include file='inc/header.tpl'}
<main class="main">
<div><img class="logo" src="{base_url}/img/logo.png"
alt="AllTube Download" width="328" height="284"></div>
alt="{$config->appName}" width="328" height="284"></div>
<form action="{path_for name="video"}">
<label class="labelurl" for="url">
{t}Copy here the URL of your video (Youtube, Dailymotion, etc.){/t}

View File

@ -451,6 +451,8 @@ class FrontControllerTest extends TestCase
*/
public function testRedirectWithRtmpStream()
{
$this->markTestIncomplete('We need to find another RTMP video.');
$this->config->stream = true;
$this->assertRequestIsOk(
'redirect',

View File

@ -97,7 +97,6 @@ class VideoDownloadTest extends TestCase
* @return void
* @dataProvider urlProvider
* @dataProvider m3uUrlProvider
* @dataProvider rtmpUrlProvider
* @dataProvider remuxUrlProvider
*/
public function testGetURL(
@ -278,7 +277,6 @@ class VideoDownloadTest extends TestCase
* @return void
* @dataProvider urlProvider
* @dataProvider m3uUrlProvider
* @dataProvider rtmpUrlProvider
*/
public function testGetJSON($url, $format)
{
@ -316,7 +314,6 @@ class VideoDownloadTest extends TestCase
* @return void
* @dataProvider urlProvider
* @dataProvider m3uUrlProvider
* @dataProvider rtmpUrlProvider
* @dataProvider remuxUrlProvider
*/
public function testGetFilename($url, $format, $filename, $extension)
@ -349,7 +346,6 @@ class VideoDownloadTest extends TestCase
* @return void
* @dataProvider urlProvider
* @dataProvider m3uUrlProvider
* @dataProvider rtmpUrlProvider
* @dataProvider remuxUrlProvider
*/
public function testGetAudioFilename($url, $format, $filename)
@ -490,6 +486,8 @@ class VideoDownloadTest extends TestCase
*/
public function testGetRtmpStream($url, $format)
{
$this->markTestIncomplete('We need to find another RTMP video.');
$this->assertStream(
$this->download->getRtmpStream(
$this->download->getJSON($url, $format)