Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/radiokot/photoprism-android-client

📸 A convenient Android gallery for your PhotoPrism library with plenty of useful features
https://github.com/radiokot/photoprism-android-client

android exoplayer foss gallery koin kotlin kotlin-android photoprism self-hosted

Last synced: 6 days ago
JSON representation

📸 A convenient Android gallery for your PhotoPrism library with plenty of useful features

Awesome Lists containing this project

README

        

# Icon Gallery for PhotoPrism

[![GitHub discussions](https://img.shields.io/github/discussions/Radiokot/photoprism-android-client?label=Discussions&color=e2e0f6&style=flat-square)](https://github.com/Radiokot/photoprism-android-client/discussions)
[![GitHub contributors](https://img.shields.io/github/contributors/Radiokot/photoprism-android-client?label=Contributors&color=e2e0f6&style=flat-square)](https://github.com/Radiokot/photoprism-android-client/graphs/contributors)
[![Sponsors](https://img.shields.io/static/v1?label=Sponsors&message=25&color=e2e0f6&style=flat-square)](#sponsors)

This Android app brings a convenient mobile gallery experience for [PhotoPrism](https://www.photoprism.app/).






It does not support all the official web app functionality, but nevertheless has plenty of useful features:
- Sending photos and videos to Gmail, Telegram or any other app
- Grouping the content by days and months
- Timeline scroll that lets you quickly jump to a specific month
- [Configurable search](https://github.com/Radiokot/photoprism-android-client/wiki/How-to-search-the-library)
- [Search bookmarks](https://github.com/Radiokot/photoprism-android-client/wiki/How-to-use-search-bookmarks) that let you save search configurations and apply them later
- Enhanced live photo viewer, which works best with Samsung and Apple shots
- Full-screen slideshow with configurable speed and video autoplay
- Deleting items without archiving them first
- Importing photos and videos trough sharing
- Endless session without the need to re-enter the password
- [Connection to both private and public libraries](https://github.com/Radiokot/photoprism-android-client/wiki/Connection-guide)
- Support of [mTLS (mutual TLS)](https://github.com/Radiokot/photoprism-android-client/wiki/How-to-connect-to-a-library-with-mTLS-(mutual-TLS)-auth%3F), [HTTP basic auth](https://github.com/Radiokot/photoprism-android-client/wiki/Connection-guide#examples-of-valid-urls) and [SSO](https://github.com/Radiokot/photoprism-android-client/wiki/Connection-guide#sso) like Authelia, Cloudflare Access, etc.
- TV compatibility to easily browse your library with a remote-control (Search is only available with a mouse for now. [Install through APK](https://github.com/Radiokot/photoprism-android-client/issues/66#issuecomment-1667426238))
- ⭐ Extensions:
- [Memories](https://github.com/Radiokot/photoprism-android-client/wiki/Memories-extension) – get a daily collection of photos and videos from the same day in past years
- [Photo frame widget](https://github.com/Radiokot/photoprism-android-client/wiki/Photo-frame-widget-extension) – see random photos from your library on the home screen

The gallery is not intended to sync content with the library.
For this, I recommend [Autosync](https://play.google.com/store/apps/details?id=com.ttxapps.autosync).

## Compatibility
The gallery runs on Android 5.0+ and it is confirmed to work with the PhotoPrism release of
[September 15, 2024](https://github.com/photoprism/photoprism/releases/tag/240915-e1280b2fb).
Compatibility with older PhotoPrism versions may be partial.

## Download
[APK APK from the latest release](https://github.com/Radiokot/photoprism-android-client/releases/latest)

[F-Droid F-Droid](https://f-droid.org/packages/ua.com.radiokot.photoprism)

[Google Play Google Play](https://play.google.com/store/apps/details?id=ua.com.radiokot.photoprism) (has no [extension store](https://github.com/Radiokot/photoprism-android-client/wiki/Gallery-extensions))

## Sponsors
[reverendj1](https://github.com/reverendj1)
[₿logging₿itcoin](https://github.com/BrutusBondBTC)
[PitRejection2359](https://github.com/PitRejection2359)
[Sayantan Santra](https://github.com/SinTan1729)
[Philipp](https://github.com/Blendan1)
[Daniel Fuchs](https://github.com/dfoxg)
[Hulmgulm](https://github.com/hulmgulm)
[Jonas Gustavsson](https://github.com/jonasgustavsson)
[Florian Voswinkel](https://github.com/FlorentBrianFoxcorner)
[Koen Koppens](https://github.com/koen81)
[Radon Rosborough](https://github.com/raxod502)
[Michael Mayer](https://github.com/lastzero)
[Theresa Gresch](https://github.com/graciousgrey)
[Juha Lehtiranta](https://github.com/yatzy)
[Neil Castelino](https://github.com/TwistTheNeil)
[Seth For Privacy](https://github.com/sethforprivacy)
[C-Iaens](https://github.com/C-Iaens)
[Tobias Fiechter](https://github.com/tobiasfiechter)
[ippocratis](https://github.com/ippocratis)


…and 6 anonymous sponsors.

*I am very grateful to everyone [supporting this project](https://radiokot.com.ua/tip) ❤️ To join this public list, email me the transaction reference once it is complete. By the way, sponsors get [extensions](https://github.com/Radiokot/photoprism-android-client/wiki/Gallery-extensions) for free.*

## License
I reject the concept of intellectual property. Claiming ownership over information that can be replicated perfectly and endlessly is inherently flawed. Consequently, any efforts to uphold such form of ownership inevitably result in some people gaining unjustifiable control over other's tangible resources, such as computers, printing equipment, construction materials, etc. [1](repository-assets/kinsella_against_intellectual_property.pdf)
When talking specifically about source code licensing – without a state violently enforcing [copyright monopolies](https://torrentfreak.com/language-matters-framing-the-copyright-monopoly-so-we-can-keep-our-liberties-130714/), it would be ludicrous to assume that a mere text file in a directory enables someone to restrict processing copies of this information by others on their very own computers.
However, there is [such a file](LICENSE) in this repository bearing the GPLv3 license. Why?

One would expect someone with such an attitude to not use the license at all, use a permissive license, or [explicitly unlicense](https://unlicense.org/).
But for me, to do so is to voluntarily limit my means of defense. To act as a gentleman with those who readily exploit state violence against you is to lose.
In a world where copyright monopolies are violently enforced, I choose GPLv3 for the software I really care for, because under the current circumstances this license is a tool that:
- Allows **others** to freely use, modify and distribute this software, without the risk of being sued;
- Enables **me** to pull all the valuable changes from public forks back to the trunk, also without the risk of being sued;
- **Knocks down a peg** individuals or companies willing to monopolize their use case or modifications of this software.

## Tech stack
- Kotlin
- Classic views & ViewModel
- RxJava for concurrency
- Koin for dependency injection
- OkHTTP & Retrofit for networking
- Room database
- kotlin-logging & slf4j-handroid for logging
- Picasso for images & ExoPlayer for videos
- FastAdapter for lists
- Offline License Key for extensions activation