Nextcloud app to do preview generation

Overview

Preview Generator

Nextcloud app that allows admins to pre-generate previews. The app listens to edit events and stores this information. Once a cron job is triggered it will start preview generation. This means that you can better utilize your system by pre-generating previews when your system is normally idle and thus putting less load on your machine when the requests are actually served.

The app does not replace on demand preview generation so if a preview is requested before it is pre-generated it will still be shown.

How to install

  • Install directly from within your Nextcloud from the app store
  • Clone this repository in you Nextcloud app folder

How to use the app

  1. Install the app
  2. Enable the app
  3. Run ./occ preview:generate-all once after installation.
  4. Add a (system) cron job for ./occ preview:pre-generate
  • I run it every 10 minutes

Known issues

  • The app does not work with encryption enabled

How does the app work

  1. Listen to events that a file has been written or modified and store it in the database
  2. On cron run request previews for the files that have been written or modified

If a preview already exists at step 2 then requesting it is really cheap. If not it will be generated. Depending on the sizes of the files and the hardware you are running on the time this takes can vary.

Commands

preview:generate-all [--path=PATH ...] [user_id ...]

Loop over all files and try to generate previews for them. If one or multiple user ids are supplied it will just loop over the files of those users. You can also limit the generation to one or more paths using --path="/[username]/files/[folder path]", e.g. --path="/alice/files/Photos". Note that all given user_ids are ignored if at least one path is specified.

preview:pre-generate

Do the actual pregeneration. This means only for new or modified files (since the app was enabled or the last pregeneration was done).

FAQ

Why can't I use webcron?

Preview generation can be a very long running job. Thus we need a system that does not time out.

I get "Command already running"

Yes this happens when the pre-generate command crashes. No worries the lock will be released after 30 minutes of inactivity from the app. So go grab a cookie.

I don't want to generate all the preview sizes

This is possible since version 1.0.8. Just set the correct values via the command line

./occ config:app:set --value="32 64 1024"  previewgenerator squareSizes
./occ config:app:set --value="64 128 1024" previewgenerator widthSizes
./occ config:app:set --value="64 256 1024" previewgenerator heightSizes

This will only generate:

  • square previews of: 32x32, 64x64 and 1024x1024
  • aspect ratio previews with a width of: 64, 128 and 1024
  • aspect ratio previews with a height of: 64, 256 and 1024

Note:

  • preview sizes are always a power of 2.
  • The smallest size is 32
  • The max size is determined by your preview settings in config.php

I get "PHP Fatal error: Allowed memory size of X bytes exhausted"

You need to increase the memory allowance of PHP, by default it is 128 MB. You do that by changing the memory_limit in the php.ini file.

If you use the docker container you need set the environment variable PHP_MEMORY_LIMIT instead.

I want to skip a folder and everything in/under it

Add an empty file with the name .nomedia in the folder you wish to skip. All files and subfolders of the folder containing .nomedia will also be skipped.

I want to reset/regenerate all previews

WARNING: This is not supported but it has been confirmed to work by multiple users. Proceed at your own risk. Always keep backups around.

  1. Remove the folder your-nextcloud-data-directory/appdata_*/preview
  2. Optional: change parameters preview_max_x and preview_max_y in config.php (e.g., to 512), and change the previewgenerator app parameters heightSizes, squareSizes and widthSizes as per the README (or better yet, to a low value each, e.g. 512, 256 and 512 respectively)
  3. Run occ files:scan-app-data (this will reset generated previews in the database)
  4. Run occ preview:generate-all [user-id] (this will run very fast if you did step 2)
Comments
  • error message i am not able to understand

    error message i am not able to understand

    I downloaded and installed your app from the appstore inside NC 11RC1. Everything worked fine even the preview:pre-generate command worked perfectly. I tried the generate-all feature and that was the error message I got.

    occ preview:generate-all

    An unhandled exception has been thrown:
    Error: Call to a member function getPath() on null in /var/www/magicbroccoli.de/nextcloud/lib/private/Preview/GeneratorHelper.php:72
    Stack trace:
    #0 /var/www/magicbroccoli.de/nextcloud/lib/private/Preview/GeneratorHelper.php(53): OC\Preview\GeneratorHelper->getViewAndPath(NULL)
    #1 /var/www/magicbroccoli.de/nextcloud/lib/private/Preview/Generator.php(155): OC\Preview\GeneratorHelper->getThumbnail(Object(OC\Preview\MP3), Object(OC\Files\Node\File), 1024, 1024)
    #2 /var/www/magicbroccoli.de/nextcloud/lib/private/Preview/Generator.php(108): OC\Preview\Generator->getMaxPreview(Object(OC\Files\SimpleFS\SimpleFolder), Object(OC\Files\Node\File), 'audio/mpeg')
    #3 /var/www/magicbroccoli.de/nextcloud/lib/private/PreviewManager.php(182): OC\Preview\Generator->getPreview(Object(OC\Files\Node\File), 32, 32, true, 'fill', 'audio/mpeg')
    #4 /var/www/magicbroccoli.de/nextcloud/apps/previewgenerator/lib/Command/Generate.php(167): OC\PreviewManager->getPreview(Object(OC\Files\Node\File), 32, 32, true)
    #5 /var/www/magicbroccoli.de/nextcloud/apps/previewgenerator/lib/Command/Generate.php(155): OCA\PreviewGenerator\Command\Generate->parseFile(Object(OC\Files\Node\File))
    #6 /var/www/magicbroccoli.de/nextcloud/apps/previewgenerator/lib/Command/Generate.php(153): OCA\PreviewGenerator\Command\Generate->parseFolder(Object(OC\Files\Node\Folder))
    #7 /var/www/magicbroccoli.de/nextcloud/apps/previewgenerator/lib/Command/Generate.php(142): OCA\PreviewGenerator\Command\Generate->parseFolder(Object(OC\Files\Node\Folder))
    #8 /var/www/magicbroccoli.de/nextcloud/apps/previewgenerator/lib/Command/Generate.php(96): OCA\PreviewGenerator\Command\Generate->generateUserPreviews(Object(OC\User\User))
    #9 /var/www/magicbroccoli.de/nextcloud/lib/private/User/Manager.php(410): OCA\PreviewGenerator\Command\Generate->OCA\PreviewGenerator\Command\{closure}(Object(OC\User\User))
    #10 /var/www/magicbroccoli.de/nextcloud/apps/previewgenerator/lib/Command/Generate.php(97): OC\User\Manager->callForSeenUsers(Object(Closure))
    #11 /var/www/magicbroccoli.de/nextcloud/3rdparty/symfony/console/Command/Command.php(256): OCA\PreviewGenerator\Command\Generate->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #12 /var/www/magicbroccoli.de/nextcloud/3rdparty/symfony/console/Application.php(818): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #13 /var/www/magicbroccoli.de/nextcloud/3rdparty/symfony/console/Application.php(186): Symfony\Component\Console\Application->doRunCommand(Object(OCA\PreviewGenerator\Command\Generate), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #14 /var/www/magicbroccoli.de/nextcloud/3rdparty/symfony/console/Application.php(117): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #15 /var/www/magicbroccoli.de/nextcloud/lib/private/Console/Application.php(169): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #16 /var/www/magicbroccoli.de/nextcloud/console.php(90): OC\Console\Application->run()
    #17 /var/www/magicbroccoli.de/nextcloud/occ(11): require_once('/var/www/magicb...')
    #18 {main}
    

    I am using Nextcloud 11RC1 on a debian mashine with apache2 and php7.0.14 installed.

    opened by mightyBroccoli 46
  • Error: Call to a member function file_get_contents() on null in .../lib/private/Files/Filesystem.php:719

    Error: Call to a member function file_get_contents() on null in .../lib/private/Files/Filesystem.php:719

    Hello Dev, ive encountered an Error which i cant solve on my own. Im using Nextcloud 11.0.2 and php 7.0.8-0ubuntu0.16.04.3 with apache2 as the webserver.

    When i start your tool from my terminal, it runs for a few seconds (no outputs are made to the console so im assuming it does at least something), and then it throws an exception. CPU usage is slightly higher than normal.

    Thanks for your help, and if i can assist you further, feel free to ask!

    Sorry for the missreferences, my log contained hashtags, which function i didnt knew... The stacktrace:

    An unhandled exception has been thrown: Error: Call to a member function file_get_contents() on null in /var/www/mycloud/lib/private/Files/Filesystem.php:719 Stack trace: 0 /var/www/mycloud/lib/private/legacy/image.php(597): OC\Files\Filesystem::file_get_contents('/var/www/myclou...') 1 /var/www/mycloud/lib/private/Preview/MP3.php(80): OC_Image->loadFromFile('/var/www/myclou...') 2 /var/www/mycloud/lib/private/Preview/MP3.php(64): OC\Preview\MP3->getNoCoverThumbnail() 3 /var/www/mycloud/lib/private/Preview/GeneratorHelper.php(54): OC\Preview\MP3->getThumbnail('/files_trashbin...', 256, 256, false, Object(OC\Files\View)) 4 /var/www/mycloud/lib/private/Preview/Generator.php(155): OC\Preview\GeneratorHelper->getThumbnail(Object(OC\Preview\MP3), Object(OC\Files\Node\File), 256, 256) 5 /var/www/mycloud/lib/private/Preview/Generator.php(108): OC\Preview\Generator->getMaxPreview(Object(OC\Files\SimpleFS\SimpleFolder), Object(OC\Files\Node\File), 'audio/mpeg') 6 /var/www/mycloud/lib/private/PreviewManager.php(182): OC\Preview\Generator->getPreview(Object(OC\Files\Node\File), 32, 32, true, 'fill', 'audio/mpeg') 7 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(158): OC\PreviewManager->getPreview(Object(OC\Files\Node\File), 32, 32, true) 8 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(181): OCA\PreviewGenerator\Command\PreGenerate->processFile(Object(OC\Files\Node\File)) 9 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(183): OCA\PreviewGenerator\Command\PreGenerate->processFolder(Object(OC\Files\Node\Folder)) 10 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(183): OCA\PreviewGenerator\Command\PreGenerate->processFolder(Object(OC\Files\Node\Folder)) 11 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(183): OCA\PreviewGenerator\Command\PreGenerate->processFolder(Object(OC\Files\Node\Folder)) 12 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(183): OCA\PreviewGenerator\Command\PreGenerate->processFolder(Object(OC\Files\Node\Folder)) 13 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(183): OCA\PreviewGenerator\Command\PreGenerate->processFolder(Object(OC\Files\Node\Folder)) 14 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(183): OCA\PreviewGenerator\Command\PreGenerate->processFolder(Object(OC\Files\Node\Folder)) 15 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(183): OCA\PreviewGenerator\Command\PreGenerate->processFolder(Object(OC\Files\Node\Folder)) 16 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(150): OCA\PreviewGenerator\Command\PreGenerate->processFolder(Object(OC\Files\Node\Folder)) 17 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(113): OCA\PreviewGenerator\Command\PreGenerate->processRow(Array) 18 /var/www/mycloud/apps/previewgenerator/lib/Command/PreGenerate.php(91): OCA\PreviewGenerator\Command\PreGenerate->startProcessing() 19 /var/www/mycloud/3rdparty/symfony/console/Command/Command.php(256): OCA\PreviewGenerator\Command\PreGenerate->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 20 /var/www/mycloud/3rdparty/symfony/console/Application.php(818): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 21 /var/www/mycloud/3rdparty/symfony/console/Application.php(186): Symfony\Component\Console\Application->doRunCommand(Object(OCA\PreviewGenerator\Command\PreGenerate), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 22 /var/www/mycloud/3rdparty/symfony/console/Application.php(117): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 23 /var/www/mycloud/lib/private/Console/Application.php(169): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 24 /var/www/mycloud/console.php(90): OC\Console\Application->run() 25 /var/www/mycloud/occ(11): require_once('/var/www/myclou...')

    opened by newhinton 30
  • Some images generated with imaginary are incorrect

    Some images generated with imaginary are incorrect

    Some square preview images generated with command $ occ preview:generate-all -vvv are a crop of the original images and the aspect ratio are not preserved. On the other hand, the square preview images generated by web interface of Nextcloud are correctly. They respect the aspect ratios and letterboxed correctly.

    Environment:

    • Nextcloud docker: linuxserver/nextcloud:latest
    • Nextcloud version 24.0.6
    • previewgenerator version 5.1.0
    • imaginary docker: h2non/imaginary:latest
    • Imaginary version 1.2.4
    • host OS: DSM 7.1.1-42962 Update 1
    • hardware: Synology DS-918+

    The content of the config.php:

    <?php
    $CONFIG = array (
      'memcache.local' => '\\OC\\Memcache\\APCu',
      'memcache.distributed' => '\\OC\\Memcache\\Redis',
      'memcache.locking' => '\\OC\\Memcache\\Redis',
      'redis' => 
      array (
        'host' => 'redis',
        'port' => 6379,
        'timeout' => 1.5,
      ),
      'filelocking.enabled' => true,
      'datadirectory' => '/data',
      'instanceid' => '<omitted for security>',
      'passwordsalt' => '<omitted for security>',
      'secret' => '<omitted for security>',
      'trusted_domains' => 
      array (
        0 => '<omitted> for security>',
      ),
      'dbtype' => 'mysql',
      'version' => '24.0.6.1',
      'trusted_proxies' => ['swag'],
      'overwrite.cli.url' => '<omitted for security>',
      'dbname' => 'nextcloud',
      'dbhost' => '10.27.0.40:3306',
      'dbport' => '',
      'dbtableprefix' => 'oc_',
      'mysql.utf8mb4' => true,
      'dbuser' => '<omitted for security>',
      'dbpassword' => '<omitted for security>',
      'installed' => true,
      'app_install_overwrite' => 
      array (
        0 => 'files_excludedirs',
      ),
      'default_phone_region' => 'GB',
      'maintenance' => false,
      'mail_smtpmode' => 'smtp',
      'mail_smtpsecure' => 'ssl',
      'mail_sendmailmode' => 'smtp',
      'mail_smtpauth' => 1,
      'mail_from_address' => 'No.Reply',
      'mail_domain' => '<omitted for security>',
      'mail_smtpauthtype' => 'LOGIN',
      'mail_smtphost' => '<omitted for security>',
      'mail_smtpport' => '465',
      'mail_smtpname' => '<omitted for security>',
      'mail_smtppassword' => '<omitted for security>',
      'preview_max_x' => null,
      'preview_max_y' => null,
      'jpeg_quality' => '60',
      'preview_max_scale_factor' => 1,
      'enabledPreviewProviders' => [
        'OC\Preview\MP3',
        'OC\Preview\TXT',
        'OC\Preview\MarkDown',
        'OC\Preview\OpenDocument',
        'OC\Preview\Krita',
        'OC\Preview\Imaginary',
      ],
      'preview_imaginary_url' => 'http://imaginary:9000',
    );
    

    The previewgenerator settings:

    $ php /config/www/nextcloud/occ config:app:get previewgenerator squareSizes
    64 256 1024
    $ php /config/www/nextcloud/occ config:app:get previewgenerator widthSizes
    64 256 1024
    $ php /config/www/nextcloud/occ config:app:get previewgenerator heightSizes
    64 256 1024
    

    A sample of an original image: 200042733-9284683a-bf54-4180-b0e4-63faba51b630

    The preview generated for both grid view and detailed view on the Files pane. 200042792-55a96c2c-3ce2-4390-b3f3-6d4aa512268d

    Another example of an original image: 200041760-34ad1f18-4f18-42bc-8549-486b11ad6d82

    The preview generated for both grid view and detailed view on the Files pane. 200042005-39e74c9b-b6ce-4833-a9f8-e82b23ada8c3

    bug 3. to review 
    opened by janusn 28
  •  Create preview problem

    Create preview problem "No create permission for folder"

    Hello, when running whit www user : php occ preview:pre-generate the app's stop and the error is :

    2018-07-17T21:18:26+00:00 2018-07-17T21:18:26+00:00 [OCP\Files\NotPermittedException] 2018-07-17T21:18:26+00:00 No create permission for folder 2018-07-17T21:18:26+00:00 2018-07-17T21:18:26+00:00

    System is UCS with NC13.04 using

    AD integration with Windows Server 2012R2 I have test, modify the permission to the folder to 777, and not resolve the problem,

    Thanks for the read,

    opened by WikiIUT 28
  • Previews going to appdata folder and not being used

    Previews going to appdata folder and not being used

    Command runs fine and builds a large cache of previews in the appdata_xxxx/preview folder, but none of these files appear to be used by nextcloud, and the gallery app makes on-demand previews in the user/thumbnails folder instead of using the previews generated by this app. Have I configured something incorrectly?

    opened by benqrn 19
  • High memory usage

    High memory usage

    I'm trying to generate previews for 3.3TB of data. I ran ./occ preview:generate-all -vvv and this process is using a lot of RAM, and eventually exits by its own.

    C

    NextCloud is running in a container using the official Docker image.

    What should I do to complete the process and generate all previews ?

    opened by Zegorax 16
  • Skip external mounts with disabled previews

    Skip external mounts with disabled previews

    For external storage mounts one can disable previews: setting

    This change respects this setting and skips folders with disabled previews:

    2020-05-04T15:52:15+00:00 Scanning folder /hashworks/files
    2020-05-04T15:52:15+00:00 Skipping folder /hashworks/files/NoMedia
    2020-05-04T15:52:15+00:00 Scanning folder /hashworks/files/Photos
    [...]
    2020-05-04T15:52:15+00:00 Skipping folder /hashworks/files/GDrive
    

    Resolves #151.

    opened by hashworks 15
  • occ preview:pre-generate don't stop after hours of execution

    occ preview:pre-generate don't stop after hours of execution

    Hi,

    after 2 days that the process runs for hours, I have start the command with verbose flag: occ preview:pre-generate --force -vvv it don't stop and seems analyze continuously and circularly all the images.

    opened by vpistis 15
  • Memory leak or 16GB not enough?  PHP Fatal error: Allowed memory size of X bytes exhausted

    Memory leak or 16GB not enough? PHP Fatal error: Allowed memory size of X bytes exhausted

    I am not sure if it is a memory leak, but it really looks like. I have php.ini set to 16GB and still can not make generate-all finishes.I have about 32k pictures in my nextcloud folder, when I run preview:generate-all I can see the memory use increasing until it crashes, it looks like it is not releasing memory after procesing each image. So all images are in memory until it crashes.

    Using version 2.3.0 inside docker container.

    opened by jsalatiel 13
  • Too many arguments (occ)

    Too many arguments (occ)

    When running occ config:app:set --value="32 64 1024" previewgenerator squareSizes i get error Too many arguments When i try to run it with only one value eg occ config:app:set --value="32" previewgenerator squareSizes It works.

    occ config:app:set previewgenerator widthSizes  --value="256 384"
    
                                                                      
      Too many arguments, expected arguments "command" "app" "name".  
                                                                      
    
    config:app:set [--output [OUTPUT]] [--value VALUE] [--update-only] [--] <app> <name>
    

    Running Preview Generator 3.0.1 Nextcloud 20.0.3

    opened by stavros-k 11
  • Include external storage?

    Include external storage?

    According to the desciption

    Listen to events that a file has been writen or modified and store it in the database

    an tests with my NextCloud installation it seems, that preview:generate-all does not include external storage. Is that right?

    If so: It would be a nice feature for future versions, to generate previews for external storage content (e.g. with an additional trigger like ./occ preview:generate-all [include-external]). I've added my photo collection to my NextCloud (runnig on a Raspberry PI 3) via SMB...and the on-demand generation speed of the thumbnail pics is not really satisfying...

    Thanks a lot in advance!

    opened by wwwindisch 11
  • With previewgenerator cron job aborted

    With previewgenerator cron job aborted "Call to a member function getUID()"

    Hello,

    if the previewgenerator is activated, my cron won't run anymore...

    root@cloud:/home/administrator# sudo -u www-data php -f /var/www/nextcloud/cron.php Error: Call to a member function getUID() on null in /var/www/nextcloud/apps/maps/lib/Service/PhotofilesService.php:154 Stack trace: #0 /var/www/nextcloud/apps/maps/lib/BackgroundJob/UpdatePhotoByFileJob.php(56): OCA\Maps\Service\PhotofilesService->updateByFileNow() #1 /var/www/nextcloud/lib/public/BackgroundJob/Job.php(78): OCA\Maps\BackgroundJob\UpdatePhotoByFileJob->run() #2 /var/www/nextcloud/lib/public/BackgroundJob/QueuedJob.php(58): OCP\BackgroundJob\Job->start() #3 /var/www/nextcloud/lib/public/BackgroundJob/QueuedJob.php(48): OCP\BackgroundJob\QueuedJob->start() #4 /var/www/nextcloud/cron.php(152): OCP\BackgroundJob\QueuedJob->execute() #5 {main}

    after disabling again everything is fine.

    opened by NobodyO815 1
  • using tempdirectory from config/config.php

    using tempdirectory from config/config.php

    The app does not use the temporary directory defined in the config/config.php nor the one defined in php.ini under 'sys_temp_dir'. My normal /tmp dir is tmpfs and limited in space. The result after a occ preview:generate-all was a server down after the tmp directory was full, until I debugged the problem.

    Edit: I would actually expect the temp files to be removed by the app as soon as they have done their job.

    bug 0. to triage needs info 
    opened by ernolf 2
  • pre-generate only ever returns

    pre-generate only ever returns "Command is already running."

    I'm running Nextcloud 25 in a Kubernetes cluster. This is all running fine and has been for over a year. I ran previewgenerator some time ago. However, I've just noticed that running ./occ preview:pre-generate only ever returns "Command is already running."

    I've tried to restart the containers, redeploy them, disable and re-enable previewgenerator all to no avail. Is there some way to force the pre-generate? I've tried to read the code to see if I can delete something. However, I'm not very familiar with how Nextcloud extensions work.

    bug 0. to triage 
    opened by FrankelJb 2
  • Previews are generated but not shown

    Previews are generated but not shown

    Hi,

    I generated all previews (with the inital command):

    sudo -u www-data php /var/www/nextcloud/occ preview:generate-all -vvv

    And they are done:

    2022-11-21T10:38:55+00:00 Scanning folder /Dennis/files/Photos/2022/11 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221101_120324.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221101_132818.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221101_132830.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221101_135123.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221102_161841.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221106_124829.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221106_132902.mp4 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221113_121812.mp4 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221113_122010.mp4 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221113_122025.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221113_173338.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221114_141021.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221114_141031.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/20221119_085407.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/IMG_20221106_111026.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/2022/11/IMG_20221106_111028.jpg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Photos/Readme.md 2022-11-21T10:38:55+00:00 Scanning folder /Dennis/files/Talk 2022-11-21T10:38:55+00:00 Scanning folder /Dennis/files/Vorlagen 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Business model canvas.odg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Diagram & table.ods 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Elegant.odp 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Expense report.ods 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Flowchart.odg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Invoice.odt 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Letter.odt 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Meeting notes.md 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Mindmap.odg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Org chart.odg 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Product plan.md 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Readme.md 2022-11-21T10:38:55+00:00 Generating previews for /Dennis/files/Vorlagen/Simple.odp

    My config:

    'preview_libreoffice_path' => '/usr/bin/libreoffice', 'enable_previews' => true, 'enabledPreviewProviders' => array ( 0 => 'OC\\Preview\\TXT', 1 => 'OC\\Preview\\MarkDown', 2 => 'OC\\Preview\\OpenDocument', 3 => 'OC\\Preview\\PDF', 4 => 'OC\\Preview\\MSOffice2003', 5 => 'OC\\Preview\\MSOfficeDoc', 6 => 'OC\\Preview\\Image', 7 => 'OC\\Preview\\Photoshop', 8 => 'OC\\Preview\\TIFF', 9 => 'OC\\Preview\\SVG', 10 => 'OC\\Preview\\Font', 11 => 'OC\\Preview\\MP3', 12 => 'OC\\Preview\\Movie', 13 => 'OC\\Preview\\MKV', 14 => 'OC\\Preview\\MP4', 15 => 'OC\\Preview\\AVI', ),

    Still it does not show preview pictures for Videos when I browser the media. Did I forget a configuration?

    Thanks, Dennis

    opened by guruguruguru 1
  • 500 Internal Server Error

    500 Internal Server Error

    I don't know who to blame, but the previewgenerator produces 500 Internal Server Error when trying to generate previews for docs, pdf etc. All what's thrown against the office setup of the nextcloud. In my case, onlyoffice with it's built-in documentserver.

    • Nextcloud 25.0.1
    • documentserver_community: 0.1.13
    • previewgenerator: 5.1.1
    • onlyoffice: 7.6.8

    Server Log

    {
      "level": "error",
      "ts": 1668425667.9303558,
      "logger": "http.log.access.log0",
      "msg": "handled request",
      "request": {
        "remote_ip": "127.0.0.1",
        "remote_port": "48882",
        "proto": "HTTP/1.1",
        "method": "POST",
        "host": "nextcloud.tld",
        "uri": "/apps/documentserver_community/ConvertService.ashx",
        "headers": {
          "Content-Type": [
            "application/json"
          ],
          "User-Agent": [
            "Nextcloud Server Crawler"
          ],
          "Accept-Encoding": [
            "gzip"
          ],
          "Content-Length": [
            "314"
          ]
        },
        "tls": {
          "resumed": false,
          "version": 772,
          "cipher_suite": 4865,
          "proto": "http/1.1",
          "server_name": "nextcloud.tld"
        }
      },
      "user_id": "",
      "duration": 0.988457621,
      "size": 1313,
      "status": 500,
      "resp_headers": {
        "X-Robots-Tag": [
          "none"
        ],
        "Cache-Control": [
          "no-store, no-cache, must-revalidate"
        ],
        "Referrer-Policy": [
          "no-referrer"
        ],
        "X-Content-Type-Options": [
          "nosniff"
        ],
        "Content-Encoding": [
          "gzip"
        ],
        "Vary": [
          "Accept-Encoding"
        ],
        "Content-Security-Policy": [
          "default-src 'self'; script-src 'self' 'nonce-blhVK2dBcG1CR3QyUitrU1RSRmdER1lmcdQUdVWkl6OWp4MkQwMFpyQUVasD06OGc5VTF6bE5VeU1FRjZNbUtYHWJAdlVDk3V2k1cmV3Y0F0aUtTaHRPS2FRWT0='; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src *; object-src 'none'; base-uri 'self';"
        ],
        "Set-Cookie": [],
        "X-Xss-Protection": [
          "1; mode=block"
        ],
        "Pragma": [
          "no-cache"
        ],
        "Content-Type": [
          "text/html; charset=UTF-8"
        ],
        "X-Permitted-Cross-Domain-Policies": [
          "none"
        ],
        "Expires": [
          "Thu, 19 Nov 1981 08:52:00 GMT"
        ],
        "Server": [
          "Caddy"
        ],
        "Alt-Svc": [
          "h3=\":443\"; ma=2592000"
        ],
        "Strict-Transport-Security": [
          "max-age=31536000;"
        ],
        "Status": [
          "500 Internal Server Error"
        ],
        "X-Frame-Options": [
          "SAMEORIGIN"
        ]
      }
    }
    
    

    Nextcloud Log

    [index] Error: OCA\DocumentServer\Document\DocumentConversionException: Segmentation fault (core dumped)
     at <<closure>>
    
     0. /var/www/nextcloud/apps/documentserver_community/lib/DocumentConverter.php line 125
        OCA\DocumentServer\Document\ConverterBinary->run()
     1. /var/www/nextcloud/apps/documentserver_community/lib/DocumentConverter.php line 113
        OCA\DocumentServer\DocumentConverter->runCommand()
     2. /var/www/nextcloud/apps/documentserver_community/lib/DocumentConverter.php line 49
        OCA\DocumentServer\DocumentConverter->convertFiles()
     3. /var/www/nextcloud/apps/documentserver_community/lib/Document/DocumentStore.php line 98
        OCA\DocumentServer\DocumentConverter->getEditorBinary()
     4. /var/www/nextcloud/apps/documentserver_community/lib/LocalAppData.php line 102
        OCA\DocumentServer\Document\DocumentStore->OCA\DocumentServer\Document\{closure}("*** sensitive parameters replaced ***")
     5. /var/www/nextcloud/apps/documentserver_community/lib/Document/DocumentStore.php line 99
        OCA\DocumentServer\LocalAppData->getReadWriteLocalPath()
     6. /var/www/nextcloud/apps/documentserver_community/lib/Controller/ConvertController.php line 59
        OCA\DocumentServer\Document\DocumentStore->getDocumentForEditor()
     7. /var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php line 225
        OCA\DocumentServer\Controller\ConvertController->convert()
     8. /var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php line 133
        OC\AppFramework\Http\Dispatcher->executeController()
     9. /var/www/nextcloud/lib/private/AppFramework/App.php line 172
        OC\AppFramework\Http\Dispatcher->dispatch()
    10. /var/www/nextcloud/lib/private/Route/Router.php line 298
        OC\AppFramework\App::main()
    11. /var/www/nextcloud/lib/base.php line 1047
        OC\Route\Router->match()
    12. /var/www/nextcloud/index.php line 36
        OC::handleRequest()
    
    POST /apps/documentserver_community/ConvertService.ashx
    from 127.0.0.1 at 2022-11-14T11:34:26+00:00
    
    [onlyoffice] Error: GuzzleHttp\Exception\ServerException: Server error: `POST https://nextcloud.tld/apps/documentserver_community/ConvertService.ashx` resulted in a `500 Internal Server Error` response:
    <!DOCTYPE html>
    <html class="ng-csp" data-placeholder-focus="false" lang="en" data-locale="en" >
    	<head
     data-requesttok (truncated...)
     at <<closure>>
    
     0. /var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php line 69
        GuzzleHttp\Exception\RequestException::create()
     1. /var/www/nextcloud/3rdparty/guzzlehttp/promises/src/Promise.php line 204
        GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***")
     2. /var/www/nextcloud/3rdparty/guzzlehttp/promises/src/Promise.php line 153
        GuzzleHttp\Promise\Promise::callHandler()
     3. /var/www/nextcloud/3rdparty/guzzlehttp/promises/src/TaskQueue.php line 48
        GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}("*** sensitive parameters replaced ***")
     4. /var/www/nextcloud/3rdparty/guzzlehttp/promises/src/Promise.php line 248
        GuzzleHttp\Promise\TaskQueue->run()
     5. /var/www/nextcloud/3rdparty/guzzlehttp/promises/src/Promise.php line 224
        GuzzleHttp\Promise\Promise->invokeWaitFn()
     6. /var/www/nextcloud/3rdparty/guzzlehttp/promises/src/Promise.php line 269
        GuzzleHttp\Promise\Promise->waitIfPending()
     7. /var/www/nextcloud/3rdparty/guzzlehttp/promises/src/Promise.php line 226
        GuzzleHttp\Promise\Promise->invokeWaitList()
     8. /var/www/nextcloud/3rdparty/guzzlehttp/promises/src/Promise.php line 62
        GuzzleHttp\Promise\Promise->waitIfPending()
     9. /var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php line 187
        GuzzleHttp\Promise\Promise->wait()
    10. /var/www/nextcloud/lib/private/Http/Client/Client.php line 289
        GuzzleHttp\Client->request()
    11. /var/www/nextcloud/apps/onlyoffice/lib/documentservice.php line 372
        OC\Http\Client\Client->post()
    12. /var/www/nextcloud/apps/onlyoffice/lib/documentservice.php line 177
        OCA\Onlyoffice\DocumentService->Request()
    13. /var/www/nextcloud/apps/onlyoffice/lib/documentservice.php line 91
        OCA\Onlyoffice\DocumentService->SendRequestToConvertService()
    14. /var/www/nextcloud/apps/onlyoffice/lib/preview.php line 269
        OCA\Onlyoffice\DocumentService->GetConvertedUri()
    15. /var/www/nextcloud/lib/private/Preview/ProviderV1Adapter.php line 53
        OCA\Onlyoffice\Preview->getThumbnail()
    16. /var/www/nextcloud/lib/private/Preview/GeneratorHelper.php line 65
        OC\Preview\ProviderV1Adapter->getThumbnail()
    17. /var/www/nextcloud/lib/private/Preview/Generator.php line 343
        OC\Preview\GeneratorHelper->getThumbnail()
    18. /var/www/nextcloud/lib/private/Preview/Generator.php line 162
        OC\Preview\Generator->getMaxPreview()
    19. /var/www/nextcloud/lib/private/PreviewManager.php line 200
        OC\Preview\Generator->generatePreviews()
    20. /var/www/nextcloud/apps/previewgenerator/lib/Command/Generate.php line 234
        OC\PreviewManager->generatePreviews()
    21. /var/www/nextcloud/apps/previewgenerator/lib/Command/Generate.php line 216
        OCA\PreviewGenerator\Command\Generate->parseFile()
    22. /var/www/nextcloud/apps/previewgenerator/lib/Command/Generate.php line 214
        OCA\PreviewGenerator\Command\Generate->parseFolder()
    23. /var/www/nextcloud/apps/previewgenerator/lib/Command/Generate.php line 214
        OCA\PreviewGenerator\Command\Generate->parseFolder()
    24. /var/www/nextcloud/apps/previewgenerator/lib/Command/Generate.php line 194
        OCA\PreviewGenerator\Command\Generate->parseFolder()
    25. /var/www/nextcloud/apps/previewgenerator/lib/Command/Generate.php line 146
        OCA\PreviewGenerator\Command\Generate->generateUserPreviews()
    26. /var/www/nextcloud/3rdparty/symfony/console/Command/Command.php line 255
        OCA\PreviewGenerator\Command\Generate->execute()
    27. /var/www/nextcloud/3rdparty/symfony/console/Application.php line 1009
        Symfony\Component\Console\Command\Command->run()
    28. /var/www/nextcloud/3rdparty/symfony/console/Application.php line 273
        Symfony\Component\Console\Application->doRunCommand()
    29. /var/www/nextcloud/3rdparty/symfony/console/Application.php line 149
        Symfony\Component\Console\Application->doRun()
    30. /var/www/nextcloud/lib/private/Console/Application.php line 213
        Symfony\Component\Console\Application->run()
    31. /var/www/nextcloud/console.php line 100
        OC\Console\Application->run()
    32. /var/www/nextcloud/occ line 11
        require_once("/var/www/nextcloud/console.php")
    
    at 2022-11-14T11:34:24+00:00
    
    wontfix 
    opened by markuman 1
  • DB Driver not found exception

    DB Driver not found exception

    Hello. I had an exception when executed the command: sudo -u www-data php /var/www/nextcloud/occ preview:generate-all -vvv Could you please advice me where the problem could be? NextCloud itself works normally, no strange errors in the logs were found.

    Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/nextcloud/lib/private/DB/Connection.php:139 Stack trace: #0 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1519): OC\DB\Connection->connect() #1 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1041): Doctrine\DBAL\Connection->getWrappedConnection() #2 /var/www/nextcloud/lib/private/DB/Connection.php(261): Doctrine\DBAL\Connection->executeQuery() #3 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(345): OC\DB\Connection->executeQuery() #4 /var/www/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(281): Doctrine\DBAL\Query\QueryBuilder->execute() #5 /var/www/nextcloud/lib/private/AppConfig.php(411): OC\DB\QueryBuilder\QueryBuilder->execute() #6 /var/www/nextcloud/lib/private/AppConfig.php(176): OC\AppConfig->loadConfigValues() #7 /var/www/nextcloud/lib/private/AppConfig.php(367): OC\AppConfig->getApps() #8 /var/www/nextcloud/lib/private/legacy/OC_App.php(983): OC\AppConfig->getValues() #9 /var/www/nextcloud/lib/private/Server.php(713): OC_App::getAppVersions() #10 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\Server->OC{closure}() #11 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility{closure}() #12 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet() #13 /var/www/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query() #14 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query() #15 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(184): OC\AppFramework\Utility\SimpleContainer->get() #16 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility{closure}() #17 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility{closure}() #18 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet() #19 /var/www/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query() #20 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query() #21 /var/www/nextcloud/lib/private/Server.php(1105): OC\AppFramework\Utility\SimpleContainer->get() #22 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\Server->OC{closure}() #23 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility{closure}() #24 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet() #25 /var/www/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query() #26 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query() #27 /var/www/nextcloud/lib/private/Server.php(2082): OC\AppFramework\Utility\SimpleContainer->get() #28 /var/www/nextcloud/lib/private/Files/View.php(122): OC\Server->getLockingProvider() #29 /var/www/nextcloud/lib/private/Server.php(454): OC\Files\View->__construct() #30 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\Server->OC{closure}() #31 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility{closure}() #32 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet() #33 /var/www/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query() #34 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query() #35 /var/www/nextcloud/lib/private/Server.php(1445): OC\AppFramework\Utility\SimpleContainer->get() #36 /var/www/nextcloud/lib/base.php(602): OC\Server->boot() #37 /var/www/nextcloud/lib/base.php(1104): OC::init() #38 /var/www/nextcloud/console.php(48): require_once('...') #39 /var/www/nextcloud/occ(11): require_once('...')

    question pending close 
    opened by sanglyb 1
Owner
Nextcloud
๐Ÿ“ฑโ˜๏ธ๐Ÿ’ป A safe home for all your data โ€“ community-driven, free & open source ๐Ÿ‘
Nextcloud
Arc admin comment preview - Simple Textpattern plugin that adds a comment preview to admin

arc_admin_comment_preview This is a Textpattern plugin for adding comment previews to the admin comment edit pages. Requirements Textpattern 4.0.8+ In

Andy Carter 1 Jan 20, 2017
Magento 2 Preview/Visit Catalog allows the store owner to quickly preview the catalog (product & category) pages from the admin panel.

Magento 2 Preview/Visit Catalog Overview Magento 2 Preview/Visit Catalog allows the store owner to quickly preview the catalog (product & category) pa

Raj KB 4 Sep 27, 2022
๐Ÿ”– Bookmark app for Nextcloud

Nextcloud Bookmarks Bookmarks app for Nextcloud This app provides you with a web interface for collecting and organizing bookmarks to the places on th

Nextcloud 803 Jan 8, 2023
๐Ÿ“ท Yet another photo management app for Nextcloud

Memories ?? Yet another photo management app for Nextcloud How is this different? ?? Photo and Video Timeline: Sorts photos by date taken, parsed from

Varun Patil 322 Jan 8, 2023
Nextcloud-App to add groups with AppDirect

App Direct Place this app in nextcloud/apps/ Building the app The app can be built by using the provided Makefile by running: make This requires the

Tim Vosskรผhler 3 Dec 2, 2022
Quickly and easily preview and test your Magento 2 order confirmation page, without hacks or spending time placing new order each time

Preview Order Confirmation Page for Magento 2 For Magento 2.0.x, 2.1.x, 2.2.x and 2.3.x Styling and testing Magento's order confirmation page can be a

MagePal :: Magento Extensions 71 Aug 12, 2022
File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery

File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.

Sebastian Tschan 31.1k Dec 30, 2022
Full-screen page preview modal for Filament

Peek A Filament plugin that adds a full-screen preview modal to your Edit pages. The modal can be used before saving to preview a modified record. Ins

Patrick Boivin 18 Jun 11, 2023
Resources back-end for the Nextcloud CalDAV server

Calendar Resource Management This app enables the ??๏ธ Calendar App to work with resources and rooms Installation Place this app in nextcloud/apps/ You

Nextcloud 35 Nov 8, 2022
A plugin to make Nextcloud compatible with Solid

solid-nextcloud A plugin to make Nextcloud compatible with Solid.

PDS Interop 54 Jan 2, 2023
โ†ช๏ธ๐Ÿ”” Send notification action for Nextcloud Flow

Nextcloud Flow Notifications ?? Notification action for Nextcloud Flow ?? Configure your flow ?? Receive notifications ?? Development setup โ˜ Clone th

Nextcloud 13 Dec 2, 2022
A next-generation package manager for the front-end

Duo is a next-generation package manager that blends the best ideas from Component, Browserify and Go to make organizing and writing front-end code qu

Duo 3.4k Dec 28, 2022
FUGIO: Automatic Exploit Generation for PHP Object Injection Vulnerabilities

FUGIO FUGIO is the first automatic exploit generation (AEG) tool for PHP object injection (POI) vulnerabilities. When exploiting a POI vulnerability,

KAIST Web Security and Privacy Lab 53 Dec 23, 2022
A PHP sitemap generation tool.

Cartographer A sitemap generation tool for PHP following the Sitemap Protocol v0.9. Cartographer can handle Sitemaps of any size. When generating site

Tackk Inc. 332 Dec 23, 2022
Behat Transliterator library inherited from Doctrine1 and used in Behat for snippet generation

Behat Transliterator Behat Transliterator provides transliteration utilities for PHP. Transliteration data are ported from the Perl Text-Unidecode mod

Behat 2k Dec 22, 2022
Next-generation front-end for Magento 2

The next-generation front-end for Magento 2. Fast. Reliable. Extensible. Getting started โ€“ create a new application and deploy it as Magento 2 theme o

ScandiPWA 509 Jan 2, 2023
Next generation airdrop tooling. try me!

Supporting Airdrop Task Solver Singkatnya, project ini terinspirasi oleh Viloid, tapi ini jauh lebih kompleks. Airdrop Task Solver adalah Aplikasi ber

Yuza 25 Jul 31, 2022
A collection of command line scripts for Magento 2 code generation, and a PHP module system for organizing command line scripts.

What is Pestle? Pestle is A PHP Framework for creating and organizing command line programs An experiment in implementing python style module imports

Alan Storm 526 Dec 5, 2022
Blacksmith is a code generation tool which automates the creation of common files that you'd typically create for each entity in your application.

Blacksmith is a code generation tool which automates the creation of common files that you'd typically create for each entity in your application.

Indatus 197 Dec 30, 2022