Initial import
220
api.php
Normal file
|
@ -0,0 +1,220 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP web interface for youtube-dl (http://rg3.github.com/youtube-dl/)
|
||||
*
|
||||
* PHP Version 5.3.10
|
||||
*
|
||||
* @category Youtube-dl
|
||||
* @package Youtubedl
|
||||
* @author Pierre Rudloff <rudloff@strasweb.fr>
|
||||
* @license GNU General Public License http://www.gnu.org/licenses/gpl.html
|
||||
* @link http://rudloff.pro
|
||||
* */
|
||||
$python="/usr/bin/python";
|
||||
require_once 'download.php';
|
||||
if (isset($_GET["url"])) {
|
||||
if (isset($_GET["format"]) || isset($_GET['audio'])) {
|
||||
$video = json_decode(VideoDownload::getJSON($_GET["url"], $_GET["format"]));
|
||||
|
||||
if (isset($video->url)) {
|
||||
//Vimeo needs a correct user-agent
|
||||
$UA = VideoDownload::getUA();
|
||||
ini_set(
|
||||
'user_agent',
|
||||
$UA
|
||||
);
|
||||
$url_info = parse_url($video->url);
|
||||
if ($url_info['scheme'] == 'rtmp') {
|
||||
if (isset($_GET['audio'])) {
|
||||
header(
|
||||
'Content-Disposition: attachment; filename="'.
|
||||
html_entity_decode(
|
||||
pathinfo(
|
||||
VideoDownload::getFilename(
|
||||
$video->webpage_url
|
||||
), PATHINFO_FILENAME
|
||||
).'.mp3', ENT_COMPAT, 'ISO-8859-1'
|
||||
).'"'
|
||||
);
|
||||
header("Content-Type: audio/mpeg");
|
||||
passthru(
|
||||
'/usr/bin/rtmpdump -q -r '.escapeshellarg($video->url).
|
||||
' | /usr/bin/avconv -v quiet -i - -f mp3 pipe:1'
|
||||
);
|
||||
exit;
|
||||
} else {
|
||||
header(
|
||||
'Content-Disposition: attachment; filename="'.
|
||||
html_entity_decode(
|
||||
VideoDownload::getFilename(
|
||||
$video->webpage_url, $video->format_id
|
||||
), ENT_COMPAT, 'ISO-8859-1'
|
||||
).'"'
|
||||
);
|
||||
header("Content-Type: application/octet-stream");
|
||||
passthru(
|
||||
'/usr/bin/rtmpdump -q -r '.escapeshellarg($video->url)
|
||||
);
|
||||
exit;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (isset($_GET['audio'])) {
|
||||
header(
|
||||
'Content-Disposition: attachment; filename="'.
|
||||
html_entity_decode(
|
||||
pathinfo(
|
||||
VideoDownload::getFilename(
|
||||
$video->webpage_url
|
||||
), PATHINFO_FILENAME
|
||||
).'.mp3', ENT_COMPAT, 'ISO-8859-1'
|
||||
).'"'
|
||||
);
|
||||
header("Content-Type: audio/mpeg");
|
||||
passthru(
|
||||
'/usr/bin/wget -q --user-agent='.escapeshellarg($UA).
|
||||
' -O - '.escapeshellarg($video->url).
|
||||
' | /usr/bin/avconv -v quiet -i - -f mp3 pipe:1'
|
||||
);
|
||||
exit;
|
||||
} else if (pathinfo($video->url, PATHINFO_EXTENSION) == 'm3u8') {
|
||||
header(
|
||||
'Content-Disposition: attachment; filename="'.
|
||||
html_entity_decode(
|
||||
pathinfo(
|
||||
VideoDownload::getFilename(
|
||||
$video->webpage_url
|
||||
), PATHINFO_FILENAME
|
||||
).'.mp4', ENT_COMPAT, 'ISO-8859-1'
|
||||
).'"'
|
||||
);
|
||||
header("Content-Type: video/mp4");
|
||||
passthru(
|
||||
'/usr/bin/avconv -v quiet -i '.
|
||||
escapeshellarg($video->url).' -f h264 pipe:1'
|
||||
);
|
||||
exit;
|
||||
} else {
|
||||
$headers = get_headers($video->url, 1);
|
||||
header(
|
||||
'Content-Disposition: attachment; filename="'.
|
||||
html_entity_decode(
|
||||
VideoDownload::getFilename(
|
||||
$video->webpage_url, $video->format_id
|
||||
), ENT_COMPAT, 'ISO-8859-1'
|
||||
).'"'
|
||||
);
|
||||
if (is_string($headers['Content-Type'])
|
||||
&& isset($headers['Content-Type'])
|
||||
) {
|
||||
header("Content-Type: ".$headers['Content-Type']);
|
||||
} else {
|
||||
header("Content-Type: application/octet-stream");
|
||||
}
|
||||
if (is_string($headers['Content-Length'])
|
||||
&& isset($headers['Content-Length'])
|
||||
) {
|
||||
header("Content-Length: ".$headers['Content-Length']);
|
||||
}
|
||||
readfile($video->url);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$error=true;
|
||||
}
|
||||
} else {
|
||||
$video = json_decode(VideoDownload::getJSON($_GET["url"]));
|
||||
if (isset($video->webpage_url)) {
|
||||
include 'head.php';
|
||||
?>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="main">
|
||||
<?php
|
||||
include 'logo.php';
|
||||
?>
|
||||
<p>You are going to download<i>
|
||||
<a href="<?php echo $video->webpage_url; ?>">
|
||||
<?php
|
||||
echo $video->title;
|
||||
?></a></i>.</p>
|
||||
<?php
|
||||
echo '<img class="thumb" src="',
|
||||
$video->thumbnail, '" alt="" />';
|
||||
?><br/>
|
||||
<form action="api.php">
|
||||
<input type="hidden" name="url"
|
||||
value="<?php echo $video->webpage_url; ?>" />
|
||||
<?php
|
||||
if (isset($video->formats)) {
|
||||
?>
|
||||
<legend for="format">Select format</legend>
|
||||
<select id="format" name="format">
|
||||
<?php
|
||||
foreach ($video->formats as $format) {
|
||||
echo '<option value="', $format->format_id, '"';
|
||||
if ($format->format_id == $video->format_id) {
|
||||
echo ' selected ';
|
||||
}
|
||||
echo '>';
|
||||
echo $format->format, ' (', $format->ext, ')';
|
||||
echo '</option>';
|
||||
}
|
||||
?>
|
||||
</select><br/><br/>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<input type="hidden" name="format" value="best" />
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<input class="downloadBtn" type="submit" value="Download" /><br/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
include 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
} else {
|
||||
$error=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset($error)) {
|
||||
include 'head.php';
|
||||
?>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="main error">
|
||||
<?php
|
||||
include 'logo.php';
|
||||
?>
|
||||
<h2>An error occured</h2>
|
||||
Please check the URL of your video.
|
||||
If you think this is a bug, please report the following error
|
||||
to <a href="mailto:contact@rudloff.pro"><i>contact@rudloff.pro</i></a>:
|
||||
<p><i>
|
||||
<?php
|
||||
foreach ($video['error'] as $error) {
|
||||
print $error;
|
||||
?>
|
||||
<br/>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</i></p>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
include 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
}
|
||||
?>
|
211
download.php
Normal file
|
@ -0,0 +1,211 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP web interface for youtube-dl (http://rg3.github.com/youtube-dl/)
|
||||
* Main class
|
||||
*
|
||||
* PHP Version 5.3.10
|
||||
*
|
||||
* @category Youtube-dl
|
||||
* @package Youtubedl
|
||||
* @author Pierre Rudloff <rudloff@strasweb.fr>
|
||||
* @license GNU General Public License http://www.gnu.org/licenses/gpl.html
|
||||
* @link http://rudloff.pro
|
||||
* */
|
||||
|
||||
/**
|
||||
* PHP web interface for youtube-dl (http://rg3.github.com/youtube-dl/)
|
||||
* Main class
|
||||
*
|
||||
* PHP Version 5.3.10
|
||||
*
|
||||
* @category Youtube-dl
|
||||
* @package Youtubedl
|
||||
* @author Pierre Rudloff <rudloff@strasweb.fr>
|
||||
* @license GNU General Public License http://www.gnu.org/licenses/gpl.html
|
||||
* @link http://rudloff.pro
|
||||
* */
|
||||
Class VideoDownload
|
||||
{
|
||||
static private $_python="/usr/bin/python";
|
||||
static private $_params="--no-playlist";
|
||||
|
||||
/**
|
||||
* Get version of youtube-dl
|
||||
*
|
||||
* @return string Version
|
||||
* */
|
||||
function getVersion ()
|
||||
{
|
||||
exec(
|
||||
VideoDownload::$_python.' youtube-dl --version',
|
||||
$version, $code
|
||||
);
|
||||
return $version[0];
|
||||
}
|
||||
/**
|
||||
* Get the user agent used youtube-dl
|
||||
*
|
||||
* @return string UA
|
||||
* */
|
||||
function getUA ()
|
||||
{
|
||||
exec(
|
||||
VideoDownload::$_python.' youtube-dl --dump-user-agent',
|
||||
$version, $code
|
||||
);
|
||||
return $version[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* List all extractors
|
||||
*
|
||||
* @return array Extractors
|
||||
* */
|
||||
function listExtractors ()
|
||||
{
|
||||
exec(
|
||||
VideoDownload::$_python.' youtube-dl --list-extractors',
|
||||
$extractors, $code
|
||||
);
|
||||
return $extractors;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get filename of video
|
||||
*
|
||||
* @param string $url URL of page
|
||||
* @param string $format Format to use for the video
|
||||
*
|
||||
* @return string Filename
|
||||
* */
|
||||
function getFilename ($url, $format=null)
|
||||
{
|
||||
$cmd=VideoDownload::$_python.' youtube-dl';
|
||||
if (isset($format)) {
|
||||
$cmd .= ' -f '.escapeshellarg($format);
|
||||
}
|
||||
$cmd .=' --get-filename '.escapeshellarg($url)." 2>&1";
|
||||
exec(
|
||||
$cmd,
|
||||
$filename
|
||||
);
|
||||
return end($filename);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get title of video
|
||||
*
|
||||
* @param string $url URL of page
|
||||
*
|
||||
* @return string Title
|
||||
* */
|
||||
function getTitle ($url)
|
||||
{
|
||||
exec(
|
||||
VideoDownload::$_python.' youtube-dl --get-title '.
|
||||
escapeshellarg($url),
|
||||
$title
|
||||
);
|
||||
$title=$title[0];
|
||||
return $title;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all information about a video
|
||||
*
|
||||
* @param string $url URL of page
|
||||
* @param string $format Format to use for the video
|
||||
*
|
||||
* @return string JSON
|
||||
* */
|
||||
function getJSON ($url, $format=null)
|
||||
{
|
||||
$cmd=VideoDownload::$_python.' youtube-dl '.VideoDownload::$_params;
|
||||
if (isset($format)) {
|
||||
$cmd .= ' -f '.escapeshellarg($format);
|
||||
}
|
||||
$cmd .=' --dump-json '.escapeshellarg($url);
|
||||
exec(
|
||||
$cmd,
|
||||
$json
|
||||
);
|
||||
return $json[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get thumbnail of video
|
||||
*
|
||||
* @param string $url URL of page
|
||||
*
|
||||
* @return string URL of image
|
||||
* */
|
||||
function getThumbnail ($url)
|
||||
{
|
||||
exec(
|
||||
VideoDownload::$_python.' youtube-dl --get-thumbnail '.
|
||||
escapeshellarg($url),
|
||||
$thumb
|
||||
);
|
||||
if (isset($thumb[0])) {
|
||||
return $thumb[0];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list available formats for this video
|
||||
*
|
||||
* @param string $url URL of page
|
||||
*
|
||||
* @return string Title
|
||||
* */
|
||||
function getAvailabeFormats ($url)
|
||||
{
|
||||
exec(
|
||||
VideoDownload::$_python.' youtube-dl -F '.
|
||||
escapeshellarg($url),
|
||||
$formats
|
||||
);
|
||||
$return=array();
|
||||
foreach ($formats as $i=>$format) {
|
||||
if ($i > 4) {
|
||||
$return[]=(preg_split('/(\s\s+)|(\s+:?\s+)|(\s+\[)|\]/', $format));
|
||||
}
|
||||
}
|
||||
if (empty($return)) {
|
||||
foreach ($formats as $i=>$format) {
|
||||
if ($i > 3) {
|
||||
$return[]=preg_split('/(\s\s+)|(\s+:?\s+)|(\s+\[)|\]/', $format);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get URL of video from URL of page
|
||||
*
|
||||
* @param string $url URL of page
|
||||
* @param string $format Format to use for the video
|
||||
*
|
||||
* @return string URL of video
|
||||
* */
|
||||
function getURL ($url, $format=null)
|
||||
{
|
||||
$cmd=VideoDownload::$_python.' youtube-dl';
|
||||
if (isset($format)) {
|
||||
$cmd .= ' -f '.escapeshellarg($format);
|
||||
}
|
||||
$cmd .=' -g '.escapeshellarg($url)." 2>&1";
|
||||
exec(
|
||||
$cmd, $url, $code
|
||||
);
|
||||
if ($code>0) {
|
||||
return array('success'=>false, 'error'=>$url);
|
||||
} else {
|
||||
return array('success'=>true, 'url'=>end($url));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
56
extractors.php
Normal file
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP web interface for youtube-dl (http://rg3.github.com/youtube-dl/)
|
||||
* List of all supported websites
|
||||
*
|
||||
* PHP Version 5.3.10
|
||||
*
|
||||
* @category Youtube-dl
|
||||
* @package Youtubedl
|
||||
* @author Pierre Rudloff <rudloff@strasweb.fr>
|
||||
* @author Olivier Haquette <contact@olivierhaquette.fr>
|
||||
* @license GNU General Public License http://www.gnu.org/licenses/gpl.html
|
||||
* @link http://rudloff.pro
|
||||
* */
|
||||
|
||||
require 'head.php';
|
||||
?>
|
||||
|
||||
<body class="extractors">
|
||||
|
||||
<?php
|
||||
require 'header.php';
|
||||
?>
|
||||
|
||||
<div class="wrapper">
|
||||
|
||||
|
||||
<?php
|
||||
require 'logo.php';
|
||||
?>
|
||||
|
||||
|
||||
<h2 class="titre">Supported websites</h2>
|
||||
|
||||
<div class="tripleliste">
|
||||
|
||||
|
||||
<ul>
|
||||
<?php
|
||||
require_once 'download.php';
|
||||
$extractors=(VideoDownload::listExtractors());
|
||||
foreach ($extractors as $extractor) {
|
||||
echo '<li>'.$extractor.'</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
require 'footer.php';
|
||||
?>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
29
footer.php
Normal file
|
@ -0,0 +1,29 @@
|
|||
<footer>
|
||||
<div class="footer_wrapper">
|
||||
© AllTube Download <span itemprop="copyrightYear">2013</span> ·
|
||||
Code by <a rel="author" target="blank" itemprop="author" href="http://rudloff.pro/">Pierre Rudloff</a>
|
||||
· Design by
|
||||
<a rel="author" itemprop="author" target="blank" href="http://olivierhaquette.fr">Olivier Haquette</a>
|
||||
·
|
||||
<a target="_blank" href="https://www.facebook.com/pages/AllTube-Download/571380966249415" title="AllTube Download on Facebook">Like us on Facebook</a>
|
||||
·
|
||||
Based on <a href="http://rg3.github.io/youtube-dl/">youtube-dl</a>
|
||||
</div>
|
||||
<!-- Piwik -->
|
||||
<script type="text/javascript">
|
||||
var _paq = _paq || [];
|
||||
_paq.push(['trackPageView']);
|
||||
_paq.push(['enableLinkTracking']);
|
||||
(function() {
|
||||
var u=(("https:" == document.location.protocol) ? "https" : "http") + "://rudloff.pro/piwik//";
|
||||
_paq.push(['setTrackerUrl', u+'piwik.php']);
|
||||
_paq.push(['setSiteId', 1]);
|
||||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript';
|
||||
g.defer=true; g.async=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
|
||||
})();
|
||||
|
||||
</script>
|
||||
<noscript><p><img src="http://rudloff.pro/piwik/piwik.php?idsite=1" style="border:0" alt="" /></p></noscript>
|
||||
<!-- End Piwik Code -->
|
||||
|
||||
</footer>
|
26
head.php
Normal file
|
@ -0,0 +1,26 @@
|
|||
<!Doctype HTML>
|
||||
<html lang="en" itemscope itemtype="http://schema.org/WebApplication">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name=viewport content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="Easily download videos from Youtube, Dailymotion, Vimeo and other websites." />
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
<link rel="stylesheet"
|
||||
href="https://fonts.googleapis.com/css?family=Open+Sans:400,300" />
|
||||
<link rel="author" href="https://plus.google.com/110403274854419000481?rel=author" />
|
||||
<link rel="author" href="https://plus.google.com/103696815796116179392?rel=author" />
|
||||
<title itemprop="name">AllTube Download</title>
|
||||
<meta itemprop="url" content="http://alltubedownload.net/" />
|
||||
<link rel="icon" href="img/favicon.png" />
|
||||
<meta property="og:url" content="http://www.alltubedownload.net/" />
|
||||
<meta property="og:title" content="AllTube Download" />
|
||||
<meta property="og:description" content="Easily download videos from Youtube, Dailymotion, Vimeo and other websites." />
|
||||
<meta property="og:image" content="http://www.alltubedownload.net/img/logo.png" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="AllTube Download" />
|
||||
<meta name="twitter:image" content="http://www.alltubedownload.net/img/logo.png" />
|
||||
<meta name="twitter:creator" content="@Tael67" />
|
||||
<meta name="twitter:description" content="Easily download videos from Youtube, Dailymotion, Vimeo and other websites." />
|
||||
</head>
|
||||
|
||||
|
26
header.php
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP web interface for youtube-dl (http://rg3.github.com/youtube-dl/)
|
||||
* Header
|
||||
*
|
||||
* PHP Version 5.3.10
|
||||
*
|
||||
* @category Youtube-dl
|
||||
* @package Youtubedl
|
||||
* @author Pierre Rudloff <rudloff@strasweb.fr>
|
||||
* @author Olivier Haquette <contact@olivierhaquette.fr>
|
||||
* @license GNU General Public License http://www.gnu.org/licenses/gpl.html
|
||||
* @link http://rudloff.pro
|
||||
* */
|
||||
?>
|
||||
<header>
|
||||
<div class="social">
|
||||
<a class="twitter" href="http://twitter.com/home?status=<?php
|
||||
echo urlencode('http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
|
||||
?>" target="_blank">
|
||||
Share on Twitter<div class="twittermask"></div></a>
|
||||
<a class="facebook" href="https://www.facebook.com/sharer/sharer.php?u=<?php
|
||||
echo urlencode('http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
|
||||
?>" target="_blank">Share on Facebook<div class="facebookmask"></div></a>
|
||||
</div>
|
||||
</header>
|
BIN
img/compatiblerouage.png
Normal file
After Width: | Height: | Size: 949 B |
BIN
img/facebook.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
img/facebookmask.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
img/favicon.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
img/fond.jpg
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
img/fondfooter.jpg
Normal file
After Width: | Height: | Size: 885 B |
BIN
img/fondfooter.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
img/logo.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
img/logo_60.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
img/logo_90.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
img/logo_app.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
img/logocompatible.png
Normal file
After Width: | Height: | Size: 109 B |
BIN
img/logocompatiblehover.png
Normal file
After Width: | Height: | Size: 109 B |
BIN
img/logocompatiblemask.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
img/mp3.png
Normal file
After Width: | Height: | Size: 253 B |
BIN
img/mp3hover.png
Normal file
After Width: | Height: | Size: 731 B |
BIN
img/share.jpg
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
img/share.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
img/sharemask.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
img/twitter.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
img/twittermask.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
54
index.php
Normal file
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP web interface for youtube-dl (http://rg3.github.com/youtube-dl/)
|
||||
* Index page
|
||||
*
|
||||
* PHP Version 5.3.10
|
||||
*
|
||||
* @category Youtube-dl
|
||||
* @package Youtubedl
|
||||
* @author Pierre Rudloff <rudloff@strasweb.fr>
|
||||
* @author Olivier Haquette <contact@olivierhaquette.fr>
|
||||
* @license GNU General Public License http://www.gnu.org/licenses/gpl.html
|
||||
* @link http://rudloff.pro
|
||||
* */
|
||||
require 'head.php';
|
||||
?>
|
||||
|
||||
<body>
|
||||
|
||||
<?php
|
||||
require 'header.php';
|
||||
?>
|
||||
|
||||
<div class="wrapper">
|
||||
<div class="main">
|
||||
<h1><img itemprop="image" class="logo" src="img/logo.png"
|
||||
alt="AllTube Download" width="328" height="284"></h1>
|
||||
<form action="api.php">
|
||||
<label class="labelurl" for="url">
|
||||
Copy here the URL of your video (Youtube, Dailymotion, etc.)
|
||||
</label>
|
||||
<div class="champs">
|
||||
<span class="URLinput_wrapper">
|
||||
<input class="URLinput" type="url" name="url" id="url"
|
||||
required placeholder="http://website.com/video" />
|
||||
</span>
|
||||
<input class="downloadBtn" type="submit" value="Download" /><br/>
|
||||
<div class="mp3">
|
||||
<p><input type="checkbox" id="audio" class="audio" name="audio">
|
||||
<label for="audio"><span class="ui"></span>Audio only (MP3)</label></p>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<a class="combatiblelink" href="extractors.php">See all supported websites</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
require 'footer.php';
|
||||
?>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
10
json.php
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
$python="/usr/bin/python";
|
||||
require_once 'download.php';
|
||||
if (isset($_GET["url"])) {
|
||||
header('Content-Type: application/json');
|
||||
$video = VideoDownload::getJSON($_GET["url"]);
|
||||
echo $video;
|
||||
}
|
||||
?>
|
4
logo.php
Normal file
|
@ -0,0 +1,4 @@
|
|||
<h1 class="logobis">
|
||||
<a class="logocompatible" href="index.php">
|
||||
AllTube Download<span class="logocompatiblemask"><img src="img/logocompatiblemask.png" width="447" height="107" alt="" /></span>
|
||||
</a></h1>
|
16
manifest.webapp
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"name": "AllTube",
|
||||
"description": "Easily download videos from Youtube, Dailymotion, Vimeo and other websites",
|
||||
"developer": {
|
||||
"name": "Pierre Rudloff",
|
||||
"url": "https://rudloff.pro/"
|
||||
},
|
||||
"icons": {
|
||||
"32": "/img/favicon.png",
|
||||
"60": "/img/logo_60.png",
|
||||
"90": "/img/logo_90.png",
|
||||
"243": "/img/logo_app.png"
|
||||
},
|
||||
"default_locale": "en",
|
||||
"launch_path": "/index.php"
|
||||
}
|
1
robots.txt
Normal file
|
@ -0,0 +1 @@
|
|||
Sitemap: http://alltubedownload.net/sitemap.xml
|
12
sitemap.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>http://alltubedownload.net/</loc>
|
||||
<changefreq>yearly</changefreq>
|
||||
<priority>1</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://alltubedownload.net/extractors.php</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
</url>
|
||||
</urlset>
|
616
style.css
Normal file
|
@ -0,0 +1,616 @@
|
|||
|
||||
body {
|
||||
text-align:center;
|
||||
background-image:url('img/fond.jpg');
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-weight:400;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/************************HEADER******************************/
|
||||
|
||||
header {
|
||||
position:absolute;
|
||||
top:0;
|
||||
text-align:right;
|
||||
width:100%;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.social
|
||||
{padding-right:21px;}
|
||||
|
||||
|
||||
header a
|
||||
{
|
||||
overflow:hidden;
|
||||
height:38px;
|
||||
width:38px;
|
||||
position:relative;
|
||||
float:right;
|
||||
margin-top:13px;
|
||||
margin-left:13px;
|
||||
margin-right:0;
|
||||
background-position:0 0;
|
||||
background-repeat:no-repeat;
|
||||
-webkit-transition: all 0.1s ease-in;
|
||||
-moz-transition: all 0.1s ease-in;
|
||||
-o-transition: all 0.1s ease-in;
|
||||
}
|
||||
|
||||
header a:focus,
|
||||
header a:hover
|
||||
{
|
||||
outline:none;
|
||||
background-position:0 100%;
|
||||
-webkit-transition: all 0.1s ease-in;
|
||||
-moz-transition: all 0.1s ease-in;
|
||||
-o-transition: all 0.1s ease-in;
|
||||
}
|
||||
|
||||
.share
|
||||
{background-image:url('img/share.png');}
|
||||
|
||||
.sharemask
|
||||
{
|
||||
height:38px;
|
||||
width:38px;
|
||||
position:absolute;
|
||||
top:0;
|
||||
left:0;
|
||||
z-index:10;
|
||||
background-image:url('img/sharemask.png');
|
||||
background-position:top left;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
|
||||
.facebook
|
||||
{background-image:url('img/facebook.png');}
|
||||
|
||||
.facebookmask
|
||||
{
|
||||
height:38px;
|
||||
width:38px;
|
||||
position:absolute;
|
||||
top:0;
|
||||
left:0;
|
||||
z-index:10;
|
||||
background-image:url('img/facebookmask.png');
|
||||
background-position:top left;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
|
||||
.twitter
|
||||
{background-image:url('img/twitter.png');}
|
||||
|
||||
.twittermask
|
||||
{
|
||||
height:38px;
|
||||
width:38px;
|
||||
position:absolute;
|
||||
top:0;
|
||||
left:0;
|
||||
z-index:10;
|
||||
background-image:url('img/twittermask.png');
|
||||
background-position:top left;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************FOOTER****************************/
|
||||
|
||||
|
||||
footer {
|
||||
position:fixed;
|
||||
bottom:0;
|
||||
text-align:center;
|
||||
width:100%;
|
||||
background-image:url('img/fondfooter.png');
|
||||
background-repeat:repeat-x;
|
||||
background-position:top left;
|
||||
padding-top:20px;
|
||||
color:#adadad;
|
||||
font-size:12px;
|
||||
z-index:11;
|
||||
}
|
||||
|
||||
.footer_wrapper {
|
||||
height:28px;
|
||||
}
|
||||
|
||||
footer a{
|
||||
color:#adadad;
|
||||
-webkit-transition: all 0.1s ease-in;
|
||||
-moz-transition: all 0.1s ease-in;
|
||||
-o-transition: all 0.1s ease-in;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
footer a:focus,
|
||||
footer a:hover
|
||||
{
|
||||
outline:none;
|
||||
color:#f2084a;
|
||||
-webkit-transition: all 0.1s ease-in;
|
||||
-moz-transition: all 0.1s ease-in;
|
||||
-o-transition: all 0.1s ease-in;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*************************CONTENT ACCUEIL****************************/
|
||||
|
||||
.logo {
|
||||
padding-bottom:55px;
|
||||
}
|
||||
|
||||
.labelurl
|
||||
{
|
||||
position:relative;
|
||||
color:#3f3f3f;
|
||||
font-size:19px;
|
||||
|
||||
}
|
||||
|
||||
.champs
|
||||
{
|
||||
position:relative;
|
||||
margin-bottom:70px;
|
||||
margin-top:8px;
|
||||
}
|
||||
|
||||
.downloadBtn {
|
||||
position:relative;
|
||||
background-color:#3A3A3A;
|
||||
border: 3px solid #a5a5a5;
|
||||
color:#dedede;
|
||||
border-radius:10px;
|
||||
padding: 12px 14px;
|
||||
font-size:24px;
|
||||
font-weight:800;
|
||||
cursor:pointer;
|
||||
-webkit-transition: all 0.1s ease-in;
|
||||
-moz-transition: all 0.1s ease-in;
|
||||
-o-transition: all 0.1s ease-in;
|
||||
}
|
||||
|
||||
.downloadBtn:focus,
|
||||
.downloadBtn:hover
|
||||
{
|
||||
outline:none;
|
||||
background-color:#f2084a;
|
||||
-webkit-transition: all 0.1s ease-in;
|
||||
-moz-transition: all 0.1s ease-in;
|
||||
-o-transition: all 0.1s ease-in;
|
||||
}
|
||||
|
||||
.downloadBtn::-moz-focus-inner {
|
||||
border:none;
|
||||
}
|
||||
|
||||
.URLinput{
|
||||
position:relative;
|
||||
background-color:#fff;
|
||||
border: 3px solid #a5a5a5;
|
||||
color:#3F3F3F;
|
||||
border-radius:10px;
|
||||
padding: 12px 12px 12px 12px;
|
||||
min-width:426px;
|
||||
font-size:24px;
|
||||
font-weight:800;
|
||||
margin-right:8px;
|
||||
}
|
||||
|
||||
|
||||
.URLinput:focus {
|
||||
outline: none;
|
||||
border-color:#3A3A3A;
|
||||
}
|
||||
|
||||
.URLinput:-webkit-input-placeholder{
|
||||
color:#c1cfcf;
|
||||
}
|
||||
.URLinput:-moz-placeholder {
|
||||
color:#c1cfcf;
|
||||
}
|
||||
|
||||
.combatiblelink {
|
||||
position:relative;
|
||||
color:#a5a5a5;
|
||||
font-size:13px;
|
||||
z-index:10;
|
||||
text-decoration:none;
|
||||
background-image:url('img/compatiblerouage.png');
|
||||
background-position:0 100%;
|
||||
background-repeat:no-repeat;
|
||||
padding-left:41px;
|
||||
padding-top:10px;
|
||||
padding-bottom:10px;
|
||||
-webkit-transition: all 0.1s ease-in;
|
||||
-moz-transition: all 0.1s ease-in;
|
||||
-o-transition: all 0.1s ease-in;
|
||||
}
|
||||
|
||||
.combatiblelink:focus,
|
||||
.combatiblelink:hover
|
||||
{
|
||||
outline:none;
|
||||
background-position:0 0;
|
||||
color:#f2084a;
|
||||
-webkit-transition: all 0.1s ease-in;
|
||||
-moz-transition: all 0.1s ease-in;
|
||||
-o-transition: all 0.1s ease-in;
|
||||
}
|
||||
|
||||
.mp3
|
||||
{
|
||||
position:relative;
|
||||
background-color:#cecece;
|
||||
color:#696969;
|
||||
border-radius:6px;
|
||||
width:622px;
|
||||
font-size:14px;
|
||||
height:26px;
|
||||
margin-top:12px;
|
||||
text-align:left;
|
||||
font-weight:300;
|
||||
}
|
||||
|
||||
.mp3 p
|
||||
{
|
||||
padding:3px;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Demo CSS code
|
||||
*/
|
||||
|
||||
.audio:not(:checked),
|
||||
.audio:checked {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
.audio:not(:checked) + label,
|
||||
.audio:checked + label {
|
||||
position: relative;
|
||||
padding-left: 82px;
|
||||
cursor: pointer;
|
||||
line-height:22px;
|
||||
}
|
||||
.audio:not(:checked) + label:before,
|
||||
.audio:checked + label:before,
|
||||
.audio:not(:checked) + label:after,
|
||||
.audio:checked + label:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
}
|
||||
.audio:not(:checked) + label:before,
|
||||
.audio:checked + label:before {
|
||||
left:0; top: -1px;
|
||||
width: 45px; height: 20px;
|
||||
background: #ffffff;
|
||||
border-radius: 6px;
|
||||
-webkit-transition: background-color .2s;
|
||||
-moz-transition: background-color .2s;
|
||||
-ms-transition: background-color .2s;
|
||||
-o-transition: background-color .2s;
|
||||
transition: background-color .2s;
|
||||
}
|
||||
.audio:not(:checked) + label:after,
|
||||
.audio:checked + label:after {
|
||||
width: 16px; height: 16px;
|
||||
-webkit-transition: all .2s;
|
||||
-moz-transition: all .2s;
|
||||
-ms-transition: all .2s;
|
||||
-o-transition: all .2s;
|
||||
transition: all .2s;
|
||||
border-radius: 6px;
|
||||
background: #3a3a3a;
|
||||
top: 1px; left: 2px;
|
||||
}
|
||||
|
||||
.audio:focus + label {
|
||||
color:black;
|
||||
}
|
||||
|
||||
/* on checked */
|
||||
.audio:checked + label:before {
|
||||
background:#f2084a;
|
||||
}
|
||||
.audio:checked + label:after {
|
||||
background: #fff;
|
||||
top: 1px; left: 27px;
|
||||
}
|
||||
|
||||
.audio:checked + label .ui,
|
||||
.audio:not(:checked) + label .ui:before,
|
||||
.audio:checked + label .ui:after {
|
||||
position: absolute;
|
||||
left: 3px;
|
||||
width: 45px;
|
||||
border-radius: 15px;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
line-height: 17px;
|
||||
height:20px;
|
||||
-webkit-transition: all .2s;
|
||||
-moz-transition: all .2s;
|
||||
-ms-transition: all .2s;
|
||||
-o-transition: all .2s;
|
||||
transition: all .2s;
|
||||
}
|
||||
.audio:not(:checked) + label .ui:before {
|
||||
content: "no";
|
||||
left: 0;
|
||||
padding-left:23px;
|
||||
padding-top:2px;
|
||||
background-image:url('img/mp3hover.png');
|
||||
background-repeat:no-repeat;
|
||||
background-position:right top;
|
||||
width:56px;
|
||||
-webkit-transition: all .2s;
|
||||
-moz-transition: all .2s;
|
||||
-ms-transition: all .2s;
|
||||
-o-transition: all .2s;
|
||||
transition: all .2s;
|
||||
}
|
||||
.audio:checked + label .ui:after {
|
||||
content: "yes";
|
||||
color: #fff;
|
||||
background-image:url('img/mp3.png');
|
||||
background-repeat:no-repeat;
|
||||
background-position:right top;
|
||||
width:73px;
|
||||
-webkit-transition: all .2s;
|
||||
-moz-transition: all .2s;
|
||||
-ms-transition: all .2s;
|
||||
-o-transition: all .2s;
|
||||
transition: all .2s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*************************CONTENT COMPATIBLES****************************/
|
||||
|
||||
.logobis
|
||||
{
|
||||
width:447px;
|
||||
height:107px;
|
||||
position:relative;
|
||||
margin:0 auto 10px auto;
|
||||
}
|
||||
|
||||
|
||||
.logocompatible
|
||||
{
|
||||
width:447px;
|
||||
height:107px;
|
||||
background-image:url('img/logocompatible.png');
|
||||
background-repeat:repeat-y;
|
||||
background-position:0 0;
|
||||
-webkit-transition: all 0.1s ease-in;
|
||||
-moz-transition: all 0.1s ease-in;
|
||||
-o-transition: all 0.1s ease-in;
|
||||
display:block;
|
||||
}
|
||||
|
||||
.logocompatible:focus,
|
||||
.logocompatible:hover {
|
||||
outline:none;
|
||||
background-position:0 100%;
|
||||
-webkit-transition: all 0.1s ease-in;
|
||||
-moz-transition: all 0.1s ease-in;
|
||||
-o-transition: all 0.1s ease-in;}
|
||||
|
||||
|
||||
.logocompatiblemask
|
||||
{
|
||||
z-index:10;
|
||||
position:absolute;
|
||||
top:0;
|
||||
left:0;
|
||||
width:447px;
|
||||
height:107px;
|
||||
background-image:url('img/logocompatiblemask.png');
|
||||
background-position:0 100%;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
|
||||
.titre
|
||||
{
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-weight:300;
|
||||
color:#383838;
|
||||
font-size:48px;
|
||||
}
|
||||
|
||||
.tripleliste
|
||||
{
|
||||
margin-top:80px;
|
||||
width:800px;
|
||||
position:relative;
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
}
|
||||
|
||||
|
||||
.tripleliste ul
|
||||
{
|
||||
margin-bottom:1em;
|
||||
width:600px;
|
||||
margin-left:120px;}
|
||||
|
||||
.tripleliste ul li
|
||||
{text-align:left;
|
||||
List-Style-Type:none;
|
||||
color:#383838;
|
||||
font-size:16px;
|
||||
|
||||
width:200px;
|
||||
float:left;
|
||||
position:relative;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
margin:0;
|
||||
height:100%;
|
||||
}
|
||||
.wrapper {
|
||||
height:100%;
|
||||
display:table;
|
||||
margin:auto;
|
||||
padding-bottom:110px;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.main {
|
||||
display:table-cell;
|
||||
vertical-align:middle;
|
||||
}
|
||||
|
||||
.extractors {
|
||||
padding-top:60px;
|
||||
}
|
||||
|
||||
.extractors .wrapper {
|
||||
padding-bottom:5em;
|
||||
}
|
||||
|
||||
.logocompatible,
|
||||
.social a {
|
||||
font-size:0;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.social a {
|
||||
color:#D1D1D1;
|
||||
}
|
||||
.logocompatible {
|
||||
color: #4F4F4F
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.error {
|
||||
max-width: 100ex;
|
||||
}
|
||||
|
||||
.error p {
|
||||
text-align:justify;
|
||||
}
|
||||
|
||||
.smaller {
|
||||
font-size:smaller;
|
||||
}
|
||||
|
||||
.thumb {
|
||||
max-width:700px;
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.thumb {
|
||||
width:90%;
|
||||
}
|
||||
|
||||
.URLinput{
|
||||
min-width:0;
|
||||
}
|
||||
|
||||
.logo {
|
||||
max-width:330px;
|
||||
}
|
||||
|
||||
.logocompatible,
|
||||
.logocompatible img {
|
||||
max-width:447px;
|
||||
}
|
||||
|
||||
.logocompatible,
|
||||
.logo,
|
||||
.champs,
|
||||
.URLinput,
|
||||
.mp3 {
|
||||
width:90%;
|
||||
margin:auto;
|
||||
height:auto;
|
||||
}
|
||||
|
||||
.logo {
|
||||
margin-top:50px;
|
||||
}
|
||||
|
||||
.logocompatible img {
|
||||
width:100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.downloadBtn {
|
||||
margin-top: 0.3em;
|
||||
}
|
||||
.mp3 {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
footer {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.tripleliste ul,
|
||||
.tripleliste {
|
||||
width:auto;
|
||||
margin-left:auto;
|
||||
margin-top:auto;
|
||||
}
|
||||
|
||||
.logocompatiblemask {
|
||||
background:none;
|
||||
}
|
||||
|
||||
.logocompatible {
|
||||
height:auto;
|
||||
background-image:none;
|
||||
background-color:#4F4F4F;
|
||||
}
|
||||
|
||||
.logocompatiblemask,
|
||||
.logobis {
|
||||
width:auto;
|
||||
}
|
||||
|
||||
.logocompatiblemask {
|
||||
position:static;
|
||||
}
|
||||
|
||||
.logobis {
|
||||
height:auto;
|
||||
}
|
||||
|
||||
.titre {
|
||||
margin:auto;
|
||||
}
|
||||
|
||||
.error p {
|
||||
padding:0.5em;
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
}
|
15
youtoubeur.php
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP web interface for youtube-dl (http://rg3.github.com/youtube-dl/)
|
||||
* Old index file, now redirects to index.php
|
||||
*
|
||||
* PHP Version 5.3.10
|
||||
*
|
||||
* @category Youtube-dl
|
||||
* @package Youtubedl
|
||||
* @author Pierre Rudloff <rudloff@strasweb.fr>
|
||||
* @license GNU General Public License http://www.gnu.org/licenses/gpl.html
|
||||
* @link http://rudloff.pro
|
||||
* */
|
||||
header('Location: index.php');
|
||||
?>
|