<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>pymediainfo package — pymediainfo 1.0 documentation</title> <link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="_static/language_data.js"></script> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> <link rel="prev" title="Welcome to pymediainfo’s documentation!" href="index.html" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" /> <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> </head><body> <div class="document"> <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="sphinxsidebarwrapper"> <h1 class="logo"><a href="index.html">pymediainfo</a></h1> <h3>Navigation</h3> <ul class="current"> <li class="toctree-l1 current"><a class="current reference internal" href="#">pymediainfo package</a></li> </ul> <div class="relations"> <h3>Related Topics</h3> <ul> <li><a href="index.html">Documentation overview</a><ul> <li>Previous: <a href="index.html" title="previous chapter">Welcome to pymediainfo’s documentation!</a></li> </ul></li> </ul> </div> <div id="searchbox" style="display: none" role="search"> <h3>Quick search</h3> <div class="searchformwrapper"> <form class="search" action="search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <div class="section" id="pymediainfo-package"> <h1>pymediainfo package<a class="headerlink" href="#pymediainfo-package" title="Permalink to this headline">¶</a></h1> <div class="section" id="module-pymediainfo"> <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-pymediainfo" title="Permalink to this headline">¶</a></h2> <dl class="class"> <dt id="pymediainfo.MediaInfo"> <em class="property">class </em><code class="descclassname">pymediainfo.</code><code class="descname">MediaInfo</code><span class="sig-paren">(</span><em>xml</em>, <em>encoding_errors='strict'</em><span class="sig-paren">)</span><a class="headerlink" href="#pymediainfo.MediaInfo" title="Permalink to this definition">¶</a></dt> <dd><p>An object containing information about a media file.</p> <p><a class="reference internal" href="#pymediainfo.MediaInfo" title="pymediainfo.MediaInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">MediaInfo</span></code></a> objects can be created by directly calling code from libmediainfo (in this case, the library must be present on the system):</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">pymediainfo</span><span class="o">.</span><span class="n">MediaInfo</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">"/path/to/file.mp4"</span><span class="p">)</span> </pre></div> </div> <p>Alternatively, objects may be created from MediaInfo’s XML output. Such output can be obtained using the <code class="docutils literal notranslate"><span class="pre">XML</span></code> output format on versions older than v17.10 and the <code class="docutils literal notranslate"><span class="pre">OLDXML</span></code> format on newer versions.</p> <p>Using such an XML file, we can create a <a class="reference internal" href="#pymediainfo.MediaInfo" title="pymediainfo.MediaInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">MediaInfo</span></code></a> object:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">"output.xml"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="gp">... </span> <span class="n">mi</span> <span class="o">=</span> <span class="n">pymediainfo</span><span class="o">.</span><span class="n">MediaInfo</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">())</span> </pre></div> </div> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> <li><strong>xml</strong> (<em>str</em>) – XML output obtained from MediaInfo.</li> <li><strong>encoding_errors</strong> (<em>str</em>) – option to pass to <code class="xref py py-func docutils literal notranslate"><span class="pre">str.encode()</span></code>’s <cite>errors</cite> parameter before parsing <cite>xml</cite>.</li> </ul> </td> </tr> <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first"><strong>xml.etree.ElementTree.ParseError</strong> – if passed invalid XML.</p> </td> </tr> <tr class="field-odd field"><th class="field-name">Variables:</th><td class="field-body"><p class="first last"><strong>tracks</strong> – <p>A list of <a class="reference internal" href="#pymediainfo.Track" title="pymediainfo.Track"><code class="xref py py-class docutils literal notranslate"><span class="pre">Track</span></code></a> objects which the media file contains. For instance:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">mi</span> <span class="o">=</span> <span class="n">pymediainfo</span><span class="o">.</span><span class="n">MediaInfo</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">"/path/to/file.mp4"</span><span class="p">)</span> <span class="gp">>>> </span><span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">mi</span><span class="o">.</span><span class="n">tracks</span><span class="p">:</span> <span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="go"><Track track_id='None', track_type='General'></span> <span class="go"><Track track_id='1', track_type='Text'></span> </pre></div> </div> </p> </td> </tr> </tbody> </table> <dl class="classmethod"> <dt id="pymediainfo.MediaInfo.can_parse"> <em class="property">classmethod </em><code class="descname">can_parse</code><span class="sig-paren">(</span><em>library_file=None</em><span class="sig-paren">)</span><a class="headerlink" href="#pymediainfo.MediaInfo.can_parse" title="Permalink to this definition">¶</a></dt> <dd><p>Checks whether media files can be analyzed using libmediainfo.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">bool</td> </tr> </tbody> </table> </dd></dl> <dl class="classmethod"> <dt id="pymediainfo.MediaInfo.parse"> <em class="property">classmethod </em><code class="descname">parse</code><span class="sig-paren">(</span><em>filename</em>, <em>library_file=None</em>, <em>cover_data=False</em>, <em>encoding_errors='strict'</em>, <em>parse_speed=0.5</em>, <em>text=False</em>, <em>full=True</em>, <em>legacy_stream_display=False</em><span class="sig-paren">)</span><a class="headerlink" href="#pymediainfo.MediaInfo.parse" title="Permalink to this definition">¶</a></dt> <dd><p>Analyze a media file using libmediainfo. If libmediainfo is located in a non-standard location, the <cite>library_file</cite> parameter can be used:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">pymediainfo</span><span class="o">.</span><span class="n">MediaInfo</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">"tests/data/sample.mkv"</span><span class="p">,</span> <span class="gp">... </span> <span class="n">library_file</span><span class="o">=</span><span class="s2">"/path/to/libmediainfo.dylib"</span><span class="p">)</span> </pre></div> </div> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> <li><strong>filename</strong> (<em>str</em><em> or </em><em>pathlib.Path</em>) – path to the media file which will be analyzed. A URL can also be used if libmediainfo was compiled with CURL support.</li> <li><strong>library_file</strong> (<em>str</em>) – path to the libmediainfo library, this should only be used if the library cannot be auto-detected.</li> <li><strong>cover_data</strong> (<em>bool</em>) – whether to retrieve cover data as base64.</li> <li><strong>encoding_errors</strong> (<em>str</em>) – option to pass to <code class="xref py py-func docutils literal notranslate"><span class="pre">str.encode()</span></code>’s <cite>errors</cite> parameter before parsing MediaInfo’s XML output.</li> <li><strong>parse_speed</strong> (<em>float</em>) – passed to the library as <cite>ParseSpeed</cite>, this option takes values between 0 and 1. A higher value will yield more precise results in some cases but will also increase parsing time.</li> <li><strong>text</strong> (<em>bool</em>) – if <code class="docutils literal notranslate"><span class="pre">True</span></code>, MediaInfo’s text output will be returned instead of a <a class="reference internal" href="#pymediainfo.MediaInfo" title="pymediainfo.MediaInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">MediaInfo</span></code></a> object.</li> <li><strong>full</strong> (<em>bool</em>) – display additional tags, including computer-readable values for sizes and durations.</li> <li><strong>legacy_stream_display</strong> (<em>bool</em>) – display additional information about streams.</li> </ul> </td> </tr> <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first">str if <cite>text</cite> is <code class="docutils literal notranslate"><span class="pre">True</span></code>.</p> </td> </tr> <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><a class="reference internal" href="#pymediainfo.MediaInfo" title="pymediainfo.MediaInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">MediaInfo</span></code></a> otherwise.</p> </td> </tr> <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><ul class="first last simple"> <li><strong>FileNotFoundError</strong> – if passed a non-existent file (Python ≥ 3.3), does not work on Windows.</li> <li><strong>IOError</strong> – if passed a non-existent file (Python < 3.3), does not work on Windows.</li> <li><strong>RuntimeError</strong> – if parsing fails, this should not happen unless libmediainfo itself fails.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> <dl class="method"> <dt id="pymediainfo.MediaInfo.to_data"> <code class="descname">to_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#pymediainfo.MediaInfo.to_data" title="Permalink to this definition">¶</a></dt> <dd><p>Returns a dict representation of the object’s <a class="reference internal" href="#pymediainfo.Track" title="pymediainfo.Track"><code class="xref py py-class docutils literal notranslate"><span class="pre">Tracks</span></code></a>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">dict</td> </tr> </tbody> </table> </dd></dl> <dl class="method"> <dt id="pymediainfo.MediaInfo.to_json"> <code class="descname">to_json</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#pymediainfo.MediaInfo.to_json" title="Permalink to this definition">¶</a></dt> <dd><p>Returns a JSON representation of the object’s <a class="reference internal" href="#pymediainfo.Track" title="pymediainfo.Track"><code class="xref py py-class docutils literal notranslate"><span class="pre">Tracks</span></code></a>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">str</td> </tr> </tbody> </table> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymediainfo.Track"> <em class="property">class </em><code class="descclassname">pymediainfo.</code><code class="descname">Track</code><span class="sig-paren">(</span><em>xml_dom_fragment</em><span class="sig-paren">)</span><a class="headerlink" href="#pymediainfo.Track" title="Permalink to this definition">¶</a></dt> <dd><p>An object associated with a media file track.</p> <p>Each <a class="reference internal" href="#pymediainfo.Track" title="pymediainfo.Track"><code class="xref py py-class docutils literal notranslate"><span class="pre">Track</span></code></a> attribute corresponds to attributes parsed from MediaInfo’s output. All attributes are lower case. Attributes that are present several times such as Duration yield a second attribute starting with <cite>other_</cite> which is a list of all alternative attribute values.</p> <p>When a non-existing attribute is accessed, <cite>None</cite> is returned.</p> <p>Example:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">t</span> <span class="o">=</span> <span class="n">mi</span><span class="o">.</span><span class="n">tracks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="gp">>>> </span><span class="n">t</span> <span class="go"><Track track_id='None', track_type='General'></span> <span class="gp">>>> </span><span class="n">t</span><span class="o">.</span><span class="n">duration</span> <span class="go">3000</span> <span class="gp">>>> </span><span class="n">t</span><span class="o">.</span><span class="n">to_data</span><span class="p">()[</span><span class="s2">"other_duration"</span><span class="p">]</span> <span class="go">['3 s 0 ms', '3 s 0 ms', '3 s 0 ms',</span> <span class="go"> '00:00:03.000', '00:00:03.000']</span> <span class="gp">>>> </span><span class="nb">type</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">non_existing</span><span class="p">)</span> <span class="go">NoneType</span> </pre></div> </div> <p>All available attributes can be obtained by calling <a class="reference internal" href="#pymediainfo.Track.to_data" title="pymediainfo.Track.to_data"><code class="xref py py-func docutils literal notranslate"><span class="pre">to_data()</span></code></a>.</p> <dl class="method"> <dt id="pymediainfo.Track.to_data"> <code class="descname">to_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#pymediainfo.Track.to_data" title="Permalink to this definition">¶</a></dt> <dd><p>Returns a dict representation of the track attributes.</p> <p>Example:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">sorted</span><span class="p">(</span><span class="n">track</span><span class="o">.</span><span class="n">to_data</span><span class="p">()</span><span class="o">.</span><span class="n">keys</span><span class="p">())[:</span><span class="mi">3</span><span class="p">]</span> <span class="go">['codec', 'codec_extensions_usually_used', 'codec_url']</span> <span class="gp">>>> </span><span class="n">t</span><span class="o">.</span><span class="n">to_data</span><span class="p">()[</span><span class="s2">"file_size"</span><span class="p">]</span> <span class="go">5988</span> </pre></div> </div> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">dict</td> </tr> </tbody> </table> </dd></dl> </dd></dl> </div> </div> </div> </div> </div> <div class="clearer"></div> </div> <div class="footer"> ©2016, Patrick Altman, Louis Sautier. | Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.4</a> & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a> | <a href="_sources/pymediainfo.rst.txt" rel="nofollow">Page source</a> </div> </body> </html>