PHPackages                             dmlogic/photo-indexer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. dmlogic/photo-indexer

ActiveLibrary[File &amp; Storage](/categories/file-storage)

dmlogic/photo-indexer
=====================

Lookup albums from a Google Photos account and download them to local storage

v2.0.2(3y ago)121MITPHPPHP ^8.0

Since Oct 24Pushed 2y ago1 watchersCompare

[ Source](https://github.com/dmlogic/photo-indexer)[ Packagist](https://packagist.org/packages/dmlogic/photo-indexer)[ RSS](/packages/dmlogic-photo-indexer/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (6)Versions (6)Used By (0)

Google Photos Indexer
=====================

[](#google-photos-indexer)

A Laravel package providing console commands to maintain a local copy of a Google Photos account. Also has endpoints for setting up OAuth access via a couple of localhost routes.

This can serve as both a backup and, by using the [Slideshow](https://github.com/dmlogic/photo-slideshow) tool, a rolling randomised display on your TV or photo frame.

The indexer is only interested in photos you have placed in an album. The intention is that you have to denote the image as "special" enough to copy down. That way random phone shots that get sync'd don't make the cut.

Installation
------------

[](#installation)

As a package, this requires a host Laravel app. I *really* hate dealing with [laravel/laravel](https://github.com/laravel/laravel) as a container for my code, so there is a build script to quickly consume this package from a functioning App based on the latest available Laravel skeleton. This keeps the codebase clean and makes life massively easier at upgrade time.

1. Create suitable host hardware and OS. A Raspberry PI with a large storage card is perfect
2. Clone this repo
3. Copy `.env.template` to `.env` and adjust as required - particularly the full path to photo storage (which should really be totally separate from this code)
4. Setup OAuth access to your App and download credentials to `credentials.json` in this folder
5. Run `./build.sh`
6. `cd` into `build` and run `php artisan serve`
7. In your browser visit `http://127.0.0.1/oauth/start` and complete the oauth process
8. Setup a CRON command to index daily. e.g. `0 1 * * * cd /full/path/to/project/build && php artisan photos:index`

Upgrade and maintenance
-----------------------

[](#upgrade-and-maintenance)

You can pretty much follow the above providing you don't trash your data. Recommended process:

- Copy `database/database.sqlite` somewhere safe
- If your photo storage is not outside of the built app, copy it somewhere safe
- Delete the built app
- Complete the installation steps
- Copy back `database/database.sqlite` and your photos if necessary

License
-------

[](#license)

This code is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~312 days

Total

4

Last Release

1453d ago

Major Versions

v1.0 → v2.0.02022-05-19

PHP version history (2 changes)v1.0PHP ^7.1.3

v2.0.0PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/edd812a055e10338da34ba719c228245d153d57762c428f24ca3c4f74b3685b0?d=identicon)[dmlogic](/maintainers/dmlogic)

---

Top Contributors

[![dmlogic](https://avatars.githubusercontent.com/u/1250252?v=4)](https://github.com/dmlogic "dmlogic (10 commits)")

---

Tags

google-photoslaravel-packagephplaravelgoogle photos

###  Code Quality

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/dmlogic-photo-indexer/health.svg)

```
[![Health](https://phpackages.com/badges/dmlogic-photo-indexer/health.svg)](https://phpackages.com/packages/dmlogic-photo-indexer)
```

###  Alternatives

[unisharp/laravel-filemanager

A file upload/editor intended for use with Laravel 5 to 10 and CKEditor / TinyMCE

2.2k3.3M74](/packages/unisharp-laravel-filemanager)[masbug/flysystem-google-drive-ext

Flysystem adapter for Google Drive with seamless virtual&lt;=&gt;display path translation

2631.7M14](/packages/masbug-flysystem-google-drive-ext)[itskodinger/midia

Simple Media manager for your Laravel project

1415.8k](/packages/itskodinger-midia)[kingofcode/laravel-uploadable

Laravel Uploadable trait to automatically upload images and files with minimum configuration

286.4k](/packages/kingofcode-laravel-uploadable)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
