Files
vrobbler/vrobbler/apps/scrobbles/export.py
Colin Powell 1928acf8a6
All checks were successful
build & deploy / test (push) Successful in 2m0s
build & deploy / build-and-deploy (push) Successful in 32s
[music] Make artists_m2m field source of artist truth (05a24455)
2026-05-29 08:26:30 -04:00

66 lines
1.8 KiB
Python

import csv
import tempfile
from django.db.models import Q
from scrobbles.models import Scrobble
def export_scrobbles(start_date=None, end_date=None, format="AS"):
start_query = Q()
end_query = Q()
if start_date:
start_query = Q(timestamp__gte=start_date)
if start_date:
end_query = Q(timestamp__lte=end_date)
scrobble_qs = Scrobble.objects.filter(start_query, end_query, track__isnull=False)
headers = []
extension = "tsv"
delimiter = "\t"
if format == "as":
headers = [
["#AUDIOSCROBBLER/1.1"],
["#TZ/UTC"],
["#CLIENT/Vrobbler 1.0.0"],
]
if format == "csv":
delimiter = ","
extension = "csv"
headers = [
[
"artists",
"album",
"title",
"track_number",
"run_time",
"rating",
"timestamp",
"musicbrainz_id",
]
]
with tempfile.NamedTemporaryFile(mode="w", delete=False) as outfile:
writer = csv.writer(outfile, delimiter=delimiter)
for row in headers:
writer.writerow(row)
for scrobble in scrobble_qs:
track = scrobble.track
track_number = 0 # TODO Add track number
track_rating = "S" # TODO implement ratings?
track_artist = track.artist or track.album.artist
row = [
track_artist,
track.album.name,
track.title,
track_number,
track.run_time,
track_rating,
scrobble.timestamp.strftime("%s"),
track.musicbrainz_id,
]
writer.writerow(row)
return outfile.name, extension