diff --git a/api.php b/api.php new file mode 100644 index 0000000..ef3ff7e --- /dev/null +++ b/api.php @@ -0,0 +1,220 @@ + + * @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'; + ?> + +
+
+ +

You are going to download + + title; + ?>.

+ thumbnail, '" alt="" />'; + ?>
+
+ + formats)) { + ?> + Select format +

+ + + +
+
+
+
+ + + + + +
+
+ +

An error occured

+ Please check the URL of your video. + If you think this is a bug, please report the following error + to contact@rudloff.pro: +

+ +
+ +

+
+
+ + + + diff --git a/download.php b/download.php new file mode 100644 index 0000000..9126f78 --- /dev/null +++ b/download.php @@ -0,0 +1,211 @@ + + * @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 + * @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)); + } + + } +} + +?> diff --git a/extractors.php b/extractors.php new file mode 100644 index 0000000..4829025 --- /dev/null +++ b/extractors.php @@ -0,0 +1,56 @@ + + * @author Olivier Haquette + * @license GNU General Public License http://www.gnu.org/licenses/gpl.html + * @link http://rudloff.pro + * */ + +require 'head.php'; +?> + + + + + +
+ + + + + +

Supported websites

+ +
+ + +
    + '.$extractor.''; + } + ?> +
+
+
+ + + + + + diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..be5e9f0 --- /dev/null +++ b/footer.php @@ -0,0 +1,29 @@ +
+ + + + + + +
diff --git a/head.php b/head.php new file mode 100644 index 0000000..40dbf08 --- /dev/null +++ b/head.php @@ -0,0 +1,26 @@ + + + + + + + + + + +AllTube Download + + + + + + + + + + + + + + diff --git a/header.php b/header.php new file mode 100644 index 0000000..23238fc --- /dev/null +++ b/header.php @@ -0,0 +1,26 @@ + + * @author Olivier Haquette + * @license GNU General Public License http://www.gnu.org/licenses/gpl.html + * @link http://rudloff.pro + * */ +?> +
+ +
diff --git a/img/compatiblerouage.png b/img/compatiblerouage.png new file mode 100644 index 0000000..be6dc74 Binary files /dev/null and b/img/compatiblerouage.png differ diff --git a/img/facebook.png b/img/facebook.png new file mode 100644 index 0000000..2b7a967 Binary files /dev/null and b/img/facebook.png differ diff --git a/img/facebookmask.png b/img/facebookmask.png new file mode 100644 index 0000000..3587394 Binary files /dev/null and b/img/facebookmask.png differ diff --git a/img/favicon.png b/img/favicon.png new file mode 100644 index 0000000..75c6d55 Binary files /dev/null and b/img/favicon.png differ diff --git a/img/fond.jpg b/img/fond.jpg new file mode 100644 index 0000000..21a30ff Binary files /dev/null and b/img/fond.jpg differ diff --git a/img/fondfooter.jpg b/img/fondfooter.jpg new file mode 100644 index 0000000..06042ef Binary files /dev/null and b/img/fondfooter.jpg differ diff --git a/img/fondfooter.png b/img/fondfooter.png new file mode 100644 index 0000000..c72145e Binary files /dev/null and b/img/fondfooter.png differ diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 0000000..c31d06c Binary files /dev/null and b/img/logo.png differ diff --git a/img/logo_60.png b/img/logo_60.png new file mode 100644 index 0000000..85800da Binary files /dev/null and b/img/logo_60.png differ diff --git a/img/logo_90.png b/img/logo_90.png new file mode 100644 index 0000000..2969edd Binary files /dev/null and b/img/logo_90.png differ diff --git a/img/logo_app.png b/img/logo_app.png new file mode 100644 index 0000000..7d6b48a Binary files /dev/null and b/img/logo_app.png differ diff --git a/img/logocompatible.png b/img/logocompatible.png new file mode 100644 index 0000000..052a25e Binary files /dev/null and b/img/logocompatible.png differ diff --git a/img/logocompatiblehover.png b/img/logocompatiblehover.png new file mode 100644 index 0000000..951ddc3 Binary files /dev/null and b/img/logocompatiblehover.png differ diff --git a/img/logocompatiblemask.png b/img/logocompatiblemask.png new file mode 100644 index 0000000..85078f6 Binary files /dev/null and b/img/logocompatiblemask.png differ diff --git a/img/mp3.png b/img/mp3.png new file mode 100644 index 0000000..d69e8a2 Binary files /dev/null and b/img/mp3.png differ diff --git a/img/mp3hover.png b/img/mp3hover.png new file mode 100644 index 0000000..4803885 Binary files /dev/null and b/img/mp3hover.png differ diff --git a/img/share.jpg b/img/share.jpg new file mode 100644 index 0000000..3adbbd6 Binary files /dev/null and b/img/share.jpg differ diff --git a/img/share.png b/img/share.png new file mode 100644 index 0000000..a0726b4 Binary files /dev/null and b/img/share.png differ diff --git a/img/sharemask.png b/img/sharemask.png new file mode 100644 index 0000000..367ca05 Binary files /dev/null and b/img/sharemask.png differ diff --git a/img/twitter.png b/img/twitter.png new file mode 100644 index 0000000..f9cae65 Binary files /dev/null and b/img/twitter.png differ diff --git a/img/twittermask.png b/img/twittermask.png new file mode 100644 index 0000000..3c32304 Binary files /dev/null and b/img/twittermask.png differ diff --git a/index.php b/index.php new file mode 100644 index 0000000..d7dd5dc --- /dev/null +++ b/index.php @@ -0,0 +1,54 @@ + + * @author Olivier Haquette + * @license GNU General Public License http://www.gnu.org/licenses/gpl.html + * @link http://rudloff.pro + * */ +require 'head.php'; +?> + + + + + +
+
+

+
+ +
+ + + +
+
+

+

+
+
+
+ See all supported websites +
+
+ + + + + + diff --git a/json.php b/json.php new file mode 100644 index 0000000..aae9d5d --- /dev/null +++ b/json.php @@ -0,0 +1,10 @@ + diff --git a/logo.php b/logo.php new file mode 100644 index 0000000..8accd3f --- /dev/null +++ b/logo.php @@ -0,0 +1,4 @@ +

+ + AllTube Download +

diff --git a/manifest.webapp b/manifest.webapp new file mode 100644 index 0000000..a139719 --- /dev/null +++ b/manifest.webapp @@ -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" +} diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..48fbc65 --- /dev/null +++ b/robots.txt @@ -0,0 +1 @@ +Sitemap: http://alltubedownload.net/sitemap.xml diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..b7b9248 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,12 @@ + + + + http://alltubedownload.net/ + yearly + 1 + + + http://alltubedownload.net/extractors.php + weekly + + diff --git a/style.css b/style.css new file mode 100644 index 0000000..dede1c2 --- /dev/null +++ b/style.css @@ -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; + } + +} diff --git a/youtoubeur.php b/youtoubeur.php new file mode 100644 index 0000000..9002eb4 --- /dev/null +++ b/youtoubeur.php @@ -0,0 +1,15 @@ + + * @license GNU General Public License http://www.gnu.org/licenses/gpl.html + * @link http://rudloff.pro + * */ +header('Location: index.php'); +?>