Code Monkey home page Code Monkey logo

notba-scripterx's Introduction

๐Ÿ”ƒ No TBA for Emby

Hate having your perfect library ruined by a stray episode titled "Episode XX" or "TBA" because the data wasn't available at the time it was scanned in? These scripts will attempt to solve that by collecting episodes with these placeholder titles and periodically refreshing their metadata until an actual title is found.

Features

  • Checks for placeholder titles such as "Episode XX" or "TBA"
  • Checks for placeholder thumbnails
  • Ability to refresh episodes multiple times until a certain amount of days pass
  • View all the episodes being tracked in the database
  • Bulk check library. All of the library or by year.

Requirements

  • Emby server API token
  • Emby Scripter-X plugin
  • Python 3

Setup

Start in a directory that your Emby server can see.

Clone repository

git clone https://github.com/stummyhurt/noTBA-scripterx.git no-tba
cd no-tba

Install requirements

pip3 install -r ./requirements.txt

# NOTE FOR LINUX: Your emby user must be able to see the modules. 
# Either add sudo to previous command or install them under your emby user.
sudo -H -u <EMBY_USER> bash -c 'pip3 install -r ./requirements.txt' 

Complete Config

All that is needed is the api_token and base_url

#config.py

api_token = ''
base_url = ''

# If you'd like the script to check for thumbnails as well, set to True
check_thumbs = False

Check Current Media (optional)

This will check your current media for episodes with placeholder titles.

Warning

I highly recommend having your logging level set to 2 (warn) in config.py when doing this

Send a string of the years you want to check in a comma separated list. By default, the script will check media from the year 2021.

# checks media from years 2019, 2020 and 2021
python3 ./checkAllEps.py '2019,2020,2021'

# checks media from all years
python3 ./checkAllEps.py all

# checks media from 2021
python3 ./checkAllEps.py

Scripter-X Setup

This Scripter-X setup will allow your server to check episodes as they're added, and automatically refresh metadata of those episodes based on a scheduled task.

Note for Linux: Your emby user must be able to write to the directory.

Find Python

First, we need to know the path for python.

# For UNIX
which python3
# For PowerShell
Get-Command python

# For CMD
where python

In my case, python is located at /usr/bin/python3

Add Task for onMediaItemAddedComplete

Under the Scripter-X plugin page, find the event onMediaItemAddedComplete and add a task that matches the following.

# Scipt File
/path/to/checkEp.py

# Interpreter
/path/to/python3

# Parameters (Quotes are needed!)
"%item.type%" "%item.id%" %item.isvirtual%

Don't forget to click the check mark.

Example

Add Task for onScheduledTask

Under the Scripter-X plugin page, find the event onScheduledTask and add a task that matches the following.

# Scipt File
/path/to/refreshEps.py

# Interpreter
/path/to/python3

Don't forget to click the check mark.

Example

Set Schedule for onScheduledTask

Under Emby's Scheduled Tasks page, find Emby ScripterX Scheduled Task and set it to run on your desired schedule. An example would be to run the script daily at 4am.

Example

Setup is complete!!!

Extras

There are a couple extra features in this collection of scripts. Namely, viewing the database that all the info is stored in, and checking huge sections of your library for placeholder titles and thumbnails.

Viewing the Database

Viewing the database is as simple as running the following command.

python3 db.py

You will get all the information stored in the database db.sqlite in a nice looking table (if your screen is >100 characters wide). Here's an example

 id       series                     last_title                    checked_since      needs   needs
                                                                                      title   thumb
-------- -------------------------- ----------------------------- ------------------ ------- -------
 154883   Super Cool Show            Not a placeholder             2021-09-06 21:25           Y
 154851   Some Anime                 Episode 9                     2021-09-06 12:38   Y
 154824   Rick and Morty             Forgetting Sarick Mortshall   2021-09-05 23:41           Y
 154825   Rick and Morty             Rickmurai Jack                2021-09-05 23:41           Y

Bulk Checking Episodes

At some point you may want to check all of your library for placeholder episode titles or thumbnails. That's exactly what checkAllEps.py is for. You also have the choice to check by year.

Warning

I highly recommend having your logging level set to 2 (warn) in config.py when doing this

Send a string of the years you want to check in a comma separated list. By default, the script will check media from the current year.

# checks media from years 2019, 2020 and 2021
python3 ./checkAllEps.py 2019,2020,2021

# checks all media
python3 ./checkAllEps.py all

# checks media from current year
python3 ./checkAllEps.py

notba-scripterx's People

Contributors

seansusmilch avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.