Merge branch 'release-1.2.3'

This commit is contained in:
Pierre Rudloff 2018-11-13 10:47:57 +01:00
commit c24006376b
7 changed files with 77 additions and 67 deletions

View file

@ -23,7 +23,7 @@
"phpunit/phpunit": "~6.5.2",
"doctrine/instantiator": "~1.0.0",
"ffmpeg/ffmpeg": "4.0.2",
"rg3/youtube-dl": "2018.09.10",
"rg3/youtube-dl": "2018.11.07",
"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.09.10",
"version": "2018.11.07",
"dist": {
"type": "zip",
"url": "https://github.com/rg3/youtube-dl/archive/2018.09.10.zip"
"url": "https://github.com/rg3/youtube-dl/archive/2018.11.07.zip"
}
}
},

86
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": "c4f6a7bd1b31e8a6cf1cec103821a820",
"content-hash": "9290c3e6ef15fb65892664adfd8f24c2",
"packages": [
{
"name": "aura/session",
@ -420,16 +420,16 @@
},
{
"name": "mockery/mockery",
"version": "1.1.0",
"version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/mockery/mockery.git",
"reference": "99e29d3596b16dabe4982548527d5ddf90232e99"
"reference": "100633629bf76d57430b86b7098cd6beb996a35a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mockery/mockery/zipball/99e29d3596b16dabe4982548527d5ddf90232e99",
"reference": "99e29d3596b16dabe4982548527d5ddf90232e99",
"url": "https://api.github.com/repos/mockery/mockery/zipball/100633629bf76d57430b86b7098cd6beb996a35a",
"reference": "100633629bf76d57430b86b7098cd6beb996a35a",
"shasum": ""
},
"require": {
@ -438,8 +438,7 @@
"php": ">=5.6.0"
},
"require-dev": {
"phpdocumentor/phpdocumentor": "^2.9",
"phpunit/phpunit": "~5.7.10|~6.5"
"phpunit/phpunit": "~5.7.10|~6.5|~7.0"
},
"type": "library",
"extra": {
@ -482,7 +481,7 @@
"test double",
"testing"
],
"time": "2018-05-08T08:54:48+00:00"
"time": "2018-10-02T21:52:37+00:00"
},
{
"name": "nikic/fast-route",
@ -894,12 +893,12 @@
"version": "v3.1.0",
"source": {
"type": "git",
"url": "https://github.com/rinvex/country.git",
"url": "https://github.com/rinvex/renamed-country.git",
"reference": "e32228ef43f26d3b02296be9454f842c52d492f3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rinvex/country/zipball/e32228ef43f26d3b02296be9454f842c52d492f3",
"url": "https://api.github.com/repos/rinvex/renamed-country/zipball/e32228ef43f26d3b02296be9454f842c52d492f3",
"reference": "e32228ef43f26d3b02296be9454f842c52d492f3",
"shasum": ""
},
@ -961,6 +960,7 @@
"rinvex",
"svg"
],
"abandoned": "rinvex/countries",
"time": "2017-03-07T18:40:20+00:00"
},
{
@ -1090,16 +1090,16 @@
},
{
"name": "smarty/smarty",
"version": "v3.1.32",
"version": "v3.1.33",
"source": {
"type": "git",
"url": "https://github.com/smarty-php/smarty.git",
"reference": "ac9d4b587e5bf53381e21881820a9830765cb459"
"reference": "dd55b23121e55a3b4f1af90a707a6c4e5969530f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/smarty-php/smarty/zipball/ac9d4b587e5bf53381e21881820a9830765cb459",
"reference": "ac9d4b587e5bf53381e21881820a9830765cb459",
"url": "https://api.github.com/repos/smarty-php/smarty/zipball/dd55b23121e55a3b4f1af90a707a6c4e5969530f",
"reference": "dd55b23121e55a3b4f1af90a707a6c4e5969530f",
"shasum": ""
},
"require": {
@ -1139,11 +1139,11 @@
"keywords": [
"templating"
],
"time": "2018-04-24T14:53:33+00:00"
"time": "2018-09-12T20:54:16+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.9.0",
"version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
@ -1201,16 +1201,16 @@
},
{
"name": "symfony/process",
"version": "v3.4.15",
"version": "v3.4.18",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "4d6b125d5293cbceedc2aa10f2c71617e76262e7"
"reference": "35c2914a9f50519bd207164c353ae4d59182c2cb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/4d6b125d5293cbceedc2aa10f2c71617e76262e7",
"reference": "4d6b125d5293cbceedc2aa10f2c71617e76262e7",
"url": "https://api.github.com/repos/symfony/process/zipball/35c2914a9f50519bd207164c353ae4d59182c2cb",
"reference": "35c2914a9f50519bd207164c353ae4d59182c2cb",
"shasum": ""
},
"require": {
@ -1246,20 +1246,20 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2018-08-03T10:42:44+00:00"
"time": "2018-10-14T17:33:21+00:00"
},
{
"name": "symfony/yaml",
"version": "v3.4.15",
"version": "v3.4.18",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "c2f4812ead9f847cb69e90917ca7502e6892d6b8"
"reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/c2f4812ead9f847cb69e90917ca7502e6892d6b8",
"reference": "c2f4812ead9f847cb69e90917ca7502e6892d6b8",
"url": "https://api.github.com/repos/symfony/yaml/zipball/640b6c27fed4066d64b64d5903a86043f4a4de7f",
"reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f",
"shasum": ""
},
"require": {
@ -1305,7 +1305,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
"time": "2018-08-10T07:34:36+00:00"
"time": "2018-10-02T16:33:53+00:00"
},
{
"name": "zonuexe/http-accept-language",
@ -1462,16 +1462,16 @@
},
{
"name": "heroku/heroku-buildpack-php",
"version": "v143",
"version": "v146",
"source": {
"type": "git",
"url": "https://github.com/heroku/heroku-buildpack-php.git",
"reference": "1cdd477661d3da7434efe5fedcb42d7b42503b8d"
"reference": "a380d44126a056cc5b7daaa0714714e3c888689f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/heroku/heroku-buildpack-php/zipball/1cdd477661d3da7434efe5fedcb42d7b42503b8d",
"reference": "1cdd477661d3da7434efe5fedcb42d7b42503b8d",
"url": "https://api.github.com/repos/heroku/heroku-buildpack-php/zipball/a380d44126a056cc5b7daaa0714714e3c888689f",
"reference": "a380d44126a056cc5b7daaa0714714e3c888689f",
"shasum": ""
},
"bin": [
@ -1502,7 +1502,7 @@
"nginx",
"php"
],
"time": "2018-08-17T16:27:37+00:00"
"time": "2018-11-08T19:23:29+00:00"
},
{
"name": "myclabs/deep-copy",
@ -2219,10 +2219,10 @@
},
{
"name": "rg3/youtube-dl",
"version": "2018.09.10",
"version": "2018.11.07",
"dist": {
"type": "zip",
"url": "https://github.com/rg3/youtube-dl/archive/2018.09.10.zip",
"url": "https://github.com/rg3/youtube-dl/archive/2018.11.07.zip",
"reference": null,
"shasum": null
},
@ -2840,16 +2840,16 @@
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.9.0",
"version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8"
"reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8",
"reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
"reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
"shasum": ""
},
"require": {
@ -2895,20 +2895,20 @@
"portable",
"shim"
],
"time": "2018-08-06T14:22:27+00:00"
"time": "2018-09-21T13:07:52+00:00"
},
{
"name": "symfony/var-dumper",
"version": "v3.4.15",
"version": "v3.4.18",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "f62a394bd3de96f2f5e8f4c7d685035897fb3cb3"
"reference": "ff8ac19e97e5c7c3979236b584719a1190f84181"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/f62a394bd3de96f2f5e8f4c7d685035897fb3cb3",
"reference": "f62a394bd3de96f2f5e8f4c7d685035897fb3cb3",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/ff8ac19e97e5c7c3979236b584719a1190f84181",
"reference": "ff8ac19e97e5c7c3979236b584719a1190f84181",
"shasum": ""
},
"require": {
@ -2964,7 +2964,7 @@
"debug",
"dump"
],
"time": "2018-07-26T11:19:56+00:00"
"time": "2018-10-02T16:33:53+00:00"
},
{
"name": "theseer/tokenizer",

View file

@ -422,9 +422,21 @@ class FrontController
$body = new Stream($stream);
} else {
$client = new Client();
$stream = $client->request('GET', $video->url, ['stream' => true]);
$stream = $client->request(
'GET',
$video->url,
[
'stream' => true,
'headers' => ['Range' => $request->getHeader('Range')],
]
);
$response = $response->withHeader('Content-Type', $stream->getHeader('Content-Type'));
$response = $response->withHeader('Content-Length', $stream->getHeader('Content-Length'));
$response = $response->withHeader('Accept-Ranges', $stream->getHeader('Accept-Ranges'));
$response = $response->withHeader('Content-Range', $stream->getHeader('Content-Range'));
if ($stream->getStatusCode() == 206) {
$response = $response->withStatus(206);
}
$body = $stream->getBody();
}
if ($request->isGet()) {

View file

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

View file

@ -1,14 +1,12 @@
# Frequently asked questions
<!-- markdownlint-disable MD026 -->
## My browser plays the video. How do I download it?
## My browser plays the video instead of downloading it
Most recent browsers automatically play a video
if it is a format they know how to play.
You can ususally download the video by doing *File > Save to* or *ctrl + S*.
You can usually download the video by doing *File > Save to* or *ctrl + S*.
## Why is [alltubedownload.net](https://alltubedownload.net) so slow?
## [alltubedownload.net](https://alltubedownload.net) is too slow
[alltubedownload.net](https://alltubedownload.net) is hosted on a free [Heroku server](https://www.heroku.com/pricing)
so it has low RAM and CPU.
@ -22,14 +20,14 @@ and you are encouraged to host it yourself.
See above.
## How do I change config parameters?
## Change config parameters
You need to create a YAML file called `config.yml` in the `config/` folder.
See [`config.example.yml`](../config/config.example.yml)
for a list of parameters you can set and their default value.
## How do I enable audio conversion?
## Enable audio conversion
In order to enable audio conversion, you need to add this to your `config.yml` file:
@ -44,7 +42,7 @@ You will also need to install `avconv` on your server:
sudo apt-get install libav-tools
```
## How do I deploy AllTube on Heroku?
## Deploy AllTube on Heroku
Create a dyno with the following buildpacks:
@ -61,7 +59,7 @@ PYTHON=/app/.heroku/python/bin/python
Then push the code to Heroku and it should work out of the box.
## Why can't I download videos from some websites (e.g. Dailymotion)
## I can't download videos from some websites (e.g. Dailymotion)
Some websites generate an unique video URL for each IP address.
When using AllTube, the URL is generated for our server's IP address
@ -93,7 +91,7 @@ You can work around this by adding this to your `config.yml` file:
uglyUrls: true
```
## How do I enable streaming videos through the server?
## Enable streaming videos through the server
You need to add this to your `config.yml` file:
@ -103,7 +101,7 @@ stream: true
Note that this can use a lot of ressources on your server.
## I want to download M3U videos
## Download M3U videos
You need to enable streaming (see above).
@ -111,18 +109,18 @@ You need to enable streaming (see above).
AllTube can rename videos automatically if you enable streaming (see above).
## I want to download a video that isn't available in my country
## Download a video that isn't available in my country
If the video is available in the server's country,
you can download it if you enable streaming (see above).
## How do I run the Docker image?
## Run the Docker image
```bash
docker run -p 8080:80 rudloff/alltube
```
## How do I run Heroku locally?
## Run Heroku locally
You should be able to use `heroku local` like this:
@ -146,7 +144,7 @@ after `heroku local` has finished launching `php-fpm`:
chmod 0667 /tmp/heroku.fcgi.5000.sock
```
## How can I download 1080p videos from Youtube?
## Download 1080p videos from Youtube
Youtube distributes HD content in two separate video and audio files.
So AllTube will offer you video-only and audio-only formats in the format list.
@ -156,7 +154,7 @@ 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.
## I want to convert videos to something other than MP3
## Convert videos to something other than MP3
By default the `convert` option only allows converting to MP3,
in order to keep things simple and ressources usage low.

View file

@ -25,8 +25,8 @@
{t}Audio only (MP3){/t}
</label>
<div class="seekOptions">
{t}From{/t} <input type="text" placeholder="00:00:00" value="" name="from" />
{t}to{/t} <input type="text" placeholder="00:22:30" value="" name="to" />
{t}From{/t} <input type="text" pattern="(\d+:)?(\d+:)?\d+(\.\d+)?" placeholder="HH:MM:SS" value="" name="from"/>
{t}to{/t} <input type="text" pattern="(\d+:)?(\d+:)?\d+(\.\d+)?" placeholder="HH:MM:SS" value="" name="to"/>
</div>
</div>
</div>

View file

@ -173,7 +173,7 @@ class VideoDownloadTest extends TestCase
'googlevideo.com',
],
[
'https://www.youtube.com/watch?v=RJJ6FCAXvKg', 22,
'https://www.youtube.com/watch?v=RJJ6FCAXvKg', 18,
'Heart_Attack_-_Demi_Lovato_'.
'Sam_Tsui_Against_The_Current-RJJ6FCAXvKg',
'mp4',