Airshare is a Python-based CLI tool and module that lets you transfer data between two machines in a local network, P2P, using Multicast-DNS. It also opens an HTTP gateway for other non-CLI external interfaces. It works completely offline! Built with aiohttp and zeroconf.
-
Blazing fast content transfer within a local network.
-
Lets you transfer plain text, send from or receive into your clipboard.
-
Supports transfer of multiple files, directories and large files - content is sent chunk by chunk and never read into memory entirely.
-
Lets you send files whose paths have been copied into the clipboard (more details in the docs).
-
Cross-platform, works on Linux, Windows and Mac (CLI and Web Interface), and also supports mobile (Web Interface).
-
Uses Multicast-DNS service registration and discovery - so you can access content with human-readable code words.
-
Can be used as a module in other Python programs.
Source Code: https://github.com/KuroLabs/Airshare
Bug Reports: https://github.com/KuroLabs/Airshare/issues
Documentation: https://airshare.rtfd.io
PyPI: https://pypi.org/project/Airshare
Use the package manager pip to install Airshare.
$ pip install Airshare
If you have a non-Apple device, consider installing Avahi (for Linux) or Bonjour (for Windows) if you'd like to use Link-local Name Resolution (for the .local
addresses).
Send and receive files and directories.
To send using the CLI,
$ airshare noobmaster requirements.txt
To receive using the CLI,
$ airshare noobmaster
or visit http://noobmaster.local
in the browser to download.
You can also import airshare
in any Python program. Visit the documentation for detailed usage instructions.
-
Link-local Name Resolution (for the
.local
addresses) on non-Apple devices requires Avahi (on Linux) or Bonjour (on Windows). Chances are you already have them, but if you don't, do check the web on how to install them. -
Link-local Name Resolution does not work on Android phones. This is because Android browsers do not have inbuilt Multicast-DNS service discovery.
-
Multiple progress bars for concurrent file uploads using
tqdm
may not work as intended on some terminals, refer to thetqdm
documentation for more details. -
Using Ctrl + C on Windows, with Python < 3.8, does not terminate the
asyncio
event loop. Use Ctrl + Break instead. If you do not have a Break or Pause key, some other combinations may work including Ctrl + Fn + B (check the web for solutions).
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
MIT - Copyright (c) 2020 Kandavel A, Mohanasundar M, Nanda H Krishna
The Airshare logo was designed by Siddique.
The Airshare GIF was created by Anam Saatvik.