AdvancedAV: Add pathlib support

master
Taeyeon Mori 8 years ago
parent 49bfa744ff
commit 04c609c152
  1. 21
      lib/python/advancedav.py

@ -6,7 +6,7 @@ AdvancedAV FFmpeg commandline generator v2.0 [Library Edition]
It can automatically parse input files with the help of FFmpeg's ffprobe tool (WiP) It can automatically parse input files with the help of FFmpeg's ffprobe tool (WiP)
and allows programatically mapping streams to output files and setting metadata on them. and allows programatically mapping streams to output files and setting metadata on them.
----------------------------------------------------------- -----------------------------------------------------------
Copyright 2014-2016 Taeyeon Mori Copyright 2014-2017 Taeyeon Mori
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -31,9 +31,15 @@ import itertools
from abc import ABCMeta, abstractmethod from abc import ABCMeta, abstractmethod
from collections.abc import Iterable, Mapping, Sequence, Iterator, MutableMapping from collections.abc import Iterable, Mapping, Sequence, Iterator, MutableMapping
try:
from pathlib import Path, PurePath
except ImportError:
pass
__all__ = "AdvancedAVError", "AdvancedAV", "SimpleAV" __all__ = "AdvancedAVError", "AdvancedAV", "SimpleAV"
version_info = 2, 1, 0 version_info = 2, 1, 1
# Constants # Constants
DEFAULT_CONTAINER = "matroska" DEFAULT_CONTAINER = "matroska"
@ -187,12 +193,17 @@ class File(ObjectWithOptions):
""" """
ABC for Input- and Output-Files ABC for Input- and Output-Files
""" """
__slots__ = "name", "_streams", "_streams_by_type", "options" __slots__ = "name", "_streams", "_streams_by_type", "options", "path"
def __init__(self, name: str, options: dict=None, **more): def __init__(self, name: str, options: dict=None, **more):
super().__init__(options=options, **more) super().__init__(options=options, **more)
self.name = name if Path: # Need to
self.path = Path(name)
self.name = str(name)
else:
self.name = name
self.options = options if options is not None else {} self.options = options if options is not None else {}
""" :type: dict[str, str] """ """ :type: dict[str, str] """
@ -528,6 +539,8 @@ class Task:
:param file: Can be either the filename of an input file or an InputFile object. :param file: Can be either the filename of an input file or an InputFile object.
The latter will be created if the former is passed. The latter will be created if the former is passed.
""" """
if PurePath and isinstance(file, PurePath): # Pathlib support
file = str(file)
if isinstance(file, str): if isinstance(file, str):
if file in self.inputs_by_name: if file in self.inputs_by_name:
return self.inputs_by_name[file] return self.inputs_by_name[file]

Loading…
Cancel
Save