Преглед на файлове

Added Emby and Jellyfin import users

CauseFX преди 5 години
родител
ревизия
b6654ab566
променени са 3 файла, в които са добавени 94 реда и са изтрити 2 реда
  1. 6 0
      api/functions/api-functions.php
  2. 81 1
      api/functions/auth-functions.php
  3. 7 1
      api/functions/organizr-functions.php

+ 6 - 0
api/functions/api-functions.php

@@ -1154,6 +1154,12 @@ function importUsersType($array)
 			case 'plex':
 				return importUsers(allPlexUsers(true));
 				break;
+			case 'jellyfin':
+				return importUsers(allJellyfinUsers(true));
+				break;
+			case 'emby':
+				return importUsers(allEmbyUsers(true));
+				break;
 			default:
 				return false;
 		}

+ 81 - 1
api/functions/auth-functions.php

@@ -145,7 +145,87 @@ function allPlexUsers($newOnly = false)
 		}
 		return false;
 	} catch (Requests_Exception $e) {
-		writeLog('success', 'Plex User Function - Error: ' . $e->getMessage(), $username);
+		writeLog('success', 'Plex Import User Function - Error: ' . $e->getMessage(), 'SYSTEM');
+	}
+	return false;
+}
+
+function allJellyfinUsers($newOnly = false)
+{
+	try {
+		if (!empty($GLOBALS['embyURL']) && !empty($GLOBALS['embyToken'])) {
+			$url = qualifyURL($GLOBALS['embyURL']) . '/Users?api_key=' . $GLOBALS['embyToken'];
+			$headers = array();
+			$response = Requests::get($url, $headers);
+			if ($response->success) {
+				$users = json_decode($response->body, true);
+				if (is_array($users) || is_object($users)) {
+					$results = array();
+					foreach ($users as $child) {
+						// Jellyfin doesn't list emails for some reason
+						$email = random_ascii_string(10) . '@placeholder.eml';
+						if ($newOnly) {
+							$taken = usernameTaken((string)$child['Name'], $email);
+							if (!$taken) {
+								$results[] = array(
+									'username' => (string)$child['Name'],
+									'email' => $email
+								);
+							}
+						} else {
+							$results[] = array(
+								'username' => (string)$child['Name'],
+								'email' => $email,
+							);
+						}
+					}
+					return $results;
+				}
+			}
+		}
+		return false;
+	} catch (Requests_Exception $e) {
+		writeLog('success', 'Jellyfin Import User Function - Error: ' . $e->getMessage(), 'SYSTEM');
+	}
+	return false;
+}
+
+function allEmbyUsers($newOnly = false)
+{
+	try {
+		if (!empty($GLOBALS['embyURL']) && !empty($GLOBALS['embyToken'])) {
+			$url = qualifyURL($GLOBALS['embyURL']) . '/Users?api_key=' . $GLOBALS['embyToken'];
+			$headers = array();
+			$response = Requests::get($url, $headers);
+			if ($response->success) {
+				$users = json_decode($response->body, true);
+				if (is_array($users) || is_object($users)) {
+					$results = array();
+					foreach ($users as $child) {
+						// Emby doesn't list emails for some reason
+						$email = random_ascii_string(10) . '@placeholder.eml';
+						if ($newOnly) {
+							$taken = usernameTaken((string)$child['Name'], $email);
+							if (!$taken) {
+								$results[] = array(
+									'username' => (string)$child['Name'],
+									'email' => $email
+								);
+							}
+						} else {
+							$results[] = array(
+								'username' => (string)$child['Name'],
+								'email' => $email,
+							);
+						}
+					}
+					return $results;
+				}
+			}
+		}
+		return false;
+	} catch (Requests_Exception $e) {
+		writeLog('success', 'Emby Import User Function - Error: ' . $e->getMessage(), 'SYSTEM');
 	}
 	return false;
 }

+ 7 - 1
api/functions/organizr-functions.php

@@ -2686,7 +2686,13 @@ function importUserButtons()
 	';
 	$buttons = '';
 	if (!empty($GLOBALS['plexToken'])) {
-		$buttons .= '<button class="btn bg-plex text-muted waves-effect waves-light importUsersButton" onclick="importUsers(\'plex\')" type="button"><span class="btn-label"><i class="mdi mdi-plex"></i></span><span lang="en">Import Plex Users</span></button>';
+		$buttons .= '<button class="btn m-b-20 m-r-20 bg-plex text-muted waves-effect waves-light importUsersButton" onclick="importUsers(\'plex\')" type="button"><span class="btn-label"><i class="mdi mdi-plex"></i></span><span lang="en">Import Plex Users</span></button>';
+	}
+	if (!empty($GLOBALS['embyURL']) && !empty($GLOBALS['embyToken']) && (strpos($GLOBALS['embyURL'], 'jellyfin') !== false)) {
+		$buttons .= '<button class="btn m-b-20 m-r-20 bg-primary text-muted waves-effect waves-light importUsersButton" onclick="importUsers(\'jellyfin\')" type="button"><span class="btn-label"><i class="mdi mdi-fish"></i></span><span lang="en">Import Jellyfin Users</span></button>';
+	}
+	if (!empty($GLOBALS['embyURL']) && !empty($GLOBALS['embyToken']) && (strpos($GLOBALS['embyURL'], 'jellyfin') === false)) {
+		$buttons .= '<button class="btn m-b-20 m-r-20 bg-emby text-muted waves-effect waves-light importUsersButton" onclick="importUsers(\'emby\')" type="button"><span class="btn-label"><i class="mdi mdi-emby"></i></span><span lang="en">Import Jellyfin Users</span></button>';
 	}
 	return ($buttons !== '') ? $buttons : $emptyButtons;
 }