bencode.py
bencode.py copied to clipboard
Simple bencode parser (for Python 2, Python 3 and PyPy)
bencode.py
.. image:: https://img.shields.io/pypi/v/bencode.py.svg?style=flat-square :target: https://pypi.python.org/pypi/bencode.py
.. image:: https://img.shields.io/travis/fuzeman/bencode.py.svg?style=flat-square :target: https://travis-ci.org/fuzeman/bencode.py
.. image:: https://img.shields.io/coveralls/fuzeman/bencode.py/master.svg?style=flat-square :target: https://coveralls.io/github/fuzeman/bencode.py
Simple bencode parser (for Python 2, Python 3 and PyPy), forked from the bencode__ package by Thomas Rampelberg.
__ https://pypi.python.org/pypi/bencode
Usage
Encode:
.. code-block:: python
>>> import bencodepy
>>> bencodepy.encode({'title': 'Example'})
b'd5:title7:Examplee'
>>> bencodepy.encode(12)
b'i12e'
Decode:
.. code-block:: python
>>> import bencodepy
>>> bencodepy.decode('d5:title7:Examplee')
{b'title': b'Example'}
>>> bencodepy.decode('i12e')
12
Decode to UTF-8:
.. code-block:: python
>>> import bencodepy
>>> bc = bencodepy.Bencode(
encoding='utf-8'
)
>>> bc.decode('d5:title7:Examplee')
{'title': 'Example'}
:code:bencode
(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:
.. code-block:: python
Bencode(
encoding='utf-8',
encoding_fallback='value',
dict_ordered=True,
dict_ordered_sort=True
)
Encode:
.. code-block:: python
>>> import bencode
>>> bencode.encode({'title': 'Example'})
'd5:title7:Examplee'
>>> bencode.encode(12)
'i12e'
Decode:
.. code-block:: python
>>> import bencode
>>> bencode.decode('d5:title7:Examplee')
OrderedDict([(u'title', u'Example')])
>>> bencode.decode('i12e')
12
API
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 keys
- ``value`` - values
- ``all`` - always fallback to binary
- ``None`` - always raise decoding errors
- dict_ordered
Use ``OrderedDict``
- dict_ordered_sort
Ensure ``OrderedDict`` is sorted
Methods:
- ``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 path ``fd``.
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 keys
- ``value`` - values
- ``all`` - always fallback to binary
- ``None`` - always raise decoding errors
- dict_ordered
Use ``OrderedDict``
- dict_ordered_sort
Ensure ``OrderedDict`` is sorted
Methods:
- ``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)
Encode ``data`` to file or path ``fd`` with the default encoder.
:code:bencode
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)
Write ``data`` as a bencode formatted string to file or path ``fd``.