Skip to main content

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

Project description

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.

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

pyquickshare-0.1.0.post1.tar.gz (92.7 kB view details)

Uploaded Source

Built Distribution

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

pyquickshare-0.1.0.post1-py3-none-any.whl (71.2 kB view details)

Uploaded Python 3

File details

Details for the file pyquickshare-0.1.0.post1.tar.gz.

File metadata

  • Download URL: pyquickshare-0.1.0.post1.tar.gz
  • Upload date:
  • Size: 92.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.5

File hashes

Hashes for pyquickshare-0.1.0.post1.tar.gz
Algorithm Hash digest
SHA256 4c8b52686eea64f198fe8384b6e8f14f5a86a5f62919824b8d86ba9b5cbad7d5
MD5 c619a2cc008459cc280e7b03ea7e519a
BLAKE2b-256 3ffd9f795c879865ea2a79caf30a5990baae7f0270826c9a797e5ee606d91b11

See more details on using hashes here.

File details

Details for the file pyquickshare-0.1.0.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for pyquickshare-0.1.0.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 d07f3f3f01986b1bc298117943d4119a2979c10a27dc76653be34c889e3455f4
MD5 d288968d532e7e4b43359bba5986fff7
BLAKE2b-256 e55bfa1d253dcb4f15597e93a15d76c43dc3a076516615d196fb568842f0d817

See more details on using hashes here.

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