nxtools is a set of various tools and helpers used by Nebula broadcast automation system and other software by imm studios, z.s.


Keywords
utilities, logging, automation, ffmpeg, casparcg
License
MIT
Install
pip install nxtools==1.6

Documentation

nxtools

nxtools is a set of various tools and helpers used by Nebula and other software.

Installation

pip install nxtools

Optional dependencies

  • unidecode for full unicode transliteration
  • colorama for colored log output even on Windows

Examples

Reference

CasparCG

CasparCG client object

CasparResponse

Caspar query response object

FileObject

An object representing a file on the filesystem.

The class provides a number of utility methods and properties for easy access to file metadata.

critical_error

Log an error message and exit program.

datestr2ts

Convert a YYYY-MM-DD string to an unix timestamp.

By default, start of the day (midnight) is returned.

Args:
    datestr (str):
        `YYYY-MM-DD` string

    hh (int):
        Hour (default: 0)

    mm (int):
        Minute (default: 0)

    ss (int):
        Second (default: 0)

Returns:
    int:
        Parsed unix timestamp

f2tc

Convert frames to an SMPTE timecode

Args:
    frames (int):
        Frame count

    base (float):
        Frame rate (default: 25)

Returns:
    str:
        SMPTE timecode (`HH:MM:SS:FF`)

ffmpeg

FFMpeg wrapper with progress and error handling

Args:
    *args (list[any]): 
        List of ffmpeg command line arguments.
        Each argument is converted to a string.

    progress_handler (function):
        Function to be called with the current position (seconds) as argument.

    stdin (file):
        File object to be used as stdin.
        Default is subprocess.PIPE

    stdout (file):
        File object to be used as stdout.
        Default is None

    stderr (file):
        File object to be used as stderr.
        Default is subprocess.PIPE (used to compute progress).

    debug (bool):
        Enable debug mode (write ffmpeg output to stderr).

Returns:
    boolean: indicate if the process was successful

ffprobe

Extract metadata from a media file using ffprobe and returns a dictionary object with the result

Args:
    input_file (str): 
        Path to the media file

    verbose (bool): 
        Log the ffprobe command. Default is False

Returns:
    dict: metadata

file_to_title

Attempt to un-slugify a file name

filter_arc

Aspect ratio convertor. you must specify output size and source aspect ratio (as float)

filter_deinterlace

Yadif deinterlace

find_binary

Attempt to find a given executable and return its path

Args:
    file_name (str): The name of the executable to find

Returns:
    str: The path to the executable

format_filesize

Return a human readable filesize for a given byte count

format_time

Format an Unix timestamp as a local or GMT time

Args:
    timestamp (int):
        input unix timestamp

    time_format (str):
        strftime specification
        (default: "%Y-%m-%d %H:%M:%S" - the correct one)

    never_placeholder (str):
        text used when timestamp is not specified (default: "never")

    gmt (bool):
        Use GMT time instead of local time (default: False)

Returns:
    str:
        Formatted time

get_base_name

Strip a directory and extension from a given path.

/etc/foo/bar.baz becomes bar

Args:
    file_name (str): path-like object, string or FileObject

Returns:
    str

get_files

Crawl a given directory

For each file found in base_path yield a FileObject object.

Args:
    base_path (str):
        Path to the directory to be crawled

    recursive (bool):
        Crawl recursively (default: False)

    hidden (bool):
        Yield hidden (dot)files too (default: False)

    exts (list):
        If specified, yields only files matching given extensions

    case_sensitive_exts (bool):
        Do not ignore cases when `exts` list is used (default: False)

get_guid

Return a GUID

Returns: str: GUID

get_path_pairs

For each file found in input_dir and yield a tuple of (input_path, output_path)

This function is useful for batch conversion, when you need to process files from input_dir and output the result to output_dir.

Most arguments are the same as for get_files. You can also specify a target extension, and use a slugifier for the output path.

Args:
    target_ext (str):
    target_slugify (bool): (default: False)

get_temp

Return a path to a temporary file

Args:
    extension (str)
    root (str)

indent

Indent a multi-line text

join_filters

Joins multiple filters

log_traceback

Log the current exception traceback

s2tc

Convert seconds to an SMPTE timecode

Args:
    secs (float):
        Number of seconds

    base (float):
        Frame rate (default: 25)

Returns:
    str:
        SMPTE timecode (`HH:MM:SS:FF`)

s2time

Convert seconds to time

Args:
    secs (float):

    show_secs (bool):
        Show seconds (default: True)

    show_fracs (bool):
        Show centiseconds (default: True)

Returns:
    str:
        `HH:MM` / `HH:MM:SS` / `HH:MM:SS.CS` string

s2words

Create a textual (english) representation of given number of seconds.

This function is useful for showing estimated time of a process.

Args:
    secs (int):
        Number of seconds

Returns:
    str:
        Textual information

slugify

Slugify a text string

This function removes transliterates input string to ASCII, removes special characters and use join resulting elemets using specified separator.

Args:
    input_string (str):
        Input string to slugify

    separator (str): 
        A string used to separate returned elements (default: "-")

    lower (bool): 
        Convert to lower-case (default: True)

    make_set (bool):
        Return "set" object instead of string

    min_length (int): 
        Minimal length of an element (word)

    slug_whitelist (str): 
        Characters allowed in the output
        (default: ascii letters, digits and the separator)

    split_chars (str): 
        Set of characters used for word splitting (there is a sane default)

string2color

Generate more or less unique color for a given string

tc2s

Convert an SMPTE timecode (HH:MM:SS:FF) to number of seconds

Args:
    tc (str):
        Source timecode

    base (float):
        Frame rate (default: 25)

Returns:
    float:
        Resulting value in seconds

unaccent

Remove accents and/or transliterate non-ascii characters

xml

Parse an XML string using ElementTree

Args:
    data (str): The XML document to parse

Returns:
    ElementTree.Element: The root element of the parsed XML string