sharded_photos_drive_cli_client


Namesharded_photos_drive_cli_client JSON
Version 0.1.9 PyPI version JSON
download
home_pageNone
SummaryNone
upload_time2025-01-21 00:45:55
maintainerNone
docs_urlNone
authorYour Name
requires_python<4.0,>=3.13
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Sharded-Photos-Drive-CLI-Client

![PyPI - Version](https://img.shields.io/pypi/v/sharded_photos_drive_cli_client)
![check-code-coverage](https://img.shields.io/badge/code--coverage-99-brightgreen)

## Description

The Sharded-Photos-Drive-CLI-Client is the cli client for Sharded Photos Drive. This CLI helps set up your infrastructure, syncs, adds, and delete your pictures and videos from your machine to Sharded Photos Drive.

This CLI will never delete content from your machine - it should only mirror the content from your machine to the cloud.

## Table of Contents

- [Getting Started](#getting-started)
  - [Installation](#installation)
  - [Setting up your infrastructure](#setting-up-your-infrastructure)
  - [Syncing your photos / videos](#syncing-your-photos--videos)
  - [Adding custom content](#adding-custom-content-to-sharded-photos-drive)
  - [Deleting custom content](#deleting-content-to-sharded-photos-drive)
  - [Cleaning](#cleaning-trailing-sharded-photos-drive)
  - [Deleting everything](#deleting-all-content-in-sharded-photos-drive)
- [Getting Started to Contribute](#getting-started-to-contribute)
- [Usage](#usage)
- [Credits](#credits)
- [License](#license)

## Getting Started

### Installation

1. First, install the package by running:

   ```bash
   pip3 install sharded_photos_drive_cli_client
   ```

### Setting up your infrastructure

1. First, you need to have the following:

   1. A connection string to your MongoDB database (follow [this doc](./docs/create_mongodb_connection_string.md) for step-by-step instructions).
   2. Your Google Account's client ID and client secrets (follow [this doc](./docs/create_google_client_id.md) for step-by-step instructions).

2. Next, to set up your infrastructure by running `sharded_photos_drive_cli_client config init`.

3. It will ask you information on what the command will do.

   ![Intro](./docs/images/setting-up-infra/intro.png)

   Press `[enter]` to continue.

4. Next, the cli will prompt you to specify a place to store the configs. You can store it locally or on MongoDB.

   For simplicity, select `2`. It will then ask you to enter the file name of your config.

   ![Config choices](./docs/images/setting-up-infra/config-choices.png)

5. Next, it will ask you to add a MongoDB database to store your pictures / videos metadata. It will prompt you to enter a name for your database, and its read-write connection string:

   ![Adding MongoDB client](./docs/images/setting-up-infra/add-mongodb.png)

6. Finally, it will ask you to add your Google Photos account to store your pictures / videos. It will prompt you to enter a name for your first Google Photos account, and a Google Photos Client ID and Google Photos Client Secret.

   ![Adding Google Photos account](./docs/images/setting-up-infra/add-gphotos.png)

7. After specifying the name, client ID, and client secret, it will return a URL to authenticate. Copy-paste the URL to your browser and follow the instructions on the browser:

   ![Google OAuth2 steps](./docs/images/setting-up-infra/google-oauth2.gif)

8. It saves the config to `my-config.conf` to your current working directory.

### Syncing your photos / videos

1. From the previous step, assume you have `config.conf` as your config file, and assume your current working directory looks like this:

   ```bash
   .
   ├── Archives
   │   ├── Photos
   │   │   ├── 2023
   │   │   │   └── Wallpapers
   │   │   │       └── 2023-11a Wallpaper.DNG
   │   │   └── 2024
   │   │       └── Wallpapers
   │   │           ├── 2024-01a Wallpaper.jpg
   │   │           ├── 2024-03-01 Wallpaper.jpg
   │   │           ├── 2024-04-02 Wallpaper.DNG
   │   │           └── 2024-05 Wallpaper.png
   │   └── Random.jpg
   └── my-config.conf
   ```

2. To sync your photos / videos to the system, run:

   ```bash
   sharded_photos_drive_cli sync --local_dir_path . --config_file config.conf
   ```

3. It will then ask you to confirm if these are the contents that you want to upload to the system. Type in `yes`:

   ![Diff](./docs/images/syncing/diff.png)

4. After a while, the contents should be uploaded and will output statistics on the upload.

   ![Stats](./docs/images/syncing/sync-stats.png)

5. If you want to sync your photos/videos in a particular path in the system, you can specify the `--remote_albums_path` field, like:

   ```bash
   sharded_photos_drive_cli sync --local_dir_path ./Archives --remote_albums_path Archives  --config_file config.conf
   ```

   It will compare all contents under the local directory `./Archives` to all content under the albums path `Archives`.

6. You can also upload photos / videos in parallel with the `--parallelize_uploads` flag, like:

   ```bash
   sharded_photos_drive_cli sync --local_dir_path . --config_file config.conf --parallelize_uploads
   ```

   though it is experimental right now.

### Adding custom content to Sharded Photos Drive

1. Suppose your Sharded Photos Drive has the following content:

   ```bash
   root
   └── Archives
       ├── Photos
       │   └── 2024
       │       └── Wallpapers
       │           ├── 2024-01a Wallpaper.jpg
       │           ├── 2024-03-01 Wallpaper.jpg
       │           ├── 2024-04-02 Wallpaper.DNG
       │           └── 2024-05 Wallpaper.png
       └── Random.jpg
   ```

   and you want to upload the current content in your working directory:

   ```bash
   .
   └── Current
       └── Dog.jpg
   ```

2. You can run:

   ```bash
   sharded_photos_drive_cli add ./Current --config_file my-config.conf
   ```

   and your system will add all contents under `./Current` without deleting any existing content in your system.

3. In other words, you will have these contents:

   ```bash
   root
   ├── Archives
   │   ├── Photos
   │   │   └── 2024
   │   │       └── Wallpapers
   │   │           ├── 2024-01a Wallpaper.jpg
   │   │           ├── 2024-03-01 Wallpaper.jpg
   │   │           ├── 2024-04-02 Wallpaper.DNG
   │   │           ├── 2024-05 Wallpaper.png
   │   └── Random.jpg
   └── Current
       └── Dog.jpg
   ```

### Deleting content to Sharded Photos Drive

1. Similarly, if your system has this content:

   ```bash
   root
   └── Archives
       ├── Photos
       │   └── 2024
       │       └── Wallpapers
       │           ├── 2024-01a Wallpaper.jpg
       │           ├── 2024-03-01 Wallpaper.jpg
       │           ├── 2024-04-02 Wallpaper.DNG
       │           ├── 2024-05 Wallpaper.png
       └── Random.jpg
   ```

2. If you want to delete the `Archives/Random.jpg` picture, you can run:

   ```bash
   sharded_photos_drive_cli delete Archives/Random.jpg --config_file my-config.conf
   ```

   and the photo `Archives/Random.jpg` will be deleted from the system.

3. Similarly, if you want to delete everything under the `Archives/Photos` album, you can run:

   ```bash
   sharded_photos_drive_cli delete Archives/Photos --config_file my-config.conf
   ```

   and the system will have these new contents:

   ```bash
   root
   └── Archives
       └── Random.jpg
   ```

### Cleaning trailing Sharded Photos Drive

In case any of the `sync`, `add`, or `delete` commands fail, there are data that can be cleaned up. Moreover, when a photo / video is deleted, due to the limitations of the Google Photos API, it will remain in your Google Photos account.

Hence, the `clean` script is provided to clean up the system.

Running:

```bash
sharded_photos_drive_cli clean --config_file config.conf
```

will:

1. Delete all media items from the metadata database that is not being used
2. Delete all albums from the metadata database that is not being used
3. Move photos / videos in Google Photos that are not used to a special album called `To delete` where you can manually delete the content in your Google Photos account.

### Deleting all content in Sharded Photos Drive

In case you want to delete everything, you can run:

```bash
sharded_photos_drive_cli teardown --config_file config.conf
```

It will delete all photos / videos from your system, and move all photos / videos in your Google Photo accounts to their `To delete` albums.

## Getting Started to Contribute

1. Ensure Python3, Pip, and Poetry are installed on your machine

2. Install dependencies by running:

   ```bash
   poetry install
   ```

3. To lint your code, run:

   ```bash
   poetry run mypy . --check-untyped-defs && poetry run flake8 && poetry run black .
   ```

4. To run tests and code coverage, run:

   ```bash
   poetry run coverage run -m pytest && poetry run coverage report -m
   ```

5. To run tests and code coverage, run:

   ```bash
   poetry run coverage run -m pytest <insert-file-path> && poetry run coverage report -m
   ```

   For example,

   ```bash
   poetry run coverage run -m pytest tests/backup/test_backup_photos.py && poetry run coverage report -m
   ```

6. To publish a new version of the app:

   1. First, bump up the package version by running:

      ```bash
      poetry version [patch|minor|major]
      ```

      For instance, if the app is on 0.1.0 and you want to increment it to version 0.1.1, run:

      ```bash
      poetry version patch
      ```

   2. Then, create a pull request with the new version number.

   3. Once the pull request is submitted, go to <https://github.com/EKarton/Sharded-Photos-Drive/actions/workflows/publish-cli-client.yaml>, click on the `Run workflow`, ensure that it's on the `main` branch, and click on `Run workflow`:

      ![Screenshot of publish workflow](docs/images/publish-package/publish-cli-client-screenshot.png)

   4. Once the action is complete, it will publish a new version of the app on <https://pypi.org/project/sharded_photos_drive_cli_client/>.

### Usage

Please note that this project is used for educational purposes and is not intended to be used commercially. We are not liable for any damages/changes done by this project.

### Credits

Emilio Kartono, who made the entire project.

CLI images were provided by <https://ray.so/>.

### License

This project is protected under the GNU licence. Please refer to the root project's LICENSE.txt for more information.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "sharded_photos_drive_cli_client",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.13",
    "maintainer_email": null,
    "keywords": null,
    "author": "Your Name",
    "author_email": "you@example.com",
    "download_url": "https://files.pythonhosted.org/packages/9b/94/897e632ddcf37b4266a0b52f7f4c5765a144b6490ae8bc43622097ec330a/sharded_photos_drive_cli_client-0.1.9.tar.gz",
    "platform": null,
    "description": "# Sharded-Photos-Drive-CLI-Client\n\n![PyPI - Version](https://img.shields.io/pypi/v/sharded_photos_drive_cli_client)\n![check-code-coverage](https://img.shields.io/badge/code--coverage-99-brightgreen)\n\n## Description\n\nThe Sharded-Photos-Drive-CLI-Client is the cli client for Sharded Photos Drive. This CLI helps set up your infrastructure, syncs, adds, and delete your pictures and videos from your machine to Sharded Photos Drive.\n\nThis CLI will never delete content from your machine - it should only mirror the content from your machine to the cloud.\n\n## Table of Contents\n\n- [Getting Started](#getting-started)\n  - [Installation](#installation)\n  - [Setting up your infrastructure](#setting-up-your-infrastructure)\n  - [Syncing your photos / videos](#syncing-your-photos--videos)\n  - [Adding custom content](#adding-custom-content-to-sharded-photos-drive)\n  - [Deleting custom content](#deleting-content-to-sharded-photos-drive)\n  - [Cleaning](#cleaning-trailing-sharded-photos-drive)\n  - [Deleting everything](#deleting-all-content-in-sharded-photos-drive)\n- [Getting Started to Contribute](#getting-started-to-contribute)\n- [Usage](#usage)\n- [Credits](#credits)\n- [License](#license)\n\n## Getting Started\n\n### Installation\n\n1. First, install the package by running:\n\n   ```bash\n   pip3 install sharded_photos_drive_cli_client\n   ```\n\n### Setting up your infrastructure\n\n1. First, you need to have the following:\n\n   1. A connection string to your MongoDB database (follow [this doc](./docs/create_mongodb_connection_string.md) for step-by-step instructions).\n   2. Your Google Account's client ID and client secrets (follow [this doc](./docs/create_google_client_id.md) for step-by-step instructions).\n\n2. Next, to set up your infrastructure by running `sharded_photos_drive_cli_client config init`.\n\n3. It will ask you information on what the command will do.\n\n   ![Intro](./docs/images/setting-up-infra/intro.png)\n\n   Press `[enter]` to continue.\n\n4. Next, the cli will prompt you to specify a place to store the configs. You can store it locally or on MongoDB.\n\n   For simplicity, select `2`. It will then ask you to enter the file name of your config.\n\n   ![Config choices](./docs/images/setting-up-infra/config-choices.png)\n\n5. Next, it will ask you to add a MongoDB database to store your pictures / videos metadata. It will prompt you to enter a name for your database, and its read-write connection string:\n\n   ![Adding MongoDB client](./docs/images/setting-up-infra/add-mongodb.png)\n\n6. Finally, it will ask you to add your Google Photos account to store your pictures / videos. It will prompt you to enter a name for your first Google Photos account, and a Google Photos Client ID and Google Photos Client Secret.\n\n   ![Adding Google Photos account](./docs/images/setting-up-infra/add-gphotos.png)\n\n7. After specifying the name, client ID, and client secret, it will return a URL to authenticate. Copy-paste the URL to your browser and follow the instructions on the browser:\n\n   ![Google OAuth2 steps](./docs/images/setting-up-infra/google-oauth2.gif)\n\n8. It saves the config to `my-config.conf` to your current working directory.\n\n### Syncing your photos / videos\n\n1. From the previous step, assume you have `config.conf` as your config file, and assume your current working directory looks like this:\n\n   ```bash\n   .\n   \u251c\u2500\u2500 Archives\n   \u2502\u00a0\u00a0 \u251c\u2500\u2500 Photos\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 2023\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 Wallpapers\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 2023-11a Wallpaper.DNG\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 2024\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 Wallpapers\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-01a Wallpaper.jpg\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-03-01 Wallpaper.jpg\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-04-02 Wallpaper.DNG\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u2514\u2500\u2500 2024-05 Wallpaper.png\n   \u2502\u00a0\u00a0 \u2514\u2500\u2500 Random.jpg\n   \u2514\u2500\u2500 my-config.conf\n   ```\n\n2. To sync your photos / videos to the system, run:\n\n   ```bash\n   sharded_photos_drive_cli sync --local_dir_path . --config_file config.conf\n   ```\n\n3. It will then ask you to confirm if these are the contents that you want to upload to the system. Type in `yes`:\n\n   ![Diff](./docs/images/syncing/diff.png)\n\n4. After a while, the contents should be uploaded and will output statistics on the upload.\n\n   ![Stats](./docs/images/syncing/sync-stats.png)\n\n5. If you want to sync your photos/videos in a particular path in the system, you can specify the `--remote_albums_path` field, like:\n\n   ```bash\n   sharded_photos_drive_cli sync --local_dir_path ./Archives --remote_albums_path Archives  --config_file config.conf\n   ```\n\n   It will compare all contents under the local directory `./Archives` to all content under the albums path `Archives`.\n\n6. You can also upload photos / videos in parallel with the `--parallelize_uploads` flag, like:\n\n   ```bash\n   sharded_photos_drive_cli sync --local_dir_path . --config_file config.conf --parallelize_uploads\n   ```\n\n   though it is experimental right now.\n\n### Adding custom content to Sharded Photos Drive\n\n1. Suppose your Sharded Photos Drive has the following content:\n\n   ```bash\n   root\n   \u2514\u2500\u2500 Archives\n    \u00a0\u00a0 \u251c\u2500\u2500 Photos\n    \u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 2024\n    \u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 Wallpapers\n    \u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-01a Wallpaper.jpg\n    \u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-03-01 Wallpaper.jpg\n    \u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-04-02 Wallpaper.DNG\n    \u00a0\u00a0 \u2502\u00a0\u00a0         \u2514\u2500\u2500 2024-05 Wallpaper.png\n    \u00a0\u00a0 \u2514\u2500\u2500 Random.jpg\n   ```\n\n   and you want to upload the current content in your working directory:\n\n   ```bash\n   .\n   \u2514\u2500\u2500 Current\n       \u2514\u2500\u2500 Dog.jpg\n   ```\n\n2. You can run:\n\n   ```bash\n   sharded_photos_drive_cli add ./Current --config_file my-config.conf\n   ```\n\n   and your system will add all contents under `./Current` without deleting any existing content in your system.\n\n3. In other words, you will have these contents:\n\n   ```bash\n   root\n   \u251c\u2500\u2500 Archives\n   \u2502\u00a0\u00a0 \u251c\u2500\u2500 Photos\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 2024\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 Wallpapers\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-01a Wallpaper.jpg\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-03-01 Wallpaper.jpg\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-04-02 Wallpaper.DNG\n   \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-05 Wallpaper.png\n   \u2502\u00a0\u00a0 \u2514\u2500\u2500 Random.jpg\n   \u2514\u2500\u2500 Current\n       \u2514\u2500\u2500 Dog.jpg\n   ```\n\n### Deleting content to Sharded Photos Drive\n\n1. Similarly, if your system has this content:\n\n   ```bash\n   root\n   \u2514\u2500\u2500 Archives\n    \u00a0\u00a0 \u251c\u2500\u2500 Photos\n    \u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 2024\n    \u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 Wallpapers\n    \u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-01a Wallpaper.jpg\n    \u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-03-01 Wallpaper.jpg\n    \u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-04-02 Wallpaper.DNG\n    \u00a0\u00a0 \u2502\u00a0\u00a0         \u251c\u2500\u2500 2024-05 Wallpaper.png\n    \u00a0\u00a0 \u2514\u2500\u2500 Random.jpg\n   ```\n\n2. If you want to delete the `Archives/Random.jpg` picture, you can run:\n\n   ```bash\n   sharded_photos_drive_cli delete Archives/Random.jpg --config_file my-config.conf\n   ```\n\n   and the photo `Archives/Random.jpg` will be deleted from the system.\n\n3. Similarly, if you want to delete everything under the `Archives/Photos` album, you can run:\n\n   ```bash\n   sharded_photos_drive_cli delete Archives/Photos --config_file my-config.conf\n   ```\n\n   and the system will have these new contents:\n\n   ```bash\n   root\n   \u2514\u2500\u2500 Archives\n    \u00a0\u00a0 \u2514\u2500\u2500 Random.jpg\n   ```\n\n### Cleaning trailing Sharded Photos Drive\n\nIn case any of the `sync`, `add`, or `delete` commands fail, there are data that can be cleaned up. Moreover, when a photo / video is deleted, due to the limitations of the Google Photos API, it will remain in your Google Photos account.\n\nHence, the `clean` script is provided to clean up the system.\n\nRunning:\n\n```bash\nsharded_photos_drive_cli clean --config_file config.conf\n```\n\nwill:\n\n1. Delete all media items from the metadata database that is not being used\n2. Delete all albums from the metadata database that is not being used\n3. Move photos / videos in Google Photos that are not used to a special album called `To delete` where you can manually delete the content in your Google Photos account.\n\n### Deleting all content in Sharded Photos Drive\n\nIn case you want to delete everything, you can run:\n\n```bash\nsharded_photos_drive_cli teardown --config_file config.conf\n```\n\nIt will delete all photos / videos from your system, and move all photos / videos in your Google Photo accounts to their `To delete` albums.\n\n## Getting Started to Contribute\n\n1. Ensure Python3, Pip, and Poetry are installed on your machine\n\n2. Install dependencies by running:\n\n   ```bash\n   poetry install\n   ```\n\n3. To lint your code, run:\n\n   ```bash\n   poetry run mypy . --check-untyped-defs && poetry run flake8 && poetry run black .\n   ```\n\n4. To run tests and code coverage, run:\n\n   ```bash\n   poetry run coverage run -m pytest && poetry run coverage report -m\n   ```\n\n5. To run tests and code coverage, run:\n\n   ```bash\n   poetry run coverage run -m pytest <insert-file-path> && poetry run coverage report -m\n   ```\n\n   For example,\n\n   ```bash\n   poetry run coverage run -m pytest tests/backup/test_backup_photos.py && poetry run coverage report -m\n   ```\n\n6. To publish a new version of the app:\n\n   1. First, bump up the package version by running:\n\n      ```bash\n      poetry version [patch|minor|major]\n      ```\n\n      For instance, if the app is on 0.1.0 and you want to increment it to version 0.1.1, run:\n\n      ```bash\n      poetry version patch\n      ```\n\n   2. Then, create a pull request with the new version number.\n\n   3. Once the pull request is submitted, go to <https://github.com/EKarton/Sharded-Photos-Drive/actions/workflows/publish-cli-client.yaml>, click on the `Run workflow`, ensure that it's on the `main` branch, and click on `Run workflow`:\n\n      ![Screenshot of publish workflow](docs/images/publish-package/publish-cli-client-screenshot.png)\n\n   4. Once the action is complete, it will publish a new version of the app on <https://pypi.org/project/sharded_photos_drive_cli_client/>.\n\n### Usage\n\nPlease note that this project is used for educational purposes and is not intended to be used commercially. We are not liable for any damages/changes done by this project.\n\n### Credits\n\nEmilio Kartono, who made the entire project.\n\nCLI images were provided by <https://ray.so/>.\n\n### License\n\nThis project is protected under the GNU licence. Please refer to the root project's LICENSE.txt for more information.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": null,
    "version": "0.1.9",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ce2717a04a0270f532063bc48a49e7a224722f887b1f3beca18889bb3e21befa",
                "md5": "c91ec6bc4683747e7033066ed55366da",
                "sha256": "6c7514617d13cfbffd3b22fae7ff58ee2b06751134f8498c93dc9017e7b39f57"
            },
            "downloads": -1,
            "filename": "sharded_photos_drive_cli_client-0.1.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c91ec6bc4683747e7033066ed55366da",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.13",
            "size": 62215,
            "upload_time": "2025-01-21T00:45:52",
            "upload_time_iso_8601": "2025-01-21T00:45:52.705857Z",
            "url": "https://files.pythonhosted.org/packages/ce/27/17a04a0270f532063bc48a49e7a224722f887b1f3beca18889bb3e21befa/sharded_photos_drive_cli_client-0.1.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9b94897e632ddcf37b4266a0b52f7f4c5765a144b6490ae8bc43622097ec330a",
                "md5": "10f23333eff213ff6f63b5733de8b63e",
                "sha256": "e84ffbabe09473246f4596fa88b86fdb148ddd17a90a2dcae12ae6e4d9e8b407"
            },
            "downloads": -1,
            "filename": "sharded_photos_drive_cli_client-0.1.9.tar.gz",
            "has_sig": false,
            "md5_digest": "10f23333eff213ff6f63b5733de8b63e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.13",
            "size": 41989,
            "upload_time": "2025-01-21T00:45:55",
            "upload_time_iso_8601": "2025-01-21T00:45:55.788881Z",
            "url": "https://files.pythonhosted.org/packages/9b/94/897e632ddcf37b4266a0b52f7f4c5765a144b6490ae8bc43622097ec330a/sharded_photos_drive_cli_client-0.1.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-21 00:45:55",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "sharded_photos_drive_cli_client"
}
        
Elapsed time: 2.56052s