Simple bencode parser (for Python 2, Python 3 and PyPy), forked from the bencode package by Thomas Rampelberg.
Encode:
>>> import bencodepy
>>> bencodepy.encode({'title': 'Example'})
b'd5:title7:Examplee'
>>> bencodepy.encode(12)
b'i12e'
Decode:
>>> import bencodepy
>>> bencodepy.decode('d5:title7:Examplee')
{b'title': b'Example'}
>>> bencodepy.decode('i12e')
12
Decode to UTF-8:
>>> import bencodepy
>>> bc = bencodepy.Bencode(
encoding='utf-8'
)
>>> bc.decode('d5:title7:Examplee')
{'title': 'Example'}
(legacy, backwards-compatible package)
This package will continue to be provided for backwards-compatibility, but upgrading to bencodepy
is recommended for more reliable decoding results.
Under-the-hood this just provides proxies to a Bencode
instance created with:
Bencode(
encoding='utf-8',
encoding_fallback='value',
dict_ordered=True,
dict_ordered_sort=True
)
Encode:
>>> import bencode
>>> bencode.encode({'title': 'Example'})
'd5:title7:Examplee'
>>> bencode.encode(12)
'i12e'
Decode:
>>> import bencode
>>> bencode.decode('d5:title7:Examplee')
OrderedDict([(u'title', u'Example')])
>>> bencode.decode('i12e')
12
bencodepy.Bencode(encoding=None, encoding_fallback=None, dict_ordered=False, dict_ordered_sort=False)
Create instance
- encoding
- Encoding to decode strings with (or
None
for binary)
- encoding_fallback
- Fallback to binary when decoding fails on the specified string types.
key
- dictionary keysvalue
- valuesall
- always fallback to binaryNone
- always raise decoding errors
- dict_ordered
- Use
OrderedDict
- dict_ordered_sort
- Ensure
OrderedDict
is sortedMethods:
decode(value)
- Decode bencode string
value
.
encode(value)
- Encode
value
into a bencode string.
read(fd)
- Decode bencode from file or path
fd
.
write(data, fd)
- Encode
data
to file or pathfd
.
bencodepy.BencodeDecoder(encoding=None, encoding_fallback=None, dict_ordered=False, dict_ordered_sort=False)
Create decoder
- encoding
- Encoding to decode strings with (or
None
for binary)
- encoding_fallback
- Fallback to binary when decoding fails on the specified string types.
key
- dictionary keysvalue
- valuesall
- always fallback to binaryNone
- always raise decoding errors
- dict_ordered
- Use
OrderedDict
- dict_ordered_sort
- Ensure
OrderedDict
is sortedMethods:
decode(value)
- Decode bencode string
value
.
bencodepy.BencodeEncoder()
Create encoder
Methods:
encode(value)
- Encode
value
into a bencode string.
bencodepy.bencode(value)
bencodepy.encode(value)
Encode value
into a bencode string with the default encoder.
bencodepy.bdecode(value)
bencodepy.decode(value)
Decode bencode string value
with the default decoder.
bencodepy.bread(fd)
Decode bencode from file or path fd
with the default decoder.
bencodepy.bwrite(data, fd)
Encodedata
to file or pathfd
with the default encoder.
bencode.bencode(value)
bencode.encode(value)
Encode value
into the bencode format.
bencode.bdecode(value)
bencode.decode(value)
Decode bencode formatted string value
.
bencode.bread(fd)
Read bencode formatted string from file or path fd
.
bencode.bwrite(data, fd)
Writedata
as a bencode formatted string to file or pathfd
.