pytubekit package

Submodules

pytubekit.configs module

All configurations

class pytubekit.configs.ConfigAddData[source]

Bases: Config

Parameters for add_data

input_file = <pytconf.param.Unique object>
output_csv = <pytconf.param.Unique object>
class pytubekit.configs.ConfigAddFileToPlaylist[source]

Bases: Config

Add videos from a file to a playlist

add_file = <pytconf.param.Unique object>
add_playlist = <pytconf.param.Unique object>
class pytubekit.configs.ConfigBudget[source]

Bases: Config

API quota budget parameters

max_mutations = None
class pytubekit.configs.ConfigChannelId[source]

Bases: Config

Channel ID options

watch_later = False
class pytubekit.configs.ConfigCleanup[source]

Bases: Config

Parameters for cleanup

dedup = True
deleted = True
privatized = True
class pytubekit.configs.ConfigCleanupPlaylists[source]

Bases: Config

Playlists to clean up

cleanup_names = []
class pytubekit.configs.ConfigClear[source]

Bases: Config

Playlist to clear

clear_name = <pytconf.param.Unique object>
class pytubekit.configs.ConfigCollectIds[source]

Bases: Config

Collect IDs parameters

collect_files = []
class pytubekit.configs.ConfigCreatePlaylist[source]

Bases: Config

Create playlist parameters

create_description = ''
create_name = <pytconf.param.Unique object>
create_privacy = 'public'
class pytubekit.configs.ConfigDelete[source]

Bases: Config

Configs for doing delete

do_delete = True
class pytubekit.configs.ConfigDeletePlaylist[source]

Bases: Config

Delete playlist parameters

delete_playlist_name = <pytconf.param.Unique object>
class pytubekit.configs.ConfigDiff[source]

Bases: Config

Parameters for diff

diff_a_files = []
diff_a_playlists = []
diff_b_files = []
diff_b_playlists = []
diff_output_file = None
diff_reverse = False
class pytubekit.configs.ConfigDump[source]

Bases: Config

Parameters for dumping

dump_folder = '.'
class pytubekit.configs.ConfigExportCsv[source]

Bases: Config

Export playlist to CSV parameters

export_csv_path = <pytconf.param.Unique object>
export_playlist_name = <pytconf.param.Unique object>
class pytubekit.configs.ConfigFindVideo[source]

Bases: Config

Find video parameters

find_video_id = <pytconf.param.Unique object>
class pytubekit.configs.ConfigLocalDiff[source]

Bases: Config

Local diff parameters

local_diff_a = <pytconf.param.Unique object>
local_diff_b = <pytconf.param.Unique object>
local_diff_reverse = False
class pytubekit.configs.ConfigLocalDumpFolder[source]

Bases: Config

Local dump folder to operate on

local_dump_folder = '.'
class pytubekit.configs.ConfigMerge[source]

Bases: Config

Merge parameters

merge_dedup = True
merge_destination = <pytconf.param.Unique object>
merge_sources = []
class pytubekit.configs.ConfigOverflow[source]

Bases: Config

Overflow parameters

destination = <pytconf.param.Unique object>
source = <pytconf.param.Unique object>
class pytubekit.configs.ConfigPagination[source]

Bases: Config

Pagination parameters

page_size = 50
class pytubekit.configs.ConfigPlaylist[source]

Bases: Config

Playlist parameters

name = None
playlist_id = None
class pytubekit.configs.ConfigPlaylists[source]

Bases: Config

Playlists to use

names = []
class pytubekit.configs.ConfigPrint[source]

Bases: Config

How to dump things

full = False
class pytubekit.configs.ConfigRename[source]

Bases: Config

Rename playlist parameters

rename_new_name = <pytconf.param.Unique object>
rename_playlist_name = <pytconf.param.Unique object>
class pytubekit.configs.ConfigSearch[source]

Bases: Config

Search playlist parameters

search_playlists = []
search_query = <pytconf.param.Unique object>
class pytubekit.configs.ConfigSort[source]

Bases: Config

Sort playlist parameters

sort_key = 'title'
sort_playlist_name = <pytconf.param.Unique object>
class pytubekit.configs.ConfigStatsFilter[source]

Bases: Config

Optional filter for stats command

stats_names = []
class pytubekit.configs.ConfigSubtract[source]

Bases: Config

Subtract parameters

subtract_from = []
subtract_what = []
class pytubekit.configs.ConfigVideo[source]

Bases: Config

Video id to use

id = <pytconf.param.Unique object>

pytubekit.constants module

constants.py

pytubekit.main module

main entry point to the program

pytubekit.main.add_data() → None[source]
pytubekit.main.add_file_to_playlist() → None[source]
pytubekit.main.channels() → None[source]
pytubekit.main.cleanup() → None[source]
pytubekit.main.clear_playlist() → None[source]
pytubekit.main.collect_ids() → None[source]
pytubekit.main.create_playlist() → None[source]
pytubekit.main.delete_playlist() → None[source]
pytubekit.main.diff() → None[source]
pytubekit.main.dump() → None[source]
pytubekit.main.export_csv() → None[source]
pytubekit.main.find_video() → None[source]
pytubekit.main.get_channel_id() → None[source]
pytubekit.main.get_video_ids_from_sources(youtube: Any, playlists: list[str], files: list[str]) → set[str][source]
pytubekit.main.local_dedup() → None[source]
pytubekit.main.local_diff() → None[source]
pytubekit.main.main()[source]
pytubekit.main.merge() → None[source]
pytubekit.main.overflow() → None[source]
pytubekit.main.playlist() → None[source]
pytubekit.main.print_stats_summary(items: list[tuple[str, int]], label: str) → None[source]
pytubekit.main.rename_playlist() → None[source]
pytubekit.main.search_playlist() → None[source]
pytubekit.main.sort_playlist() → None[source]
pytubekit.main.stats() → None[source]
pytubekit.main.subtract() → None[source]
pytubekit.main.video_info() → None[source]
pytubekit.main.watch_later() → None[source]

pytubekit.static module

version which can be consumed from within the module

pytubekit.util module

util.py

exception pytubekit.util.MutationBudgetError[source]

Bases: Exception

The –max_mutations budget for this run was reached

class pytubekit.util.PagedRequest(f: Any, kwargs: dict[str, Any])[source]

Bases: object

get_all_items() → list[dict[str, Any]][source]
get_next_page() → tuple[bool, dict[str, Any]][source]
exception pytubekit.util.QuotaExceededError[source]

Bases: Exception

The YouTube API daily quota is exhausted

class pytubekit.util.RunStats[source]

Bases: object

Per-run counters for API quota accounting

mutations_performed = 0
quota_spent = 0
classmethod reset() → None[source]
pytubekit.util.add_video_to_playlist(youtube: Any, playlist_id: str, video_id: str) → None[source]
pytubekit.util.cleanup_items(youtube: Any, items: list[dict[str, Any]], *, dedup: bool, check_deleted: bool, check_privatized: bool, do_delete: bool) → None[source]
pytubekit.util.create_playlist_request(youtube: Any, playlist_id: str) → PagedRequest[source]
pytubekit.util.create_playlists_request(youtube: Any) → PagedRequest[source]
pytubekit.util.delete_playlist_item_by_id(youtube: Any, playlist_item_id: str) → None[source]
pytubekit.util.get_all_items(youtube: Any) → list[dict[str, Any]][source]
pytubekit.util.get_all_items_from_playlist_id(youtube: Any, playlist_id: str) → list[dict[str, Any]][source]
pytubekit.util.get_all_items_from_playlist_ids(youtube: Any, playlist_ids: list[str]) → list[dict[str, Any]][source]
pytubekit.util.get_error_reasons(e: HttpError) → set[str][source]
pytubekit.util.get_items_from_playlist_names(youtube: Any, names: list[str]) → list[dict[str, Any]][source]
pytubekit.util.get_my_playlists_ids(youtube: Any) → list[str][source]
pytubekit.util.get_playlist_ids_from_names(youtube: Any, playlist_names: list[str]) → list[str][source]
pytubekit.util.get_playlist_item_count(youtube: Any, playlist_id: str) → int[source]
pytubekit.util.get_playlist_item_ids_from_names(youtube: Any, playlist_names: list[str]) → set[str][source]
pytubekit.util.get_video_ids_from_playlist_names(youtube: Any, names: list[str]) → set[str][source]
pytubekit.util.get_video_info(youtube: Any, youtube_id: str) → dict[str, Any][source]
pytubekit.util.get_video_metadata(video_id: str) → dict[str, Any] | None[source]
pytubekit.util.get_youtube() → Any[source]
pytubekit.util.get_youtube_channels(youtube: Any) → Any[source]
pytubekit.util.get_youtube_playlists(youtube: Any) → Any[source]
pytubekit.util.log_mutation_cost_estimate(logger: Logger, mutations: int) → None[source]
pytubekit.util.log_progress(logger: Logger, current: int, total: int, interval: int = 100) → None[source]
pytubekit.util.move_playlist_item(youtube: Any, playlist_id: str, item: dict[str, Any], position: int) → None[source]
pytubekit.util.perform_mutation(request: Any) → dict[str, Any][source]
pytubekit.util.pretty_print(data: Any, fp: IO[str] = <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>) → None[source]
pytubekit.util.read_all_dump_files(dump_folder: str) → dict[str, list[str]][source]
pytubekit.util.read_video_ids_from_files(file_paths: list[str]) → set[str][source]
pytubekit.util.read_video_ids_from_path(path: str) → set[str][source]
pytubekit.util.retry_execute(request: Any, max_retries: int = 5, cost: int = 1) → dict[str, Any][source]

pytubekit.youtube module

Module that handles the interaction with the yt_dlp library

References: - https://github.com/yt-dlp/yt-dlp#embedding-yt-dlp

pytubekit.youtube.youtube_dl_download_urls(urls: list[str]) → None[source]

Module contents

Initialize the module