Skip to main content

This project helps you to download media file.

Project description

Parallel Media Downloader

Test Test Coverage Maintainability Code Climate technical debt Updates PyPI - Python Version PyPI - Downloads Twitter URL

Helps you to download media file in parallel without async / await syntax.

Feature

This project helps you to download media files in parallel without async / await syntax.

Installation

pip install parallelmediadownloader

Usage

Minimum example:

from datetime import datetime

from parallelmediadownloader.media_download_coroutine import DownloadOrder
from parallelmediadownloader.media_file import SaveOrder
from parallelmediadownloader.parallel_media_downloader import ParallelMediaDownloader

path_directory_download = "path/directory/download"
created_date_time = datetime.now()
list_download_order = [
    DownloadOrder(
        "https://example.com/test01.png",
        SaveOrder(
            path_directory_download,
            "test01.png",
            created_date_time,
        ),
    ),
    DownloadOrder(
        "https://example.com/test02.png",
        SaveOrder(
            path_directory_download,
            "test02.png",
            created_date_time,
        ),
    ),
    DownloadOrder(
        "https://example.com/test03.png",
        SaveOrder(
            path_directory_download,
            "test03.png",
            created_date_time,
        ),
    ),
]
list_media_download_result = ParallelMediaDownloader.execute(list_download_order)

API

ParallelMediaDownloader.execute

class ParallelMediaDownloader:
    """API of parallel media downloading."""

    @staticmethod
    def execute(
        list_download_order: Iterable[DownloadOrder],
        *,
        limit: int = 5,
        media_filter: Optional[MediaFilter] = None,
        allow_http_status: List[int] = None
    ) -> List[MediaDownloadResult]:

list_download_order: Iterable[DownloadOrder]

List of DownloadOrder. Method will download them in parallel.

limit: int = 5

Limit number of parallel processes.

media_filter: Optional[MediaFilter] = None

Filter extends MediaFilter to remove downloaded media file depending on file or content of media. NotImageFilter will be help to understand its roll:

class NotImageFilter(MediaFilter):
    def _filter(self, media_file: MediaFile) -> bool:
        return not str(media_file.path_file).lower().endswith((".png", ".jpg", ".jpeg", ".gif"))

allow_http_status: List[int] = None

By default, ParallelMediaDownloader.execute will check HTTP status code by Response.raise_for_status and whole process will stop. When HTTP status applies allow_http_status, process will continue. Then, MediaDownloadResult.media_file will be None.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for parallelmediadownloader, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size parallelmediadownloader-0.1.0-py3-none-any.whl (14.7 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size parallelmediadownloader-0.1.0.tar.gz (11.3 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page