Skip to main content

Tools for use in building the audio-bible app

Project description

Audio Bible Tools

This package is designed to download and process audio files from YouTube playlists, specifically tailored for Bible audio content. It provides functionality to download chapters from specified playlists, organize them into a structured directory format, and process them for further use.

Features

  • Download audio from YouTube playlists matching specific patterns
  • Sanitize file names and organize downloads into a structured directory hierarchy
  • Process downloaded files, renaming and moving them to a specified output directory
  • Skip existing files to avoid redundant downloads
  • Remove temporary files created during the download process
  • Configurable options for version, voice, and output directory

Requirements

  • Python 3.x
  • yt-dlp
  • requests

Installation

pip install --upgrade audio_bible_tools

Usage

Here's an example of how to use the YouTubeDownloader class:

from audio_bible_tools import YouTubeDownloader 
root_dir = '/content/drive/My Drive/'
project_dir = 'kjv_audio'
channel_handle = 'skiesaboveus'
genesis_playlist = "01 Genesis Chapters 01-50 (KJV)"
revelation_playlist = "66 Revelation Chapters 01-22 (KJV)"
voice = 

# Initialize the downloader
downloader = YouTubeDownloader(
    root_dir=root_dir,
    channel_handle=channel_handle,
    project_dir=project_dir,
    genesis_playlist=genesis_playlist,
    revelation_playlist=revelation_playlist
)

# Remove any temporary files
downloader.remove_tmp_files()

# Print the total number of files in the project directory
# print(downloader.count_files_in_directory())

downloader.list_and_process_playlists()

# Remove temporary files again after download
downloader.remove_tmp_files()

# Process the downloaded files
downloader.version("kjv") \
    .voice("kjv-audio-bible") \
    .result_dir("bible_audio_processed") \
    .chapterPattern("Chapter (\d+)") \
    .process()
root_dir = '/content/drive/My Drive/'
project_dir = 'kjv_audio_1'
channel_handle = 'ScourbyYouBible'
genesis_playlist = "1 ~ Book of Genesis by the Chapter"
revelation_playlist = "66 ~ Book of Revelation by the Chapter"

# Initialize the downloader
downloader = YouTubeDownloader(
    root_dir=root_dir,
    channel_handle=channel_handle,
    project_dir=project_dir,
    genesis_playlist=genesis_playlist,
    revelation_playlist=revelation_playlist
)

# Remove any temporary files
downloader.remove_tmp_files()

# Print the total number of files in the project directory
# print(downloader.count_files_in_directory())

downloader.list_and_process_playlists()

# Remove temporary files again after download
downloader.remove_tmp_files()

# Process the downloaded files
downloader.version("kjv") \
    .voice("scourby") \
    .result_dir("bible_audio_processed") \
    .chapterPattern("(\d+)\s+of\s+\d+\s+Chapters") \
    .process()

Class Methods

  • __init__(self, root_dir, channel_handle, project_dir, genesis_playlist, revelation_playlist): Initializes the YouTubeDownloader with the specified parameters.
  • remove_tmp_files(self, dir=None): Removes temporary files from the specified directory or the project directory.
  • create_books_playlist_regular_expression(self, genesis_playlist, revelation_playlist): Creates a regular expression pattern to match playlist titles.
  • sanitize_title(self, title): Sanitizes the playlist title for use as a directory name.
  • download_video(self, url, download_dir): Downloads a single video from the given URL to the specified directory.
  • count_files_in_directory(self, directory_path=None): Counts the total number of files in the specified directory.
  • list_and_process_playlists(self): Lists and processes all playlists matching the specified pattern.
  • version(self, version), voice(self, voice), result_dir(self, dir), force(self, force), chapterPattern(self, chapterPattern): Setter methods for various processing options.
  • process(self): Processes the downloaded files, organizing them into the final directory structure.

Notes

  • This class is specifically designed for downloading and processing Bible audio content from YouTube playlists.
  • Make sure you have the necessary permissions to download and use the content.
  • The class uses a JSON file from 'https://audio-bible.github.io/info/books_mapping.json' to map book numbers to names. Ensure this resource is available and up-to-date.

License

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

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

audio_bible_tools-0.1.0.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

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

audio_bible_tools-0.1.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file audio_bible_tools-0.1.0.tar.gz.

File metadata

  • Download URL: audio_bible_tools-0.1.0.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for audio_bible_tools-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7d0574a28cf86201e4b2736591c49910d32d6200d6ced6b96400b392ebb3181d
MD5 7eda61433d80a60d062888761131d5a2
BLAKE2b-256 d16b28aa0a521e2e6832de36b404cb2748c946c2a7e3b840e4824f168a01d8cd

See more details on using hashes here.

File details

Details for the file audio_bible_tools-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for audio_bible_tools-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4f3aeeb59c5a0aa6c1203017d6c7112dcd6067e197dff1d2eb3184623b0e530b
MD5 c5c11833a8c2c17e172d980f60100e3b
BLAKE2b-256 23988b96ce0d9f1b76bacefbdf6ced7e31615609c92133f4e4d7e0eae886efcf

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