File: demo.py

package info (click to toggle)
pymediainfo 7.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 668 kB
  • sloc: python: 988; xml: 464; makefile: 15
file content (38 lines) | stat: -rwxr-xr-x 1,295 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env python3
# ruff: noqa: T201
"""A demo that shows how to call pymediainfo."""

import argparse
from pprint import pprint

from pymediainfo import MediaInfo


def process(media_file: str) -> None:
    print(f"Processing {media_file}")
    media_info = MediaInfo.parse(media_file)
    for track in media_info.tracks:
        if track.track_type == "General":
            print(f"The file format is {track.format}")
            print("General information dump:")
            pprint(track.to_data())
        elif track.track_type == "Video":
            print(
                f"Video track {track.track_id} has a resolution of {track.width}×{track.height}",
                f"and a bit rate of {track.bit_rate} bits/s",
            )
        elif track.track_type == "Audio":
            if track.duration is not None:
                print(
                    f"Audio track {track.track_id} has a duration of {track.duration/1000} seconds"
                )


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("media_file", nargs="+", help="media files to parse")
    args = parser.parse_args()
    for index, media_file in enumerate(args.media_file):
        if index != 0:
            print()
        process(media_file)