#!/usr/bin/env python3
import csv
from datetime import datetime
from typing import Iterator, List, NamedTuple

from ..core import get_files

from my.config import imdb as config

def _get_last():
    return max(get_files(config.export_path))


class Movie(NamedTuple):
    created: datetime
    title: str
    rating: int


def iter_movies() -> Iterator[Movie]:
    last = _get_last()

    with last.open() as fo:
        reader = csv.DictReader(fo)
        for i, line in enumerate(reader):
            # TODO extract directors??
            title = line['Title']
            rating = int(line['You rated'])
            createds = line['created']
            created = datetime.strptime(createds, '%a %b %d %H:%M:%S %Y')
            # TODO const??
            yield Movie(created=created, title=title, rating=rating)


def get_movies() -> List[Movie]:
    return list(sorted(iter_movies(), key=lambda m: m.created))


def test():
    assert len(get_movies()) > 10
