mirror of
https://github.com/simon987/sist2.git
synced 2025-04-21 19:26:45 +00:00
Compare commits
5 Commits
2b639bd4ac
...
c575fca91d
Author | SHA1 | Date | |
---|---|---|---|
c575fca91d | |||
0bf4244683 | |||
eea5ce75f3 | |||
9b81856353 | |||
a10d6952ba |
2
sist2-vue/dist/js/index.js
vendored
2
sist2-vue/dist/js/index.js
vendored
File diff suppressed because one or more lines are too long
@ -69,7 +69,7 @@ interface SortMode {
|
|||||||
|
|
||||||
class Sist2Query {
|
class Sist2Query {
|
||||||
|
|
||||||
searchQuery(): any {
|
searchQuery(blankSearch: boolean = false): any {
|
||||||
|
|
||||||
const getters = store.getters;
|
const getters = store.getters;
|
||||||
|
|
||||||
@ -93,22 +93,6 @@ class Sist2Query {
|
|||||||
{terms: {index: selectedIndexIds}}
|
{terms: {index: selectedIndexIds}}
|
||||||
] as any[];
|
] as any[];
|
||||||
|
|
||||||
if (sizeMin && sizeMax) {
|
|
||||||
filters.push({range: {size: {gte: sizeMin, lte: sizeMax}}})
|
|
||||||
} else if (sizeMin) {
|
|
||||||
filters.push({range: {size: {gte: sizeMin}}})
|
|
||||||
} else if (sizeMax) {
|
|
||||||
filters.push({range: {size: {lte: sizeMax}}})
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dateMin && dateMax) {
|
|
||||||
filters.push({range: {mtime: {gte: dateMin, lte: dateMax}}})
|
|
||||||
} else if (dateMin) {
|
|
||||||
filters.push({range: {mtime: {gte: dateMin}}})
|
|
||||||
} else if (dateMax) {
|
|
||||||
filters.push({range: {mtime: {lte: dateMax}}})
|
|
||||||
}
|
|
||||||
|
|
||||||
const fields = [
|
const fields = [
|
||||||
"name^8",
|
"name^8",
|
||||||
"content^3",
|
"content^3",
|
||||||
@ -128,7 +112,25 @@ class Sist2Query {
|
|||||||
fields.push("name.nGram^3");
|
fields.push("name.nGram^3");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!blankSearch) {
|
||||||
|
if (sizeMin && sizeMax) {
|
||||||
|
filters.push({range: {size: {gte: sizeMin, lte: sizeMax}}})
|
||||||
|
} else if (sizeMin) {
|
||||||
|
filters.push({range: {size: {gte: sizeMin}}})
|
||||||
|
} else if (sizeMax) {
|
||||||
|
filters.push({range: {size: {lte: sizeMax}}})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dateMin && dateMax) {
|
||||||
|
filters.push({range: {mtime: {gte: dateMin, lte: dateMax}}})
|
||||||
|
} else if (dateMin) {
|
||||||
|
filters.push({range: {mtime: {gte: dateMin}}})
|
||||||
|
} else if (dateMax) {
|
||||||
|
filters.push({range: {mtime: {lte: dateMax}}})
|
||||||
|
}
|
||||||
|
|
||||||
const path = pathText.replace(/\/$/, "").toLowerCase(); //remove trailing slashes
|
const path = pathText.replace(/\/$/, "").toLowerCase(); //remove trailing slashes
|
||||||
|
|
||||||
if (path !== "") {
|
if (path !== "") {
|
||||||
filters.push({term: {path: path}})
|
filters.push({term: {path: path}})
|
||||||
}
|
}
|
||||||
@ -144,6 +146,7 @@ class Sist2Query {
|
|||||||
selectedTags.forEach((tag: string) => filters.push({term: {"tag": tag}}));
|
selectedTags.forEach((tag: string) => filters.push({term: {"tag": tag}}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let query;
|
let query;
|
||||||
if (getters.optQueryMode === "simple") {
|
if (getters.optQueryMode === "simple") {
|
||||||
@ -182,7 +185,7 @@ class Sist2Query {
|
|||||||
size: size,
|
size: size,
|
||||||
} as any;
|
} as any;
|
||||||
|
|
||||||
if (!empty) {
|
if (!empty && !blankSearch) {
|
||||||
q.query.bool.must = query;
|
q.query.bool.must = query;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,7 +240,7 @@ class Sist2Query {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty) {
|
if (!empty && !blankSearch) {
|
||||||
q.query.function_score.query.bool.must.push(query);
|
q.query.function_score.query.bool.must.push(query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,6 @@ export default {
|
|||||||
|
|
||||||
switch (e.key) {
|
switch (e.key) {
|
||||||
case " ": {
|
case " ": {
|
||||||
console.log("SPACE")
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
e.stopImmediatePropagation();
|
e.stopImmediatePropagation();
|
||||||
@ -98,16 +97,12 @@ export default {
|
|||||||
[...document.getElementsByClassName("fslightbox-absoluted")].forEach(elem => {
|
[...document.getElementsByClassName("fslightbox-absoluted")].forEach(elem => {
|
||||||
if (elem.style.transform === "translate(0px)" || elem.style.transform === "translate(0px, 0px)") {
|
if (elem.style.transform === "translate(0px)" || elem.style.transform === "translate(0px, 0px)") {
|
||||||
const vid = elem.getElementsByTagName("video")[0];
|
const vid = elem.getElementsByTagName("video")[0];
|
||||||
console.log(elem)
|
|
||||||
console.log(vid)
|
|
||||||
|
|
||||||
if (vid) {
|
if (vid) {
|
||||||
if (vid.paused) {
|
if (vid.paused) {
|
||||||
vid.play();
|
vid.play();
|
||||||
console.log("PLAY")
|
|
||||||
} else {
|
} else {
|
||||||
vid.pause()
|
vid.pause()
|
||||||
console.log("PAUSE")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -119,24 +114,28 @@ export default {
|
|||||||
}
|
}
|
||||||
case "ArrowUp":
|
case "ArrowUp":
|
||||||
case "k": {
|
case "k": {
|
||||||
if (!lightboxStore.data.isThumbing) {
|
if (!lightboxStore.data.isThumbing && lightboxStore.core.thumbsToggler) {
|
||||||
lightboxStore.core.thumbsToggler.toggleThumbs();
|
lightboxStore.core.thumbsToggler.toggleThumbs();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
case "ArrowDown":
|
case "ArrowDown":
|
||||||
case "j": {
|
case "j": {
|
||||||
if (lightboxStore.data.isThumbing) {
|
if (lightboxStore.data.isThumbing && lightboxStore.core.thumbsToggler) {
|
||||||
lightboxStore.core.thumbsToggler.toggleThumbs();
|
lightboxStore.core.thumbsToggler.toggleThumbs();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
case "h": {
|
case "h": {
|
||||||
|
if (lightboxStore.core.stageManager.getPreviousSlideIndex) {
|
||||||
lightboxStore.core.slideIndexChanger.jumpTo(lightboxStore.core.stageManager.getPreviousSlideIndex());
|
lightboxStore.core.slideIndexChanger.jumpTo(lightboxStore.core.stageManager.getPreviousSlideIndex());
|
||||||
break;
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
case "l": {
|
case "l": {
|
||||||
|
if (lightboxStore.core.stageManager.getNextSlideIndex) {
|
||||||
lightboxStore.core.slideIndexChanger.jumpTo(lightboxStore.core.stageManager.getNextSlideIndex());
|
lightboxStore.core.slideIndexChanger.jumpTo(lightboxStore.core.stageManager.getNextSlideIndex());
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -241,6 +241,11 @@ export default new Vuex.Store({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
async updateArgs({state}, router: VueRouter) {
|
async updateArgs({state}, router: VueRouter) {
|
||||||
|
|
||||||
|
if (router.currentRoute.path !== "/") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await router.push({
|
await router.push({
|
||||||
query: {
|
query: {
|
||||||
q: state.searchText.trim() ? state.searchText.trim().replace(/\s+/g, " ") : undefined,
|
q: state.searchText.trim() ? state.searchText.trim().replace(/\s+/g, " ") : undefined,
|
||||||
|
@ -139,7 +139,9 @@ export default Vue.extend({
|
|||||||
this.setSist2Info(data);
|
this.setSist2Info(data);
|
||||||
this.setIndices(data.indices);
|
this.setIndices(data.indices);
|
||||||
|
|
||||||
Sist2Api.getMimeTypes(Sist2Query.searchQuery()).then(({mimeMap}) => {
|
const doBlankSearch = !this.$store.state.optUpdateMimeMap;
|
||||||
|
|
||||||
|
Sist2Api.getMimeTypes(Sist2Query.searchQuery(doBlankSearch)).then(({mimeMap}) => {
|
||||||
this.$store.commit("setUiMimeMap", mimeMap);
|
this.$store.commit("setUiMimeMap", mimeMap);
|
||||||
this.uiLoading = false;
|
this.uiLoading = false;
|
||||||
this.search(true);
|
this.search(true);
|
||||||
|
@ -214,7 +214,13 @@ void print_errors(response_t *r) {
|
|||||||
*(tmp + r->size) = '\0';
|
*(tmp + r->size) = '\0';
|
||||||
|
|
||||||
cJSON *ret_json = cJSON_Parse(tmp);
|
cJSON *ret_json = cJSON_Parse(tmp);
|
||||||
if (cJSON_GetObjectItem(ret_json, "errors")->valueint != 0) {
|
cJSON *errors = cJSON_GetObjectItem(ret_json, "errors");
|
||||||
|
|
||||||
|
if (errors == NULL) {
|
||||||
|
char *str = cJSON_Print(ret_json);
|
||||||
|
LOG_ERRORF("elastic.c", "%s\n", str);
|
||||||
|
cJSON_free(str);
|
||||||
|
} else if (errors->valueint != 0) {
|
||||||
cJSON *err;
|
cJSON *err;
|
||||||
cJSON_ArrayForEach(err, cJSON_GetObjectItem(ret_json, "items")) {
|
cJSON_ArrayForEach(err, cJSON_GetObjectItem(ret_json, "items")) {
|
||||||
if (cJSON_GetObjectItem(cJSON_GetObjectItem(err, "index"), "status")->valueint != 201) {
|
if (cJSON_GetObjectItem(cJSON_GetObjectItem(err, "index"), "status")->valueint != 201) {
|
||||||
|
2
src/web/static_generated.c
vendored
2
src/web/static_generated.c
vendored
File diff suppressed because one or more lines are too long
14
third-party/libscan/libscan/media/media.c
vendored
14
third-party/libscan/libscan/media/media.c
vendored
@ -4,7 +4,12 @@
|
|||||||
|
|
||||||
#define MIN_SIZE 32
|
#define MIN_SIZE 32
|
||||||
#define AVIO_BUF_SIZE 8192
|
#define AVIO_BUF_SIZE 8192
|
||||||
#define IS_VIDEO(fmt) ((fmt)->iformat->name && strcmp((fmt)->iformat->name, "image2") != 0)
|
#define IS_VIDEO(fmt) ( \
|
||||||
|
(fmt)->iformat->name && strcmp((fmt)->iformat->name, "image2") != 0 \
|
||||||
|
&& strcmp((fmt)->iformat->name, "jpeg_pipe") != 0 \
|
||||||
|
&& strcmp((fmt)->iformat->name, "webp_pipe") != 0 \
|
||||||
|
&& strcmp((fmt)->iformat->name, "png_pipe") != 0 \
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#define STORE_AS_IS ((void*)-1)
|
#define STORE_AS_IS ((void*)-1)
|
||||||
@ -279,6 +284,7 @@ static void
|
|||||||
append_video_meta(scan_media_ctx_t *ctx, AVFormatContext *pFormatCtx, AVFrame *frame, document_t *doc, int is_video) {
|
append_video_meta(scan_media_ctx_t *ctx, AVFormatContext *pFormatCtx, AVFrame *frame, document_t *doc, int is_video) {
|
||||||
|
|
||||||
if (is_video) {
|
if (is_video) {
|
||||||
|
if (pFormatCtx->duration / AV_TIME_BASE != 0) {
|
||||||
meta_line_t *meta_duration = malloc(sizeof(meta_line_t));
|
meta_line_t *meta_duration = malloc(sizeof(meta_line_t));
|
||||||
meta_duration->key = MetaMediaDuration;
|
meta_duration->key = MetaMediaDuration;
|
||||||
meta_duration->long_val = pFormatCtx->duration / AV_TIME_BASE;
|
meta_duration->long_val = pFormatCtx->duration / AV_TIME_BASE;
|
||||||
@ -286,12 +292,15 @@ append_video_meta(scan_media_ctx_t *ctx, AVFormatContext *pFormatCtx, AVFrame *f
|
|||||||
meta_duration->long_val = 0;
|
meta_duration->long_val = 0;
|
||||||
}
|
}
|
||||||
APPEND_META(doc, meta_duration)
|
APPEND_META(doc, meta_duration)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pFormatCtx->bit_rate != 0) {
|
||||||
meta_line_t *meta_bitrate = malloc(sizeof(meta_line_t));
|
meta_line_t *meta_bitrate = malloc(sizeof(meta_line_t));
|
||||||
meta_bitrate->key = MetaMediaBitrate;
|
meta_bitrate->key = MetaMediaBitrate;
|
||||||
meta_bitrate->long_val = pFormatCtx->bit_rate;
|
meta_bitrate->long_val = pFormatCtx->bit_rate;
|
||||||
APPEND_META(doc, meta_bitrate)
|
APPEND_META(doc, meta_bitrate)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AVDictionaryEntry *tag = NULL;
|
AVDictionaryEntry *tag = NULL;
|
||||||
if (is_video) {
|
if (is_video) {
|
||||||
@ -577,7 +586,8 @@ void parse_media_format_ctx(scan_media_ctx_t *ctx, AVFormatContext *pFormatCtx,
|
|||||||
|
|
||||||
int video_duration_in_seconds = (int) (pFormatCtx->duration / AV_TIME_BASE);
|
int video_duration_in_seconds = (int) (pFormatCtx->duration / AV_TIME_BASE);
|
||||||
|
|
||||||
int thumbnails_to_generate = (IS_VIDEO(pFormatCtx) && stream->codecpar->codec_id != AV_CODEC_ID_GIF && video_duration_in_seconds >= 15)
|
int thumbnails_to_generate = (IS_VIDEO(pFormatCtx) && stream->codecpar->codec_id != AV_CODEC_ID_GIF &&
|
||||||
|
video_duration_in_seconds >= 15)
|
||||||
// Limit to ~1 thumbnail every 7s
|
// Limit to ~1 thumbnail every 7s
|
||||||
? MAX(MIN(ctx->tn_count, video_duration_in_seconds / 7 + 1), 1) + 1
|
? MAX(MIN(ctx->tn_count, video_duration_in_seconds / 7 + 1), 1) + 1
|
||||||
: 1;
|
: 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user