Skip to content

bashkirtsevich-llc/py3bencode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python 3 bencoding library

Build Status

Python 3 bytearray bencoding library.

Encode all data into byte. Useful for networking.

Example

>>> from bencode import bencode, bdecode


>>> foo = bencode({"foo": [0, -1, 2, "3", {"4": 5}], "bar": {"baz": 1}})
>>> print(foo)
b'd3:bard3:bazi1ee3:fooli0ei-1ei2e1:3d1:4i5eeee'

>>> bar = bdecode(foo)
>>> print(bar)
{b'bar': {b'baz': 1}, b'foo': [0, -1, 2, b'3', {b'4': 5}]}

decoder for bdecode

Optional argument in bdecode function, provide decode bytes to another types. It can be helpful for decode dict key into strings.

decoder is a callback function with arguments: field_type, value

  • field_type str, possible values: "key", "value";
  • value bytes.
>>> def custom_decoder(field_type, value):
...     if field_type == "key":
...         return str(value, "ascii")
...     elif field_type == "value":
...         return str(value, "utf-8")
...     else:
...         raise Exception("'field_type' can pass only 'key' and 'value' values")
...     

>>> bar = bdecode(foo, decoder=custom_decoder)
>>> print(bar)
{'bar': {'baz': 1}, 'foo': [0, -1, 2, '3', {'4': 5}]}