Releases: CollinHeist/TitleCardMaker
Releases · CollinHeist/TitleCardMaker
v1.11.0
Major Changes
- Create new show summary style/type
- Move temporary objects to persistent Docker volume
- Move
.objects
database directory alongside the Preferences file (in Docker only) - Deletion/recreation of the TCM container will no longer reset progress
- Move
- Detect changes in series YAML and automatically remake cards
- Changes to a series'/archive's card-specific YAML will result in the cards being deleted and remade
- Allow for any series YAML attributes to be specified in a library (not just
card_type
)- Show attributes take higher priority
- For example
libraries: TV: card_type: landscape episode_text_format: "EP {episode_number}" # etc.
- Integrate with Tautulli to immediately create cards for newly added episodes (alongside watched ones)
- Create movie posters (in musikmann200's style) with mini maker
Major Fixes
- Override default ImageMagick policy in Docker container
- New policy has a larger memory, mmap, image pixel dimension, and pixel area limits
- Fixes some show summary creation failures due to the images being too large, as well as increase Docker performance
- Enforce Plex's 10 MB asset file size limit for cards and posters
- Limit can be adjusted via global Plex option for additional database size reduction, for example:
plex: filesize_limit: 5 MB # Defaults to 10 MB
- Images larger than the set value will be incrementally reduced in quality until below the set limit
- This limit only affects uploaded assets, the created cards will still be original quality
- Limit can be adjusted via global Plex option for additional database size reduction, for example:
Minor Changes
- Correctly detect custom episode text in
OlivierTitleCard
- Add default font replacement for
“
to"
toStandardTitleCard
- Add
azuravian/TitleColorMatch
card type to README - Add
--tautulli-list
and--tautulli-frequency
arguments tomain.py
- Verify ImageMagick installation with
--version
command instead of font listing - Add
--import-extension
/--import-ext
arguments to fixer to import non.jpg
images/archives into Plex - Changed default summary minimum episode count to
3
(from1
)
Minor Fixes
- Handle recursive union of non-dict into dict objects in templates
- Better episode sorting for manual show summary creation
- Actually use font
vertical_shift
inOlivierTitleCard
- Respect font case in
OlivierTitleCard
- Handle non-UTF-8 (namely German / ISO-8859) encodings in ImageMagick command returns
- Handle generic errors connecting to Plex
- Handle empty font case specifications
- Correctly initialize
PlexInterface
with fixer - Handle corrupt show record databases
- Properly parse non-string season titles (e.g. Archer season 10,
1999
)
v1.10.4
Major Changes
- Create
LandscapeTitleCard
[#248] - Check for new releases during execution [#246]
- Skip series with year of 0 (i.e. upcoming/announced series) during Sonarr sync
- Pass
title
andyear
variables to all templates automatically- This means templates can use
<<title>>
and<<year>>
variables even if they're unspecified
- This means templates can use
- Change logic of Sonarr sync
required_tags
to requiring all listed tags, not any - Add
-s
/--sync
/--run-sync
argument tomain.py
to run only YAML sync without starting TCM main loop - Change default TCM execution mode to process each show in order, rather than each step for all shows [#252]
- This will give more immediate feedback (especially to new users) as cards are first created/loaded much faster
- Parse
execution_mode
global option to bebatch
orserial
(defaults toserial
) batch
mode is the old method,serial
is the new
Major Fixes
- Reload episode object when found by database ID (should drastically improve translation gathering)
- Don't double write library paths in YAML sync
- Add translations to archive-only shows
- Better handling of Windows paths in sync specification
- Windows paths should be entered as their "posix" equivalent - i.e.
C:\\Documents
should beC:/Documents
- Windows paths should be entered as their "posix" equivalent - i.e.
- Write
media_directory
for Sonarr sync if library cannot be determined
Minor Changes
- Apply font replacements after font case
- Add default font replacement of
✕
->x
inAnimeTitleCard
- Declare
TCM_IS_DOCKER
environment variable in Dockerfile - Update README
- Add gif to show Tautulli integration
- Fix link to example
AnimeTitleCard
- Don't log the same message back-to-back
- Optionally reject localized images (i.e. images with an assigned language/text) from TMDb [#250]
- Parse
skip_localized_images
global option fromtmdb
preferences - Parse
tmdb_skip_localized_images
from series YAML to override global option
- Parse
- Add
--print-log
argument tofixer.py
to print most recent TCM log (to help Docker users who don't mount their log folder) - Add
card_type
identifierishalioh
toOlivierTitleCard
- Add missing translations to missing report
- Handle uncaught/unexpected Plex API errors without critically exiting
Minor Fixes
- Handle TMDb image URL's returning no content
- Handle series without years in Tautulli integration
- Delete Tautulli update file on read error to prevent soft-locking integration
- Handle more types of bad series YAML formatting during read operations
v1.10.3
Major Changes
- Create new card type in the style of /u/Olivier_286 called
OlivierTitleCard
[#242] - Allow syncing to multiple series YAML files (with different settings) per interface (Plex/Sonarr) [#243]
- Sync configuration can be specified as a list of options, and each will be synced individually
- "Global" sync options can be specified first and will then apply to subsequent syncs
- Example of this:
sonarr: url: ... api_key: ... sync: - volumes: /sonarr/path/: /tcm/path/ plex_libraries: /documents/Media/TV/: TV Shows /documents/Media/Anime/: Anime - file: ./yaml/sonarr_sync_tv.yml add_template: tv required_tags: - tv - file: ./yaml/sonarr_sync_anime.yml add_template: anime required_tags: - anime
- This will sync to two files
sonarr_sync_tv.yml
andsonarr_sync_anime.yml
separately with the defined templates, and using the specified required tags and each using the same volumes and plex libraries defined above - Can be used (especially with Sonarr) to automate applying different styles/options to different libraries or types of series
- Optionally omit gradient from collection posters, genre cards, or season posters [#244]
- Specifying
--no-gradient
or--omit-gradient
with the mini maker will omit the gradient overlay during creation - For season posters, this can be toggled within YAML by specifying
omit_gradient: true
, like so:Breaking Bad (2008): season_posters: omit_gradient: true
- Specifying
Major Fixes
- Handle unexpected TMDb API errors
- All uncaught exceptions from TMDb are logged and skipped without critical exit
- Require series year match when finding series by name within Plex
- Previously could false match for series with the same name - like
Berserk
(1997) vs (2016)
- Previously could false match for series with the same name - like
Minor Changes
- Ignore summary minimum episode setting for manual
ShowSummary
creation - No longer critically error while reading poorly formatted series YAML files
- Log images to be deleted by fixer
--delete-cards
before deletion - Identify multipart titles with roman numerals
- Titles like
Title IV
,Title (IV)
, orTitle (Part IV)
- Titles like
- Add ImageMagick command timeout
- After 240 seconds (by default), an ImageMagick command will fail instead of stalling permanently
- Adjustable via
timeout
option underimagemagick
global preferences
- Replace
--collection-borderless
option from mini maker collection poster creation- Specify via
--borderless
or--omit-border
- Specify via
Minor Fixes
- Handle and ignore series without years during Plex YAML sync
- Series without proper year specification will no longer critically exit and are just skipped
- Handle invalid multi episode text formats without critically exit
- Skip series if template is indicated but no templates are defined (used to be silently skipped)
- Handle fixer
--import-series
failing to match within Plex
v1.10.2
Major Changes
N/A
Major Fixes
- Update Dockerfile to use new
pipenv
requirement file creation- Pipenv v2022.08.13 removed the old way to generate requirements files
Minor Changes
N/A
Minor Fixes
N/A
v1.10.1
Major Changes
- Make
year
attribute optional if a series is given as a full name- This means the bare minimum of a series changes like so:
series: # Old Style Breaking Bad: year: 2008 # New style Breaking Bad (2008): {}
- This means the bare minimum of a series changes like so:
- Optionally parse exclusions from Sonarr/Plex YAML sync [#238]
- Exclusions can be specified as series YAML file, tag (if syncing from Sonarr), and a specific series - for example:
sonarr: # ... sync: file: ./yaml/sonarr_sync.yaml exclusions: - yaml: ./yaml/other_series_yaml_file.yml - tag: sonarr-tag-to-exclude - series: Breaking Bad (2008) # ...
yaml
takes a series YAML file to exclude all series of, this can be useful if you've got one file of customized shows to prevent duplicate specification, or just a longer file of exclusions;tag
takes a Sonarr tag; andseries
take a series full name.- Rename
tag
attribute torequired_tags
- Exclusions can be specified as series YAML file, tag (if syncing from Sonarr), and a specific series - for example:
- Optionally add a template to all series during Sonarr/Plex YAML sync [#239]
- A template name can be specified via
add_template
in thesync
section, like so:sonarr: # ... sync: file: ./yaml/sonarr_sync.yaml add_template: standard_template # ...
- Will result in a sync like:
series: Series1 (Year): {library: ..., template: standard_template} Series2 (Year): {library: ..., template: standard_template}
- A template name can be specified via
Major Fixes
- Change default YAML sync to specify series name by full name to omit
year: xxxx
specification- THIS WILL MAKE PREVIOUSLY SYNCED FILES OUTDATED
- Handle invalid YAML when appending to a synced series YAML file
- Duplicate keys (and other errors) are now errored and logged, instead of resulting in an exit
- Correctly skip placeholder titles like
TBA
,TBD
, orEpisode {x}
(were only being skipped in specific edge cases)
Minor Changes
- Use a persistent session for interfacing with Sonarr and Plex (minor performance improvement)
Minor Fixes
- Catch errors on episode reload while sourcing episodes from TMDb
- Handle KeyError during series renaming when manually specifying
name
attribute - Add ability to disable SSL verification for Sonarr or Plex [#241]
- Enabled via
verify_ssl
option within Sonarr or Plex preferences, like so:sonarr: # Same as Plex # ... verify_ssl: false # Defaults to true
- Enabled via
- Handle any format of Sonarr URL - for example
http://xx.xx.xx.xx:yyyy/etc/sonarr
style URL's used to silently fail - Better handling of failed image downloading
- Only write to file if download was successful (used to write 0-byte images even on failure)
- Only log image download upon success
v1.10.0
Major Changes
- Add ability to automatically create/update series YAML files from Sonarr/Plex [#224]
- An example of this for Plex:
plex: url: ... token: ... sync: file: ./yaml/plex_sync.yml mode: append # Can also be sync compact_mode: true # Can also be false libraries: # If not present, sync all - TV Shows - Anime volumes: /plex/media/tv/: /maker/media/tv # Other docker volume mappings
- And for Sonarr:
sonarr: url: ... api_key: ... sync: file: ./yaml/sonarr_sync.yml mode: append # Can also be sync compact_mode: true # Can also be false monitored_only: true # Can also be false tags: # If not present, sync all - downloaded volumes: /sonarr/media/tv: /maker/media/tv # Other docker volume mappings plex_libraries: /maker/media/tv: TV /maker/media/anime: anime
- Deleted
--read-all-series
fixer option
- An example of this for Plex:
- Allow for ShowSummaries to have background images [#219]
- Load season posters into Plex [#172]
Major Fixes
- Correct TMDb episode finding by IMDb ID
Minor Changes
- Allow for season posters to be created with the logo and season title at the top of the image, like so [#230]:
- Specified via
--top-placement
with mini maker - Parses
placement
within season poster YAML, like so:series: Breaking Bad: year: 2008 season_posters: placement: top # Defaults to bottom
- Specified via
- Support any format of font color [#231]
- Font colors can now be specified like
rgb(r, g, b)
,cmy(c, m, y)
,rgba(r, g, b, a)
,#rrggbbaa
, font name, etc. (any ImageMagick supported color)
- Font colors can now be specified like
- Move
sync_specials
to global option (fromsonarr
option) [#232] - Allow remote card types to be specified as the global default card type [#234]
- Allow for specification of a specific archive style - i.e.
art
,blur
, orunique
viaarchive_style
[#233] - Allow for custom archive naming via
archive_name
attribute [#233]
Minor Fixes
- Handle very tall logos on season posters [#229]
- Logos are now constrained to 750px tall
- Sneaky hotfix to use the episodes' watched style in archives (accidentally changed to unwatched last version)
- Handle malformed loaded asset database deletion
- Temporary fix for bad TMDb API requests (might be fixed on TMDb-side) [#237]
v1.9.0
Major Changes
- Create new
PosterTitleCard
Cardtype- Based on /u/battleoflight's cards (see here)
- Specified via
card_type
ofposter
orgundam
- Example of this card:
- Add mini maker functionality to create Collection posters (#225)
- Add support for arbitrary season folder names (primarily for non-English speakers) (#226)
- Parse
season_folder_format
global option that takes a format string, like so:options: season_folder_format: "Saison {season:02}"
- Remove
zero_pad_seasons
andhide_season_folders
options (both accomplished with new option)
- Parse
- Allow for custom fonts in
AnimeTitleCard
- for example:
Major Fixes
- Handle title mismatches between datafiles and episode data sources leading to runtime errors
- Handle bad (non-string) titles in datafiles without error (#227)
- Titles that are numeric (e.g.
123
) or omitted (e.g.title:
) are logged and skipped
- Titles that are numeric (e.g.
- Correctly set archive
card_type
from library
Minor Changes
- Add
[INFO]
log statements for major execution steps - Apply styles (i.e. manual sources and art style) to archives as well
- Allow for custom "created by" tag/user in summary creation (#220)
- Add fixer functionality to unblacklist a series from TMDb
- Add
--unblacklist
option tofixer.py
- Add
- Log episode skipping due to generic title detection
- Episodes reported by Sonarr that have "generic" titles (e.g.
TBA
orEpisode 1
) and have aired in the last two days are now logged as they're skipped
- Episodes reported by Sonarr that have "generic" titles (e.g.
Minor Fixes
- Use
sRGB
colorspace forShowSummary
images- If a totally B/W logo file was used, summary could wrongly be created in B/W
- Better matching for episodes found by database ID (#222)
- TMDb implemented a change to their API that enables expected behavior
- Updated
tmdbapis
module requirement version to1.0.6
v1.8.3
Major Changes
N/A
Major Fixes
- Temporary fix for TMDb episodes not reloading (causing images/translations to not be found)
- TMDb doesn't return any way to "identify" a series that's been matched by external database ID (like TVDb or IMDb)
- Addresses #222 until TMDb changes the API (if they do)
Minor Changes
- Better integration with PMM episode overlays (#221)
- Look for optional
integrate_with_pmm_overlays
setting within globalplex
preferences - If
true
, theOverlay
label is deleted from an episode after a card has been uploaded
- Look for optional
- Download range of episodes from TMDb with fixer (#211)
- Specify episode range like
2-10
within--tmdb-download-images
fixer argument
- Specify episode range like
- Log card upload failures/retries
- Created
CollinHeist/StandardAllBoldcard
which has bolded season and episode text (see below)
Minor Fixes
N/A
v1.8.2
Major Changes
- Automatically delete and remake cards when new translations are added (#210)
- Let
LogoTitleCard
take variable logo specification (#209)- Can take "format string" (of sorts) to use variable logo files - example:
series: Breaking Bad: year: 2008 card_type: logo extras: logo: "./source/Breaking Bad (2008)/season{season_number}.png"
- Can take "format string" (of sorts) to use variable logo files - example:
- Improve specification of archives (#196)
- Look for
archive_variations
attribute for a series, takes a list of modifications to archive - for example:series: Breaking Bad: year: 2008 card_type: standard archive_variations: - card_type: roman - card_type: logo extras: logo: ./source/Breaking Bad(2007)/logo.png
- This will create archive directories of Breaking Bad in all three card types (anything can be specified)
- Look for
- Index episode range season titles by episode number if not absolute number is available
- Better integration with HAMA Anime agent
- Add
Yozora/BarebonesTitleCard
andYozora/RetroTitleCard
user-submitted card to README; examples below
- Rework code to share series and episode ID's across different instances of shows (#216)
- Just a performance enhancement
Major Fixes
- Don't reset episode text format after missing absolute number is encountered (#213)
Minor Changes
- Change default Tautulli update frequency to 4 minutes
- Optionally match series by IMDb ID as well (#214)
- Parse
imdb_id
- Parse
- Rework
TMDbInterface
class to usetmdbapis
module (#215)- Add
tmdbapis
module to Pipfile
- Add
- Add
--import-cards
alongside--import-archive
/--load-archive
fixer function - Add fixer functionality to remove records of previously loaded cards (#218)
- Can be used to force a refresh next time the Maker is run
- Adds
--forget-cards
/--forget-loaded-cards
arguments
- Log TitleCardMaker startup when run immediately
Minor Fixes
- Properly set TVDb ID from TMDb
- Fix typo in debug log message for update list scheduling
- Reload remote files when creating cards with user-created card types with mini maker
v1.8.1
Major Changes
- Add ability to immediately remake cards after they've been watched (#194)
- Maker can now monitor (on a variable frequency) a file written to by Tautulli and immediately remake cards after they're watched
- Added
--tautulli-update-list
and--tautulli-update-frequency
arguments- Also set via
TCM_TAUTULLI_UPDATE_LIST
andTCM_TAUTULLI_UPDATE_FREQUENCY
environment variables - Specify file to monitor for what cards to remake
- Specify how often to read that file (defaults to 2 minutes)
- Also set via
- For example, the following will check the specified file every 60 seconds for cards to remake:
$ pipenv run python main.py --tautulli-update-list /docker/tautulli/update.txt --tautulli-update-frequency 60s
- Let card filename format be set per-series (#203)
- Specify as
filename_format
within series YAML (overrides global default), like so:series: One Piece: year: 1999 filename_format: "One Piece - S01E{abs_number:04}"
- Specify as
- Add ability to get episode data from TMDb or Plex, in addition to Sonarr/TVDb (#97, #201)
- Specify globally and/or per-series with
episode_data_source
option, like so:options: episode_data_source: plex
- Specify globally and/or per-series with
- Get episode ID's as a part of the main run routine to improve episode matching on TMDb
- Episode ID's are now sourced from Sonarr, TMDb, and Plex (was just Sonarr)
- Rename global
source_priority
option toimage_source_priority
Major Fixes
N/A
Minor Changes
- Add
Beedman/GradientLogoTitleCard
user-submitted card to README (example of card below)
- Add character replacements for "♡" and "☆" to
AnimeTitleCard
- Let Sonarr, TMDb, TVDb, and IMDb ID's be manually set within YAML (#200)
- Specify with
sonarr_id
,tmdb_id
, ortvdb_id
for a given series - Specify with
tvdb_id
, orimdb_id
in the datafile for a given episode
- Specify with
- Pass episode watch status to
CardType
initialization (#204) - No longer require Sonarr URL to end in
/api/v3/
, this is detected/added automatically (#207)
Minor Fixes
- Don't check for preferred title translations if already present (#202)
- Handle empty template specification in series YAML files