diff --git a/README.md b/README.md index 7141575..7edadf8 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ uv run vinefeeder --help or uv run envied --help ``` -**Installation for Windows** with a bare machine and novice user. +**Installation for Windows** with a bare machine and novice user. (Why not print out these instructions so you can tick them off as you work through them?) You are going to install all the required binary files and automatically add then to system variable - Path. The Python interpreter will be installed automatically too. @@ -111,7 +111,9 @@ git clone https://github.com/vinefeeder/TwinVine.git uv run envied dl -? ``` -That's it for Windows; uv run vinefeeder to get started! +That's it for Windows; uv run vinefeeder OR uv run envied dl -? to get started! +Vinefeeder offers a graphical interace for some services; envied is a command-line tool for all services offered. + **Installation for Linux** with a bare machine. @@ -139,7 +141,9 @@ Finally, cd to TwinVine and run each command in order, ``` -That's it; uv run vinefeeder to get started! +That's it for Linux; uv run vinefeeder OR uv run envied dl -? to get started! +Vinefeeder offers a graphical interace for some services; envied is a command-line tool for all services offered. + **Locations** diff --git a/UPDATES.md b/UPDATES.md index 388bdaa..4972ba2 100644 --- a/UPDATES.md +++ b/UPDATES.md @@ -1,5 +1,13 @@ **Updates** + **11 May 2026** + Vinefeeder update to BBC UHD detection to enable automatic HLG selection. + Some service updates. + + **Mar 2026** + Envied updated to match upstream to version 4.0.0 + service updates + **19 Jan 2026** - upstream envied to 2.3.0 diff --git a/packages/envied/src/envied/envied-working-example.yaml b/packages/envied/src/envied/envied-working-example.yaml index 4214d36..207ce7d 100644 --- a/packages/envied/src/envied/envied-working-example.yaml +++ b/packages/envied/src/envied/envied-working-example.yaml @@ -178,14 +178,38 @@ filenames: # API key for The Movie Database (TMDB) tmdb_api_key: "" -# conversion_method: -# - auto (default): Smart routing - subby for WebVTT/SAMI, standard for others +#conversion_method: +# - auto (default): Smart routing - subby for WebVTT/SAMI, pycaption for others # - subby: Always use subby with advanced processing # - pycaption: Use only pycaption library (no SubtitleEdit, no subby) # - subtitleedit: Prefer SubtitleEdit when available, fall back to pycaption +# - pysubs2: Use pysubs2 library (supports SRT/SSA/ASS/WebVTT/TTML/SAMI/MicroDVD/MPL2/TMP) subtitle: conversion_method: auto + # sdh_method: Method to use for SDH (hearing impaired) stripping + # - auto (default): Try subby (SRT only), then SubtitleEdit (if available), then subtitle-filter + # - subby: Use subby library (SRT only) + # - subtitleedit: Use SubtitleEdit tool (Windows only, falls back to subtitle-filter) + # - filter-subs: Use subtitle-filter library directly sdh_method: auto + # strip_sdh: Automatically create stripped (non-SDH) versions of SDH subtitles + # Set to false to disable automatic SDH stripping entirely (default: true) + strip_sdh: true + # convert_before_strip: Auto-convert VTT/other formats to SRT before using subtitle-filter + # This ensures compatibility when subtitle-filter is used as fallback (default: true) + convert_before_strip: true + # preserve_formatting: Preserve original subtitle formatting (tags, positioning, styling) + # When true, skips pycaption processing for WebVTT files to keep tags like , , positioning intact + # Combined with no sub_format setting, ensures subtitles remain in their original format (default: true) + preserve_formatting: true + # output_mode: Output mode for subtitles + # - mux: Embed subtitles in MKV container only (default) + # - sidecar: Save subtitles as separate files only + # - both: Embed in MKV AND save as sidecar files + output_mode: mux + # sidecar_format: Format for sidecar subtitle files + # Options: srt, vtt, ass, original (keep current format) + sidecar_format: srt # Configuration data for each Service diff --git a/packages/vinefeeder/src/vinefeeder/services/BBC/__init__.py b/packages/vinefeeder/src/vinefeeder/services/BBC/__init__.py index caaf154..3f6eae1 100644 --- a/packages/vinefeeder/src/vinefeeder/services/BBC/__init__.py +++ b/packages/vinefeeder/src/vinefeeder/services/BBC/__init__.py @@ -2,6 +2,8 @@ """The BBC does not follow the same structures as most other srvices The BBC does not use script = window.__PARAMS__ = ...""" +from pydoc import html + from vinefeeder.base_loader import BaseLoader from vinefeeder.parsing_utils import extract_params_json, parse_json, split, split_options from rich.console import Console @@ -45,11 +47,20 @@ class BbcLoader(BaseLoader): list: A list of URLs with UHD content. """ - uhd_url = "https://www.bbc.co.uk/iplayer/help/questions/programme-availability/uhd-content" + uhd_url = "https://www.bbc.co.uk/iplayer/help/questions/programme-availability/uhd-content/" html = self.get_data(uhd_url) sel = Selector(text=html) - uhd_list = sel.xpath("(//ul)[9]//a/text()").getall() - #url_list = sel.xpath("(//ul)[9]//a/@href").getall() + + uhd_list = [ + x.xpath("normalize-space(.)").get() + for x in sel.xpath( + '//main//*[self::h2 or self::h3 or self::p or self::strong]' + '[contains(normalize-space(.), "Full list of Ultra HD programmes") ' + 'or contains(normalize-space(.), "Full list of UHD programmes")]' + '/following::ul[1]/li' + ) + ] + return uhd_list diff --git a/post_processing/extract_mks_subs.py b/post_processing/extract_mks_subs.py index 3d1a0e3..44133ea 100644 --- a/post_processing/extract_mks_subs.py +++ b/post_processing/extract_mks_subs.py @@ -2,7 +2,7 @@ """ Selecting -S (subtitles only) as a download option results in an mks file which needs convertion to something acceptable for adding to a video playback. -This is a post processing routne that operated in teh root foler of any number of +This is a post processing routine that operates in the root folder of any number of mks files. The sceipt will recursively extract subtitle tracks from .mks files using mkvextract. diff --git a/post_processing/post_processing.md b/post_processing/post_processing.md index 8e507d8..f077437 100644 --- a/post_processing/post_processing.md +++ b/post_processing/post_processing.md @@ -6,7 +6,12 @@ Using a post-processor on the downloaded results may provide a solution. I have found two unmet needs: -* Extract srt subtitles +* Extract srt subtitles +EDIT There is now an envied option +- mux: Embed subtitles in MKV container only (default) +- sidecar: Save subtitles as separate files only +- both: Embed in MKV AND save as sidecar files +see the envied-working example.yaml and edit for your preference. * Convert mkv output to mp4 (or any other video container format, with code adjustment) Here are two scripts which operate from a root folder (downloads - for instance), and operate on all the mkv files found within. The original files are left in place - for you to remove as necessary.