Skip to content

Releases: CollinHeist/TitleCardMaker

v1.11.0

10 Sep 19:17
4828d13
Compare
Choose a tag to compare

Major Changes

  • Create new show summary style/type
    • Change default summary type to new StylizedSummary
    • Create --summary-type mini maker argument
    • The old style can be selected via new global option:
      archive:
        # ...
        summary:
          type: standard   # Defaults to stylized
    • Example of this summary:
  • 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
  • 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
    • Added --movie-poster, --movie-title, --movie-subtitle, --movie-font, --movie-font-color, and --movie-font-size arguments to mini maker
    • Example of a created poster:

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

Minor Changes

  • Correctly detect custom episode text in OlivierTitleCard
  • Add default font replacement for to " to StandardTitleCard
  • Add azuravian/TitleColorMatch card type to README
  • Add --tautulli-list and --tautulli-frequency arguments to main.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 (from 1)

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 in OlivierTitleCard
  • 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

28 Aug 05:00
b023dbe
Compare
Choose a tag to compare

Major Changes

  • Create LandscapeTitleCard [#248]
    • New card type intended to be used for landscape (less people-centric) images
    • Example of the card normal/blurred:
    • Specify via card_type: landscape
  • Check for new releases during execution [#246]
  • Skip series with year of 0 (i.e. upcoming/announced series) during Sonarr sync
  • Pass title and year variables to all templates automatically
    • This means templates can use <<title>> and <<year>> variables even if they're unspecified
  • Change logic of Sonarr sync required_tags to requiring all listed tags, not any
  • Add -s/--sync/--run-sync argument to main.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 be batch or serial (defaults to serial)
    • 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 be C:/Documents
  • 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 in AnimeTitleCard
  • 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 from tmdb preferences
    • Parse tmdb_skip_localized_images from series YAML to override global option
  • Add --print-log argument to fixer.py to print most recent TCM log (to help Docker users who don't mount their log folder)
  • Add card_type identifier ishalioh to OlivierTitleCard
  • 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

20 Aug 16:18
30d6ed8
Compare
Choose a tag to compare

Major Changes

  • Create new card type in the style of /u/Olivier_286 called OlivierTitleCard [#242]
    • Structurally identical to the StarWarsTitleCard, but has a more generic font, allows for customization, and omits the star gradient overlay.
    • Specified via card_type: olivier
    • Example of this card (with customized font):
  • 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 and sonarr_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

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)

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), or Title (Part IV)
  • Add ImageMagick command timeout
    • After 240 seconds (by default), an ImageMagick command will fail instead of stalling permanently
    • Adjustable via timeout option under imagemagick global preferences
  • Replace --collection-borderless option from mini maker collection poster creation
    • Specify via --borderless or --omit-border

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

14 Aug 15:06
Compare
Choose a tag to compare

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

13 Aug 19:03
d9454c6
Compare
Choose a tag to compare

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): {}
  • 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; and series take a series full name.
    • Rename tag attribute to required_tags
  • Optionally add a template to all series during Sonarr/Plex YAML sync [#239]
    • A template name can be specified via add_template in the sync 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}

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, or Episode {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
  • 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

08 Aug 04:54
eab3fbc
Compare
Choose a tag to compare

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
  • Allow for ShowSummaries to have background images [#219]
    • Example of this:
    • Replaced background_color global option with background that can take a filepath
    • Can also specify background: "{series_background}" to use each series' backdrop (backdrop.jpg) in its source folder
  • 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]:
    top heavy season poster
    • 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
  • 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)
  • Move sync_specials to global option (from sonarr 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, or unique via archive_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

24 Jul 23:25
2217e81
Compare
Choose a tag to compare

Major Changes

  • Create new PosterTitleCard Cardtype
    • Based on /u/battleoflight's cards (see here)
    • Specified via card_type of poster or gundam
    • Example of this card:
      example postertitlecard
  • Add mini maker functionality to create Collection posters (#225)
    • Adds --collection-poster (and other) arguments to mini_maker.py
    • Example of a collection poster:
      collection poster example
  • 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 and hide_season_folders options (both accomplished with new option)
  • Allow for custom fonts in AnimeTitleCard - for example:
    custom font AnimeTitleCard

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
  • 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)
    • An example of this, when specified:
      example show summary
    • Look for created_by global preferences, such as:
      archive:
        summary:
          created_by: CollinHeist # for example
    • Added --created-by argument to mini maker for show summary creation
  • Add fixer functionality to unblacklist a series from TMDb
    • Add --unblacklist option to fixer.py
  • Log episode skipping due to generic title detection
    • Episodes reported by Sonarr that have "generic" titles (e.g. TBA or Episode 1) and have aired in the last two days are now logged as they're skipped

Minor Fixes

  • Use sRGB colorspace for ShowSummary 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 to 1.0.6

v1.8.3

13 Jul 17:33
a2c6d68
Compare
Choose a tag to compare

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 global plex preferences
    • If true, the Overlay label is deleted from an episode after a card has been uploaded
  • Download range of episodes from TMDb with fixer (#211)
    • Specify episode range like 2-10 within --tmdb-download-images fixer argument
  • Log card upload failures/retries
  • Created CollinHeist/StandardAllBoldcard which has bolded season and episode text (see below)

Minor Fixes

N/A

v1.8.2

10 Jul 18:57
cbe3448
Compare
Choose a tag to compare

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"
  • 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)
  • Index episode range season titles by episode number if not absolute number is available
    • Better integration with HAMA Anime agent
  • Add Yozora/BarebonesTitleCard and Yozora/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
  • Rework TMDbInterface class to use tmdbapis module (#215)
    • Add tmdbapis module to Pipfile
  • 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

01 Jul 23:09
7e71a91
Compare
Choose a tag to compare

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 and TCM_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)
    • 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}"
  • 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
  • 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 to image_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, or tvdb_id for a given series
    • Specify with tvdb_id, or imdb_id in the datafile for a given episode
  • 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