summaryrefslogtreecommitdiff
path: root/pages/api
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2023-03-05 09:42:52 +0100
committerMinteck <contact@minteck.org>2023-03-05 09:42:52 +0100
commita4d4376e857c21a2e21221a9b522e91c79740788 (patch)
treef816fabb69ea5d273820b822a365e5712a5fd1dd /pages/api
parent27e0f1f5b61a11a816b42bb9fc8c9fd392260ffe (diff)
downloadpluralconnect-a4d4376e857c21a2e21221a9b522e91c79740788.tar.gz
pluralconnect-a4d4376e857c21a2e21221a9b522e91c79740788.tar.bz2
pluralconnect-a4d4376e857c21a2e21221a9b522e91c79740788.zip
Updated 2 files and added 3 files (automated)
Diffstat (limited to 'pages/api')
-rw-r--r--pages/api/plex-thumb.php11
-rw-r--r--pages/api/plex.php90
2 files changed, 101 insertions, 0 deletions
diff --git a/pages/api/plex-thumb.php b/pages/api/plex-thumb.php
new file mode 100644
index 0000000..4a20159
--- /dev/null
+++ b/pages/api/plex-thumb.php
@@ -0,0 +1,11 @@
+<?php
+
+$app = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/app.json"), true);
+
+if (isset($_GET["library"]) && isset($_GET["id"]) && is_numeric($_GET["library"]) && is_numeric($_GET["id"])) {
+ header("Content-Type: image/jpg");
+ die(file_get_contents("https://plex.equestria.dev/library/metadata/" . $_GET["library"] . "/thumb/" . $_GET["id"] . "?X-Plex-Token=" . $app["plex"]));
+} else {
+ header("HTTP/1.1 400 Invalid request");
+ die("Invalid request");
+} \ No newline at end of file
diff --git a/pages/api/plex.php b/pages/api/plex.php
new file mode 100644
index 0000000..6d7ad8f
--- /dev/null
+++ b/pages/api/plex.php
@@ -0,0 +1,90 @@
+<?php
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/random.inc";
+$app = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/app.json"), true);
+
+function formatTitle($metadata) {
+ if ($metadata['grandparentTitle']) {
+ return $metadata['grandparentTitle'];
+ } else {
+ $ret = $metadata['title'];
+ if ($metadata['year']) {
+ $ret .= " (" . $metadata['year'] . ")";
+ }
+ return $ret;
+ }
+}
+
+function formatSubtitle($metadata) {
+ $ret = '';
+
+ if ($metadata['grandparentTitle']) {
+ if ($metadata['type'] === 'track') {
+ $ret = $metadata['parentTitle'];
+ } else if ($metadata['index'] && $metadata['parentIndex']) {
+ $ret = "S" . $metadata['parentIndex'] . " E" . $metadata['index'];
+ } else if ($metadata['originallyAvailableAt']) {
+ $ret = $metadata['originallyAvailableAt'];
+ }
+
+ if ($metadata['title']) {
+ $ret .= ' - ' . $metadata['title'];
+ }
+ } else if ($metadata['type'] === 'movie') {
+ $ret = $metadata['tagline'];
+ }
+
+ return $ret;
+}
+
+$payload = json_decode($_POST["payload"], true);
+
+if (!file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/cache")) mkdir($_SERVER['DOCUMENT_ROOT'] . "/assets/cache");
+$id = random(32);
+
+if ($payload["Metadata"]["type"] === "track") {
+ file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/assets/cache/" . $id . ".jpg", file_get_contents("https://plex.equestria.dev" . $payload["Metadata"]["thumb"] . "?X-Plex-Token=" . $app["plex"]));
+} else {
+ file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/assets/cache/" . $id . ".jpg", file_get_contents("https://plex.equestria.dev" . $payload["Metadata"]["grandparentThumb"] . "?X-Plex-Token=" . $app["plex"]));
+}
+
+file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/.files.json", json_encode($_FILES));
+
+if ($payload["event"] === "playback.started" || $payload["event"] === "media.play") {
+ $hookObject = json_encode([
+ "username" => "Plex",
+ "avatar_url" => "https://support.plex.tv/wp-content/themes/plex/assets/img/favicons/plex-192.png",
+ "embeds" => [
+ [
+ "title" => formatTitle($payload["Metadata"]),
+ "type" => "rich",
+ "description" => formatSubtitle($payload["Metadata"]),
+ "color" => hexdec( "2b2d31" ),
+ "thumbnail" => [
+ "url" => "https://ponies.equestria.horse/assets/cache/" . $id . ".jpg"
+ ],
+ "footer" => [
+ "text" => $payload["Account"]["title"] . " ยท Playing from " . $payload["Player"]["title"],
+ "icon_url" => $payload["Account"]["thumb"]
+ ]
+ ]
+ ]
+
+ ], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE );
+}
+
+if (isset($hookObject)) {
+ $ch = curl_init();
+
+ curl_setopt_array( $ch, [
+ CURLOPT_URL => $app["webhook"]["plex"],
+ CURLOPT_POST => true,
+ CURLOPT_POSTFIELDS => $hookObject,
+ CURLOPT_HTTPHEADER => [
+ "Content-Type: application/json"
+ ]
+ ]);
+
+ $response = curl_exec( $ch );
+ curl_close( $ch );
+} \ No newline at end of file