8000 #18: fix to use latest #17 changes · Powercoder64/ffmpeg-python@1955547 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1955547

Browse files
committed
kkroening#18: fix to use latest kkroening#17 changes
1 parent 656d9fa commit 1955547

File tree

1 file changed

+32
-16
lines changed

1 file changed

+32
-16
lines changed

ffmpeg/_view.py

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,46 @@
66
import tempfile
77

88
from ffmpeg.nodes import (
9+
FilterNode,
910
InputNode,
1011
OutputNode,
11-
FilterNode,
12-
operator,
12+
Stream,
13+
stream_operator,
1314
)
1415

1516

16-
@operator()
17-
def view(*downstream_nodes, **kwargs):
17+
def _get_node_color(node):
18+
if isinstance(node, InputNode):
19+
color = '#99cc00'
20+
elif isinstance(node, OutputNode):
21+
color = '#99ccff'
22+
elif isinstance(node, FilterNode):
23+
color = '#ffcc00'
24+
else:
25+
color = None
26+
return color
27+
28+
29+
@stream_operator()
30+
def view(*streams, **kwargs):
1831
try:
1932
import graphviz
2033
except ImportError:
2134
raise ImportError('failed to import graphviz; please make sure graphviz is installed (e.g. `pip install '
2235
'graphviz`)')
2336

2437
filename = kwargs.pop('filename', None)
25-
show_labels = kwargs.pop('show_labels', False)
38+
show_labels = kwargs.pop('show_labels', True)
2639
if filename is None:
2740
filename = tempfile.mktemp()
2841

29-
sorted_nodes, outgoing_edge_maps = topo_sort(downstream_nodes)
42+
nodes = []
43+
for stream in streams:
44+
if not isinstance(stream, Stream):
45+
raise TypeError('Expected Stream; got {}'.format(type(stream)))
46+
nodes.append(stream.node)
47+
48+
sorted_nodes, outgoing_edge_maps = topo_sort(nodes)
3049
graph = graphviz.Digraph()
3150
graph.attr(rankdir='LR')
3251
if len(kwargs.keys()) != 0:
@@ -36,20 +55,17 @@ def view(*downstream_nodes, **kwargs):
3655
name = node.name
3756
if '_kwargs' in dir(node) and 'filename' in node._kwargs:
3857
name = os.path.basename(node._kwargs['filename'])
39-
if isinstance(node, InputNode):
40-
color = '#99cc00'
41-
elif isinstance(node, OutputNode):
42-
color = '#99ccff'
43-
elif isinstance(node, FilterNode):
44-
color = '#ffcc00'
45-
else:
46-
color = None
58+
color = _get_node_color(node)
59+
4760
graph.node(str(hash(node)), name, shape='box', style='filled', fillcolor=color)
4861
outgoing_edge_map = outgoing_edge_maps.get(node, {})
62+
4963
for edge in get_outgoing_edges(node, outgoing_edge_map):
5064
kwargs = {}
51-
if show_labels:
52-
kwargs['label'] = '{} -> {}'.format(edge.upstream_label, edge.downstream_label)
65+
if show_labels and (edge.upstream_label is not None or edge.downstream_label is not None):
66+
upstream_label = edge.upstream_label if edge.upstream_label is not None else ''
67+
downstream_label = edge.downstream_label if edge.downstream_label is not None else ''
68+
kwargs['label'] = '{} {}'.format(upstream_label, downstream_label)
5369
upstream_node_id = str(hash(edge.upstream_node))
5470
downstream_node_id = str(hash(edge.downstream_node))
5571
graph.edge(upstream_node_id, downstream_node_id, **kwargs)

0 commit comments

Comments
 (0)
0