From 2345c4c840a4571b9cbb0a021b4c49f9381875ce Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Sun, 2 Aug 2015 18:03:11 +0200 Subject: Add PLS playlist support for multipastes Signed-off-by: Florian Pritz --- application/controllers/file.php | 31 +++++++++++++++++++++++++++++++ application/views/file/upload_form.php | 1 + 2 files changed, 32 insertions(+) diff --git a/application/controllers/file.php b/application/controllers/file.php index 8b08bdea8..35057f4eb 100644 --- a/application/controllers/file.php +++ b/application/controllers/file.php @@ -141,6 +141,11 @@ class File extends MY_Controller { return $this->_tarball($id); } + case "pls": + if ($is_multipaste) { + return $this->_generate_playlist($id); + } + default: if ($is_multipaste) { throw new \exceptions\UserInputException("file/download/invalid-action", "Invalid action \"".htmlspecialchars($lexer)."\""); @@ -468,6 +473,32 @@ class File extends MY_Controller { } } + /** + * Generate a PLS v2 playlist + */ + private function _generate_playlist($id) + { + $files = $this->mmultipaste->get_files($id); + $counter = 1; + + $playlist = "[playlist]\n"; + foreach ($files as $file) { + // only add audio/video files + $base = explode("/", $file['mimetype'])[0]; + if (!($base === "audio" || $base === "video")) { + continue; + } + + $url = site_url($file["id"]); + $playlist .= sprintf("File%d=%s\n", $counter++, $url); + } + $playlist .= sprintf("NumberOfEntries=%d\n", $counter - 1); + $playlist .= "Version=2\n"; + + $this->output->set_content_type('audio/x-scpls'); + $this->output->set_output($playlist); + } + function _non_existent() { $this->data["title"] .= " - Not Found"; diff --git a/application/views/file/upload_form.php b/application/views/file/upload_form.php index 8fc7b9f59..76d1a5cdb 100644 --- a/application/views/file/upload_form.php +++ b/application/views/file/upload_form.php @@ -110,6 +110,7 @@
/<ID>/qr
display a qr code containing a link to /<ID>/
/<ID>/info
display some information about the multipaste
/<ID>/tar
download a tarball of all files in the multipaste (files may be renamed to avoid conflicts)
+
/<ID>/pls
download a PLS playlist of all audio/video files in the multipaste
-- cgit v1.2.3-24-g4f1b