fumr / tidal-async Goto Github PK
View Code? Open in Web Editor NEWPython Tidal streaming service unofficial API in async fashion supporting OAuth2 authentication
License: GNU Lesser General Public License v2.1
Python Tidal streaming service unofficial API in async fashion supporting OAuth2 authentication
License: GNU Lesser General Public License v2.1
We should consider caching creating instances of child classes of TidalObject
s.
First thing that came to my mind is just caching TidalObject.from_id
calls but again - I'm not sure if it should be done like this.
That would be an easy way.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/session.py:140. It will automatically be closed when the TODO comment is removed from the default branch (master).
Playlist field for id
is named uuid
, not id
as in other objects
Should also fix @wvffle 's workaround with self.dict.update
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:182. It will automatically be closed when the TODO comment is removed from the default branch (master).
Playlist.tracks should call _fetch_items multiple times in LOOP (don't do recursion like that PLZ @wvffle)
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:203. It will automatically be closed when the TODO comment is removed from the default branch (master).
This issue has been automatically created by todo-actions based on a TODO comment found in pyproject.toml:22. It will automatically be closed when the TODO comment is removed from master.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:212. It will automatically be closed when the TODO comment is removed from the default branch (master).
needs FUMR/music-service-async-interface#5 to be resolved first
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:17. It will automatically be closed when the TODO comment is removed from master.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/session.py:353. It will automatically be closed when the TODO comment is removed from master.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/session.py:175. It will automatically be closed when the TODO comment is removed from master.
It works locally but fails with TimeoutError
on github-actions.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/session.py:352. It will automatically be closed when the TODO comment is removed from master.
Android app doesn't send any request when clicking "Log out" button
Do we need this?
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/session.py:180. It will automatically be closed when the TODO comment is removed from master.
Needs #1 to be resolved
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:131. It will automatically be closed when the TODO comment is removed from master.
It wasn't updating issues pretty long.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:142. It will automatically be closed when the TODO comment is removed from the default branch (master).
eg. Parse chat message containing links to Tidal and return all corresponding objects
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/session.py:141. It will automatically be closed when the TODO comment is removed from the default branch (master).
Needs FUMR/music-service-async-interface#14 to be resolved.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:225. It will automatically be closed when the TODO comment is removed from the default branch (master).
.apk
This issue has been automatically created by todo-actions based on a TODO comment found in tests/test_tidal_async.py:8. It will automatically be closed when the TODO comment is removed from master.
Needs #1 to be resolved
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:262. It will automatically be closed when the TODO comment is removed from master.
There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.
Error type: Preset caused unexpected error (config:recommended)
Preliminary (invalid) support for subtitles tag.
Subtitles are not supported in mediafile
at the moment.
depends on solving the beetbox/mediafile#48
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:406. It will automatically be closed when the TODO comment is removed from master.
Until we can fill whole Enum
it will still be used as a string.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:30. It will automatically be closed when the TODO comment is removed from master.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/session.py:354. It will automatically be closed when the TODO comment is removed from master.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:299. It will automatically be closed when the TODO comment is removed from master.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:261. It will automatically be closed when the TODO comment is removed from the default branch (master).
This issue has been automatically created by todo-actions based on a TODO comment found in tests/init.py:1. It will automatically be closed when the TODO comment is removed from the default branch (master).
Similar to tamland/python-tidal#62
eg. InsufficientAudioQuality
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:140. It will automatically be closed when the TODO comment is removed from the default branch (master).
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:138. It will automatically be closed when the TODO comment is removed from master.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/session.py:176. It will automatically be closed when the TODO comment is removed from master.
Today I got this.
aiohttp.client_exceptions.ClientResponseError: 429, message='Too Many Requests', url=URL('https://api.tidal.com/v1/tracks/38184307/lyrics?countryCode=GB')
Same goes for from_url
I was pretty sure I can just mark it @AbstractMethod and don't override it, but it looks like I was wrong
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:55. It will automatically be closed when the TODO comment is removed from the default branch (master).
If it can - run multiple requests
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:262. It will automatically be closed when the TODO comment is removed from the default branch (master).
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/utils.py:68. It will automatically be closed when the TODO comment is removed from master.
.apk
This issue has been automatically created by todo-actions based on a TODO comment found in tests/test_tidal_async.py:9. It will automatically be closed when the TODO comment is removed from master.
The only thing holding us from doing this is one asyncio gather call and HTTP library.
We could switch to httpx:
https://www.python-httpx.org/async/#supported-async-environments
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:182. It will automatically be closed when the TODO comment is removed from master.
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
.github/workflows/lint.yml
actions/checkout v4
actions/setup-python v5
pre-commit/action v3.0.1
.github/workflows/tests.yml
actions/checkout v4
actions/setup-python v5
Gr1N/setup-poetry v9
actions/cache v4
.github/workflows/todos.yml
actions/checkout v4
pyproject.toml
poetry >=0.12
pyproject.toml
python ^3.7
aiohttp ^3.6
music-service-async-interface 2bc9cd8a1fda0486f325e127e4d7e80a5b0fedcf
androguard ^3.3.5
http-seekable-file v0.3.0
pre-commit ^2.12
pytest ^6.2
pytest-asyncio ^0.15
atm it will still be a string
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:31. It will automatically be closed when the TODO comment is removed from master.
~[Downloads]/t/tidal-async on master ❯ poetry install at 15:48:44
Creating virtualenv tidal-async-6aH-m42I-py3.9 in /home/dedesvik/.cache/pypoetry/virtualenvs
Updating dependencies
Resolving dependencies... (2.0s)
RuntimeError
The dependency name for http-seekable-file does not match the actual package's name: httpseekablefile
at ~/.poetry/lib/poetry/puzzle/provider.py:291 in get_package_from_directory
287│ )
288│
289│ if name and name != package.name:
290│ # For now, the dependency's name must match the actual package's name
→ 291│ raise RuntimeError(
292│ "The dependency name for {} does not match the actual package's name: {}".format(
293│ name, package.name
294│ )
295│ )
How are you supposed to install and use this anyway? I just want my X-Tidal-Token...
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/session.py:46. It will automatically be closed when the TODO comment is removed from the default branch (master).
Tidal seems to migrate to DASH for their music streaming.
Instead of JSON manifest file encoded into Base64 there's .mpd XML file which seems to play just fine using ffplay.
Copying this into container-less FLAC format will be neccessary.
ffmpeg is doing this just fine with this cmdline:
$ ffmpeg -i tidal.mpd -c:v copy -c:a copy output.flac
[..]
Input #0, dash, from 'flac.mpd':
Duration: 00:06:06.00, start: 0.000000, bitrate: 0 kb/s
Program 0
Stream #0:0: Audio: flac (fLaC / 0x43614C66), 44100 Hz, stereo, s16, 505 kb/s (default)
Metadata:
variant_bitrate : 918113
id : 0
Output #0, flac, to 'output.flac':
Metadata:
encoder : Lavf58.76.100
Stream #0:0: Audio: flac (fLaC / 0x43614C66), 44100 Hz, stereo, s16, 505 kb/s (default)
Metadata:
variant_bitrate : 918113
id : 0
Stream mapping:
Stream #0:0 -> #0:0 (copy)
[..]
Someone told me that Tidal blocks downloading of files simultaneously, but I didn't really noticed that
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/session.py:177. It will automatically be closed when the TODO comment is removed from master.
Now we have very similar code in Album.tracks, Playlist.tracks and Artist.albums
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:19. It will automatically be closed when the TODO comment is removed from master.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:100. It will automatically be closed when the TODO comment is removed from master.
WTF, android app doesn't send any request when clicking "Log out" button
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/session.py:118. It will automatically be closed when the TODO comment is removed from master.
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:110. It will automatically be closed when the TODO comment is removed from the default branch (master).
This issue has been automatically created by todo-actions based on a TODO comment found in tidal_async/api.py:17. It will automatically be closed when the TODO comment is removed from master.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.