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

New pyinstaller GitHub Actions #61

Merged
merged 143 commits into from
Jan 26, 2024
Merged

New pyinstaller GitHub Actions #61

merged 143 commits into from
Jan 26, 2024

Conversation

ebb-earl-co
Copy link
Owner

This pull request brings new .yml files in .github/workflows: particularly, actions that use pyinstaller to create binaries containing everything that tidal-wave needs to run: Python interpreter, Python dependencies, and an FFmpeg binary.

Work on the latter continues, as the binaries compiled are still rather large, and it's not clear exactly what minimal feature set is needed for the few file formats that tidal-wave interacts with.

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
In .github/workflows/pyapp-*: update the pyapp Cargo package to 0.14.0
In .github/workflows/pyapp-macos.yml: change artifact name to tidal-wave_{{ github.event.release.tag_name }}_py311_macos.pyapp
In .github/workflows/pyapp-windows.yml: try to upload exactly-named .exe instead of *.exe
in .github/workflows/pyinstaller-linux.yml: checkout with submodules, and change to checking out to submodule instead of download FFmpeg tarball
in .github/workflows/python-build.yml: upload Python .wheel and .tar.gz to GitHub releases after uploading to PyPi
In tidal_wave/models.py: change logic for TracksCreditsResponseJSON.{engineer,mixer} to try various metadata terms in a row; e.g. 'Mixer', 'Mixing Engineer', etc.
In tidal_wave/track.py: large refactor. Split logic for metadata tags from album cover tag, as well as temporary file stream re-ordering process
New GitHub Action: pyinstaller on macOS
Update all media format URL matching to allow http(s)://www.tidal.com/...
Change login.validate_token to read from disk and write to disk the device_type value
Edit beginning sections of README.md
@ebb-earl-co ebb-earl-co added documentation Improvements or additions to documentation enhancement New feature or request github_actions Pull requests that update GitHub Actions code labels Jan 24, 2024
@ebb-earl-co ebb-earl-co self-assigned this Jan 24, 2024
@kgantchev
Copy link

Woosh! That looks fantastic! 2 min build time vs 8 min!

image

My name is Kiril Gantchev, I'm the CEO and co-founder of FlyCI. Thanks for giving FlyCI a try. I hope you enjoy it and please feel free to reach out should you have any issues.

Best Regards,
Kiril Gantchev

Discord: FlyCI | Twitter: flyciapp | LinkedIn: FlyCI

@ebb-earl-co ebb-earl-co merged commit 5e2f225 into trunk Jan 26, 2024
35 checks passed
@eevan78
Copy link

eevan78 commented Jan 28, 2024

Hi,
the latest release 2024.1.13 is missing the pyapp self-bootstrapping Windows binary. Can you please provide it?

@ebb-earl-co
Copy link
Owner Author

@eevan78 thank you for having pointed this out! I had not noticed that the automation had failed, so I will get it uploaded shortly.
Next time, can you raise an issue instead of commenting on the PR? That just helps me track things better.

@kgantchev
Copy link

kgantchev commented Mar 18, 2024

Hi @ebb-earl-co,

Thanks for continuing to use FlyCI. We would love to feature your feedback on our website and add your project to our case studies section. It will highlight your project to our visitors and it will help us grow our community. Would you mind sharing a few thoughts?

If you're OK with it, then I have a few quick questions that will help me prepare the case study:

  • What motivated your choice to use FlyCI's MacOS runners, and what key benefits have you observed? (Performance, compatibility, etc.)
  • What has been your experience with the FlyCI runners so far?
  • What improvements have you noticed since integrating FlyCI's MacOS runners? (e.g., performance enhancements, reduced build times, developer productivity, cost savings)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation 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

3 participants