Skip to content

Commit

Permalink
Improve CSV output
Browse files Browse the repository at this point in the history
  • Loading branch information
mathiascode committed May 29, 2024
1 parent a5b92da commit 90f22b3
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 10 deletions.
24 changes: 16 additions & 8 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 @@ -47,20 +49,26 @@ def _print_tag(tag: TinyTag, formatting: str, header_printed: bool = False) -> b
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
3 changes: 1 addition & 2 deletions tinytag/tests/test_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@
testfiles = dict([
# MP3
('samples/vbri.mp3',
{'extra': {},
'channels': 2, 'samplerate': 44100,
{'extra': {}, 'channels': 2, 'samplerate': 44100,
'duration': 0.47020408163265304, 'album': 'I Can Walk On Water I Can Fly', 'year': '2007',
'title': 'I Can Walk On Water I Can Fly', 'artist': 'Basshunter', 'track': 1,
'filesize': 8192, 'genre': 'Dance',
Expand Down

0 comments on commit 90f22b3

Please sign in to comment.