Compare commits

..

3 Commits

Author SHA1 Message Date
0a7e59b646 Some documentation updates 2021-09-24 20:55:08 -04:00
43a566fe2f Version bump 2021-09-24 20:33:19 -04:00
b2631a86c8 Rework index picker 2021-09-24 20:31:11 -04:00
11 changed files with 78 additions and 81 deletions

View File

@ -50,7 +50,8 @@ sist2 (Simple incremental search tool)
``` ```
1. Download sist2 executable 1. Download sist2 executable
1. Download the [latest sist2 release](https://github.com/simon987/sist2/releases) * 1. Download the [latest sist2 release](https://github.com/simon987/sist2/releases) *
1. *(or)* Download a [development snapshot](https://files.simon987.net/.gate/sist2/simon987_sist2/) *(Not recommended!)* 1. *(or)* Download a [development snapshot](https://files.simon987.net/.gate/sist2/simon987_sist2/) *(Not
recommended!)*
1. *(or)* `docker pull simon987/sist2:2.11.2-x64-linux` 1. *(or)* `docker pull simon987/sist2:2.11.2-x64-linux`
1. See [Usage guide](docs/USAGE.md) 1. See [Usage guide](docs/USAGE.md)
@ -70,19 +71,20 @@ See [Usage guide](docs/USAGE.md) for more details
File type | Library | Content | Thumbnail | Metadata File type | Library | Content | Thumbnail | Metadata
:---|:---|:---|:---|:--- :---|:---|:---|:---|:---
pdf,xps,fb2,epub | MuPDF | text+ocr | yes | author, title | pdf,xps,fb2,epub | MuPDF | text+ocr | yes | author, title |
cbz,cbr | *(none)* | - | yes | - | cbz,cbr | [libscan](https://github.com/simon987/libscan) | - | yes | - |
`audio/*` | ffmpeg | - | yes | ID3 tags | `audio/*` | ffmpeg | - | yes | ID3 tags |
`video/*` | ffmpeg | - | yes | title, comment, artist | `video/*` | ffmpeg | - | yes | title, comment, artist |
`image/*` | ffmpeg | - | yes | [Common EXIF tags](https://github.com/simon987/sist2/blob/efdde2734eca9b14a54f84568863b7ffd59bdba3/src/parsing/media.c#L190), GPS tags | `image/*` | ffmpeg | - | yes | [Common EXIF tags](https://github.com/simon987/sist2/blob/efdde2734eca9b14a54f84568863b7ffd59bdba3/src/parsing/media.c#L190), GPS tags |
raw, rw2, dng, cr2, crw, dcr, k25, kdc, mrw, pef, xf3, arw, sr2, srf, erf | LibRaw | - | yes | Common EXIF tags, GPS tags | raw, rw2, dng, cr2, crw, dcr, k25, kdc, mrw, pef, xf3, arw, sr2, srf, erf | LibRaw | - | yes | Common EXIF tags, GPS tags |
ttf,ttc,cff,woff,fnt,otf | Freetype2 | - | yes, `bmp` | Name & style | ttf,ttc,cff,woff,fnt,otf | Freetype2 | - | yes, `bmp` | Name & style |
`text/plain` | *(none)* | yes | no | - | `text/plain` | [libscan](https://github.com/simon987/libscan) | yes | no | - |
html, xml | *(none)* | yes | no | - | html, xml | [libscan](https://github.com/simon987/libscan) | yes | no | - |
tar, zip, rar, 7z, ar ... | Libarchive | yes\* | - | no | tar, zip, rar, 7z, ar ... | Libarchive | yes\* | - | no |
docx, xlsx, pptx | *(none)* | yes | if embedded | creator, modified_by, title | docx, xlsx, pptx | [libscan](https://github.com/simon987/libscan) | yes | if embedded | creator, modified_by, title |
doc (MS Word 97-2003) | antiword | yes | yes | author, title | doc (MS Word 97-2003) | antiword | yes | yes | author, title |
mobi, azw, azw3 | libmobi | yes | no | author, title | mobi, azw, azw3 | libmobi | yes | no | author, title |
wpd (WordPerfect) | libwpd | yes | no | *planned* | wpd (WordPerfect) | libwpd | yes | no | *planned* |
json, jsonl, ndjson | [libscan](https://github.com/simon987/libscan) | yes | - | - |
\* *See [Archive files](#archive-files)* \* *See [Archive files](#archive-files)*
@ -135,7 +137,7 @@ docker run --rm my-sist2-image cat /root/sist2 > sist2-x64-linux
```bash ```bash
apt install gcc g++ python3 yasm ragel automake autotools-dev wget libtool libssl-dev curl zip unzip tar xorg-dev libglu1-mesa-dev libxcursor-dev libxml2-dev libxinerama-dev gettext nasm git apt install gcc g++ python3 yasm ragel automake autotools-dev wget libtool libssl-dev curl zip unzip tar xorg-dev libglu1-mesa-dev libxcursor-dev libxml2-dev libxinerama-dev gettext nasm git
``` ```
1. Apply vcpkg patches, as per [sist2-build](https://github.com/simon987/sist2-build) Dockerfile 1. Apply vcpkg patches, as per [sist2-build](https://github.com/simon987/sist2-build) Dockerfile
1. Install vcpkg dependencies 1. Install vcpkg dependencies

View File

@ -49,6 +49,7 @@ Scan options
--mem-buffer=<int> Maximum memory buffer size per thread in MB for files inside archives (see USAGE.md). DEFAULT: 2000 --mem-buffer=<int> Maximum memory buffer size per thread in MB for files inside archives (see USAGE.md). DEFAULT: 2000
--read-subtitles Read subtitles from media files. --read-subtitles Read subtitles from media files.
--fast-epub Faster but less accurate EPUB parsing (no thumbnails, metadata) --fast-epub Faster but less accurate EPUB parsing (no thumbnails, metadata)
--checksums Calculate file checksums when scanning.
Index options Index options
-t, --threads=<int> Number of threads. DEFAULT=1 -t, --threads=<int> Number of threads. DEFAULT=1
@ -129,6 +130,9 @@ Exec-script options
To check if a media file can be parsed without *seek*, execute `cat file.mp4 | ffprobe -` To check if a media file can be parsed without *seek*, execute `cat file.mp4 | ffprobe -`
* `--read-subtitles` When enabled, will attempt to read the subtitles stream from media files. * `--read-subtitles` When enabled, will attempt to read the subtitles stream from media files.
* `--fast-epub` Much faster but less accurate EPUB parsing. When enabled, sist2 will use a simple HTML parser to read epub files instead of the MuPDF library. No thumbnails are generated and author/title metadata are not parsed. * `--fast-epub` Much faster but less accurate EPUB parsing. When enabled, sist2 will use a simple HTML parser to read epub files instead of the MuPDF library. No thumbnails are generated and author/title metadata are not parsed.
* `--checksums` Calculate file checksums (sha1) when scanning files. This option does not cause any additional read
operations. Checksums are not calculated for all file types, unless the file is inside an archive. When enabled, duplicate
files are hidden in the web UI (this behaviour can be toggled in the Configuration page).
### Scan examples ### Scan examples

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -23,7 +23,6 @@
"vue-color": "^2.8.1", "vue-color": "^2.8.1",
"vue-i18n": "^8.24.4", "vue-i18n": "^8.24.4",
"vue-masonry-wall": "^0.3.2", "vue-masonry-wall": "^0.3.2",
"vue-multiselect": "^2.1.6",
"vue-router": "^3.2.0", "vue-router": "^3.2.0",
"vue-simple-suggest": "^1.11.1", "vue-simple-suggest": "^1.11.1",
"vuex": "^3.4.0" "vuex": "^3.4.0"
@ -13604,15 +13603,6 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/vue-multiselect": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-2.1.6.tgz",
"integrity": "sha512-s7jmZPlm9FeueJg1RwJtnE9KNPtME/7C8uRWSfp9/yEN4M8XcS/d+bddoyVwVnvFyRh9msFo0HWeW0vTL8Qv+w==",
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
}
},
"node_modules/vue-observe-visibility": { "node_modules/vue-observe-visibility": {
"version": "0.4.6", "version": "0.4.6",
"resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-0.4.6.tgz", "resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-0.4.6.tgz",
@ -26376,11 +26366,6 @@
"vue-observe-visibility": "^0.4.6" "vue-observe-visibility": "^0.4.6"
} }
}, },
"vue-multiselect": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-2.1.6.tgz",
"integrity": "sha512-s7jmZPlm9FeueJg1RwJtnE9KNPtME/7C8uRWSfp9/yEN4M8XcS/d+bddoyVwVnvFyRh9msFo0HWeW0vTL8Qv+w=="
},
"vue-observe-visibility": { "vue-observe-visibility": {
"version": "0.4.6", "version": "0.4.6",
"resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-0.4.6.tgz", "resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-0.4.6.tgz",

View File

@ -22,7 +22,6 @@
"vue-color": "^2.8.1", "vue-color": "^2.8.1",
"vue-i18n": "^8.24.4", "vue-i18n": "^8.24.4",
"vue-masonry-wall": "^0.3.2", "vue-masonry-wall": "^0.3.2",
"vue-multiselect": "^2.1.6",
"vue-router": "^3.2.0", "vue-router": "^3.2.0",
"vue-simple-suggest": "^1.11.1", "vue-simple-suggest": "^1.11.1",
"vuex": "^3.4.0" "vuex": "^3.4.0"

View File

@ -1,93 +1,95 @@
<template> <template>
<VueMultiselect <div v-if="isMobile">
multiple <b-form-select
label="name" :value="selectedIndicesIds"
:value="selectedIndices" @change="onSelect($event)"
:options="indices" :options="indices" multiple :select-size="6" text-field="name"
:close-on-select="indices.length <= 1" value-field="id"></b-form-select>
:placeholder="$t('indexPickerPlaceholder')" </div>
@select="addItem" <div v-else>
@remove="removeItem"> <b-list-group id="index-picker-desktop">
<b-list-group-item
<template slot="option" slot-scope="idx"> v-for="idx in indices"
<b-row> @click="toggleIndex(idx)"
<b-col> class="d-flex justify-content-between align-items-center list-group-item-action pointer">
<span class="mr-1">{{ idx.option.name }}</span> <div class="d-flex">
<SmallBadge pill :text="idx.option.version"></SmallBadge> <b-checkbox @change="toggleIndex(idx)" :checked="isSelected(idx)"></b-checkbox>
</b-col> {{ idx.name }}
</b-row> <span class="text-muted timestamp-text ml-2">{{ formatIdxDate(idx.timestamp) }}</span>
<b-row class="mt-1"> </div>
<b-col> <b-badge class="version-badge">v{{ idx.version }}</b-badge>
<span>{{ formatIdxDate(idx.option.timestamp) }}</span> </b-list-group-item>
</b-col> </b-list-group>
</b-row> </div>
</template>
</VueMultiselect>
</template> </template>
<script lang="ts"> <script lang="ts">
import VueMultiselect from "vue-multiselect"
import SmallBadge from "./SmallBadge.vue" import SmallBadge from "./SmallBadge.vue"
import {mapActions, mapGetters} from "vuex"; import {mapActions, mapGetters} from "vuex";
import {Index} from "@/Sist2Api";
import Vue from "vue"; import Vue from "vue";
import {format} from "date-fns"; import {format} from "date-fns";
export default Vue.extend({ export default Vue.extend({
components: { components: {
VueMultiselect,
SmallBadge SmallBadge
}, },
data() { data() {
return { return {
loading: true loading: true,
} }
}, },
computed: { computed: {
...mapGetters([ ...mapGetters([
"indices", "selectedIndices" "indices", "selectedIndices"
]), ]),
selectedIndicesIds() {
return this.selectedIndices.map(idx => idx.id)
},
isMobile() {
return window.innerWidth <= 650;
}
}, },
methods: { methods: {
...mapActions({ ...mapActions({
setSelectedIndices: "setSelectedIndices" setSelectedIndices: "setSelectedIndices"
}), }),
removeItem(val: Index): void { onSelect(value) {
this.setSelectedIndices(this.selectedIndices.filter((item: Index) => item !== val)) this.setSelectedIndices(this.indices.filter(idx => value.includes(idx.id)));
},
addItem(val: Index): void {
this.setSelectedIndices([...this.selectedIndices, val])
}, },
formatIdxDate(timestamp: number): string { formatIdxDate(timestamp: number): string {
return format(new Date(timestamp * 1000), "yyyy-MM-dd"); return format(new Date(timestamp * 1000), "yyyy-MM-dd");
},
toggleIndex(index) {
if (this.isSelected(index)) {
this.setSelectedIndices(this.selectedIndices.filter(idx => idx.id != index.id));
} else {
this.setSelectedIndices([index, ...this.selectedIndices]);
}
},
isSelected(index) {
return this.selectedIndices.find(idx => idx.id == index.id) != null;
} }
}, },
}) })
</script> </script>
<style src="vue-multiselect/dist/vue-multiselect.min.css"></style> <style scoped>
.timestamp-text {
<style> line-height: 24px;
.multiselect__option { font-size: 80%;
padding: 5px 10px;
} }
.multiselect__content-wrapper { .version-badge {
overflow: hidden; color: #222 !important;
background: none;
} }
.theme-black .multiselect__tags { .list-group-item {
background: #37474F; padding: 0.2em 0.4em;
border: 1px solid #616161 !important
} }
.theme-black .multiselect__input { #index-picker-desktop {
color: #dbdbdb; overflow-y: auto;
background: #37474F; max-height: 132px;
}
.theme-black .multiselect__content-wrapper {
border: none
} }
</style> </style>

View File

@ -51,7 +51,7 @@
#include <ctype.h> #include <ctype.h>
#include "git_hash.h" #include "git_hash.h"
#define VERSION "2.11.2" #define VERSION "2.11.3"
static const char *const Version = VERSION; static const char *const Version = VERSION;
#ifndef SIST_PLATFORM #ifndef SIST_PLATFORM

File diff suppressed because one or more lines are too long