Go to file
Pierre Rudloff 8c58c379de Merge branch 'release-0.7.2-beta2' 2017-04-02 20:37:58 +02:00
classes Lint 2017-01-16 12:11:37 +01:00
controllers Fix redirect when no format is specified 2017-03-19 12:27:08 +01:00
css Add background color 2016-12-22 12:46:32 +01:00
img Optimize images 2016-04-09 02:28:45 +02:00
js Remove annoying jslint warning 2016-07-22 18:27:33 +02:00
templates Cleaner way to get canonical URL 2017-01-16 14:26:12 +01:00
templates_c Add templates_c to repo 2015-06-28 19:53:18 +02:00
tests Lint 2017-03-19 12:28:54 +01:00
.dockerignore Docker build 2015-12-04 11:08:47 +01:00
.gitignore Generate clover test coverage 2016-08-19 00:45:45 +02:00
.htaccess Add ifmodule conditions in .htaccess 2017-01-09 00:05:49 +01:00
.travis.yml Use local phpunit on Travis 2017-01-30 17:19:18 +01:00
CONTRIBUTING.md Add contribution guidelines 2016-08-29 12:34:33 +02:00
Dockerfile Enable conversion on Docker image 2017-03-29 23:30:15 +02:00
FAQ.md Add Docker instructions to FAQ 2017-03-29 21:30:02 +02:00
Gruntfile.js Don't include phpunit and phpcs in release package 2016-10-18 09:19:05 +02:00
LICENSE Create LICENSE 2015-01-07 11:08:17 +01:00
Procfile Use Apache on Heroku 2015-06-04 20:34:41 +02:00
README.md Add update instructions to README (fixes #95) 2017-03-02 22:58:37 +01:00
bower.json jsonlint 2016-08-20 13:07:31 +02:00
composer.json youtube-dl update 2017-03-08 10:25:28 +01:00
composer.lock phpunit update 2017-03-18 00:02:38 +01:00
config.example.yml Add a stream parameter in config (fixes #24 and #39) 2017-01-16 12:02:21 +01:00
config_test.yml Use separate config file for tests 2016-08-19 01:07:51 +02:00
error.html Remove useless metadata 2016-05-01 20:14:58 +02:00
index.php Remove JSON output as we don't use it anymore 2017-01-16 16:03:31 +01:00
maintenance.html Remove useless metadata 2016-05-01 20:14:58 +02:00
manifest.json Add background color 2016-12-22 12:46:32 +01:00
manifest.webapp List manifest.webapp too 2016-08-20 13:10:57 +02:00
nginx.conf Nginx 2015-04-11 22:17:42 +02:00
package.json 0.7.2-beta2 release 2017-04-02 20:37:50 +02:00
php.ini Docker build 2015-12-04 11:08:47 +01:00
phpdoc.xml Add title to code doc 2016-10-19 18:05:58 +02:00
phpunit.xml Test controller 2017-01-16 17:19:19 +01:00
requirements.txt Use Python buildpack in order to have a recent Python version 2016-12-22 13:30:53 +01:00
robots.txt Initial import 2014-03-13 20:07:56 +01:00
sitemap.xml Correct URLs 2015-10-31 16:21:36 +01:00

README.md

Alltube Download

HTML GUI for youtube-dl (alltubedownload.net)

Screenshot

Setup

From a release package

You can download the latest release package here.

You just have to unzip it on your server and it should be ready to use.

From Git

In order to get AllTube working, you need to use npm and Composer:

npm install
composer install

This will download all the required dependencies.

(Note that it will download the ffmpeg binary for 64-bits Linux. If you are on another platform, you might want to specify the path to avconv/ffmpeg in your config file.)

You should also ensure that the templates_c folder has the right permissions:

chmod 777 templates_c/

If your web server is Apache, you need to set the AllowOverride setting to All or FileInfo.

Update

When updating from Git, you need to run npm and Composer again:

git pull
npm install
composer install

Config

If you want to use a custom config, you need to create a config file:

cp config.example.yml config.yml

PHP requirements

You will need PHP 5.5 (or higher) and the following PHP modules:

  • fileinfo
  • intl
  • mbstring
  • curl

Web server configuration

Apache

You will need the following modules:

  • mod_mime
  • mod_rewrite

Nginx

Here is an exemple Nginx configuration:

server {
        server_name localhost;
        listen 443 ssl;

        root /var/www/path/to/alltube;
        index index.php;

        access_log  /var/log/nginx/alltube.access.log;
        error_log   /var/log/nginx/alltube.error.log;

        types {
                text/html   html htm shtml;
                text/css    css;
                text/xml    xml;
                application/x-web-app-manifest+json   webapp;
        }

        # Deny access to dotfiles
        location ~ /\. {
                deny all;
        }

        location / {
                try_files $uri /index.php?$args;
        }

        location ~ \.php$ {
                try_files $uri /index.php?$args;

                fastcgi_param     PATH_INFO $fastcgi_path_info;
                fastcgi_param     PATH_TRANSLATED $document_root$fastcgi_path_info;
                fastcgi_param     SCRIPT_FILENAME $document_root$fastcgi_script_name;

                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_intercept_errors off;

                fastcgi_buffer_size 16k;
                fastcgi_buffers 4 16k;

                include fastcgi_params;
        }
}

Other dependencies

You need avconv, rtmpdump and curl in order to enable conversions. If you don't want to enable conversions, you can disable it in config.yml.

On Debian-based systems:

sudo apt-get install libav-tools rtmpdump curl

You also probably need to edit the avconv variable in config.yml so that it points to your ffmpeg/avconv binary (/usr/bin/avconv on Debian/Ubuntu).

Use as library

Alltube can also be used as a library to extract a video URL from a webpage.

You can install it with:

composer require rudloff/alltube

You can then use it in your PHP code:

use Alltube\Config;
use Alltube\VideoDownload;

require_once __DIR__.'/vendor/autoload.php';

$downloader = new VideoDownload(
    new Config(
        [
            'youtubedl' => '/usr/local/bin/youtube-dl',
        ]
    )
);

$downloader->getURL('https://www.youtube.com/watch?v=dQw4w9WgXcQ');

The library documentation is available on alltube.surge.sh.

You can also have a look at this example project.

FAQ

Please read the FAQ before reporting any issue.

License

This software is available under the GNU General Public License.

Please use a different name and logo if you run it on a public server.