Пример #1
0
async def download(torrent_file: str, download_location: str):
    """
    Download coroutine to start a download by accepting a torrent file and download location
    :param torrent_file: torrent file to be downloaded
    :param download_location: location to download it to
    """
    torrent = Torrent(torrent_file)

    torrent_writer = FileSaver(download_location, torrent)
    session = DownloadSession(
        torrent, torrent_writer.get_received_pieces_queue())  # FILESAVER

    done_pieces = 0

    while done_pieces < torrent.number_of_pieces:
        await torrent.get_peers()
        peers_info = list(set(torrent.peers))

        seen_peers = set()
        peers = [Peer(session, host, port) for host, port in peers_info]
        seen_peers.update([str(p) for p in peers])

        print('[Peers]: {} {}'.format(len(seen_peers), seen_peers))
        for peer in peers:
            peer.inflight_requests = 0

        print("STARTING")
        await (asyncio.gather(*[peer.download() for peer in peers]))

        print("received", len(session.received_pieces))

        print("progress", len(session.pieces_in_progress))
        pprint(session.pieces_in_progress)

        print("resetting session.pieces_in_progress")
        session.pieces_in_progress = {}

        print("alive peers")
        peers = [peer for peer in peers if peer.have_pieces is not None]

        print("bitfields")
        pprint([(peer, peer.have_pieces) for peer in peers])

        done_pieces = len(session.received_pieces)
        print("Done pieces:", done_pieces)
        print("RESTARTING")

    return True
Пример #2
0
async def download(t_file : str, download_loc : str, loop=None):
    '''Entry point for client, initializes `Peers` and `DownloadSession` according to 
    configureation present in `t_file` which is the .torrent file and saves the 
    downloaded file to `download_loc` directory'''

    torrent = Torrent(t_file)
    LOG.info('Torrent : {}'.format(torrent))

    torrent_writer = FileSaver(download_loc, torrent) 
    session = DownloadSession(torrent, torrent_writer.get_received_blocks_queue())

    tracker = Tracker(torrent) # implement Tracker class
    peer_info = await tracker.get_peers()

    seen_peers = set()
    peers = [Peer(session, host, port) for host, port in peer_info]
    seen_peers.update([str(p) for p in peers])
    LOG.info('Peers : {}'.format(seen_peers))

    asyncio.gather([peer.download() for peer in peers])
Пример #3
0
def parse():
    car_parser = CarParser()
    url = input(
        'Введите URL с сайта auto.ria.com из раздела новые автомобили:')
    url = url.strip()
    html = car_parser.get_html(url)
    if html.status_code != 200:
        print('Error')
        return

    pages_count = car_parser.get_pages_count(html.text)
    soup = BeautifulSoup(html.text, 'html.parser')
    mark = car_parser.get_mark(soup)
    saver = FileSaver(mark)
    for page in range(1, pages_count + 1):
        print(f'Парсинг страницы {page} из {pages_count}...')
        html = car_parser.get_html(url, params={'page': page})
        soup = BeautifulSoup(html.text, 'html.parser')
        for new_car in car_parser.get_content(soup):
            saver.save(new_car, mark)

    print(f'Файл записан')
Пример #4
0
async def download(torrent_file, download_path):
    torrent_info = TorrentInfo.from_file(torrent_file,
                                         download_dir=download_path)
    download_info: DownloadInfo = torrent_info.download_info
    tracker = Tracker(torrent_info)

    files = [
        download_info.files[0],
    ]  # download first file

    received_pieces_queue = asyncio.Queue()
    download_info.select_files(files)
    file_writer = FileSaver(torrent_info, files[0], received_pieces_queue)

    peers_info = await tracker.request_peers()

    sessions = list()
    for peer in peers_info:
        session = DownloadSession(torrent_info, received_pieces_queue, peer)
        sessions.append(session)

    await asyncio.gather(*[session.download() for session in sessions])
Пример #5
0
 def saveFile(self, text):
     self._isTextUnsave = False
     fileSaver = FileSaver(self._currentFileLocation, text)
     fileSaver.save()
Пример #6
0
    def test_file_saving(self):
        Fs = FileSaver()
        res = Fs.save_file("test.json", b"abc")

        path = pl.Path("data_dump/test.json")
        self.assertIsFile(path)
 def __init__(self):
     self.filesaver = FileSaver()
     self.pm = PredictionManager()
     logging.debug("Initialised periodic prediction saver")
     self.pp = PredictionPlotter()
Пример #8
0
 def save(self, py_object):
     time_path = datetime.datetime.now().strftime("%y_%m_%d/%H_%M_%S")
     fs = FileSaver(os.path.join(self._folder_path,
                                 time_path), self._file_path,
                    self._file_extension, self._save_method)
     return fs.save(py_object)
Пример #9
0
    parser.add_argument('-S', help="The strategy to be used")
    parser.add_argument('input_file',
                        help="The input file containing the SAT problem")

    # Parse the arguments
    arguments = parser.parse_args()

    if not arguments.input_file:
        raise Exception("Invalid input file")

utils.lambda_value = 0.45
utils.beta_value = 0.5

split_method = SplitMethod.DEFAULT
if arguments.S == "2":
    split_method = SplitMethod.MOM
elif arguments.S == "3":
    split_method = SplitMethod.TK

formula = Formula(Operation.AND)
formula.add_elements_from_file(arguments.input_file)

sat_solver = SatSolver(formula, split_method)
solved, values = sat_solver.solve()

output_file_name = f'{arguments.input_file}.out'
file_saver = FileSaver()
if solved:
    file_saver.save_values_in_dimacs(values, output_file_name)
else:
    file_saver.save_values_in_dimacs({}, output_file_name)
 def __init__(self):
     self.filesaver = FileSaver()