KODI addon structure

master
Бородин Роман 2019-05-07 19:55:11 +03:00
parent 284a2cd01a
commit 34b5af6214
8 changed files with 27 additions and 11 deletions

14
addon.xml 100644
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="script.module.tinybt" name="tinybt" version="0.9.0" provider-name="inpos">
<requires>
<import addon="xbmc.python" version="2.25.0"/>
</requires>
<extension point="xbmc.python.module" library="lib"/>
<extension point="xbmc.addon.metadata">
<platform>all</platform>
<language>en_GB ru_RU</language>
<summary lang="en_GB">tiny Bittorrent client</summary>
<description lang="en">Implementation of the Bittorrent and Mainline DHT protocol for Distributed Computing applications</description>
<email>roman@ukamnya.ru</email>
<source>https://git.ukamnya.ru/roman/script.module.tinybt</source></extension>
</addon>

View File

View File

@ -23,15 +23,16 @@ THE SOFTWARE.
""" """
import os, time, socket, hashlib, hmac, threading, logging, random, inspect import os, time, socket, hashlib, hmac, threading, logging, random, inspect
from bencode import bencode, bdecode from bencode import bdecode
from utils import encode_uint32, encode_ip, encode_connection, encode_nodes, AsyncTimeout from lib.tinybt import bencode.bencode
from utils import decode_uint32, decode_ip, decode_connection, decode_nodes, start_thread, ThreadManager from lib.tinybt.utils import encode_uint32, encode_ip, encode_connection, encode_nodes, AsyncTimeout
from krpc import KRPCPeer, KRPCError from lib.tinybt.utils import decode_uint32, decode_ip, decode_connection, decode_nodes, start_thread, ThreadManager
from lib.tinybt.krpc import KRPCPeer, KRPCError
# BEP #0042 - prefix is based on ip and last byte of the node id - 21 most significant bits must match # BEP #0042 - prefix is based on ip and last byte of the node id - 21 most significant bits must match
# * ip = ip address in string format eg. "127.0.0.1" # * ip = ip address in string format eg. "127.0.0.1"
def bep42_prefix(ip, crc32_salt, first_node_bits): # first_node_bits determines the last 3 bits def bep42_prefix(ip, crc32_salt, first_node_bits): # first_node_bits determines the last 3 bits
from crc32c import crc32c from lib.tinybt import crc32c.crc32c
ip_asint = decode_uint32(encode_ip(ip)) ip_asint = decode_uint32(encode_ip(ip))
value = crc32c(bytearray(encode_uint32((ip_asint & 0x030f3fff) | ((crc32_salt & 0x7) << 29)))) value = crc32c(bytearray(encode_uint32((ip_asint & 0x030f3fff) | ((crc32_salt & 0x7) << 29))))
return (value & 0xfffff800) | ((first_node_bits << 8) & 0x00000700) return (value & 0xfffff800) | ((first_node_bits << 8) & 0x00000700)

View File

@ -23,8 +23,9 @@ THE SOFTWARE.
""" """
import socket, threading, logging import socket, threading, logging
from bencode import bencode, bdecode, BTFailure from bencode import bdecode, BTFailure
from utils import client_version, AsyncResult, AsyncTimeout, encode_uint64, UDPSocket, ThreadManager from lib.tinybt import bencode.bencode
from lib.tinybt.utils import client_version, AsyncResult, AsyncTimeout, encode_uint64, UDPSocket, ThreadManager
krpc_version = bytes(client_version[0] + bytearray([client_version[1], client_version[2]])) krpc_version = bytes(client_version[0] + bytearray([client_version[1], client_version[2]]))

View File

@ -23,10 +23,10 @@ THE SOFTWARE.
""" """
import sys, socket, random import sys, socket, random
from bencode import bdecode from lib.tinybt.bencode import bdecode
from utils import UDPSocket, encode_int32, decode_connection from lib.tinybt.utils import UDPSocket, encode_int32, decode_connection
from utils import encode_ip, encode_uint64, encode_uint32, encode_uint16 from lib.tinybt.utils import encode_ip, encode_uint64, encode_uint32, encode_uint16
from utils import decode_ip, decode_uint64, decode_uint32 from lib.tinybt.utils import decode_ip, decode_uint64, decode_uint32
class TrackerException(Exception): class TrackerException(Exception):
pass pass