Skip to main content

pyquickshare

Ruff logo GitHub Actions Workflow Status GitHub Actions Workflow Status Coveralls

An asynchronous Python implementation of the Android Quick Share (Nearby Share) protocol

System requirements

pyquickshare has following expectations from the system:

  • some mDNS implementation (avahi, systemd-resolved, etc.)
  • Bluetooth stack using BlueZ reachable via D-Bus

As these are de-facto standards on Linux, pyquickshare should work on most Linux distributions.

Firewalls

As Quick Share uses a direct connection between devices, it is necessary to allow incoming connections on the advertised port. firewalld is supported out of the box (but not required).

pyquickshare temporarily reconfigures firewalld (if available) to accept an incoming connection on it's advertised port. This is done by adding a temporary rule to the currently "active" zone. This rule is automatically removed by firewalld after 5 minutes.

Communication with firewalld is done over D-Bus, polkit may prompt for authentication.

Installation

pip install pyquickshare

# or, to install with extras (QR code support)
pip install pyquickshare[extras]

Features

Receive is fully implemented, namely WiFi credentials, files, and text. Sending only supports files, but support for sending text and WiFi credentials is planned.

Transfer

Only LAN/Wifi is supported at the moment, but Bluetooth is planned.

Discovery

pyquickshare uses mDNS to discover other devices on the local network. BLE is only used to trigger advertisment at the moment.

Usage

example.py is a basic example of how to use pyquickshare. It provides a command line interface to send and receive files using Quick Share:

uv run example.py receive
uv run example.py send <file>

Notes and Acknowledgements

  • The code in pyquickshare/protos is generated from protobuf sources licensed under Apache 2.0. As a derivative work, these generated files remain under the original Apache 2.0 license. A copy of the original license can be found in the pyquickshare/protos directory.

  • This project would not have been possible without the amazing reverse engineering work done by grishka on the Quick Share protocol. Check out NearDrop, a similar project for Mac OS.

  • WiFi-Direct: While according to Google's Nearby documentation and the protobuf fields WiFi-Direct is supposed to be an available medium, it seems that Quick Share does not use it. It more likely uses WiFi-Aware which isn't widely supported outside of Android devices.

Metadata

Release files for pyquickshare 0.1.0.post1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyquickshare 0.1.0.post1
File Size Uploaded Provenance Actions
pyquickshare-0.1.0.post1.tar.gz 92.7 kB Without provenance Details for pyquickshare-0.1.0.post1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pyquickshare 0.1.0.post1
File Interpreter ABI Platform Actions
pyquickshare-0.1.0.post1-py3-none-any.whl Python 3 none any Details for pyquickshare-0.1.0.post1-py3-none-any.whl

Total release size: 163.9 kB

Release files / pyquickshare-0.1.0.post1.tar.gz

Download URL pyquickshare-0.1.0.post1.tar.gz
Size 92.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4c8b52686eea64f198fe8384b6e8f14f5a86a5f62919824b8d86ba9b5cbad7d5
BLAKE2b-256 checksum
How to use checksums
3ffd9f795c879865ea2a79caf30a5990baae7f0270826c9a797e5ee606d91b11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.5

Release files / pyquickshare-0.1.0.post1-py3-none-any.whl

Download URL pyquickshare-0.1.0.post1-py3-none-any.whl
Size 71.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d07f3f3f01986b1bc298117943d4119a2979c10a27dc76653be34c889e3455f4
BLAKE2b-256 checksum
How to use checksums
e55bfa1d253dcb4f15597e93a15d76c43dc3a076516615d196fb568842f0d817
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.5

Security for pyquickshare 0.1.0.post1

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.

Release history Release notifications | RSS feed

This release

0.1.0.post1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page