Skip to content

Commit

Permalink
Merge b8c8a3a into 5b96600
Browse files Browse the repository at this point in the history
  • Loading branch information
mathiascode committed May 31, 2024
2 parents 5b96600 + b8c8a3a commit 9b20ea6
Show file tree
Hide file tree
Showing 6 changed files with 384 additions and 267 deletions.
6 changes: 4 additions & 2 deletions tinytag/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
"""Audio file metadata reader"""

from .tinytag import (
ParseError, TinyTag, TagImage, TagImages, TinyTagException, UnsupportedFormatError
ParseError, TinyTag, TagExtra, TagImage, TagImages, TagImagesExtra,
TinyTagException, UnsupportedFormatError
)
__all__ = (
"ParseError", "TinyTag", "TagImage", "TagImages", "TinyTagException", "UnsupportedFormatError"
"ParseError", "TinyTag", "TagExtra", "TagImage", "TagImages", "TagImagesExtra",
"TinyTagException", "UnsupportedFormatError"
)
26 changes: 17 additions & 9 deletions tinytag/__main__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# pylint: disable=missing-module-docstring,protected-access

from __future__ import annotations
from io import StringIO
from os.path import splitext
import csv
import json
import os
import sys
Expand Down Expand Up @@ -44,23 +46,29 @@ def _pop_switch(name: str) -> bool:


def _print_tag(tag: TinyTag, formatting: str, header_printed: bool = False) -> bool:
data = tag._as_dict()
data = tag.as_dict(flatten=True)
del data['images']
if formatting == 'json':
print(json.dumps(data))
print(json.dumps(data, ensure_ascii=False, indent=2))
return header_printed
if formatting not in {'csv', 'tsv', 'tabularcsv'}:
return header_printed
for field, value in data.items():
if isinstance(value, str):
data[field] = value.replace('\x00', ';') # use a more friendly separator for output
if formatting == 'csv':
print('\n'.join(f'{field},{value!r}' for field, value in data.items()))
elif formatting == 'tsv':
print('\n'.join(f'{field}\t{value!r}' for field, value in data.items()))
elif formatting == 'tabularcsv':
csv_file = StringIO()
delimiter = '\t' if formatting == 'tsv' else ','
writer = csv.writer(csv_file, delimiter=delimiter, lineterminator='\n')
if formatting == 'tabularcsv':
if not header_printed:
print(','.join(field for field, value in data.items()))
writer.writerow(data.keys())
header_printed = True
print(','.join(f'"{value!r}"' for field, value in data.items()))
writer.writerow(data.values())
value = csv_file.getvalue().strip()
else:
writer.writerows(data.items())
value = csv_file.getvalue()
print(value)
return header_printed


Expand Down
Binary file modified tinytag/tests/samples/aiff_with_image.aiff
Binary file not shown.
Loading

0 comments on commit 9b20ea6

Please sign in to comment.