ubipo / picture-date-changer

Change the date or time of multiple pictures at a time :framed_picture: :calendar:

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Picture Date Changer 🖼️📆

Change the date or time of multiple pictures at a time, with visual previews and drag-and-drop reordering.

Development

Dependencies

  • Rust (tested on 1.69.0)
  • Node.js (tested on 19.4.0)
  • Python 3 (tested on 3.10.9)
  • Tauri CLI: cargo install tauri-cli
  • UI dependencies: cd ui && npm install && cd ..

Run with hot reload

cargo tauri dev

Build (/bundle)

cargo tauri build

Architecture

The app is split into two parts: the host and the ui. The host is the application entrypoint and is written in Rust, using rexiv2 for file metadata editing, Chrono for date/time, Tokio for async, and magic-rust (wrapper around ImageMagick) to preview/thumbnailify images. It uses the Tauri framework to interact with the OS and to open a window for the UI WebView. The UI is written in TypeScript and bundled with Vite/Rollup. It uses, among other libraries, React, Tailwind, MUI, and a Polyfill for the Ecma TC39 Temporal proposal.

The host and UI communicate via the Tauri event system. The specification for this two-way API is defined in host/src/host_ui_bridge.rs. On build, the host/generate_bindings.py script automatically generates TypeScript definitions for the UI (saved in ui/src/host_ui_bridge/generated-bindings.d.ts).

The UI is purposefully thin and simply reflects the state on the host. This state is initialized in host/src/main.rs and updated in response to messages from the UI in host/src/handle_message_to_host.rs.

Picdates

The picdates library (in picdates/) is a Node.js module to extract and change the date of a picture. Since switching from electron to tauri, it is no longer used but kept for reference. See host/src/media_datetime.rs for the ported Rust code.

License

Code copyright 2023 - Pieter Fiers & Tomas Fiers

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation. The license is included in the source code in License.txt or online at https://www.gnu.org/licenses/.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

About

Change the date or time of multiple pictures at a time :framed_picture: :calendar:

License:GNU General Public License v3.0


Languages

Language:TypeScript 48.6%Language:Rust 32.5%Language:JavaScript 13.4%Language:Python 3.9%Language:HTML 1.0%Language:SCSS 0.6%