70 lines
1.8 KiB
PHP
70 lines
1.8 KiB
PHP
<?php
|
|
|
|
session_start();
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
|
|
/* require autoloading to manage namespaces */
|
|
require __DIR__ . '/vendor/autoload.php';
|
|
|
|
use Phlaym\PhotoprismApi\API\PhotoPrism;
|
|
$config = include __DIR__ . '/config.php';
|
|
|
|
function goodbye($message)
|
|
{
|
|
die(json_encode(['error' => ['message' => $message]]));
|
|
}
|
|
|
|
if (!isset($_GET['album'])) {
|
|
goodbye('Kein Album angegeben!');
|
|
}
|
|
|
|
if (!isset($config['host'])) {
|
|
$config['host'] = 'https://photos.phlaym.net';
|
|
}
|
|
$album_token = $_GET['album'];
|
|
$offset = $_GET['offset'] ?? 0;
|
|
|
|
$api = new PhotoPrism($config);
|
|
try {
|
|
$api->login();
|
|
} catch (\Exception $e) {
|
|
goodbye('Login bei Photoprism fehlgeschlagen');
|
|
}
|
|
$album = null;
|
|
try {
|
|
if (isset($_SESSION[$album_token])) {
|
|
$album = $api->getAlbumById($_SESSION[$album_token], $album_token);
|
|
if (is_null($album)) {
|
|
goodbye('Fotoalbum konnte nicht gefunden werden');
|
|
}
|
|
$album->photoCount = $_SESSION[$album_token . '_count'];
|
|
} else {
|
|
$album = $api->getAlbumByToken($album_token);
|
|
if (is_null($album)) {
|
|
goodbye('Fotoalbum konnte nicht gefunden werden');
|
|
}
|
|
$_SESSION[$album_token] = $album->uid;
|
|
$_SESSION[$album_token . '_count'] = $album->photoCount;
|
|
}
|
|
} catch (\Exception $e) {
|
|
goodbye('Login bei Photoprism fehlgeschlagen');
|
|
}
|
|
|
|
$photo = null;
|
|
try {
|
|
$photos = $api->getAlbumPhotos($album, 1, $offset % $album->photoCount);
|
|
if (is_null($photos) || empty($photos)) {
|
|
goodbye('Fotos konnten nicht gefunden werden');
|
|
}
|
|
$photo = $photos[0];
|
|
} catch (\Exception $e) {
|
|
goodbye('Laden des nächstes Fotos fehlgeschlagen');
|
|
}
|
|
echo json_encode(
|
|
[
|
|
'src' => $config['host'] . $photo->getEmbedUrl('fit_1920'),
|
|
'count' => $album->photoCount,
|
|
'album' => $album->title
|
|
]
|
|
);
|