Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implement plug-in system #135

Open
JohnnyDarks opened this issue Apr 21, 2024 · 9 comments
Open

implement plug-in system #135

JohnnyDarks opened this issue Apr 21, 2024 · 9 comments

Comments

@JohnnyDarks
Copy link

I've been using this and find it meet most of my needs. However, I believe implementing a plugin system could greatly enhance its flexibility and extend its functionality. Preferable for the Web App.

Would you be open to considering this feature? I'm happy to discuss further and contribute where I can.

@xemle
Copy link
Owner

xemle commented Apr 21, 2024

Hi @JohnnyDarks

Thank you for using HomeGallery and propose the Plugin feature. I am happy that this gallery covers most of you needs.

Indeed I am considering this feature and would be happy to discuss further steps and also possibilities how to contribute. Regarding the backend to extend the extractor or the database creator I do have ideas. But it is different to the Web App.

What functionality would you like to add as plugin in the Web App? The Web App is written in React and I have only a rough idea how to provide pluggable features to a React App. Do you have experience with plugins and react?

@JohnnyDarks
Copy link
Author

Some ideas I had include saved searches, a search builder (an advanced search tool that allows you to select order by, media type, and tags from a list of possible values), animated GIF support, video player settings like auto-play with sound and auto-looping, and a slideshow mode with auto-advancement to the next file. These are smaller features that allow for easy extensions without requiring feature bloat in the main app or deviation from the main app's objectives. While I have experience using plugins, I don't have experience making them. I also have some experience creating educational and visualization content in React/Lit

@xemle
Copy link
Owner

xemle commented Apr 27, 2024

Hi @JohnnyDarks

  • saved searches
  • animated GIF support
  • video player settings like auto-play with sound and auto-looping, and
  • a slideshow mode with auto-advancement to the next file.

Thank you for your improvement suggestions.

  • saved searches

Currently the database schema is flat and has only one "table". Via the feature of face names from #132 this might change and the database schema might have several "tables" like "faces", "searches" or "albums"

  • animated GIF support

This should be done quite easy with the new plugin system. Things would work well to just support other image formats

  • video player settings like auto-play with sound and auto-looping, and

This could be a general setting. Either a global one or a single one via the detail view. To bring this feature as plugin it would be tricky IMHO.

  • a slideshow mode with auto-advancement to the next file.

Same as the video player which requires a own renderer of some media files.

I am trying to define the interfaces for a plugin system. Currently it is work in progress on the branch feature/plugin. Maybe you can check the interfaces in src.

While I have experience using plugins, I don't have experience making them. I also have some experience creating educational and visualization content in React/Lit

That sounds awesome! I would like to have a private conversation with you as sparing partner to talk about requirements and functions of the plugin. Would that be possible?

@xemle
Copy link
Owner

xemle commented Jul 30, 2024

I am happy to announce the first experimental plugin feature in the current master! See docs.home-gallery.org/plugin for further details!

@APT37
Copy link

APT37 commented Aug 2, 2024

Some ideas I had include saved searches, a search builder (an advanced search tool that allows you to select order by, media type, and tags from a list of possible values), animated GIF support, video player settings like auto-play with sound and auto-looping, and a slideshow mode with auto-advancement to the next file. These are smaller features that allow for easy extensions without requiring feature bloat in the main app or deviation from the main app's objectives. While I have experience using plugins, I don't have experience making them. I also have some experience creating educational and visualization content in React/Lit

Support for animated GIFs would be very much appreciated. I installed Home Gallery yesterday and am surprised that animated GIFs did not 'play'. Thank you.

@xemle
Copy link
Owner

xemle commented Aug 4, 2024

@APT37 would be a nice try for the new plugin system. The video extrator plugin would be a good start.

Maybe it would be sufficient to detect that the image has a duration by inspecting the exif data? But I am not away of GIFs in detail and I assume the frame rate differs from normal video files and therefore it need some special handling...

BTW GIFs are not played as video because I do not have GIFs in my gallery but you can change that ;-)

@APT37
Copy link

APT37 commented Aug 4, 2024

@xemle After looking around a bit more, I resorted to using Sigal - which turned out to be exactly what I was looking for. Sadly I do not know Javascript, therefore can not contribute to the code base.

@xemle
Copy link
Owner

xemle commented Aug 4, 2024

@APT37 Thank you for the honest feedback. I am happy that you found your solution 👍

@xemle
Copy link
Owner

xemle commented Aug 9, 2024

I've release v1.16.0 with experimental extractor, database and query plugin interfaces! With the query plugin it was a breeze to implement user based filters so that not every user will have full access to the database! Check it out!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants