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')
12Decode 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')
12bencodepy.Bencode(encoding=None, encoding_fallback=None, dict_ordered=False, dict_ordered_sort=False)
Create instance
- encoding
- Encoding to decode strings with (or
Nonefor 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
OrderedDictis sortedMethods:
decode(value)- Decode bencode string
value.
encode(value)- Encode
valueinto a bencode string.
read(fd)- Decode bencode from file or path
fd.
write(data, fd)- Encode
datato 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
Nonefor 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
OrderedDictis sortedMethods:
decode(value)- Decode bencode string
value.
bencodepy.BencodeEncoder()
Create encoder
Methods:
encode(value)- Encode
valueinto 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)
Encodedatato file or pathfdwith 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)
Writedataas a bencode formatted string to file or pathfd.