Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTP 404 Early Return and FLAC Metadata Bug Fix #51

Merged
merged 104 commits into from
Jan 17, 2024
Merged

HTTP 404 Early Return and FLAC Metadata Bug Fix #51

merged 104 commits into from
Jan 17, 2024

Conversation

ebb-earl-co
Copy link
Owner

This pull request changes a few things:

  1. The logic to populate the metadata tags DISC and DISCTOTAL in .flac files has been swapped since... probably the first version. This PR fixes that
  2. In {album,artist,mix,playlist,track,video}.py, this PR ensures that if the TIDAL resource in question doesn't exist according to the API (i.e., 404 HTTP error), the process short circuits, saving some useless and gnarly log output (Album Not Getting Download #49)
  3. Adds linux/arm64 Docker builds to the Dockerfile. 🤞 that GitHub Actions executes it correctly
  4. These changes will precipitate a new release, so bump to 2024.1.10 in pyproject.toml

Make media.Track.get() take album and metadata arguments to that media.Album.get_tracks() can directly call media.Track.get()
If only 1 URL is presented by the manifest, GET it with HTTP range requests
requesting.py: add three functions that generate range request headers for a given URL
Add new method: media.Track.save_artist_bio()
Add new class: models.ArtistsBioResponseJSON
Add new function: requesting.request_artist_bio
Remove whitespace in utils.py
* First commit to do with downloading videos

* Update pyproject.toml to 2023.12.4

* Comprehensive update:

hls.py: Fix RequestsClient.download signature, clarify playlister() variable
main.py: add logic branches for TidalVideo type passed from CLI
media.py: add the request_* functions from requesting.py to do with videos; flesh out media.Video methods that get called in media.Video.get()
models.py: add class TidalVideo, add TidalVideo logic to match_tidal_url()
requesting.py: import VideosEndpointStreamResponseJSON and create request_video_contributors() function
utils.py: add temporary_file() facsimile of tempfile.NamedTemporaryFile from upstream
* Implement playlist feature completely:

Create new file, playlists.py
Changes to almost every other file in order to support playlist (audio or video or both) retrieval

* Format with Black
Change logger errors to logger warnings in login.load_token_from_disk()
Add missing 'director' key in media.TAG_MAPPING
Protect None-return of media.Track.get_stream()
Bare except of media.Track.get_lyrics()
Replace colon in track and video files' names (issue #13)
Comment out unused fields in several models classes
Add try/except for HTTP code 401 in requesting.py
In models.py, try to parse program CLI input as track first, then album
In media.py, in the short circuit of Dolby Atmos or Sony 360 unavailable, make sure to set self.outfile = None
* Code structure overhaul:

media.py has become too unwieldy. Individual modules will be created for track, media, video, playlist

* Split media.py into {track,video,album,playlist}.py
ebb-earl-co and others added 24 commits January 7, 2024 13:10
Care has been taken for the playlist creation to work with both .flac and .m4a files; .mp4 video files should be a non-issue as well.
models.match_tidal_url()
track.Track.download()
Remove LABEL lines from build stage in Dockerfile
Add section outlining development process in README.md
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 to dbef88086f6cef02e264edb7dbf63250c17cef6c.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](docker/metadata-action@9ec57ed...dbef880)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](docker/setup-buildx-action@v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [docker/login-action](https://github.com/docker/login-action) from 65b78e6e13532edd9afa3aa52ac7964289d1a9c1 to 3d58c274f17dffee475a5520cbe67f0a882c4dbb.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](docker/login-action@65b78e6...3d58c27)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump actions/setup-python from 3 to 5

Bumps [actions/setup-python](https://github.com/actions/setup-python) from 3 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v3...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Format with Black

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Colin Coe <ebb-earl-co@pm.me>
Changed permissions in pyapp-* to 'write' so hopefully they upload now :fingers-crossed:
Edit some spacing in python-build.yml
* Add 404 short circuit:

In all of {album,artist,mix,playlist,track,video}.py, insert early return if get_metadata hits 404

* Bump version and add licenses LABEL to Dockerfile

* Add multi-arch QEMU to Dockerfile
Instead of storing DISC and DISCTOTAL (in multi-volume albums) correctly, they have been swapped!
@ebb-earl-co ebb-earl-co added bug Something isn't working enhancement New feature or request github_actions Pull requests that update GitHub Actions code labels Jan 17, 2024
@ebb-earl-co ebb-earl-co self-assigned this Jan 17, 2024
@ebb-earl-co ebb-earl-co merged commit d25761d into trunk Jan 17, 2024
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request github_actions Pull requests that update GitHub Actions code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant