From c92ea929a462fd4997f8b9a914474ecff1088cfb Mon Sep 17 00:00:00 2001 From: Pierre Rudloff Date: Sun, 10 Apr 2016 19:02:50 +0200 Subject: [PATCH 1/4] Better way to get user agent string --- controllers/FrontController.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/controllers/FrontController.php b/controllers/FrontController.php index c4bdb1b..33f4556 100644 --- a/controllers/FrontController.php +++ b/controllers/FrontController.php @@ -115,10 +115,9 @@ class FrontController $video = $this->download->getJSON($params["url"]); //Vimeo needs a correct user-agent - $UA = $this->download->getUA(); ini_set( 'user_agent', - $UA + $video->http_headers->{'User-Agent'} ); $url_info = parse_url($video->url); if ($url_info['scheme'] == 'rtmp') { @@ -161,7 +160,7 @@ class FrontController header("Content-Type: audio/mpeg"); passthru( 'curl '.$this->config->curl_params. - ' --user-agent '.escapeshellarg($UA). + ' --user-agent '.escapeshellarg($video->http_headers->{'User-Agent'}). ' '.escapeshellarg($video->url). ' | '.$this->config->avconv. ' -v quiet -i - -f mp3 -vn pipe:1' From 39205ebe45859d85cbfe8f3a0125805c6eec33fd Mon Sep 17 00:00:00 2001 From: Pierre Rudloff Date: Sun, 10 Apr 2016 19:28:59 +0200 Subject: [PATCH 2/4] Don't use echo --- controllers/FrontController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/FrontController.php b/controllers/FrontController.php index 33f4556..89bf809 100644 --- a/controllers/FrontController.php +++ b/controllers/FrontController.php @@ -229,7 +229,7 @@ class FrontController $url = $this->download->getURL($params["url"]); return $response->withRedirect($url); } catch (\Exception $e) { - echo $e->getMessage().PHP_EOL; + $response->getBody()->write($e->getMessage()); return $response->withHeader('Content-Type', 'text/plain'); } } From 442e2ec87cebd700c0fc35ca7764c8903891c07f Mon Sep 17 00:00:00 2001 From: Pierre Rudloff Date: Sun, 10 Apr 2016 19:41:25 +0200 Subject: [PATCH 3/4] Use bestaudio if available --- controllers/FrontController.php | 109 +++++++++++++++++--------------- 1 file changed, 57 insertions(+), 52 deletions(-) diff --git a/controllers/FrontController.php b/controllers/FrontController.php index 89bf809..bd0f6ae 100644 --- a/controllers/FrontController.php +++ b/controllers/FrontController.php @@ -112,60 +112,65 @@ class FrontController if (isset($params["url"])) { if (isset($params['audio'])) { try { - $video = $this->download->getJSON($params["url"]); + try { + $url = $this->download->getURL($params["url"], 'bestaudio'); + return $response->withRedirect($url); + } catch (\Exception $e) { + $video = $this->download->getJSON($params["url"]); - //Vimeo needs a correct user-agent - ini_set( - 'user_agent', - $video->http_headers->{'User-Agent'} - ); - $url_info = parse_url($video->url); - if ($url_info['scheme'] == 'rtmp') { - ob_end_flush(); - header( - 'Content-Disposition: attachment; filename="'. - html_entity_decode( - pathinfo( - $this->download->getFilename( - $video->webpage_url - ), - PATHINFO_FILENAME - ).'.mp3', - ENT_COMPAT, - 'ISO-8859-1' - ).'"' + //Vimeo needs a correct user-agent + ini_set( + 'user_agent', + $video->http_headers->{'User-Agent'} ); - header("Content-Type: audio/mpeg"); - passthru( - '/usr/bin/rtmpdump -q -r '.escapeshellarg($video->url). - ' | '.$this->config->avconv. - ' -v quiet -i - -f mp3 -vn pipe:1' - ); - exit; - } else { - ob_end_flush(); - header( - 'Content-Disposition: attachment; filename="'. - html_entity_decode( - pathinfo( - $this->download->getFilename( - $video->webpage_url - ), - PATHINFO_FILENAME - ).'.mp3', - ENT_COMPAT, - 'ISO-8859-1' - ).'"' - ); - header("Content-Type: audio/mpeg"); - passthru( - 'curl '.$this->config->curl_params. - ' --user-agent '.escapeshellarg($video->http_headers->{'User-Agent'}). - ' '.escapeshellarg($video->url). - ' | '.$this->config->avconv. - ' -v quiet -i - -f mp3 -vn pipe:1' - ); - exit; + $url_info = parse_url($video->url); + if ($url_info['scheme'] == 'rtmp') { + ob_end_flush(); + header( + 'Content-Disposition: attachment; filename="'. + html_entity_decode( + pathinfo( + $this->download->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). + ' | '.$this->config->avconv. + ' -v quiet -i - -f mp3 -vn pipe:1' + ); + exit; + } else { + ob_end_flush(); + header( + 'Content-Disposition: attachment; filename="'. + html_entity_decode( + pathinfo( + $this->download->getFilename( + $video->webpage_url + ), + PATHINFO_FILENAME + ).'.mp3', + ENT_COMPAT, + 'ISO-8859-1' + ).'"' + ); + header("Content-Type: audio/mpeg"); + passthru( + 'curl '.$this->config->curl_params. + ' --user-agent '.escapeshellarg($video->http_headers->{'User-Agent'}). + ' '.escapeshellarg($video->url). + ' | '.$this->config->avconv. + ' -v quiet -i - -f mp3 -vn pipe:1' + ); + exit; + } } } catch (\Exception $e) { $error = $e->getMessage(); From 20ad5559be18749ada1fd390548f08848c5b6d0f Mon Sep 17 00:00:00 2001 From: Pierre Rudloff Date: Sun, 10 Apr 2016 19:43:33 +0200 Subject: [PATCH 4/4] Better way to get filename --- controllers/FrontController.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/controllers/FrontController.php b/controllers/FrontController.php index bd0f6ae..06c8c49 100644 --- a/controllers/FrontController.php +++ b/controllers/FrontController.php @@ -130,9 +130,7 @@ class FrontController 'Content-Disposition: attachment; filename="'. html_entity_decode( pathinfo( - $this->download->getFilename( - $video->webpage_url - ), + $video->_filename, PATHINFO_FILENAME ).'.mp3', ENT_COMPAT, @@ -152,9 +150,7 @@ class FrontController 'Content-Disposition: attachment; filename="'. html_entity_decode( pathinfo( - $this->download->getFilename( - $video->webpage_url - ), + $video->_filename, PATHINFO_FILENAME ).'.mp3', ENT_COMPAT,