def magnetToTorrent(self, magnet): session = libtorrent.session() session.start_dht() session.add_dht_router("router.bittorrent.com", 6881) session.add_dht_router("router.utorrent.com", 6881) session.add_dht_router("router.bitcomet.com", 6881) session.listen_on(6881, 6891) session.set_alert_mask(libtorrent.alert.category_t.storage_notification) handle = libtorrent.add_magnet_uri(session, magnet, {'save_path': self.storageDirectory, 'storage_mode': libtorrent.storage_mode_t(2)}) iterator = 0 progressBar = xbmcgui.DialogProgress() progressBar.create('Подождите', 'Идёт преобразование magnet-ссылки.') while not handle.has_metadata(): time.sleep(0.1) progressBar.update(iterator) iterator += 1 if iterator == 100: iterator = 0 if progressBar.iscanceled(): progressBar.update(0) progressBar.close() return progressBar.update(0) progressBar.close() torrent = libtorrent.create_torrent(handle.get_torrent_info()) torentFile = open(self.torrentFile, "wb") torentFile.write(libtorrent.bencode(torrent.generate())) torentFile.close() session.remove_torrent(handle)
def startSession(self, contentId=0): selectedFileInfo = self.getContentList()[contentId] self.startPart = selectedFileInfo.offset / self.torrentFileInfo.piece_length( ) self.endPart = (selectedFileInfo.offset + selectedFileInfo.size ) / self.torrentFileInfo.piece_length() self.session = libtorrent.session() self.session.start_dht() self.session.add_dht_router("router.bittorrent.com", 6881) self.session.add_dht_router("router.utorrent.com", 6881) self.session.add_dht_router("router.bitcomet.com", 6881) self.session.listen_on(6881, 6891) self.session.set_alert_mask( libtorrent.alert.category_t.storage_notification) self.torrentHandle = self.session.add_torrent({ 'ti': self.torrentFileInfo, 'save_path': self.storageDirectory, 'storage_mode': libtorrent.storage_mode_t(2) }) for i in range(self.torrentFileInfo.num_pieces()): self.torrentHandle.piece_priority(i, 0) for i in range(self.startPart, self.startPart + self.partOffset): if i <= self.endPart: self.torrentHandle.piece_priority(i, 7) self.torrentHandle.set_sequential_download(True) thread.start_new_thread(self.downloadProcess, (contentId, ))
def magnetToTorrent(self, magnet): session = libtorrent.session() session.start_dht() session.add_dht_router("router.bittorrent.com", 6881) session.add_dht_router("router.utorrent.com", 6881) session.add_dht_router("router.bitcomet.com", 6881) session.listen_on(6881, 6891) session.set_alert_mask( libtorrent.alert.category_t.storage_notification) handle = libtorrent.add_magnet_uri( session, magnet, { 'save_path': self.storageDirectory, 'storage_mode': libtorrent.storage_mode_t(2) }) iterator = 0 progressBar = xbmcgui.DialogProgress() progressBar.create('Подождите', 'Идёт преобразование magnet-ссылки.') while not handle.has_metadata(): time.sleep(0.1) progressBar.update(iterator) iterator += 1 if iterator == 100: iterator = 0 if progressBar.iscanceled(): progressBar.update(0) progressBar.close() return progressBar.update(0) progressBar.close() torrent = libtorrent.create_torrent(handle.get_torrent_info()) torentFile = open(self.torrentFile, "wb") torentFile.write(libtorrent.bencode(torrent.generate())) torentFile.close() session.remove_torrent(handle)
def startSession(self, contentId=0): selectedFileInfo = self.getContentList()[contentId] self.startPart = selectedFileInfo.offset / self.torrentFileInfo.piece_length() self.endPart = (selectedFileInfo.offset + selectedFileInfo.size) / self.torrentFileInfo.piece_length() self.session = libtorrent.session() self.session.start_dht() self.session.add_dht_router("router.bittorrent.com", 6881) self.session.add_dht_router("router.utorrent.com", 6881) self.session.add_dht_router("router.bitcomet.com", 6881) self.session.listen_on(6881, 6891) self.session.set_alert_mask(libtorrent.alert.category_t.storage_notification) self.torrentHandle = self.session.add_torrent( { "ti": self.torrentFileInfo, "save_path": self.storageDirectory, "storage_mode": libtorrent.storage_mode_t(2), } ) for i in range(self.torrentFileInfo.num_pieces()): self.torrentHandle.piece_priority(i, 0) for i in range(self.startPart, self.startPart + self.partOffset): if i <= self.endPart: self.torrentHandle.piece_priority(i, 7) self.torrentHandle.set_sequential_download(True) thread.start_new_thread(self.downloadProcess, (contentId,))