aboutsummaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAgeLines
* Pass title_map explicitly when formatting WatchLaterEntryJuhani Krekelä2024-10-26-2/+2
| | | | | | WatchLaterEntry's __str__ method implicitly depends on the title_map variable existing in the global scope. This makes the dependency on the title_map explicit.
* Persist only cache entries that are in useJuhani Krekelä2024-09-22-1/+8
|
* Handle a missing yt_dlp moduleWolfgang Müller2024-09-22-3/+6
|
* Mention write-filename-in-watch-later-config in the manualWolfgang Müller2024-09-22-1/+6
|
* lint: open() defaults to read-only, so use thatWolfgang Müller2024-09-21-2/+2
|
* Add ruff.toml with lint settingsWolfgang Müller2024-09-21-0/+14
| | | | | This should be a reasonable selection of linters. Also make sure that ruff picks up 'later' by default, since it is missing the .py suffix.
* Simplify the .get() method on TitleMap.Juhani Krekelä2024-09-19-4/+2
|
* Fix typo in later.1Wolfgang Müller2024-09-19-1/+1
|
* Use __str__ instead of __repr__ for pretty-printing WatchLaterEntryWolfgang Müller2024-09-19-1/+1
| | | | | | | __repr__ is supposed to compute the "official" string representation of an object [1] and not a pretty-printed version, so use __str__ instead. [1] https://docs.python.org/3.12/reference/datamodel.html#object.__repr__
* Improve error messagesWolfgang Müller2024-09-19-2/+2
|
* Handle OSErrors when writing out the title cacheWolfgang Müller2024-09-19-2/+5
| | | | We handle these when reading the file, so we might as well do it here.
* Move functionality into classesWolfgang Müller2024-09-19-57/+94
| | | | | | | | | | | | This should disentangle the logic a bit and make the entire code base easier to work with. The watch_later entries are now kept in a WatchLaterEntry dataclass which supports pretty-printing with __repr__. Fetching of titles is now done through a dedicated TitleMap class which imports yt_dlp as late as possible, speeding up printing of entries that don't need to be updated and avoiding the import entirely if everything can be fetched from cache. Otherwise there should not be any functional change.
* Have entries() continue early if an entry is not a fileWolfgang Müller2024-09-19-10/+12
| | | | | This makes this already quite deeply nested function a bit easier to read.
* Parse entries when collectingWolfgang Müller2024-09-19-12/+13
| | | | | | | The piece of logic that parses the name of the watch_later entry and makes sure that no redirect entries are processed can easily be moved into the entries() generator. This way we don't even generate items that we end up skipping anyway.
* Move YTDLPLogger to beginning of fileWolfgang Müller2024-09-19-11/+11
|
* Use function to determine XDG directoriesWolfgang Müller2024-09-19-7/+9
| | | | We do the same thing here twice, so this seems worth it.
* lint: Remove newline from importsWolfgang Müller2024-09-19-1/+0
|
* Use os.makedirs instead of os.mkdirWolfgang Müller2024-09-19-4/+2
| | | | | This will make sure that the whole directory structure will be created if missing and saves us a try/except block with exist_ok.
* Add .editorconfigWolfgang Müller2024-09-14-0/+12
|
* Show video titles using yt-dlpJuhani Krekelä2024-09-12-6/+104
| | | | | | | | | | Different video URLs can be easy to confuse in the output of later(1). Look up titles for them in $XDG_CACHE_HOME/later/title.json and add an option, --update-titles, to populate the file automatically using yt-dlp. The title is prefixed with a hash sign (#) in order to better separate it visually from the URLs, as well as to allow easier copypasting of output onto an mpv command line.
* Change xdg_config_home to xdg_state_homeJuhani Krekelä2024-09-11-3/+3
|
* Initial commitWolfgang Müller2024-09-10-0/+92