Skip to content

Latest commit

 

History

History
135 lines (100 loc) · 6.4 KB

File metadata and controls

135 lines (100 loc) · 6.4 KB

release tests Coverage Status GitHub Downloads (all assets, all releases) PyPI - Downloads

English / Russian

Что это?

Небольшой проект с одной основной функцией - скачивание видео с RuTube.

Как пользоваться?

Графический пользовательский интерфейс

screen_cast.gif

Консольный интерфейс

  1. Установить библиотеку
pip install async_rutube_downloader
  1. Запустить
rtube-cli https://rutube.ru/video/365ae8f40a2ffd2a5901ace4db799de7/

  • rtube-cli --help вывод
❯ rtube-cli
usage: rtube-cli [-h] [-o] [-q] [-v] [-f] [-d] [url]

Эта утилита командной строки позволяет загружать видео с Rutube.
 - Вы можете загрузить одно видео или несколько видео, указав файл с URL.
 - По умолчанию видео из файла будут загружаться в наилучшем доступном качестве.

positional arguments:
  url                URL или ID Rutube видео

options:
  -h, --help         show this help message and exit
  -o , --output      Каталог вывода (по умолчанию: текущий каталог)
  -q, --quality      Выберите качество видео в интерактивном режиме
  -v, --version      show program's version number and exit

Загрузить несколько видео:
  -f , --file        Путь до файла с ссылками
  -d , --delimiter   Разделитель между ссылками в файле (по умолчанию: \n)

Usage examples:
 - Download single video:
      [rtube-cli] 365ae8f40a2ffd2a5901ace4db799de7
      [rtube-cli] https://rutube.ru/video/365ae8f40a2ffd2a5901ace4db799de7/
      [rtube-cli] https://rutube.ru/video/365ae8f40a2ffd2a5901ace4db799de7/ -q
 - Download multiple videos:
      [rtube-cli] -f ~/path/to/file1.txt
      [rtube-cli] -f ~/path/to/file2.txt -d ,

Использование в коде

  1. Установить библиотеку
pip install async_rutube_downloader
  1. Пример загрузки видео из кода.

qualities Это кортеж, например: ((1280, 720), (1920,1080))

  • Использование в асинхронном коде
import asyncio
from async_rutube_downloader.rutube_downloader import RutubeDownloader


async def download():
    downloader = RutubeDownloader(
        "https://rutube.ru/video/365ae8f40a2ffd2a5901ace4db799de7/"
    )
    qualities = await downloader.fetch_video_info()
    await downloader.select_quality(max(qualities))
    await downloader.download_video()

asyncio.run(download())
  • Использование в синхронном коде
import asyncio
from async_rutube_downloader.rutube_downloader import RutubeDownloader


loop = asyncio.new_event_loop()
downloader = RutubeDownloader(
    "https://rutube.ru/video/365ae8f40a2ffd2a5901ace4db799de7/", loop
)
qualities = loop.run_until_complete(downloader.fetch_video_info())
loop.run_until_complete(downloader.select_quality(max(qualities)))
loop.run_until_complete(downloader.download_video())
loop.close()

О проекте

Этот проект был создан в учебных целях и был вдохновлен аналогичной синхронной библиотекой и книгой по асинхронному программированию.

Технические особенности

  • Графический пользовательский интерфейс(GUI) на TKinter.
  • Интерфейс командной строки с использованием argparse(Из стандартной библиотеки)
  • Честный прогресс бар, он отображает реальный прогресс загрузки.
  • UI и загрузка работают в разных потоках.
  • Перевод UI.
  • Асинхронная версия позволяет использовать полную скорость интернет-соединения.
  • PyInstaller используется для создания исполняемого файла

Зависимости

title description
m3u8 Используется для парсинга плейлистов
aiohttp асинхронный http клиент
aiofiles асинхронная работа с файлами
slugify Преобразование названия видео в имя файла
CustomTkinter Better TKinter UI