Quick n' dirty torrent streaming with libtorrent and python
Project description
Libtorrent made easy
This is pythonic high-level libtorrent API, inspired on the for-humans trend set by Kenneth Reitz (https://github.com/not-kennethreitz).
TorrentStream is centered around the principle of streaming a torrent (sequential download, buffering and playing).
TorrentStream exposes a CLI command, intended as an example usage.
Torrent objects are context managers that can clean up torrent content after you finish using them.
add_torrent method of a TorrentSession returns a Torrent object, thus can be used directly as a context manager.
async def stream_torrent(hash_torrent):
session = TorrentSession()
# By default this will cleanup torrent contents after playing
with session.add_torrent(magnet_link=hash_torrent, remove_after=True) as torrent:
# Force sequential mode
torrent.sequential(True)
# Wait for torrent to be started
await torrent.wait_for('started')
# Get first match of a media file
try:
media = next(a for a in torrent
if a.is_media and not 'sample' in a.path.lower())
except StopIteration:
raise Exception('Could not find a playable source')
with timeout(5 * 60): # Abort if we can't fill 5% in 5 minutes
await media.wait_for_completion(5)
return await asyncio.gather(media.wait_for_completion(100),
media.launch())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
torrentstream-0.2.1.tar.gz
(5.7 kB
view hashes)
Built Distribution
Close
Hashes for torrentstream-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85c739cd974eb5e737789687d8ed252c17079f7a28eb72109ad1395874c4ce2c |
|
MD5 | 7c35f377394594d537ab7810676d4375 |
|
BLAKE2b-256 | b97a6c3b7c38151d14a15150cfec821cd388554a70d81913a2090feaafd95215 |