lycheeorg / lychee Goto Github PK
View Code? Open in Web Editor NEWA great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.
Home Page: https://lycheeorg.github.io/
License: MIT License
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.
Home Page: https://lycheeorg.github.io/
License: MIT License
From: https://github.com/electerious/Lychee/issues/755
I'd like to be able for retrieve all photo uploaded/created into a specified date range.
Is this supported ? and if not, it's possible to create a plugin for add this functionality ?
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.
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 ?
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.
Current migration has troubles with converting the id from the v3 to the v4.
There is also a risk of duplicates.
Need to update:
From : https://github.com/electerious/Lychee/issues/738
I have tagged various photos with descriptive labels. I'd like public users to be able to search on tags and / or photo titles to find relevant images as other gallery systems allow. Unless the user is logged in the search box is invisible.
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.
How can I make the Starred album public? I can make all my starred photos public, but the starred album still isn't public
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 ?
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:
/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}
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)
"Server error or API not found."
(see screenshot)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;
}
}
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?
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
It would be nice if we document the following processes:
Sswitching the format of photos.takestamp
to timestamp
instead of int()
will allow us to search by date with the help of eloquent : https://laraveldaily.com/eloquent-date-filtering-wheredate-and-other-methods/
This also imply changing albums.min_takestamp
and albums.max_takestamp
to timestamp
too.
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...
The <title>
is always lychee, but it should take the custom app_name from .env
.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.
Import::server and Import::url simply returns 404. No pictures are imported from directory or from link.
Error: No or wrong property for identifier in database
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
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
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) ?
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
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.
In an album, press i
. We should be able to:
After a clean install of Lychee-Laravel, the app shows an error in the UI (API-Error) because it tries to load the user.css, but it is not available.
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 the possibility to generate QR code to easily share links.
The idea is to make sharing between users easier:
Instead of having to type https://lychee.example.com/#1234567889/12345667
you can just scan the QR code. I am aware this is an edge case for mobile user though.
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.
min_takestamp
and max_takestamp
should be updated when moving an album / adding a picture.
With commit 5d52c10#diff-c3a1b830efea25416f2832ca69999e4eR17
It is quite probable that:
https://github.com/LycheeOrg/Lychee-Laravel/blob/master/database/migrations/2018_08_15_103716_move_photos.php#L45
is broken...
It would be a better idea to actually merge the two steps at the same time...
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.
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.
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.
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.
From: https://github.com/electerious/Lychee/issues/683
When adding tags to pictures, if tags are common between multiple pictures, I would like to see the tag as an album.
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
.A, B
will return the alice, bob, charlie
Require upload rights
I have used https://github.com/kdelfour/lychee-docker in the past for the Lychee Docker. Are there any plans to add a DockerFile as a part of this repository or create an official docker image?
Similar to dropbox, there could be an option to import photos from Nextcloud installations.
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.
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.
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.
When in a sub folder, it would be nice if ESC
or clicking on the back
button brings us to the parent folder.
First of all: Thanks for the lightspeed implementation of the localization feature!
Doing german localization I found some glitches in Implementation:
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.
On the "Settings" page, the whole part to change the localization is not localizable :-))
Add a module that provide a rss feed of the "x" last pictures added (they need to be publicly available). :)
Instead of having:
smart albums
...
Albums
...
Shared albums
...
It might be better to have:
smart albums
...
Albums
...
Alice
...
Bob
...
Charlie
...
I would like to "set star" to an album like I'm able to star a photo.
The suggested behaviour would be the following:
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.