Commit Graph

444 Commits

Author SHA1 Message Date
xiliourt 8a2c30feaf 🐬 Remove hidden directories in Dockerfile (#326)
* Update Dockerfile

* Clears entire directory after install

Hidden folders such as .git, .vscode, etc were remaining in the docker build unintentionally. This update clears all files once tiddl is installed.
2026-04-13 22:35:38 +02:00
Oskar Dudziński cda1dc6a7a 🐛 Fixed missing metadata when downloading a single track 2026-04-11 17:04:17 +02:00
Oskar Dudziński 7de23cee1b Bump version from 3.2.3a1 to 3.2.3 v3.2.3 2026-04-11 11:27:38 +02:00
Oskar Dudziński 89e4d5c08e ♻️ Skipping errors is now a default behaviour 2026-04-09 20:57:04 +02:00
Oskar Dudziński a1deba92cc Add tiddl version field to bug report template
Added a field for specifying the installed tiddl version.
2026-04-08 12:55:49 +02:00
Oskar Dudziński 0b11c63eba 📝 Added link fallbacks in main cli call 2026-04-06 19:04:33 +02:00
Oskar Dudziński fc074543d1 Bump version to 3.2.3a1 v3.2.3a1 2026-04-06 09:44:21 +02:00
Magnetkopf d9e2314447 Added no browser opening option for authenticating command (#317)
* feat(auth): add no browser mode

* chore: merge print statements
2026-04-06 09:42:51 +02:00
Magnetkopf c3dd2d0606 Artist tag is now a list (#316) 2026-04-05 10:54:46 +02:00
xoconoch 401313cd27 Changed artist separator to ";"
* chore: change separator to "; "

* chore: finishing changin separators

* chore: continue changing separators

---------

Co-authored-by: Ohjne <er@le.com>
2026-04-05 10:48:16 +02:00
Oskar Dudziński b6ddd6b64e Bump version from 3.2.1 to 3.2.2 v3.2.2 2026-03-08 07:53:39 +01:00
nikudaorg 3948c79412 🐛 Fixed auth errors (#300)
Resolves issue #299.

int | str is used instead of updating the type to only "str" because the API change appears to have been introduced quietly and may revert in the future. Since the exact type of these fields is not critical for the library, supporting both types provides a safer and more resilient approach.
2026-03-08 07:53:05 +01:00
Oskar Dudziński ee7e079a27 🚀 Bump version from 3.2.0 to 3.2.1 v3.2.1 2026-02-26 14:42:48 +01:00
TooYoungTooSimp 3d1314e198 Enable trust_env in aiohttp.ClientSession (#294) 2026-02-26 14:41:56 +01:00
Filip Voska cf0d1cd362 fix: handle null/missing fields in Video API responses (#295)
* fix: handle null/missing fields in Video API responses

Tidal's API returns some Video objects (lyric/visualiser videos on
artist pages) with fields that don't match the current strict models:

- `imageId` can be null instead of a string
- The nested `album` object can be present but missing `id`, `title`,
  and `cover`

These validation failures cause the entire `ArtistVideosItems` page
to be rejected by Pydantic before any video can be parsed, resulting
in 0 downloads when targeting an artist with `--videos`.

A second independent bug causes an `AttributeError` on every video:
the default template `{album.artist}/{album.title}/{item.title}` is
shared with videos, but many videos have no album. When `album=None`
is passed to `format_template`, Python's `str.format()` evaluates
`None.artist` and raises `AttributeError: 'NoneType' object has no
attribute 'artist'`, which is caught and printed as an error for
every single video.

Fix:
- `resources.py`: make `Video.imageId` and `Video.Album.{id,title,
  cover}` optional so incomplete API responses pass validation
- `format.py`: give `AlbumTemplate` field defaults so it can be
  instantiated empty; use `AlbumTemplate()` as fallback instead of
  `None` when no album is present, so `{album.*}` tokens render as
  empty strings rather than raising AttributeError
- `download/__init__.py`: guard `video.album.id` accesses against
  `None` (now possible after the model fix) in both video code paths

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test: add tests for Video model null fields and AlbumTemplate fallback

Covers the two bugs fixed in the previous commit:

- Video model accepts null/missing imageId and partial album objects
- format_template does not raise AttributeError when album is None
  and the template references {album.*} tokens

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 14:35:33 +01:00
Oskar Dudziński 381003097f 🚀 Bump version from 3.1.5 to 3.2.0 v3.2.0 2026-01-18 17:38:08 +01:00
hexx.one 06f9d940d9 Added --skip-errors flag to skip unavailable items during download (#274)
* feat: Add `--skip-errors` flag to skip unavailable items during download

* feat: skip-error handling for unavailable items in albums, artists & mixes; fix some missing template variables

* fixes #267
2026-01-18 17:35:54 +01:00
M1chal3k28 fbf79d70e6 📝 Rename 'embed_lyrics' to 'lyrics' in example config (#280) 2026-01-18 17:31:42 +01:00
Oskar Dudziński 9f7d3aec1e 🐛 Album/artist download errors related to templates are now handled (#257)
* refactor variable name in _clean_segment function for clarity

* Add error handling documentation for format_template function

* Add error handling for album template formatting in download_callback
2025-12-05 14:11:47 +01:00
Oskar Dudziński c5d5b365c8 🚀 Bump version from 3.1.4 to 3.1.5 v3.1.5 2025-12-03 01:12:23 +01:00
Oskar Dudziński f691c7ba0a 🐛 Fixed cover that can be None. 2025-12-03 01:12:07 +01:00
Oskar Dudziński 82c4ce0c37 🐛 Fixed covers that were fetched unnecessarily #245 (#254)
* fetch cover only when item is about to be downloaded

* rename cover method to `fetch_data`

* 🚀 Bump version from 3.1.4a3 to 3.1.4
v3.1.4
2025-12-01 19:05:46 +01:00
Oskar Dudziński 145a776b63 🚀 Bump version from 3.1.4a2 to 3.1.4a3 v3.1.4a3 2025-12-01 01:14:40 +01:00
Oskar Dudziński cf0ef2d304 Sort credits contributors surname alphabetically #247 2025-12-01 01:13:59 +01:00
Oskar Dudziński 2332708326 🚀 Bump version from 3.1.4a1 to 3.1.4a2 v3.1.4a2 2025-11-29 22:59:16 +01:00
Oskar Dudziński cbcb55d14a 🐛 Item's path segments are now cleaned #251 2025-11-29 22:57:10 +01:00
Oskar Dudziński 1480be4aed 🏷️ Make audio properties optional in TrackStream model, closes #252 2025-11-29 19:07:07 +01:00
Oskar Dudziński 789fc6bb4a Bump version to 3.1.4a1 v3.1.4a1 2025-11-24 21:04:19 +01:00
Oskar Dudziński a794fa0673 🐛 Fixed cover fetching 2025-11-24 20:00:35 +01:00
Oskar Dudziński d56398168e Revert " Added album lyrics download to .lrc file (#241)" (#248)
This reverts commit f2ee4f8fad.
2025-11-24 19:49:25 +01:00
Daniele Russo f2ee4f8fad Added album lyrics download to .lrc file (#241)
* adding flag for download lyrics

* adding sum debug info

* adding configuration part

* Update config.example.toml

* refactor: move lyrics to utility and apply code review feedback

* refactor: optimize lyrics download and apply code review feedback

- Pass album_items directly to lyrics function to avoid redundant API calls
- Remove unused Path import from api.py
- Remove duplicate debug logging already covered elsewhere
- Use last_album_items reference instead of fetching data again
- Move lyrics download logic to separate utility function in core.utils.lyrics
- Keep lyrics configuration only in docs/config.example.toml without modifying other settings

This optimization reduces API calls by reusing already fetched album items data instead of making new requests for lyrics download.
2025-11-24 19:25:13 +01:00
Oskar Dudziński b9f586574a 🚀 Bump to 3.1.3 v3.1.3 2025-11-23 13:11:09 +01:00
Oskar Dudziński 94db88bd08 🚀 bump to 3.1.3a1 v3.1.3a1 2025-11-22 23:18:18 +01:00
Oskar Dudziński d978e87641 🐛 Fixed invalid track covers when downloading playlist #244 2025-11-22 23:17:41 +01:00
Oskar Dudziński f605c628da 🚀 bump to 3.1.2 v3.1.2 2025-11-21 22:17:24 +01:00
Oskar Dudziński 97f3fed079 Added album.release template 2025-11-21 22:16:38 +01:00
Oskar Dudziński 9a73fc33be Merge branch 'main' of https://github.com/oskvr37/tiddl 2025-11-21 22:14:19 +01:00
Oskar Dudziński 22730003df 🐛 Fixed metadata.cover config was not respected 2025-11-21 22:14:17 +01:00
Oskar Dudziński 63e7120060 🚀 Bump to 3.1.2a1 v3.1.2a1 2025-11-21 21:23:13 +01:00
Oskar Dudziński 24ac3f04fc 📝 Added docs about template fields formatting #233 2025-11-21 21:03:54 +01:00
Oskar Dudziński 7a862d34ee Merge branch 'main' of https://github.com/oskvr37/tiddl 2025-11-21 20:49:03 +01:00
Oskar Dudziński aae9781f31 Track metadata title has now version of the track 2025-11-21 20:49:01 +01:00
Oskar Dudziński 24c4fae353 🚀 bump to 3.1.1 v3.1.1 2025-11-21 14:14:10 +01:00
Oskar Dudziński c8a8939741 🐛 Fixed {album.master} template (#237)
* fix `predict_item_quality` logic

* update `album.master` template logic

* bump to 3.1a2
v3.1.1a2
2025-11-20 18:13:06 +01:00
Oskar Dudziński 85088e737a 🐛 Fixed video downloading (#235)
* rename `VideoQuality` to `StreamVideoQuality`

* remove bad logic from predicting video quality

* print info when skipping video

* bump to 3.1.1 alpha
v3.1.1a1
2025-11-20 16:13:53 +01:00
Oskar Dudziński 1873d512f1 Added fav subcommand 2025-11-17 17:53:23 +01:00
Oskar Dudziński a57869277f 🚀 bump to 3.1.0 v3.1.0 2025-11-17 15:48:08 +01:00
Oskar Dudziński 74e45ef39a 🐛 Fixed album data that was not available while downloading playlists (#226)
* fetch album while handling playlist when there is "{album}" in template

* add note to the docs
2025-11-17 15:46:41 +01:00
Oskar Dudziński 02919e38e6 Added {album.master} template (#225)
* add `MediaMetadataTags` literal

* add `album.master` template

* add docs
2025-11-17 14:40:28 +01:00
Oskar Dudziński 06b1eded7c Added explicit and dolby templates (#223)
* strip formatted parts of path

* handle "None" explicit attribute

* add explicit field to items

* add explicit to template example

* add docs for explicit

* add `dolby` field to items

* add `dolby` docs
2025-11-17 02:58:13 +01:00