예제 #1
0
파일: console.py 프로젝트: jedrz/rapidget
def download(url, path, filename):
    """Pobiera plik, korzysta z RapidWaiter i RapidDownloader"""
    waiter = rapid.RapidWaiter(url)
    threads.append(waiter)
    waiter.wait()
    overloaded = limit = busy = False
    while not waiter.done:
        if waiter.limit and not limit:
            print("Przekroczyłeś limit pobierania")
            limit = True
        if waiter.busy and not busy:
            print("Twój adres ip pobiera już pliki")
            busy = True
        if waiter.overloaded and not overloaded:
            print("Zbyt wiele użytkowników pobiera teraz pliki")
            overloaded = True
        if waiter.count > 0:
            if waiter.busy or waiter.limit or waiter.overloaded:
                _sleep(waiter.count, True)
            else:
                _sleep(waiter.count)
        else:
            time.sleep(0.3)
    print("Pobieram plik: {0}".format(filename))
    downloader = rapid.RapidDownloader(waiter.download_url, \
            os.path.join(path, filename))
    threads.append(downloader)
    downloader.download()
    # poczekaj aż plik zostanie otwarty
    while downloader.filesize == 0:
        time.sleep(0.1)
    progressbar = progbar.ProgressBar(downloader.filesize)
    progbar.cone()
    def print_progbar():
        progbar.ctwo()
        sys.stdout.write("{0}".format(progressbar))
        progbar.cthree()
    print_progbar()
    while not downloader.is_downloaded():
        progressbar.update(downloader.current_pos)
        print_progbar()
    progressbar.update(downloader.filesize)
    print_progbar()
    print("\nPlik został pobrany")
예제 #2
0
파일: console.py 프로젝트: jedrz/rapidget
def _sleep(count, delete=False):
    """Wyświetla ile jeszcze musimy czekać na pobranie pliku.
    Czyści aktualną linię i w nią wpisuje napis.
    """
    progbar.cone()
    while count >= 0:
        minutes = count / 60
        seconds = count - minutes * 60
        progbar.ctwo()
        sys.stdout.write("Oczekuję na plik jeszcze {0} minut, "
                "{1} sekund".format(minutes, seconds))
        progbar.cthree()
        count -= 1
        time.sleep(1)
    # wyczyść aktualną linię
    if delete:
        progbar.ctwo()
    else:
        print("")