Commit Graph

86 Commits

Author SHA1 Message Date
Joas Schilling 4700c8546d Merge pull request #59905 from nextcloud/jtr/chore-drop-registerProvider-IPreview
refactor(preview): remove deprecated `PreviewManager::registerProvider` API
2026-06-09 11:51:53 +02:00
Côme Chilliet 1ab09ec753 chore: Apply new coding standard to all files
The diff can be checked using: git diff --ignore-all-space --ignore-blank-lines
To see only the changes not related to blank lines.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-01 13:46:39 +02:00
Josh 3c1cf25002 chore(previews): let psalm know about $class typing
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-05-11 13:10:31 +02:00
Josh bf9d97ec5a chore(previews): registerProvider->registerProviderClosure in PreviewManager
No longer part of the public interface. Just an internal utility function.

Apps/etc register in other ways and still end up here appropriately.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-05-11 13:10:30 +02:00
Ferdinand Thiessen e0ba4d71b6 chore: add missing Override attribute to OC
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-28 21:29:27 +02:00
Carl Schwan 7b6078875b refactor: Run rector on lib/private
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2026-02-06 13:50:18 +01:00
Carl Schwan 6149168129 feat(preview): On demand preview migration
When requesting previews, which we don't find in oc_previews, search in
IAppData first before creating them.

Move the logic from MovepreviewJob to PreviewMigrationService and reuse
that in the Preview Generator.

At the same time rename MovePreviewJob to PreviewMigrationJob as it is a
better name.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2026-01-12 14:20:09 +01:00
Anna Larch 5f797ebc32 refactor: move existing usages of snoflake IDs SnowflakeAwareEntity
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-01-06 12:57:17 +01:00
Anna Larch f546daada7 refactor: Rename Snowflake Generator and Decoder
And introduce the Snowflake DTO

Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-01-06 12:57:04 +01:00
provokateurin e22cfbf7d7 fix(config.sample.php): Update enabledPreviewProviders
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-11-12 12:34:42 +01:00
Carl Schwan 336cc3fa35 feat(Db): Use SnowflakeId for previews
Allow to get an id for the storing the preview on disk before inserting
the preview on the DB.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-28 17:50:03 +01:00
Daniel 2cb2ffe608 Merge pull request #55658 from nextcloud/bug/noid/disable-mp3-previews-by-default
fix: disable mp3 preview provider
2025-10-13 17:22:29 +02:00
Daniel Kesselberg ca717f0b54 fix: disable mp3 preview provider
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-10-09 18:13:17 +02:00
Carl Schwan cb82a9ef04 refactor(preview): Cleanup a bit the public interface
* Remove old IProvider interface, it's been deprecated since 17.0.0 (8
  years)
* Add type hinting to the IPreview interface and mark it as consumeable
  only
* Remove unused arguments from GeneratorHelper

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-09 17:41:13 +02:00
Carl Schwan bef3996c3e fix(preview): Make version column a string
And move it to a different table so that we don't have to pay the
storage cost when not using it (most of the times).

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-08 14:07:06 +02:00
Carl Schwan 58023782b6 feat(preview): Store original file mimetype in preview table
Allow to quickly query all the files from a specific mimetype like in
the ResetRenderedTexts command.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan 324b54b863 refactor(preview): Cleanup the implementation of the new preview backend
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan 6f56dcf73e fix(preview): Fix some tests
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan 13c35c0f17 perf(preview): Migrate previews to the new optimized table
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan 18fbacdd8d perf(preview): Split preview data to new table
The new oc_previews table is optimized for storing previews and should
decrease significantly the space taken by previews in the filecache
table.

This attend to reuse the IObjectStore abstraction over S3/Swift/Azure
but currently only support one single bucket configuration.

Signed-off-by: Carl Schwan <carl.schwan@nextclound.com>
2025-10-06 13:37:15 +02:00
Ferdinand Thiessen 660f3f6fd1 refactor: use logical && || instead of weak and or operators
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-09-27 23:02:18 +02:00
provokateurin 4b2a93cf0a chore(Preview): Remove avconv support
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-08-27 20:51:08 +02:00
Julien Veyssier c7e9f2c03d fix(PreviewManager): use the forced mimetype in throwIfPreviewsDisabled
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2025-06-02 15:50:53 +02:00
Akhil e537500c8e fix: Throw exception in PreviewManager when preview is not available
Signed-off-by: Akhil <akhil@e.email>
2025-05-20 13:17:40 +05:30
Louis Chemineau 2238548278 feat(previews): Support in memory preview request
This allows callers to use the API without increasing the disk usage.

Example: blurhash generation, where we request a preview for all uploaded pictures, but don't want to necessarily store that preview.
Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-05-05 10:38:51 +02:00
nfebe 6b89838cc2 feat: add logging to preview generation
Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-04-17 14:24:18 +01:00
Pauli Järvinen b165523589 fix(preview): Do not try to parse M3U files as MP3
By default, the MP3 audio files get the mimetype `audio/mpeg` and the M3U and
M3U8 playlist files get the mimetype `audio/mpegurl`. PreviewManager had such
a problem that it registered the MP3 preview provider with a regular
expression which matched also the M3U files. This caused an error message to
be logged on the info (1) level for each M3U file every time a folder with
such files was viewed: "Error while getting cover from mp3 file:
File /path/to/some/playlist.m3u is not mpeg/audio!".

Signed-off-by: Pauli Järvinen <pauli.jarvinen@gmail.com>
2025-01-06 12:51:40 +02:00
dependabot[bot] bb598c8451 chore(deps): Bump nextcloud/coding-standard in /vendor-bin/cs-fixer
Bumps [nextcloud/coding-standard](https://github.com/nextcloud/coding-standard) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/nextcloud/coding-standard/releases)
- [Changelog](https://github.com/nextcloud/coding-standard/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/coding-standard/compare/v1.3.1...v1.3.2)

---
updated-dependencies:
- dependency-name: nextcloud/coding-standard
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-10-19 07:57:35 +02:00
provokateurin 9836e9b164 chore(deps): Update nextcloud/coding-standard to v1.3.1
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-19 14:21:20 +02:00
Daniel Kesselberg af6de04e9e style: update codestyle for coding-standard 1.2.3
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 19:34:58 +02:00
ernolf a8bdd4f99b feat(preview): move previews for imaginary pdf to own class ImaginaryPDF
Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-07-25 17:01:01 +02:00
Daniel Kesselberg d270561ef8 fix(preview): don't create folder structure when previews are disabled
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-06-18 10:39:45 +02:00
Andy Scherzinger dae7c159f7 chore: Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-05-24 13:11:22 +02:00
Varun Patil 4ab40e355f fix(preview): check mime type before processing with Imagick
Signed-off-by: Varun Patil <varunpatil@ucla.edu>
2024-04-08 10:22:17 -07:00
Daniel Kesselberg 475dd60354 fix: use png as preview right away
The initial office preview implementation converted an office document with LibreOffice to PDF, used ImageMagick to extract the first page as JPEG, and passed it OC_Image.

https://github.com/nextcloud/server/pull/10198 changed the implementation to use PNG rather than PDF. OC_Image can use a PNG as a preview right away, so the ImageMagick step is unnecessary.

The registration code was updated to not ask ImageMagick if PDF is supported, as PDFs are no longer used to create office document previews.

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2023-11-13 22:00:45 +01:00
Daniel Kesselberg aa48a5f94f feat: add preview provider for emf files based on office
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2023-11-13 12:35:54 +01:00
Joas Schilling 4f7de8ed60 fix!: Remove legacy event dispatching Symfony's GenericEvent
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-07-27 09:57:51 +02:00
Côme Chilliet 8d5165e8dc Adapt tests to config value typing
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2023-04-05 17:42:14 +02:00
Côme Chilliet 426c0341ff Use typed version of IConfig::getSystemValue as much as possible
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2023-04-05 12:50:08 +02:00
Robin Appelman 382432d4e1 cache formats supported by imagick
turns out this can be quite slow

Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-02-13 14:57:06 +01:00
William fa12219629 Update lib/private/PreviewManager.php
fix lint issue

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: William <william.hak57@gmail.com>
2023-01-18 20:32:09 +01:00
William 1409a7cc92 Update PreviewManager.php
add a check in config.php for a configured movieBinary path.
so now it first checks in config.php if  preview_ffmpeg_path is configured.

Signed-off-by: William <william.hak57@gmail.com>
2023-01-18 16:30:41 +01:00
szaimen f9e9cd270d Limit-number-of-concurrent-preview-generations
Signed-off-by: Bowen Ding <dbw9580@live.com>
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-11-05 16:03:01 +08:00
Julius Härtl 07e94eca6f Emit typed event when preview is requested
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-27 14:31:33 +02:00
Joas Schilling efedb218e3 Fix FFMPEG preview manager
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-20 13:22:24 +02:00
Carl Schwan 9b8ca9ad1f Move findBinaryFinder and isFunctionEnabled away from OC_Helper
findBinaryFinder is now a service that is still private but with some
minor optimization (remove the hasKey check).

isFunctionEnabled is now in OCP\Util

Both function are still keep but all internal usage in nextcloud/server
were migrated to the new usage, so that we can remove it in 26

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-08-23 19:44:04 +02:00
Vincent Petry 9b6a1cc8ae Send images to imaginary docker to generate previews
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Co-Authored-by: Vincent Petry <vincent@nextcloud.com>
2022-03-17 08:24:07 +01:00
J0WI 047cab8dd2 Use findBinaryPath for previews
Signed-off-by: J0WI <J0WI@users.noreply.github.com>
2021-10-23 23:15:42 +02:00
Roeland Jago Douma 8bc25e3324 Move preview provider registration to bootstrap
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2021-10-21 10:35:18 +02:00
Julius Härtl b6a24f87a5 Merge pull request #28077 from nextcloud/heicPerformance 2021-07-21 10:27:19 +02:00