YouTube Downloader
THIS PROJECT IS NO LONGER ACTIVELY DEVELOPED
PHP Library with Web UI to download videos from YouTube.
Goals
- Create a library that delivers data and download links for youtube videos.
- Create a UI for downloading the videos.
- Have no external dependencies to other services.
- Have no external dependencies to other libraries in production.
- Installation should be simple (unzip on server and go)
To achieve this goals this project contains two parts:
- A semantic versioning 2 following PHP library that delivers data and download links for youtube videos.
- A Web interface that uses this library
Support for Cipher signature
YouTube Downloader supports YouTube videos with a cipher signature too.
You can activate this by setting the enable_youtube_decipher_signature
to true
in /config/custom.php
. If the file don't exists you can simple create it or copy from /config/default.php
.
<?php
// in config/custom.php
return [
'enable_youtube_decipher_signature' => true,
];
Requirements
You must fit at least this requirements to use YouTube-Downloader:
- PHP >= 5.6
- Web server (Apache/Nginx/PHP built-in)
Installation
There are multiple ways to set up YouTube-Downloader
ZIP Download
- Download the code for the newest release: https://github.com/jeckman/YouTube-Downloader/releases
- Unzip the code to your web server
- Open the folder with your browser
Git
-
Clone the code on your server with
git clone https://github.com/jeckman/YouTube-Downloader.git
-
Checkout the latest release tag with
git checkout $(git describe --abbrev=0 --tags)
-
Open the folder with your browser
Composer
You can use the PHP library in your project by installing the code via Composer.
The library isn't available on packagist.org at the moment, so you must add the repository in your composer.json
manually. Your composer.json
should look like this
{
"require": {
"jeckman/YouTube-Downloader": "dev-master"
},
"repositories": [
{"type": "vcs", "url": "https://github.com/jeckman/YouTube-Downloader"}
]
}
Now install the dependencies with $ composer update
Note: Instead of using the master
branch you should use a specific release like "jeckman/YouTube-Downloader": "0.XX"
. You can found all releases here.
Usage
You can manually visit a web form (the index.php file), enter a YouTube video id, and get in return a list of links showing the various formats in which that video can be downloaded. You can simply choose "save link as" or the equivalent to download the file.
Second, you can directly target the getvideo.php script, passing in a videoID and preferred format, and you will get redirected to the file itself.
http://example.com/yt/getvideo.mp4?videoid=GkvvH8pBoTg&format=ipad
Potential formats:
- best = just give me the largest file / best quality
- free = give the largest version including WebM, lower priority to FLV
- ipad = ignore WebM and FLV, look for best MP4 file
You can also pass in a specific format number, if you know it.
Note this approach, because it redirects you to the file itself, currently bypasses the proxy option, so if your browser/server setup requires the proxy to work these will fail.
Feed subscription
You can subscribe both to YouTube channels and users via RSS. Feeds can be generated in the formats listed above.
Generating a feed for a YouTube channel works as follows:
http://example.com/yt/feed.php?channelid=UChELZ_JMGNYuxObfrXoER6A&format=best
To generate a feed for a YouTube user:
http://example.com/yt/feed.php?user=heisenewsticker&format=free
The generated feed is a standard RSS feed and can be subscribed to in any feed reader.
Upgrading
ZIP Download
- Backup your config file from
config/custom.php
. - Delete all files in the project folder
- Download the newest release from https://github.com/jeckman/YouTube-Downloader/releases
- Unzip the code to your project folder
- Place your config file back to
config/custom.php
.
Git
Fetch the master branch and checkout the latest annotated tag.
git remote update
git fetch origin master
git checkout $(git describe --abbrev=0 --tags master)
Composer
Update your composer.json
to use the latest version. Then run:
composer update
Contributing
You can help making this project better by reporting bugs or submitting pull requests. Please see our contributing guideline for more information.