156 lines
4.8 KiB
Diff
156 lines
4.8 KiB
Diff
--- a/ffmpeg/_ffmpeg.py
|
|
+++ b/ffmpeg/_ffmpeg.py
|
|
@@ -1,8 +1,5 @@
|
|
from __future__ import unicode_literals
|
|
|
|
-from past.builtins import basestring
|
|
-from ._utils import basestring
|
|
-
|
|
from .nodes import (
|
|
filter_operator,
|
|
GlobalNode,
|
|
@@ -81,7 +78,7 @@
|
|
"""
|
|
streams_and_filename = list(streams_and_filename)
|
|
if 'filename' not in kwargs:
|
|
- if not isinstance(streams_and_filename[-1], basestring):
|
|
+ if not isinstance(streams_and_filename[-1], str):
|
|
raise ValueError('A filename must be provided')
|
|
kwargs['filename'] = streams_and_filename.pop(-1)
|
|
streams = streams_and_filename
|
|
--- a/ffmpeg/_run.py
|
|
+++ b/ffmpeg/_run.py
|
|
@@ -1,6 +1,6 @@
|
|
from __future__ import unicode_literals
|
|
from .dag import get_outgoing_edges, topo_sort
|
|
-from ._utils import basestring, convert_kwargs_to_cmd_line_args
|
|
+from ._utils import convert_kwargs_to_cmd_line_args
|
|
from builtins import str
|
|
from functools import reduce
|
|
import collections
|
|
@@ -136,7 +136,7 @@
|
|
args += ['-b:a', str(kwargs.pop('audio_bitrate'))]
|
|
if 'video_size' in kwargs:
|
|
video_size = kwargs.pop('video_size')
|
|
- if not isinstance(video_size, basestring) and isinstance(
|
|
+ if not isinstance(video_size, str) and isinstance(
|
|
video_size, collections.Iterable
|
|
):
|
|
video_size = '{}x{}'.format(video_size[0], video_size[1])
|
|
@@ -183,7 +183,7 @@
|
|
This is the same as calling :meth:`get_args` except that it also
|
|
includes the ``ffmpeg`` command as the first argument.
|
|
"""
|
|
- if isinstance(cmd, basestring):
|
|
+ if isinstance(cmd, str):
|
|
cmd = [cmd]
|
|
elif type(cmd) != list:
|
|
cmd = list(cmd)
|
|
--- a/ffmpeg/_utils.py
|
|
+++ b/ffmpeg/_utils.py
|
|
@@ -1,25 +1,8 @@
|
|
from __future__ import unicode_literals
|
|
from builtins import str
|
|
-from past.builtins import basestring
|
|
import hashlib
|
|
import sys
|
|
|
|
-if sys.version_info.major == 2:
|
|
- # noinspection PyUnresolvedReferences,PyShadowingBuiltins
|
|
- str = str
|
|
-
|
|
-
|
|
-# `past.builtins.basestring` module can't be imported on Python3 in some environments (Ubuntu).
|
|
-# This code is copy-pasted from it to avoid crashes.
|
|
-class BaseBaseString(type):
|
|
- def __instancecheck__(cls, instance):
|
|
- return isinstance(instance, (bytes, str))
|
|
-
|
|
- def __subclasshook__(cls, thing):
|
|
- # TODO: What should go here?
|
|
- raise NotImplemented
|
|
-
|
|
-
|
|
def with_metaclass(meta, *bases):
|
|
class metaclass(meta):
|
|
__call__ = type.__call__
|
|
@@ -33,26 +16,13 @@
|
|
return metaclass('temporary_class', None, {})
|
|
|
|
|
|
-if sys.version_info.major >= 3:
|
|
-
|
|
- class basestring(with_metaclass(BaseBaseString)):
|
|
- pass
|
|
-
|
|
-
|
|
-else:
|
|
- # noinspection PyUnresolvedReferences,PyCompatibility
|
|
- from builtins import basestring
|
|
-
|
|
-
|
|
def _recursive_repr(item):
|
|
"""Hack around python `repr` to deterministically represent dictionaries.
|
|
|
|
This is able to represent more things than json.dumps, since it does not require things to be JSON serializable
|
|
(e.g. datetimes).
|
|
"""
|
|
- if isinstance(item, basestring):
|
|
- result = str(item)
|
|
- elif isinstance(item, list):
|
|
+ if isinstance(item, list):
|
|
result = '[{}]'.format(', '.join([_recursive_repr(x) for x in item]))
|
|
elif isinstance(item, dict):
|
|
kv_pairs = [
|
|
--- a/ffmpeg/nodes.py
|
|
+++ b/ffmpeg/nodes.py
|
|
@@ -1,6 +1,5 @@
|
|
from __future__ import unicode_literals
|
|
|
|
-from past.builtins import basestring
|
|
from .dag import KwargReprNode
|
|
from ._utils import escape_chars, get_hash_int
|
|
from builtins import object
|
|
@@ -66,7 +65,7 @@
|
|
"""
|
|
if self.selector is not None:
|
|
raise ValueError('Stream already has a selector: {}'.format(self))
|
|
- elif not isinstance(index, basestring):
|
|
+ elif not isinstance(index, str):
|
|
raise TypeError("Expected string index (e.g. 'a'); got {!r}".format(index))
|
|
return self.node.stream(label=self.label, selector=index)
|
|
|
|
--- a/ffmpeg/_run.py
|
|
+++ b/ffmpeg/_run.py
|
|
@@ -3,7 +3,6 @@
|
|
from ._utils import convert_kwargs_to_cmd_line_args
|
|
from builtins import str
|
|
from functools import reduce
|
|
-import collections
|
|
import copy
|
|
import operator
|
|
import subprocess
|
|
@@ -18,6 +17,11 @@
|
|
output_operator,
|
|
)
|
|
|
|
+try:
|
|
+ from collections.abc import Iterable
|
|
+except ImportError:
|
|
+ from collections import Iterable
|
|
+
|
|
|
|
class Error(Exception):
|
|
def __init__(self, cmd, stdout, stderr):
|
|
@@ -136,9 +140,7 @@
|
|
args += ['-b:a', str(kwargs.pop('audio_bitrate'))]
|
|
if 'video_size' in kwargs:
|
|
video_size = kwargs.pop('video_size')
|
|
- if not isinstance(video_size, str) and isinstance(
|
|
- video_size, collections.Iterable
|
|
- ):
|
|
+ if not isinstance(video_size, str) and isinstance(video_size, Iterable):
|
|
video_size = '{}x{}'.format(video_size[0], video_size[1])
|
|
args += ['-video_size', video_size]
|
|
args += convert_kwargs_to_cmd_line_args(kwargs)
|