Skip to main content

A downloader for DRM-protected & Non DRM-protected content.

Project description

DDownloader

DDownloader is a powerful Python-based tool and library designed to download and decrypt DRM-protected content from DASH, HLS, and ISM manifests. It provides seamless support for encrypted media streams, extracting metadata and ensuring high compatibility with various DRM standards.

Features

  • Download and Decrypt: Supports DASH, HLS, and ISM manifests with seamless decryption using provided keys.
  • Automatic Detection: Automatically detects manifest types (.mpd, .m3u8, .ism) and processes accordingly.
  • Media Information Extraction: Extracts metadata (e.g., codec, resolution, duration) for .mp4 files and saves it in a logs/ directory.
  • CLI and Library Support: Flexible usage via command-line or Python library.
  • Detailed Logging: Provides real-time progress and logs errors for debugging.

Requirements

  • Python: Version 3.7 or higher.

  • Required binaries:

    • N_m3u8DL-RE for downloading protected DRM content.
    • mp4decrypt for decrypting protected media files.
    • ffmpeg for re-encoding and muxer method
    • a proper environment variable configuration for binaries.

Installation

  • Install DDownloader using pip:

     pip install DDownloader
    

Usage

  • Download Content:

     from DDownloader.modules.downloader import DOWNLOADER
    
     downloader = DOWNLOADER()
     downloader.manifest_url = "https://example.com/path/to/manifest"  # DASH, HLS, or ISM manifest URL
     downloader.output_name = "output.mp4"  # Desired output file name
     downloader.decryption_keys = ["12345:678910"]  # Provide decryption keys if needed
     downloader.download()  # Start the downloading and decryption process
    
  • Extract Media Information:

     from DDownloader.modules.helper import get_media_info
    
     file_path = "downloads/example.mp4"
     media_info = get_media_info(file_path)
     print(media_info)
    
  • Re-encoding:

     from DDownloader.modules.downloader import DOWNLOADER
    
     re_encode = DOWNLOADER()
     quality = ["HD", "FHD", "UHD"]
     input_content = "downloads/example.mp4"
     output_content = "/path/to/output.mp4"
     re_encode.re_encode_content(input_file=input_content,quality=quality,codec="libx265",crf=20,preset="medium")
    

CLI Usage

  • Download Media

     DDownloader -u https://example.com/path/to/manifest -o output.mp4
    
  • Specify Decryption Keys

     DDownloader -u https://example.com/path/to/manifest -o output.mp4 -k 12345:678910
    
  • Re-encoding

     DDownloader -i "input.mp4" -o "output.mp4" -q "HD, FHD, UHD"
    
  • Display Help

     DDownloader -h
    
  • image

Project details


Download files

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

Source Distribution

ddownloader-0.4.6.tar.gz (98.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ddownloader-0.4.6-py3-none-any.whl (99.0 MB view details)

Uploaded Python 3

File details

Details for the file ddownloader-0.4.6.tar.gz.

File metadata

  • Download URL: ddownloader-0.4.6.tar.gz
  • Upload date:
  • Size: 98.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for ddownloader-0.4.6.tar.gz
Algorithm Hash digest
SHA256 02fcbafae645b79e3cad0ba3e990ca06d61d5ccc5df9ec82feee77fe558ab5fd
MD5 df765aeb39f8b0f2605b2d1927d70e4d
BLAKE2b-256 1b0891533385fc9436b2c590a9ab52c7f37293693ec3e44115be0e2ec5e0f32d

See more details on using hashes here.

File details

Details for the file ddownloader-0.4.6-py3-none-any.whl.

File metadata

  • Download URL: ddownloader-0.4.6-py3-none-any.whl
  • Upload date:
  • Size: 99.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for ddownloader-0.4.6-py3-none-any.whl
Algorithm Hash digest
SHA256 4a7688f07d2d901f6bc71dd8fc4646d34d0e3eab023db16689f28803524182e4
MD5 89c5c3235c59dda39c16d19df3aaa8d0
BLAKE2b-256 521c677c3d62fcf96790d4e8c0cd81bba88695c813019c13c4667eac60d4004a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page