Code Monkey home page Code Monkey logo

lychee's People

Contributors

alcatr4zz avatar aldjordje avatar alex-phillips avatar bennettscience avatar chostakovitch avatar d7415 avatar dependabot[bot] avatar evoludolab avatar gpotter2 avatar hermzz avatar horlogeskynet avatar ildyria avatar joebordes avatar jprokop1 avatar kamil4 avatar mingan666 avatar nagmat84 avatar nicokaiser avatar pchampio avatar qwerty287 avatar r7l avatar serenabutler avatar sjml avatar timo-reymann avatar tinohager avatar tmp-hallenser avatar ttys3 avatar wladif avatar yoshinorin avatar yuorfaec avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lychee's Issues

Picture ordering in albums

It would be nice if that setting can be adjusted per album instead of just server wide.
A default system like for licences would be convenient.

Use case: we might want some albums ordered by take date, others by title...

Additionally adding the possibility to reorder manually the pictures inside an album would be a nice addition. Something similar was already implemented in an old version of Lychee (after the fork but on the original repo). To manually reorder some pictures a lock key would be convenient to prevent users from moving pictures from A to B without wanting it.

Sub folder display

It would be nice to see at first glance if a folder contains subfolders.

Any idea of a visual for that ? I am not in favor of yet another ribon (like star etc).
Though a small folder discreet icon on the top right might do the trick. Other Ideas ?

Laravel Debug Bar

I tried to include the laravel debugbar (https://github.com/barryvdh/laravel-debugbar) to lychee. It seems to work, so javascript is loaded in the returned source code, but the div containers in html are missing. So it looks like they are not attached to the view, does anyone else succesfully added the debugbar to lychee? Or any idea what is missing here?

I did the composer require and a lot of cache cleanings and also added debugbar manually as provider, but none of it works.

Update wiki pages for v4

Need to update:

  • Update instructions
  • FAQ
  • Server settings/permissions
  • New features (subalbums, multiuser)

uncorrect thumbURL name on video upload

The videos import nicely, but i can't delete any of these, due to a false thumbURL in database...
see my screen capture below, the name file doesn't have a dot before jpeg extension !

thumbname

the problem affects only videos, not photos

DB structure not compatible with sqlite

I came here from #46 and wanted to test out this version with sqlite. Unfortunately, it seems like one of the database migration is not sqlite-compatible. Here are the logs

Migrating: 2018_11_09_144227_nullable_field_photo

   Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1 Cannot add a NOT NULL column with default value NULL (SQL: alter table "photos" add column "type_temp" varchar not null)

  at /var/www/Programs/personal/lychee/Lychee-Laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   Doctrine\DBAL\Driver\PDOException::("SQLSTATE[HY000]: General error: 1 Cannot add a NOT NULL column with default value NULL")
      /var/www/Programs/personal/lychee/Lychee-Laravel/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:82

  2   PDOException::("SQLSTATE[HY000]: General error: 1 Cannot add a NOT NULL column with default value NULL")
      /var/www/Programs/personal/lychee/Lychee-Laravel/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:80

  Please use the argument -v to see more details.

Make Starred Album Public?

How can I make the Starred album public? I can make all my starred photos public, but the starred album still isn't public

Can't get video thumbs

Hi

Everything works well in my install but I can't get php-ffmpeg installed correctly :

composer require php-ffmpeg/php-ffmpeg
You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
Do not run ComposUsing version ^0.13.0 for php-ffmpeg/php-ffmpeg
./composer.json has been updated
Loading composer repositories with package infoUpdating dependencies (including require-dev)         Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: barryvdh/laravel-debugbar
Discovered Package: bepsvpt/secure-headers
Discovered Package: fideloper/proxy
Discovered Package: laravel/nexmo-notification-channel
Discovered Package: laravel/slack-notification-channel
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: pbmedia/laravel-ffmpeg
Package manifest generated successfully.

I guess it should appear in discovered, but it isn't, any idea ?

Table 'lychee.user_album' doesn't exist

Hi!

I'm trying to do a clean install using PHP 7.2.13. When doing ./artisan migrate, the database is populated and everything seems to work fine. I can set up the administrative account and add a new user. When logging in with the new user, however, I get an error which is listed below.

I'm not sure what's wrong here. Maybe the table was forgotten to be created on migration?

I would be pleased if someone could help me with this one because Lychee seems to be awesome!

Again, here are the key facts:

  • installation succeeded without errors so far
  • administrative account set up without problems
  • trying to login with another used yields an error (Firefox tells me it happens when requesting /api/Albums::get)
[2019-02-02 16:23:37] production.ERROR: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lychee.user_album' doesn't exist (SQL: select * from `albums` where `owner_id` <> 1 and `parent_id` is null and (`id` in (select `album_id` from `user_album` where `user_id` = 1) or (`public` = 1 and `visible_hidden` = 1)) order by `owner_id` asc, `description` desc) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 42S02): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lychee.user_album' doesn't exist (SQL: select * from `albums` where `owner_id` <> 1 and `parent_id` is null and (`id` in (select `album_id` from `user_album` where `user_id` = 1) or (`public` = 1 and `visible_hidden` = 1)) order by `owner_id` asc, `description` desc) at /var/www/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664, Doctrine\\DBAL\\Driver\\PDOException(code: 42S02): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lychee.user_album' doesn't exist at /var/www/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:63, PDOException(code: 42S02): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lychee.user_album' doesn't exist at /var/www/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:61)
[stacktrace]
#0 /var/www/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(624): Illuminate\\Database\\Connection->runQueryCallback('select * from `...', Array, Object(Closure))
#1 /var/www/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(333): Illuminate\\Database\\Connection->run('select * from `...', Array, Object(Closure))
#2 /var/www/app/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2082): Illuminate\\Database\\Connection->select('select * from `...', Array, true)
#3 /var/www/app/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2070): Illuminate\\Database\\Query\\Builder->runSelect()
#4 /var/www/app/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2556): Illuminate\\Database\\Query\\Builder->Illuminate\\Database\\Query\\{closure}()
#5 /var/www/app/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2071): Illuminate\\Database\\Query\\Builder->onceWithColumns(Array, Object(Closure))
#6 /var/www/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(516): Illuminate\\Database\\Query\\Builder->get(Array)
#7 /var/www/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(500): Illuminate\\Database\\Eloquent\\Builder->getModels(Array)
#8 /var/www/app/app/Album.php(206): Illuminate\\Database\\Eloquent\\Builder->get()
#9 /var/www/app/app/Http/Controllers/AlbumsController.php(65): App\\Album::get_albums_user(1)
#10 [internal function]: App\\Http\\Controllers\\AlbumsController->get(Object(Illuminate\\Http\\Request))
#11 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array)
#12 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('get', Array)
#13 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\AlbumsController), 'get')
#14 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(169): Illuminate\\Routing\\Route->runController()
#15 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(682): Illuminate\\Routing\\Route->run()
#16 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#17 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#18 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#19 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#20 /var/www/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(75): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#21 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#22 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#23 /var/www/app/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php(39): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#24 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Session\\Middleware\\AuthenticateSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#25 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#26 /var/www/app/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#27 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#28 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#29 /var/www/app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#30 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#31 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#32 /var/www/app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#33 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#34 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#35 /var/www/app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#36 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#37 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#38 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#39 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(684): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#40 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(659): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#41 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#42 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(614): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#43 /var/www/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#44 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#45 /var/www/app/vendor/bepsvpt/secure-headers/src/SecureHeadersMiddleware.php(21): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#46 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Bepsvpt\\SecureHeaders\\SecureHeadersMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#47 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#48 /var/www/app/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#49 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#50 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#51 /var/www/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(31): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#52 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#53 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#54 /var/www/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(31): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#55 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#56 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#57 /var/www/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#58 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#59 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#60 /var/www/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(62): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#61 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#62 /var/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#63 /var/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#64 /var/www/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#65 /var/www/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#66 /var/www/app/public/index.php(55): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#67 {main}

404 on php/index.php after fresh install

Detailed description of the problem

Getting a "Server error or API not found." after fresh installation. Reason seems to be a missing index.php file in (also missing) php folder (see screenshot)

lychee_404_error

Steps to reproduce the issue

  • Used this manual to install on server: https://github.com/LycheeOrg/Lychee-Laravel/wiki/Install
  • Everything worked out, DB is set up, no errors.
  • Set public folder to web root.
  • Called website, got 404 when trying to call /php/index.php + "Server error or API not found." (see screenshot)
  • php folder is not present in public folder (should it be?)

Browser and system

server runs with nginx 1.14.1, php 7.1.24, php-fpm

Could this be a problem with the missing .htaccess on nginx? What I tried here is to convert the rewrite rules to nginx config as follows (without success):

location / {
        if (!-e $request_filename){
                rewrite ^(.*)$ /%1 redirect;
        }
        if (!-e $request_filename){
                rewrite ^(.*)$ /index.php break;
        }
    }

Possibility to disable "full-photo" for public

I just setup Lychee-Laravel and so far it seems to work pretty well. I have been playing around with it and realized that its a bit weird that public users can see/download a picture in full size/quality. Is it possible to disable this altogether, maybe via a flag or a configuration somewhere?

Division by zero error on upload

I get this error when uploading some of my pictures. I think it may have to do with GPS coordinates being set to zero by my Camera(?)

↵ (1/1)↵ ErrorException↵↵Division by zero↵
--
in Extractor.php line 230
at HandleExceptions->handleError(2, 'Division by zero', '/var/www/xxxxx/subdomains/xxxxx/html/app/Metadata/Extractor.php', 230, array('rational' => '0/0', 'parts' => array('0', '0')))in Extractor.php line 230
at Extractor->formattedToFloatGPS('0/0')in Extractor.php line 245
at Extractor->getGPSAltitude('0/0', '' . "\0" . '')in Extractor.php line 184
at Extractor->extract('/var/www/xxxxx/subdomains/xxxxxx/html/public/uploads/big/322d2c5b0f8cde11f65652ed8d667ae2.JPG')in PhotoFunctions.php line 321
at PhotoFunctions->add(array('name' => 'DSCN2411.JPG', 'type' => 'image/jpeg', 'tmp_name' => '/tmp/phpMZ7iI4'), '15496269639362')in PhotoController.php line 128
at PhotoController->add(object(Request))
at call_user_func_array(array(object(PhotoController), 'add'), array(object(Request)))in Controller.php line 54
at Controller->callAction('add', array(object(Request)))in ControllerDispatcher.php line 45
at ControllerDispatcher->dispatch(object(Route), object(PhotoController), 'add')in Route.php line 212
at Route->runController()in Route.php line 169
at Route->run()in Router.php line 682

How to install ?

It would be nice if we document the following processes:

  • installing Lychee-Laravel
  • migrating from Lychee to Lychee-Laravel

Cannot create new album on clean install

After a clean install of Lychee-Laravel and migrating the DB (MariaDB), Lychee fails to create a new album, when selected in the UI, because there is a foreign key in the albums table migration with 'parent_id', that must not be empty...

Add `.env` file

.env.exmple is helpful for learning how to configure Laravel, but should the repo contain a pre-configured .env for the user? Even an empty document so they encryption key is added to the correct place will make installation easier.

Importing returns 404

Import::server and Import::url simply returns 404. No pictures are imported from directory or from link.

Diagnostics

Error: No or wrong property for identifier in database

System Information

Lychee Version: 3.2.9
DB Version: 040000
System: Linux
PHP Version: 7.3
MySQL Version: 10.1.37-MariaDB-0+deb9u1
Imagick: 1
Imagick Active: 1
Imagick Version: 1687
GD Version: 2.2.5

Error on migration

Starting with a fresh v4 installation, trying to migrate from an old Lychee database. The following error returns on the first artisan migrate command:

Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_username_unique`(`username`))

Current lychee install is v 3.2.11
DB: update_030211

Shared albums: policy

If an album is shared, do we want to automatically apply it to the children ?
Or is this something that we only do in the sharing panel (click on parent also move children) ?

Error on composer install

I'm trying to do a clean installation, but I get the following error. If it's my mistake, perhaps you can point me in the right direction? I'm following the installation guide. Thanks.

composer install --no-dev
Loading composer repositories with package information
Installing dependencies from lock file
Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover

In Connection.php line 664:

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lychee.configs'
  doesn't exist (SQL: select count(*) as aggregate from `configs` where `key`
   = compression_quality)


In PDOConnection.php line 63:

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lychee.configs'
  doesn't exist


In PDOConnection.php line 61:

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lychee.configs'
  doesn't exist


Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1

Feature: Add tags for Albums

I thought about extending the Tags Feature such that albums may have tags as well. Then, you could add a parameter or selector for the lychee frame page such that not only the starred photos may be shown but the user can choose to show either starred ones or based on the photos'/albums' tags.

Motivation is, that the selected photos to be shown in the digital frame may vary, depending on mood or think of multiple frames for different family members accessing the same lychee instance.

Album Download counter

It would be nice to be able as an admin or owner of an album to know how many times it has been downloaded. This would be convenient when you have users that you want to provide pictures to for a limited amount of time and you would like to be sure they downloaded them. :)

Add code documentation

Even if the functions are pretty self explanatory. It would be nice to actually have a small documentation above each one.

If that could be done before the release of the V4 that would be top though.

Frame displays non public pictures.

The current code is:

$photo = Photo::where('star', '=', 1)->inRandomOrder()->first();

This needs to be improved to only display pictures in public folder.

This could also take account of whether the user is logged in or not and display the appropriate selection.

Better folder structure?

Will lychee-laravel have a better folder structure for storing photos? i.e., not one single giant directory containing all files? This can become unweildy when accessing the pictures via the filesystem directly when you start to get thousands of files.

Duplicate entry

Trying to import many photos with "Import from Server" and getting errors "Integrity constraint violation: 1062 Duplicate entry 'NNN' for key 'PRIMARY'" (photos table). That's really annoying.

Feature: New smart album "Random"

Would be nice to have a smart album that shows a random image in X sec/min or on each page load. We had this feature in our previously used tool and some employees would like to have it back.

I‘d program it myself, but would take a long time, as I am a frontend/node-backend dev, not PHP. Anyway, with good hints and tips (and I saw a well-documented plugin.md here), I would take that effort.

Shared albums: add `Share with...` to the album context menu.

  1. On click Share with AJAX request the server to get the list of user with whom the album[s] [is/are] not shared with. Use the union to build the list:
    • A is not not shared with alice and bob,
    • B is not shared with bob and charlie.
    • => Selecting A, B will return the alice, bob, charlie
  2. Display list, process is similar to move.

Require upload rights

Add Nextcloud support

Similar to dropbox, there could be an option to import photos from Nextcloud installations.

Extract and store GPS data

I'd like to be able to display GPS data along with the rest of the photo info. It looks like there's already some code to extract the GPS data from the EXIF tags in app/Photo.php but it isn't stored or displayed anywhere (as far as I can see).

Ideally I'd like to store Longitude, Latitude, Elevation, and a textual description (eg: London, UK).

The question is, how do store the longitude/latitude? Both MySQL and MariaDB have geospatial fields in their newer versions (MySQL 8+ and MariaDB 10.2+ at least) and from a bit of quick research those seems like fairly extended releases (the LTS for both is 8.0 and 10.3 respectively). AWS provides both of those versions and so does Homestead.

Alternatively, we could store all them as DECIMAL values, but this comes with the downside of not being able to use all the fancy geospatial query functionality, like being able to find all photos within a specific range. At least not without using a third-party search engine like ElasticSearch or Lucene.

A final and more aggressive alternative (and perhaps an idea for another day) is to move all photo metadata to a JSON format and use the builtin MySQL/MariaDB JSON functions to process the data. This would provide the flexibility in the future to add metadata without creating additional fields in the photos table.

Missing `vendor` folder on clone

Laravel requires a vendor directory to install dependencies with composer. The fix is to mkdir vendor on the server, but we should consider adding an empty directory to the repo for easier installation.

Readme.md

  • Need to present the project (yet again)
  • should give a simple idea of how to install this version.
  • mention the migration is possible from the last version of Lychee (and how to)

Zooming of photos

From: https://github.com/electerious/Lychee/issues/762

Hi, first of all, thank you for your hard work on this amazing project. +1 1st_place_medal
Just a question - I looked at the docs and haven't found any keyboard shortuct to zoom image in/out.
If this is not implemented yet, would it be possible to add this feature?
I have datasheets as images and they're very hard to read in fullscreen mode.
I would need to zoom it in.
Thank you.

Example: https://1drv.ms/u/s!Asev3XxUh8b_n5NC9I-CJnZxddgYQw

Back button and subfolders

When in a sub folder, it would be nice if ESC or clicking on the back button brings us to the parent folder.

Localization - some glitches

First of all: Thanks for the lightspeed implementation of the localization feature!
Doing german localization I found some glitches in Implementation:

  1. On the main/start page, the word "Albums" at the top center of the page stays unlocalized. Exactly that word was the reason for the issue, because my customer asked me to change this :-)
    It may use the 'ALBUMS' variable too.

  2. On the "Settings" page, the whole part to change the localization is not localizable :-))

Rss feed

Add a module that provide a rss feed of the "x" last pictures added (they need to be publicly available). :)

Set star to an album

I would like to "set star" to an album like I'm able to star a photo.
The suggested behaviour would be the following:

  • Database table lychee_albums is extended by a binary field 'star', like lychee_photos
  • Context menu for an album has 'set star' like a photo
  • If an album is starred, the table entry becomes a 1 for 'star' field, like photos
  • The smart Album 'starred' (or favorites) shows all starred photos (as before) and additionally all photos of albums which are starred

The idea of marking the album itself as starred and not the photos included in the album at this particular moment, is, that it is dynamically because the album photos may change.

Background (or why would I like to have these kind of functionality):
I have a self-made digital frame on which my lychee gallery photos should be displayed. Therefore, I have built a short php script (can be found here: Lychee_frame ) which hooks to the lychee classes and generate an HTML page showing a random picture directly from the lychee data.

So far, so good. But, there are some albums I want to have in my gallery but do not want to be displayed on the digital frame, e.g. very old pictures or the photo album from our last house conversion.

Therefore, my Idea was to only show starred pictures but it is really not convenient to star hundreds of pictures individually.

Sadly, until now, I was not able to hack my way through the Lychee-front structure..

Thanks for your support!

cheers,
chrobs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.