1.2
This commit is contained in:
@@ -238,7 +238,10 @@ async function listFolder(relPath) {
|
||||
return items;
|
||||
}
|
||||
|
||||
async function searchMedia(offset) {
|
||||
// order: 'taken' = Aufnahmedatum aus den Metadaten (Nextcloud 28+),
|
||||
// 'mtime' = Änderungs-/Upload-Datum der Datei
|
||||
async function searchMedia(offset, order = 'taken') {
|
||||
const orderProp = order === 'taken' ? '<nc:metadata-photos-original_date_time/>' : '<d:getlastmodified/>';
|
||||
const body = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<d:searchrequest ${NS} xmlns:ns="https://github.com/icewind1991/SearchDAV/ns">
|
||||
<d:basicsearch>
|
||||
@@ -250,7 +253,7 @@ async function searchMedia(offset) {
|
||||
<d:like><d:prop><d:getcontenttype/></d:prop><d:literal>video/%</d:literal></d:like>
|
||||
</d:or>
|
||||
</d:where>
|
||||
<d:orderby><d:order><d:prop><d:getlastmodified/></d:prop><d:descending/></d:order></d:orderby>
|
||||
<d:orderby><d:order><d:prop>${orderProp}</d:prop><d:descending/></d:order></d:orderby>
|
||||
<d:limit><d:nresults>${PAGE_SIZE}</d:nresults><ns:firstresult>${Number(offset) || 0}</ns:firstresult></d:limit>
|
||||
</d:basicsearch>
|
||||
</d:searchrequest>`;
|
||||
@@ -259,7 +262,11 @@ async function searchMedia(offset) {
|
||||
headers: { 'Content-Type': 'text/xml; charset=utf-8' },
|
||||
body,
|
||||
});
|
||||
if (res.status !== 207) throw new Error(`Die Suche nach Fotos ist fehlgeschlagen (Status ${res.status}).`);
|
||||
if (res.status !== 207) {
|
||||
// Ältere Server kennen das Aufnahmedatum nicht und lehnen die Sortierung ab
|
||||
if (order === 'taken') return { unsupported: true, items: [], done: false };
|
||||
throw new Error(`Die Suche nach Fotos ist fehlgeschlagen (Status ${res.status}).`);
|
||||
}
|
||||
const items = parseMultistatus(await res.text()).map(toItem).filter((i) => !i.isDir);
|
||||
return { items, done: items.length < PAGE_SIZE };
|
||||
}
|
||||
@@ -396,7 +403,7 @@ handle('logout', () => {
|
||||
});
|
||||
|
||||
handle('folder', (p) => listFolder(p));
|
||||
handle('timeline', (offset) => searchMedia(offset));
|
||||
handle('timeline', (offset, order) => searchMedia(offset, order));
|
||||
handle('albums', () => listAlbums());
|
||||
handle('album', (href) => listAlbum(href));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user