8000 Add `pipe` param to `view` · Powercoder64/ffmpeg-python@4f97d1d · GitHub
[go: up one dir, main page]

Skip to content

Commit 4f97d1d

Browse files
committed
Add pipe param to view
1 parent e6d09f5 commit 4f97d1d

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

ffmpeg/_view.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,38 @@ def _get_node_color(node):
3030

3131

3232
@stream_operator()
33-
def view(stream_spec, **kwargs):
33+
def view(stream_spec, detail=False, filename=None, pipe=False, **kwargs):
3434
try:
3535
import graphviz
3636
except ImportError:
3737
raise ImportError('failed to import graphviz; please make sure graphviz is installed (e.g. `pip install '
3838
'graphviz`)')
3939

40-
filename = kwargs.pop('filename', None)
4140
show_labels = kwargs.pop('show_labels', True)
42-
if filename is None:
41+
if pipe and filename is not None:
42+
raise ValueError('Can\'t specify both `filename` and `pipe`')
43+
elif not pipe and filename is None:
4344
filename = tempfile.mktemp()
4445

4546
nodes = get_stream_spec_nodes(stream_spec)
4647

4748
sorted_nodes, outgoing_edge_maps = topo_sort(nodes)
48-
graph = graphviz.Digraph()
49+
graph = graphviz.Digraph(format='png')
4950
graph.attr(rankdir='LR')
5051
if len(list(kwargs.keys())) != 0:
5152
raise ValueError('Invalid kwargs key(s): {}'.format(', '.join(list(kwargs.keys()))))
5253

5354
for node in sorted_nodes:
5455
color = _get_node_color(node)
5556

56-
graph.node(str(hash(node)), node.short_repr, shape='box', style='filled', fillcolor=color)
57+
if detail:
58+
lines = [node.short_repr]
59+
lines += ['{!r}'.format(arg) for arg in node.args]
60+
lines += ['{}={!r}'.format(key, node.kwargs[key]) for key in sorted(node.kwargs)]
61+
node_text = '\n'.join(lines)
62+
else:
63+
node_text = node.short_repr
64+
graph.node(str(hash(node)), node_text, shape='box', style='filled', fillcolor=color)
5765
outgoing_edge_map = outgoing_edge_maps.get(node, {})
5866

5967
for edge in get_outgoing_edges(node, outgoing_edge_map):
@@ -78,9 +86,11 @@ def view(stream_spec, **kwargs):
7886
downstream_node_id = str(hash(edge.downstream_node))
7987
graph.edge(upstream_node_id, downstream_node_id, **kwargs)
8088

81-
graph.view(filename, cleanup=True)
82-
83-
return stream_spec
89+
if pipe:
90+
return graph.pipe()
91+
else:
92+
graph.view(filename, cleanup=True)
93+
return stream_spec
8494

8595

8696
__all__ = [

0 commit comments

Comments
 (0)
0