Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
0e4a24b
feat(webdav): thumbnails through a Tika server
dschmidt Aug 30, 2026
652ae0e
chore(search): read the shared OC_TIKA_URL
dschmidt Aug 30, 2026
7529385
feat(webdav): take the thumbnail tika marks, and the rendering of a m…
dschmidt Sep 6, 2026
a98a739
feat(webdav): use Tika's merged thumbnail preset
dschmidt Sep 16, 2026
12da21f
ci: activate Tika's thumbnail preset wherever Tika runs
dschmidt Oct 7, 2026
c086a97
refactor(webdav): let the preprocessor say what a type needs
dschmidt Oct 19, 2026
132fe9d
feat(thumbnails): split preview mime types and add HasPreview
dschmidt Oct 15, 2026
183023b
feat(search): index embedded cover dimensions as oc.preview
dschmidt Oct 15, 2026
651997f
feat(webdav): honest has-preview for audio in search results
dschmidt Oct 15, 2026
e58b882
feat(graph): base driveItem thumbnails on HasPreview, add the source …
dschmidt Oct 15, 2026
72bb245
fix(thumbnails): address review findings on preview presence
dschmidt Oct 15, 2026
58a8b1d
test(search): drop the Tika cover order test
dschmidt Oct 15, 2026
928cd18
feat(search): index the type an embedded preview is in
dschmidt Oct 19, 2026
1b68448
fix(webdav): no indexed cover, no preview
dschmidt Oct 19, 2026
2b6468f
fix(search): store the embedded preview's media type without parameters
dschmidt Oct 19, 2026
66cfa4b
refactor: call the preview's type mimeType, as everywhere else
dschmidt Oct 19, 2026
7aff838
refactor(search): take the cover Tika marks as the thumbnail
dschmidt Oct 19, 2026
a860742
feat(search): ask Tika for the thumbnail preset, take the image it marks
dschmidt Oct 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .woodpecker.star
Original file line number Diff line number Diff line change
Expand Up @@ -3408,6 +3408,17 @@ def tikaService():
# tika 4 discovers its plugins relative to the image working directory,
# the workspace default would leave the pipes fetchers empty
"directory": "/opt/tika-server",
# the thumbnail preset ships inert; the config is what activates it
"entrypoint": [
"java",
"-cp",
"/opt/tika-server/*:/opt/tika-server/lib/*:/tika-extras/*",
"org.apache.tika.server.core.TikaServerCli",
"-h",
"0.0.0.0",
"-c",
"%s/tests/config/woodpecker/tika-config.json" % dirs["base"],
],
"detach": True,
}, {
"name": "wait-for-tika-service",
Expand Down
12 changes: 12 additions & 0 deletions devtools/deployments/opencloud_full/config/tika/tika-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
// -h and -p still come from the command line; a config file has to carry the block
"server": {
"port": 9998,
"host": "0.0.0.0"
},
// the thumbnail preset ships inert in tika-pipes-core; activating it is what serves
// PUT /unpack/preset/thumbnail, which the webdav thumbnailer asks for
"presets": {
"thumbnail": true
}
}
6 changes: 5 additions & 1 deletion devtools/deployments/opencloud_full/tika.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ services:
tika:
image: ${TIKA_IMAGE:-apache/tika:latest-full}
# release notes: https://tika.apache.org
# the thumbnail preset ships inert; the config is what activates it
command: ['-c', '/tika-config.json']
volumes:
- ./config/tika/tika-config.json:/tika-config.json
networks:
opencloud-net:
restart: always
Expand All @@ -13,5 +17,5 @@ services:
environment:
# fulltext search
SEARCH_EXTRACTOR_TYPE: tika
SEARCH_EXTRACTOR_TIKA_TIKA_URL: http://tika:9998
OC_TIKA_URL: http://tika:9998
FRONTEND_FULL_TEXT_SEARCH_ENABLED: "true"
10 changes: 10 additions & 0 deletions pkg/conversions/strings.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package conversions

import (
"strconv"
"strings"
)

Expand All @@ -14,3 +15,12 @@ func StringToSliceString(src string, sep string) []string {

return parts
}

// StringToInt32 returns fallback when s is not a base-10 int32
func StringToInt32(s string, fallback int32) int32 {
v, err := strconv.ParseInt(s, 10, 32)
if err != nil {
return fallback
}
return int32(v)
}
Loading
Loading