Key Features • How To Use • Contributing • Credits • Authors • License • Projects using autophoto • Changelog
- Pre-scan your directory for photos
- Photos are detected by a path pattern
- Check all detected photos if they are valid (for instance BlueSky has size limitations)
- Scan your directory for photos
- For now only suppose to work with video game screenshots
- Photos are detected by a path pattern
- Publish them to a remote server
- Only supports Bluesky
- Randomly select 4 photos and publish them
- Application is build as native desktop app
- CLI based
Find the latest release here. Download the latest release for your platform and run the executable.
First, you need to configure the application to scan your directory for photos with a YAML configuration file.
Example configuration file:
autophoto:
scan:
- directory: ./test/resources/video-game
type: video-game
data-pattern:
regex: '^(.+) \((\d{4})\)/(.+)/.+\.webp$'
groups:
- title
- release-year
- platform
As you can scan multiple directories, you can add multiple scan
entries.
A scan
entry has the following properties:
directory
: The directory to scan for photostype
: The type of photos to scan for (V1 only supportsvideo-game
)data-pattern
: The pattern to extract data from the photo pathregex
: The regex to match the photo pathgroups
: The groups to extract from the regex (only the following groups are supported for now:title
,release-year
,platform
)
In the example above, the application will scan the ./test/resources/video-game
directory for photos with the following path pattern:
{video game title} ({release-year})/{platform}/photo-name.webp
Once you have your configuration file, you can run the application with the configuration file as argument: :
autophoto --prescan=./path/to/your/configuration-file.yaml
You'll see the detected photos and if they are valid or not in the console.
Once you have your configuration file, you can run the application with the configuration file as argument: :
autophoto --scan=./path/to/your/configuration-file.yaml
The scanned data are stored in a SQLite database in the db.autophoto.sqlite3
file.
You need a Bluesky account to publish your photos: Bluesky.
Then run the application with the --publish
option and your madatory Bluesky credentials:
autophoto --publish --bluesky_login=your_login --bluesky_password=your_password
Optionnally, you can also specify the Bluesky URL with the --bluesky_host
option:
autophoto --publish --bluesky_login=your_login --bluesky_password=your_password --bluesky_host=https://bsky.app
For all actions (pre-scan, scan or publish, you can set other options in the command line.
You can specify the path to the database file with the --database
option:
autophoto --scan=./path/to/your/configuration-file.yaml --database=./path/to/your/database-file.sqlite3
This option is not used for the pre-scan action.
You also activate the debug mode with the --debug
option:
- When scanning, this will print the video games and photos detected.
- When pusblishing, this will print the photos published.
Example:
autophoto --publish --bluesky_login=your_login --bluesky_password=your_password --debug
You can change the logger style with the --logger
option:
autophoto --scan=./path/to/your/configuration-file.yaml --logger=batch
The following styles are available:
batch
: print only the essential and raw informationconsole
: print all the information with style and colors
console
is the default style.
Deno is a runtime for JavaScript and TypeScript that is based on the V8 JavaScript engine and the Rust programming language.
You need to install Deno to run the project: https://docs.deno.com/runtime/getting_started/installation/.
Activate the linter and formater with Biome:
deno add npm:@biomejs/[email protected]
deno install --allow-scripts=npm:@biomejs/[email protected]
You'll be able to run the lint with the following command (Deno linter and Biome linter will be executed):
deno task lint
You'll be able to run the format with the following command (only use Biome formatter):
deno task format
You can install the git hooks with the following command:
deno task hook install
It will run the linter and tests before each commit.
There is no run configuration for the project because I just used unit tests to develop the project.
However you can execute a scan with the following command:
deno task e2e:scan
It will use the configuration files config.yml
and ./test/resources/config2.yml
.
You can execute a publish with the following command:
LOGIN=your_login PASSWORD=your_password deno task e2e:publish
You can run the unit tests with the following command:
deno task test
You can run the coverage with the following command:
deno task coverage
It will generate a coverage report in the coverage
directory and open it in your browser.
This software uses the following open source packages:
- Deno 2: JavaScript runtime
- Biome: Lint and format
- JavaScript Standards: jsr.io
- To publish on Bluesky: atproto - For Bluesky
- Multiformats library: Multiformats
- Git hook: Hook
- README template by Amit Merchant
- I wish to not generate a header with IA so I used an image by eniko kis on Unsplash
- Everyone, somehow, because I used Copilot to help me write the code
- Thomas Cicognani - Original creator - Zhykos
- Andrea Valentini - Contributor - AndreVale69
This project is also a space to learn and experiment with Deno, TypeScript, DDD and TDD. So, if you have any suggestions, questions or want to chat, feel free to contact me. Some things already need to be improved, like the error handling, the architecture, the domains, the performance, etc. So, if you want to help me, I will be happy to work with you.
- 2.1
- Remove the pick priority of directories which have at least 4 photos to publish