HPI/lastfm/__init__.py
2019-05-08 20:54:37 +01:00

39 lines
819 B
Python
Executable file

#!/usr/bin/env python3
from functools import lru_cache
from typing import Dict, List, NamedTuple
from datetime import datetime
from pathlib import Path
import os
import json
import pytz
_PATH = Path("/L/backups/lastfm")
class Scrobble(NamedTuple):
dt: datetime
track: str
# TODO memoise...?
# TODO watch out, if we keep the app running it might expire
def _iter_scrobbles():
last = max(_PATH.glob('*.json'))
# TODO mm, no timezone? wonder if it's UTC...
j = json.loads(last.read_text())
for d in j:
ts = int(d['date'])
dt = datetime.fromtimestamp(ts, tz=pytz.utc)
track = f"{d['artist']}{d['name']}"
yield Scrobble(dt, track)
@lru_cache(1)
def get_scrobbles():
return list(_iter_scrobbles())
def test():
assert len(get_scrobbles()) > 1000