Skip to main content

A Python wrapper and CLI for the Files.VC API, designed to upload, download, and manage files efficiently.

Project description

Files.VC Python Library

An Unofficial Python wrapper and CLI tool for the Files.VC API, designed to download, upload, and manage files efficiently.

Features

  • Command-Line Interface (CLI) – Manage files directly from the terminal.
  • Python Library – Easily embed files_vc into your Python programs.
  • Beautiful Output – Using the tabulate library, provides a well-formatted table for file information.
  • Progress Tracking – Shows real-time progress for uploads and downloads.
  • Dynamic Progress Bar – In CLI mode, displays terminal size based progress bar with speed, remaining time, and elapsed time.
  • Error Handling – Graceful handling of network failures and interruptions.
  • Cross-Platform – Works on Windows, macOS, and Linux.

Installation

Install the package from PyPI:

python3 -m pip install Files-VC -U

Ensure you have Python 3.7 or later.


Using Files-VC as a Command Line Interface

Once installed, you can use the files-vc command to interact with the files.vc API.

files-vc --help

Use the -h/--help flag with any command to see the available options for that specific command.

file-vc <command> --help

Usage

files-vc <command> <positional_arguments> [options]

Available Commands & Arguments

  • Common options:
    • -h/--help: Display help
    • -v/--version: Display version information
    • -t/--tablefmt: Set File info output format
  • info: Get file information by file hash or URL
  • list: List all files for a given account ID
  • check: Check if a file already exists on the server
  • download/dl: Download a file using its hash or URL
    • -s/--save: Specify the folder path to save the downloaded file
  • upload/ul: Upload a file to the server
    • -a/--account_id: Specify the account ID to upload the file

You can customize table output format using the -t/--tablefmt option, which supports formats like plain, grid, etc. Check out the Tabulate README for a list of available formats and more details.

"This option must be used before the command."

files-vc --tablefmt grid <command> <args>

Examples

# Get file info
files-vc info <file_hash_or_url>
# List files for an account
files-vc list <account_id>
# Check if a file exists on the server
files-vc check /path/to/file
# Download a file (with optional save location)
files-vc download <file_hash_or_url> --save /path/to/save/location
# Upload a file (with optional account ID)
files-vc upload /path/to/file --account_id <account_id>

[!NOTE] After uploading, it may take a few seconds (depending on the file size) to display the file info, so please be patient. This is because the server takes some time to send a response.


Using Files-VC in Python Programs

You can also embed Files-VC directly into your Python code:

from files_vc import FilesVC

files_vc = FilesVC()

# Get file info
file_info = files_vc.get_file_info(file_hash="your_file_hash")
print(file_info.name, file_info.size)

# List files
files = files_vc.list_files(account_id="your_account_id")
for file in files:
    print(file.name, file.download_url)

# Check if a file exists
file_info = files_vc.check_file(file_path="/path/to/file")
print(file_info)

# Upload a file
message, file_info = files_vc.upload_file("/path/to/file", account_id="your_account_id")
print(message, file_info.view_url)

# Download a file
downloaded_path = files_vc.download_file(file_hash="your_file_hash", save_path="/path/to/save")
print(f"File saved at {downloaded_path}")

[!TIP] Always verify if the file already exists on the server using the FilesVC().check_file(file_path} function before uploading it. This will reduce unwanted bandwidth usage. Check the __main__.py file for reference/ideas.

API Reference

Each class and function includes a docstring. For more details, refer to it.

FilesVC

The core class for interacting with the files.vc API.

Methods

  • get_file_info(file_hash: str, ...) -> FileInfo: Get information about a file. (Docstring)
  • list_files(account_id: str) -> list[FileInfo]: Retrieve a list of files for an account. (Docstring)
  • check_file(file_path: str, ...) -> FileInfo | None: Check if a file already exists on the server. (Docstring)
  • download_file(file_hash: str, save_path: str, ...) -> str: Download a file by hash. (Docstring)
  • upload_file(file_path: str, account_id: str, ...) -> tuple[str, FileInfo]: Upload a file to the server. (Docstring)

[!TIP] The check_file, download_file, and upload_file functions include progress and progress_args parameters, which allow you to customize the progress. Check the __main__.py file for reference/ideas.

FileInfo

Represents metadata for a file.

  • name: File name
  • file_hash: MD5 hash of the file
  • size: File size in bytes
  • upload_time: Time the file was uploaded
  • mime_type: File's MIME type
  • download_count: Number of downloads
  • view_url: URL to view the file
  • download_url: URL to download the file
  • expiration_time: Expiration time (if any)

Exception

  • FilesVCException: Custom exception for handling errors related to files.vc API operations.
  • HTTPError: Exception raised when there is an HTTP error. (Same as requests.exceptions.HTTPError)
  • And other exceptions from the requests library.

TODO

  • Creating tests – Unit and integration tests for core functions.
  • Creating documentation – Generate API documentation for better developer experience.

Contributing

Contributions are welcome! Please open an issue or submit a pull request with your improvements.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

With ❤️ Made By @Sasivarnasarma

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

files_vc-1.0.1.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

files_vc-1.0.1-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file files_vc-1.0.1.tar.gz.

File metadata

  • Download URL: files_vc-1.0.1.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for files_vc-1.0.1.tar.gz
Algorithm Hash digest
SHA256 738e813b9ce7e595213c57fff86c3ecbaa9de9723a6f1ea62e303cc7915ddec2
MD5 41b49afd84e8e9d33675dadb279a8832
BLAKE2b-256 86cb02f5b3729023cfb7ea5cc078cdf8f278e3d4f4b06db52a752ee99b89b830

See more details on using hashes here.

Provenance

The following attestation bundles were made for files_vc-1.0.1.tar.gz:

Publisher: python-publish.yml on Sasivarnasarma/Files-VC

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file files_vc-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: files_vc-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for files_vc-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 95faa50a6d7259c8c14ebfaab1524a8e134dac42bf0d4e75e16de626eab19304
MD5 70e6bafc93d5ef3a6355650fd02c92c3
BLAKE2b-256 11ad34e66f8273a5f8ce0daef99c71638b63f7ace988829fb8a47cd0d823611c

See more details on using hashes here.

Provenance

The following attestation bundles were made for files_vc-1.0.1-py3-none-any.whl:

Publisher: python-publish.yml on Sasivarnasarma/Files-VC

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page