Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create a Web Interface #311

Open
71 of 80 tasks
CollinHeist opened this issue Feb 20, 2023 · 9 comments
Open
71 of 80 tasks

Create a Web Interface #311

CollinHeist opened this issue Feb 20, 2023 · 9 comments
Assignees
Labels
enhancement New feature or request web-ui Part of the v2.0 Web Interface
Milestone

Comments

@CollinHeist
Copy link
Owner

CollinHeist commented Feb 20, 2023

This will be a pretty huge endeavor, but ideally TCM should move away from YAML files and command-line scripts and be interacted with via a web UI/interface, like all the -arr apps. It's derivative, but I think the Sonarr interface is good inspiration for a general layout.

I think the server-side API should using FastAPI to handle the requests and HTML content delivery.

Outstanding Tasks

  • Implement light/dark mode
  • Implement Syncing
    • Run these on automatic schedule
    • Allow user to adjust Sync frequency
      • From the API
      • From the UI
  • Implement Templates
  • Implement Custom Fonts
  • Implement per-Episode toggles/overrides
    • Allow user to create/edit/add font and other card-based customization options from the API and UI
    • Allow user to create/edit/add extras from the API
    • Allow user to create/edit/add extras from the UI
  • Implement translations
    • Add Translations to Templates and Series models
    • Utilize translated titles when indicated as preferred_title
    • Allow Translations to be added/edited via the API
    • Allow Translations to be added/edited via the UI
  • Implement Tautulli integration
    • Utilize "Webhook" API triggers rather than file monitoring
    • Add automatic setup to Connections page
  • Periodically schedule major tasks
    • Episode data refreshing (new episodes, updated titles, etc.)
    • Download source images
    • Card creation
    • Media server loading
    • Title translation
    • Series logo downloading
    • Sync syncing
    • Refresh remote (user) card-types
    • Check for new version of TCM
  • Implement YAML importing functionality
    • Import Fonts
    • Import Templates
    • Import Series
      • Parse Template variables in Series imports
    • Import settings / preferences
    • Import Syncs
    • Maybe import Episode data, although this would be really niche Too niche
    • Create import page within the UI
  • Create missing asset page / report
  • Allow series to be "unmonitored" in which they are skipped when executing scheduled all-series functions
  • Add remote card type dropdown toggles to Settings page
  • Make all card type selectors searchable
  • Update user card types to work with UI
    • Create JSON file on the repository that can be queried to populate the UI
    • Ask all user card creators to submit updated descriptions for their types to add to the JSON file. Give them an opportunity to rename the cards as well
    • Merge some of Wdvh's cards, as there are multiple that are nearly identical and can easily by combined
    • Allow them to be used within TCM
    • Create Pydantic models for all card types
  • Add toggle for enabling/disabling TMDb logo downloading
  • Add page to showcase the different card types and their supported customization options (extras)
  • Add local-storage filter for series on shown main page
  • Create alternate views (table view?) for series on main page Putting on hold until I can think of a good layout
  • Implement SQLAlchemy database migrations with Alembic
  • Add source file display to Series HTML page
    • Show present/missing source images (including dimensions, file size, etc.)
    • Allow users to manually query for source images on a per-Episode basic (via UI)
  • Implement builtin source image selection/overwriting
    • Via manual file upload
    • Via manual URL specification
    • Via TMDb browser
  • Add change log page/section (currently only showing "new release is available" message)
  • Add functionality to import existing cards for a Series
  • Create Pydantic models for all Card types to perform validation
  • Add translated cardinal/ordinal number functionality

Low Priority Tasks


Documentation tasks should be tracked in #339

@CollinHeist CollinHeist added this to the Web Interface milestone Feb 20, 2023
@CollinHeist CollinHeist self-assigned this Feb 20, 2023
@CollinHeist CollinHeist added the enhancement New feature or request label Feb 20, 2023
CollinHeist added a commit that referenced this issue Mar 11, 2023
CollinHeist added a commit that referenced this issue Mar 11, 2023
Will be part of /api/available API endpoint in #311
CollinHeist added a commit that referenced this issue Mar 21, 2023
CollinHeist added a commit that referenced this issue Mar 21, 2023
- Define parts of the HTML files required for each major content endpoint
- Part of #311
CollinHeist added a commit that referenced this issue Mar 21, 2023
- Use dictionaries instead of lists for season titles and extras
- Remove image source priority column
- Use None as default episode text format
- #311
CollinHeist added a commit that referenced this issue Mar 21, 2023
Validate new series form on homepage before submitting API that will fail #311
CollinHeist added a commit that referenced this issue Mar 21, 2023
Should not rely on global preferences object, #311 will pass the Preferences directly into the BaseCardType.__init__()
CollinHeist added a commit that referenced this issue Mar 21, 2023
#311 Plex sync (and other media server syncs) will permit exclusion by library and tag (not just inclusion)
CollinHeist added a commit that referenced this issue Mar 21, 2023
Part of updated Sonarr sync in #311 will require the Preferences to determine the library from a Sonarr path (as volumes are tied to the connection)
CollinHeist added a commit that referenced this issue Mar 21, 2023
CollinHeist added a commit that referenced this issue Mar 22, 2023
Update PlexInterface to use Plex as an episode data source. Part of #311
CollinHeist added a commit that referenced this issue Mar 22, 2023
Show error message details in toast when connection API request fails. Part of #311
CollinHeist added a commit that referenced this issue Mar 22, 2023
- Properly redirect to home page when series is deleted
- Submit edit series PATCH as application/json encoding
- Show media server libraries if library is set or if media server is enabled
- #311
CollinHeist added a commit that referenced this issue Mar 22, 2023
Create Statistics router with endpoints:
- GET /api/statistics/
- GET /api/statistics/series-count
- GET /api/statistics/series/{id}
#311
CollinHeist added a commit that referenced this issue Mar 22, 2023
Part of #311, modify EmbyInterface to raise HTTPExceptions on failures (not exit(1)). No longer use global info_set objects
CollinHeist added a commit that referenced this issue Mar 22, 2023
Submit new syncs with application/json instead of form encoding. #311
CollinHeist added a commit that referenced this issue Mar 22, 2023
Create separate pydantic schemas/models for each sync. These include:
- NewBaseSync (base for all newly added Syncs)
- NewMediaServerSync (base for newly added media server syncs)
- NewEmbySync, NewJellyfinSync, NewPlexSync, and NewSonarrSync which are interface-specific models for creating a sync for that type
- Variations of ExistingBaseSync for return models of existing Sync objects that include ID's and interface assignments
- Part of #311
CollinHeist added a commit that referenced this issue Mar 22, 2023
- Create /api/sync router with most sync functionality implemented
- Ability to create/delete syncs for all supported sources via /api/sync/{interface}/new POST and /api/sync/{id} DELETE endpoints respectively
- Initiating a sync is done via /api/sync/{id} POST endpoint. This queries the assigned interface (if possible) and adds to the SQLAlchemy DB. It then queues background tasks (in separate threads) to assign database ID's and download posters for the newly added series. Syncing from Emby, Plex, and Sonarr are implemented completely.
- Major part of #311
CollinHeist added a commit that referenced this issue Mar 22, 2023
Part of #311. Part of the /api/series endpoint implementation
CollinHeist added a commit that referenced this issue Mar 22, 2023
- Add /api/connection/{connection}/toggle endpoint to enable/disable connection to Emby, Jellyfin, Plex, Sonarr, and TMDb
- Add Jellyfin to the SupportedConnection Literal
- Part of #311
CollinHeist added a commit that referenced this issue Mar 22, 2023
- Update Emby.get_all_series() to work with Web UI arguments
- Add filtering by libraries (excluded libraries)
- Filtering by excluded tags not currently implemented (not a Query param to /Items API endpoint)
- No longer return path to media (not used in Web UI)
- Part of #311
CollinHeist added a commit that referenced this issue May 2, 2023
- Major part of #311
- Add scheduled task to translate all series/episodes (defaults to every 6 hours)
- Wrap all scheduled tasks to log start/finish, as well as correctly set job running attributes
@CollinHeist CollinHeist pinned this issue May 2, 2023
CollinHeist added a commit that referenced this issue May 3, 2023
- Major part of #311
- Schedule logo downloading for all series periodically (defaults to 24h)
- Use updated log_str properties in logging for source gathering
CollinHeist added a commit that referenced this issue May 4, 2023
- Major part of #311
- Create TautulliInterface2 (updated version of TautulliInterface class) which creates a single notification agent triggering a POST webhook to TCM on new content or watched triggers
- Create /api/connections/tautulli/check and /api/connections/tautulli/integrate API endpoints to check for existing and create new agents on Tautulli
- Still needs to be implemented on the UI, but testing the new agent and it is _very_ fast to trigger card updates, within 3 seconds for a card remake/reload
CollinHeist added a commit that referenced this issue May 5, 2023
- Major part of #311
- Add "monitored" attribute to Series SQL table and Pydantic models
- Skip unmonitored Series in scheduled tasks for refreshing episode data and logo downloading
- Add monitored toggle icon to the Series HTML page
- Create /api/series/{series_id}/toggle-monitor API endpoint to toggle a Series' monitored attribute ( can also be done via series config PATCH endpoint)
CollinHeist added a commit that referenced this issue May 6, 2023
- Part of #311
- Create scheduled task to download source images (defaults to 4h)
CollinHeist added a commit that referenced this issue May 6, 2023
- Major part of #311
- Create Tautulli agent form on the Connections page (separate modal) which can be used to create or check existence of the TCM agent
CollinHeist added a commit that referenced this issue May 8, 2023
- Major part of #311
- Change source image API endpoints from GET to POST (more appropriate)
- Create GET /api/sources/series/{series_id} and /api/sources/episode/{episode_id} endpoints to get the existing source details for a Series/Episode
- Add imagesize module import as this is VERY fast to get image sizes (especially compares to ImageMagick)
CollinHeist added a commit that referenced this issue May 8, 2023
- Major part of #311
- Add list of source images to Files tab in Series HTML page
- Implement per-Episode source image querying via UI
CollinHeist added a commit that referenced this issue May 9, 2023
- Major part of #311
- Periodically load all title cards into their associated media servers (Emby/Jellyfin/Plex) at schedulable interval (default 4 hour interval)
CollinHeist added a commit that referenced this issue May 10, 2023
- Major part of #311
- Create /api/sources/episode/{episode_id}/browse API endpoint to get list of all TMDb source images for a given Episode.
- Add clickable TMDb logo SVG to launch a source image browser for viewing and overriding images per-Episode.
- Might want to modify endpoint and HTML to show the image resolution as well
CollinHeist added a commit that referenced this issue May 11, 2023
- Major part of #311
- Create /api/import/ API router to handle YAML import endpoints
- Create /api/import/template API endpoint to import Templates via YAML
CollinHeist added a commit that referenced this issue May 12, 2023
- Major part of #311
- Create /api/import/fonts API endpoint to import font yaml
CollinHeist added a commit that referenced this issue May 12, 2023
- Major part of #311
- Create /api/import/series to import Series YAML and create Series objects with matching config
- Also remove erroneous source_directory from BaseSeries Pydantic model
CollinHeist added a commit that referenced this issue May 13, 2023
Part of #311. Implement endpoints to import global options (from preferences), and Emby settings (not Sync, that'll be separate)
CollinHeist added a commit that referenced this issue May 14, 2023
CollinHeist added a commit that referenced this issue May 14, 2023
- Major part of #311.
- Add Alembic revision file to initialize the database
- Add Alembic script.py.mako and env/config files for migration development
- Actual development will need to be comitted along with the new app-main.py
CollinHeist added a commit that referenced this issue May 17, 2023
- Major part of #311
- Add Template filter condition creation/editing to the Template page within the UI
CollinHeist added a commit that referenced this issue May 17, 2023
- Part of #311.
- Check for new releases every 12 hours
- Add info message to the Settings page when a new release is available
CollinHeist added a commit that referenced this issue May 19, 2023
- Major part of #311
- Change Alembic migration script generation to render as batch by default
- Use ORM relationships for iterating through related Series, Episodes, Syncs, Templates, etc.
- Add map tables for many <-> many relationships between Templates and other tables
- Correct UpdateSync model to use UNDEFINED definitions instead of None
- Update home, sync, and series pages and all endpoints/code to allow Series and Episodes to have multiple Templates
- The effective Template is the first assigned Template whose conditions are all met for a given Series and/or Episode
- Change default Alembic migration script to initialize with updated relationship-driven tables
CollinHeist added a commit that referenced this issue May 20, 2023
- Major part of #311
- Add scheduled task to refresh remote card types every 24 hours
- Handle remote card type identifiers in title card creation
CollinHeist added a commit that referenced this issue May 22, 2023
- Part of #311
- Fix Template identification when importing Sync or Series YAML
- Fix card deletion API endpoint returns
- Refresh episode data when new episode is given via /key API endpoint
- Add title card importing for a series at /api/import/series/{series_id}/cards
- Handle empty returns from TMDb image browser endpoint
- Automatically bypass blacklist when manually browsing images via TMDb source image endpoint
- Create basic YAML import HTML page
- Handle Plex season keys in /key API endpoint
CollinHeist added a commit that referenced this issue May 22, 2023
- Major part of #311
- Add inline dropdown "form" to load cards for a given Series from a given directory
CollinHeist added a commit that referenced this issue May 26, 2023
@CollinHeist CollinHeist added the web-ui Part of the v2.0 Web Interface label Jun 19, 2023
@CollinHeist
Copy link
Owner Author

CollinHeist commented Oct 2, 2023

264538128-64d88162-08e2-4745-aed7-06e136c21b2e
265131184-13375bd9-7fba-4cf7-b446-5837e740bf6d
270040388-57f6fe01-bb14-47ae-aad0-d247903872c1
270040595-eb540414-c472-4970-82dc-9d93a6453971
268150144-8cd0c2b5-bd48-4c58-9e5b-bf1e0ebf322d

@CollinHeist
Copy link
Owner Author

blueprint_multiple_previews.mp4

@CollinHeist
Copy link
Owner Author

CollinHeist commented Jan 5, 2024

banner
graph
inset
shape
286067627-69665175-c0b1-4efb-8f9f-bc5423a24760
287941986-8acff66c-ad5a-4698-83f1-ac50b4807cfa
Mr  Robot (2015) - S04E06
add-series
formula
notification
set
shape-new
shape-old

@CollinHeist
Copy link
Owner Author

CollinHeist commented Aug 23, 2024

webhook

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request web-ui Part of the v2.0 Web Interface
Projects
Status: In Progress
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant