jyphoto_transfer
Disclosure
- Setup required - Users need to create their own Google/Dropbox OAuth apps
- Personal use focus - It’s designed for individual use, not multi-tenant production
- Prerequisites - Technical comfort with OAuth setup
Installation
pip install jyphoto_transfer
Setup
Before using, you need to set up credentials for both Google and Dropbox.
1. Google Cloud Setup
- Go to Google Cloud Console
- Create a new project (or select existing)
- Go to APIs & Services → Library
- Search for “Photos Library API” and click Enable
- Go to APIs & Services → Credentials
- Click Create Credentials → OAuth client ID
- If prompted, configure the OAuth consent screen (choose External, fill in app name)
- For application type, choose Web Application and enter your Redirect URL (Should be BASE_URL/callback)
- Click Create, then download the JSON file
- Save it somewhere safe (e.g.,
~/.config/jyphoto_transfer/google_photos_creds.json) - If keeping project in Testing mode, add your test users in Audience.
Google Cloud Console Setup
Add these scopes in the Data Access tab * https://www.googleapis.com/auth/photospicker.mediaitems.readonly * openid * https://www.googleapis.com/auth/userinfo.email
2. Dropbox App Setup
- Go to Dropbox App Console
- Click Create app
- Choose Scoped access and Full Dropbox
- Give it a name and click Create app
- On the app settings page, note your App key and App secret
- Make to give the following permissions
- files.content.write - to upload files
- files.metadata.read - to check if files exist (for your get_unique_filename function)
- enter your callback URI
3. Environment Config
Create a file called ~/.config/jyphoto_transfer/.env with these
values:
BASE_URL=http://localhost:8000/
GOOGLE_CREDS_FILE=google_photos_creds.json
DROPBOX_APP_KEY=your_dropbox_app_key
DROPBOX_APP_SECRET=your_dropbox_app_secret
GOOGLE_TOKEN_FILE=google_token.json
DROPBOX_TOKEN_FILE=dropbox_token.json
DROPBOX_FOLDER=/CopiedPhotosLocation
| Variable | Description |
|---|---|
BASE_URL |
Where the app runs (include trailing slash) |
GOOGLE_CREDS_FILE |
Path to your downloaded Google OAuth JSON |
DROPBOX_APP_KEY |
From Dropbox app settings |
DROPBOX_APP_SECRET |
From Dropbox app settings |
GOOGLE_TOKEN_FILE |
Location of google_token.json |
DROPBOX_TOKEN_FILE |
Location of dropbox_token.json |
DROPBOX_FOLDER |
Dropbox folder to copy photos into |
4. Protect Your Secrets
Add these to your .gitignore:
*.env
*_creds.json
google_token.json
dropbox_token.json
Never commit credentials to git!
Usage
from jyphoto_transfer.core import app, serve
serve()
Open your browser to http://localhost:8000, log in with Google,
connect Dropbox, select photos, and sync!
Metadata
Release files for jyphoto-transfer 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| jyphoto_transfer-0.0.2.tar.gz | 17.3 kB | Without provenance | Details for jyphoto_transfer-0.0.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jyphoto_transfer-0.0.2-py3-none-any.whl | Python 3 | none | any | Details for jyphoto_transfer-0.0.2-py3-none-any.whl |
Total release size: 32.5 kB
Release files / jyphoto_transfer-0.0.2.tar.gz
| Download URL | jyphoto_transfer-0.0.2.tar.gz |
|---|---|
| Size | 17.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ec427898099e8140243874c64fd1d5b603aac1cc9c6966ca2d2f0c6786a9008
|
|
BLAKE2b-256 checksum How to use checksums |
d98de1b068bd910c83d495a2edd232d21d05ee49b52c49aae4b66baf84fbe0da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / jyphoto_transfer-0.0.2-py3-none-any.whl
| Download URL | jyphoto_transfer-0.0.2-py3-none-any.whl |
|---|---|
| Size | 15.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0350ffaeb13884abc71441ac839b2ed05a66c38fce487f4b4bda21aec6227ae0
|
|
BLAKE2b-256 checksum How to use checksums |
d7c91d5ba89563a5bf7e21c5b77af512cc62f2793082a46e3a0a013c82a624b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Security for jyphoto-transfer 0.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.