diff --git a/api.php b/api.php
index ef4a578..fa8e662 100644
--- a/api.php
+++ b/api.php
@@ -12,12 +12,113 @@
* */
require_once 'download.php';
if (isset($_GET["url"])) {
- if (isset($_GET["format"])) {
+ if (isset($_GET["format"]) || isset($_GET['audio'])) {
$video = VideoDownload::getJSON($_GET["url"], $_GET["format"]);
if (isset($video->url)) {
- header("Location: ".$video->url);
- exit;
+ //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;
}
diff --git a/index.php b/index.php
index 39a49a4..d7dd5dc 100644
--- a/index.php
+++ b/index.php
@@ -35,6 +35,10 @@ require 'head.php';
required placeholder="http://website.com/video" />
+
+
+