Nfog - Scriptable Database-Driven NFO Generator for Movies and TV

Related tags

Miscellaneous nfog
Overview

nfog

License Python Support Release GitHub issues

Scriptable Database-Driven NFO Generator for Movies and TV.

Installation

pip install --user nfog

Building

Dependencies

Installation

  1. git clone https://github.com/rlaphoenix/nfog
  2. cd nfog
  3. poetry config virtualenvs.in-project true (optional, but recommended)
  4. poetry install
  5. nfo -h

Creating Templates

We use Template's to define the structure and logic that creates your NFO file. Your Template file may create NFOs of any kind of encoding or style, including ASCII, ANSI, and such. You don't have to conform to any specifications of any kind, but are encouraged to if possible.

To create a Template file, you simply need to inherit the Template class in nfog.template, fill out the various abstract methods/properties, and create an nfo property that returns a final string.

Take a look at the Example Templates for pre-made examples for various NFO usage scenarios. You may modify these Templates in any way you like.

Note: While you have complete freedom with what Python code you run from within the template, this also means you should not immediately trust template file as they are after all still Python files.

Creating Artwork

Just like Templates, we use Artwork files to define the look and style of the surrounding NFO. You may also do introspection of the NFO output to merge style within the contents of the NFO as well.

To create an Artwork file, inherit the Artwork class in nfog.artwork, fill out any abstract methods and properties, and create the with_template function that returns the final string containing both the NFO output (from template argument) and the Artwork.

Take a look at the Example Artwork to see how these are used. However, you cannot re-use these, or make derivative works. Please see the Artwork License for more information.

Using Templates and Artwork

To use Templates and Artwork, calling nfo (or nfo generate) will ask you for various information, but one of them is a Template to use. The Templates it makes available to use are loaded from the user templates directory which can be found by typing nfo version.

To use an Artwork, specify the name of the Artwork file (case-sensitive) to -a/--artwork. Using an Artwork is completely optional.

For more information on using nfog, see the usage help by calling nfo --help.

License

Apache License, Version 2.0

You might also like...
Sequence clustering and database creation using mmseqs, from local fasta files

Sequence clustering and database creation using mmseqs, from local fasta files

Sample python script for monitoring Rocketchat database and get statistics of users.
Sample python script for monitoring Rocketchat database and get statistics of users.

rocketchat-DB-monitoring Sample python script for monitoring Rocketchat database and get statistics of users. 1. Update python: yum check-update && yu

Student Result Management System Project in tkinter created based on python, tkinter, and SQLITE3 Database
Student Result Management System Project in tkinter created based on python, tkinter, and SQLITE3 Database

Student-Result-Management-System This Student Result Management System Project in tkinter created based on python, tkinter, and SQLITE3 Database. The

Different steganography methods with examples and my own small image database

literally-the-most-useless-project [Different steganography methods with examples and my own small image database] This project currently contains thr

Arcpy Tool developed for ArcMap 10.x that checks DVOF points against TDS data and creates an output feature class as well as a check database.

DVOF_check_tool Arcpy Tool developed for ArcMap 10.x that checks DVOF points against TDS data and creates an output feature class as well as a check d

IDA Pro plugin that shows the comments in a database
IDA Pro plugin that shows the comments in a database

ShowComments A Simple IDA Pro plugin that shows the comments in a database Installation Copy the file showcomments.py to the plugins folder under IDA

Python module to work with Magneto Database directly without using broken Magento 2 core
Python module to work with Magneto Database directly without using broken Magento 2 core

Python module to work with Magneto Database directly without using broken Magento 2 core

A basic layout of atm working of my local database
A basic layout of atm working of my local database

Software for working Banking service 😄 This project was developed for Banking service. mysql server is required To have mysql server on your system u

Comments
  • Bump certifi from 2021.10.8 to 2022.12.7

    Bump certifi from 2021.10.8 to 2022.12.7

    Bumps certifi from 2021.10.8 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump lxml from 4.7.1 to 4.9.1

    Bump lxml from 4.7.1 to 4.9.1

    Bumps lxml from 4.7.1 to 4.9.1.

    Changelog

    Sourced from lxml's changelog.

    4.9.1 (2022-07-01)

    Bugs fixed

    • A crash was resolved when using iterwalk() (or canonicalize()) after parsing certain incorrect input. Note that iterwalk() can crash on valid input parsed with the same parser after failing to parse the incorrect input.

    4.9.0 (2022-06-01)

    Bugs fixed

    • GH#341: The mixin inheritance order in lxml.html was corrected. Patch by xmo-odoo.

    Other changes

    • Built with Cython 0.29.30 to adapt to changes in Python 3.11 and 3.12.

    • Wheels include zlib 1.2.12, libxml2 2.9.14 and libxslt 1.1.35 (libxml2 2.9.12+ and libxslt 1.1.34 on Windows).

    • GH#343: Windows-AArch64 build support in Visual Studio. Patch by Steve Dower.

    4.8.0 (2022-02-17)

    Features added

    • GH#337: Path-like objects are now supported throughout the API instead of just strings. Patch by Henning Janssen.

    • The ElementMaker now supports QName values as tags, which always override the default namespace of the factory.

    Bugs fixed

    • GH#338: In lxml.objectify, the XSI float annotation "nan" and "inf" were spelled in lower case, whereas XML Schema datatypes define them as "NaN" and "INF" respectively.

    ... (truncated)

    Commits
    • d01872c Prevent parse failure in new test from leaking into later test runs.
    • d65e632 Prepare release of lxml 4.9.1.
    • 86368e9 Fix a crash when incorrect parser input occurs together with usages of iterwa...
    • 50c2764 Delete unused Travis CI config and reference in docs (GH-345)
    • 8f0bf2d Try to speed up the musllinux AArch64 build by splitting the different CPytho...
    • b9f7074 Remove debug print from test.
    • b224e0f Try to install 'xz' in wheel builds, if available, since it's now needed to e...
    • 897ebfa Update macOS deployment target version from 10.14 to 10.15 since 10.14 starts...
    • 853c9e9 Prepare release of 4.9.0.
    • d3f77e6 Add a test for https://bugs.launchpad.net/lxml/+bug/1965070 leaving out the a...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v1.1.0)
  • v1.1.0(Feb 2, 2022)

    Breaking Template Changes

    Accessing TMDB ID

    If you used tmdb to list the TMDB ID anywhere, you need to update it from {self.tmdb} to {self.tmdb.id} and manually put tv/ or movie/ before it for the same behavior as before. Make sure to still check that self.tmdb is available before using it.

    For example:

    if self.tmdb:
    -    self._nfo.append(f"  TMDB     : https://themoviedb.org/{self.tmdb}")
    +    self._nfo.append(f"  TMDB     : https://themoviedb.org/tv/{self.tmdb.id}")
    

    See 0350498.

    Added

    • TMDB IDs are now transformed to an API Instance Object using tmdbsimple. This can be used to get title information from TMDB instead of IMDb if you prefer. Note: This requires a TMDB API v3 key in your config at api-keys.tmdb.
    • Default nfo generate arguments can now be specified in the config at cli.generate. This can be useful for example to set a default Artwork unless manually specified.
    • Created four Track classes, BaseTrack, Video, Audio, and Subtitle. All MediaInfo track property modification and filtering is to be done within it to keep Template clean.
    • MPEG-1/2 videos now use pyd2v and DGIndex to check for accurate Variable Scan Type data in the Video.scan property.

    Removed

    • Removed all forms of filtering and checks from track titles. It is now returned as-is. Templates now assume it does not contain information already specified in the track metadata.

    Changed

    • IMDb ID has been made optional in generate to accommodate the implementation of TMDB as a usable API Object in templates. However, at least an IMDb or TMDB ID is still required.
    • All Track-related filtering and functions have been moved to the new Track classes.
    • Template's get_banner_image function now returns None if there's no https://fanart.tv API Key within the user's config.
    • The config format for API Keys has changed, the https://fanart.tv API Key is now stored at api-keys.fanart-tv.

    Example templates: https://github.com/rlaphoenix/nfog/tree/v1.1.0/examples

    Source code(tar.gz)
    Source code(zip)
    nfog-1.1.0-py3-none-any.whl(18.42 KB)
Owner
null
Generate PNG filles from NFO files.

Installation git clone https://github.com/pcroland/nfopng cd nfopng pip install -r requirements.txt Usage ❯ ./nfopng.py usage: nfopng.py [-h] [-v] [-i

null 4 Jun 26, 2022
A Python script to delete movies with a certain tag after a certain amount of days.

radarr_autodelete Simple script, which deletes movies with a specific tag after a certain amount of days Pip Packages pip3 install pyarr python-dotenv

null 7 Dec 6, 2022
Modelling and Implementation of Cable Driven Parallel Manipulator System with Tension Control

Cable Driven Parallel Robots (CDPR) is also known as Cable-Suspended Robots are the emerging and flexible end effector manipulation system. Cable-driven parallel robots (CDPRs) are categorized as a type of parallel manipulators

Siddharth U 0 Jul 19, 2022
A community-driven python bot that aims to be as simple as possible to serve humans with their everyday tasks

JARVIS on Messenger Just A Rather Very Intelligent System, now on Messenger! Messenger is now used by 1.2 billion people every month. With the launch

Swapnil Agarwal 1.3k Jan 7, 2023
This is a menu driven Railway Reservation Project which is mainly based on the python-mysql connectivity.

Online-Railway-Reservation-System This is a menu driven Railway Reservation Project which is mainly based on the python-mysql connectivity. The projec

Ananya Gupta 1 Jan 9, 2022
A data driven app for bicycle hiring in London(UK)

bicycle_hiring_app_deployed A data driven app for bicycle hiring in London(UK). It predicts expected number of bicycle hire in London. It asks users t

Rajarshi Roy Raju 1 Dec 10, 2021
A python package to manage the stored receiver-side Strain Green's Tensor (SGT) database of 3D background models and able to generate Green's function and synthetic waveform

A python package to manage the stored receiver-side Strain Green's Tensor (SGT) database of 3D background models and able to generate Green's function and synthetic waveform

Liang Ding 7 Dec 14, 2022
This is a database of 180.000+ symbols containing Equities, ETFs, Funds, Indices, Futures, Options, Currencies, Cryptocurrencies and Money Markets.

Finance Database As a private investor, the sheer amount of information that can be found on the internet is rather daunting.

Jeroen Bouma 1.4k Dec 31, 2022
2 Way Sync Between Notion Database and Google Calendar

Notion-and-Google-Calendar-2-Way-Sync 2 Way Sync Between a Notion Database and Google Calendar WARNING: This repo will be undergoing a good bit of cha

null 248 Dec 26, 2022
Yunqi Chen 7 Oct 30, 2022