Commit graph

81 commits

Author SHA1 Message Date
milaq
3139a82a82 Some Yamaha AVRs have a whitelist built in
Let's find out what is whitelisted.
1st try: Just use the radioyamaha.vtuner.com baseurl without any rewrites
2019-08-28 22:37:57 +02:00
milaq
053bdfa5fa Redirect every station request to the vtuner test media file
Just return a vtuner url for every station play request to find out whether the affected models have a url redirect whitelist.
Obviously the URL will return a 404 but we should see whether the redirect worked in the log and via packet capture.
2019-08-28 15:09:00 +02:00
milaq
4b814ad3e2 first try at completely emulating the vtuner 302s 2019-08-27 02:30:52 +02:00
milaq
987951e43f Don't use redirect but direct response when handling upstream API calls 2019-08-27 00:29:53 +02:00
milaq
a0000eec95 Only fetch additional info for stations if requested
E.g.: We don't need the playable stream URL for fetching icons
2019-08-26 21:07:23 +02:00
milaq
f2f4c7a908 Radiobrowser: Add support for fetching playable station URL
We now get the playable station URL directly from the Radiobrowser API.
This fixes the issue with playlists in the 'url' attribute.

Does not work if played station tracking would be disabled.
It _could_ work but we would need to create an additional API request for every single listed station, even the ones not enqueued for playing.
This would then be way slower and put extra strain on the Radiobrowser API.
2019-08-26 20:39:36 +02:00
milaq
87c7753fee Station icons: Basic station icon caching
Storage path for the station icon cache is: ~/.ycast/cache/icons
2019-08-25 19:57:24 +02:00
milaq
4b45aa58d0 Station icons: Keep aspect ratio when scaling 2019-08-25 19:23:37 +02:00
milaq
72a8df3ed9 Add initial support for station icon proxying and conversion
Station icons now get converted to a JPEG with a maxmimum dimension of 290 on icon request.
Although we need to implement caching and aspect ratio keeping, this should fix issues with incompatible station icons and HTTPS icon URLs.

Adds a new package dependency: Pillow
2019-08-25 17:02:41 +02:00
milaq
f1a9885e53 Also track individually requested stations 2019-08-25 16:29:53 +02:00
milaq
5fe7d7cb67 Improve response items for AVR on error 2019-08-25 15:30:41 +02:00
milaq
e373e1e150 vTuner: Add ability to set 'NoDataCache' element
Some AVRs use this to indicate that the page should not be cached. E.g. for top listings
2019-08-25 14:47:36 +02:00
milaq
6d6eb6c392 Remove "Previous" elements until we know that all AVRs have support for it
Every AVR should have a "back" button anyways.
Maybe some companion apps rely on it. Need to test that still.
2019-08-25 14:12:50 +02:00
milaq
c6f4fe1691 Custom stations: Revisit checksum generation
Some AVRs do not allow an ID larger than 15 characters. Thanks to Marc for pointing that out.
Use a MD5 hash (128), XOR fold it (64) and cut it to size (48). This way we _should_ still have enough uniqueness and can generate a checksum which fits the limits.
2019-08-25 13:42:31 +02:00
milaq
19e0ff8649 Add ability to fetch single station element by hardcoded vTuner URL
Some AVRs fetch the station info by calling statxml.asp with the station ID parameter.
It seems like they expect a single station element in a vTuner compatible page.

This should not be confused with the streamurl acquisition proxying implemented in 7c3161aff9.
2019-08-22 23:16:40 +02:00
milaq
70d5ff072b Also set itemcount for Radiobrowser landing page
The vTuner API handles it also this way for a minimum folder depth of 1.
2019-08-22 20:42:55 +02:00
milaq
3c80bd2500 My Stations: Change the default config filename 2019-08-22 20:40:49 +02:00
milaq
2349e06a2e Add custom station ID generation
Generate IDs by hashing the station name and URL.
These IDs should be sufficiently unique.

We _may_ run into performance issues with a very large definition, but it should be fine for a sane amount of custom stations.
Revisit once we implement a custom station database.
2019-08-22 20:38:56 +02:00
milaq
7c3161aff9 Make YCast aware of played streams
Every stream URL is may now be fetched from the YCast server via redirection.
This allows for future integration of a "recently played" functionality and an availability check.
2019-08-22 20:30:29 +02:00
milaq
8504097e15 Independent hardcoded vTuner URL handling
All 'setupapp' calls are handled independently.
Allows for easier distinction between hardcoded vTuner URLs and our
own API calls.
Also may prevent client crashes because of an invalid response with a
landing page.
2019-08-22 01:31:13 +02:00
milaq
67ac5bd70a Handle station search globally
At least Denon AVRs don't require the API to return a 'Search' element
but use a hardcoded path for the search function.

Also, don't add a distinct menu item. Most AVRs don't display it
correctly either way.
2019-08-21 23:37:16 +02:00
milaq
fbbf585bf0 Readme: Add more info and candy 2019-08-21 12:33:03 +02:00
milaq
4cd99f2a9c Radiobrowser: Handle connection errors 2019-08-21 00:21:29 +02:00
milaq
048e479080 Readme: Fix wording and spelling
Also add potentially supported devices from Denon.
2019-08-19 18:41:46 +02:00
milaq
1a51bd195c Add Radiobrowser station language listing
Co-authored-by: Zenith-Nadir <Zenith-Nadir@users.noreply.github.com>
2019-08-19 15:00:48 +02:00
milaq
7869fc0ee3 Add Yamaha RX-x75 series to confirmed devices
Thanks to @eddhannay for the report.
2019-08-19 14:34:37 +02:00
milaq
803964ecb4 Unify station id generation 2019-08-19 13:57:35 +02:00
milaq
5205ec4e7c Werkzeug: Do not log every request when not using debug mode 2019-08-19 13:42:19 +02:00
milaq
dd28e64c61 vTuner: Unify 'to_xml' to get a root element for every function 2019-08-19 13:35:25 +02:00
milaq
244759e408 Use upstream proposed XML API import and naming 2019-08-18 14:19:54 +02:00
milaq
31545662da Minor changes to packaging info 2019-08-18 14:14:53 +02:00
milaq
333fc2012f Unify version and user agent
Also use more detailed user agent as proposed by the Radiobrowser API
2019-08-18 14:11:38 +02:00
milaq
895a5aa37f Add ability to enable debug logging by commandline argument 2019-08-18 13:51:07 +02:00
milaq
16387a3f50 Rework directory handling
This greatly improves loading times and takes some load off the APIs.

 * Add generic directory class to also hold item count
 * Radiobrowser: Get station count directly from API
 * Optionally show broken stations and their count
 * Remove minimum station bitrate to not filter away some listings
 * Improve code wording
 * Log API requests
2019-08-18 13:50:38 +02:00
milaq
ed6baa692e Radiobrowser: Limit search results 2019-08-17 23:59:50 +02:00
milaq
ce32358149 Radiobrowser: Reduce default station limit
Let's assume nobody wants to get 1000 stations by default.
Also takes some load off the Radiobrowser API.
2019-08-17 23:56:51 +02:00
milaq
4accb0bef1 Paging: Improve sanity checks and add in 'DirCount' support
Some AVRs want to know the folder item count before entering it.
2019-08-17 23:52:55 +02:00
milaq
533d4a041d paging: set complete item count for folders
allows proper paging for yamaha AVRs
2019-08-17 20:23:40 +02:00
milaq
b1dca83e51 update readme and prep for prerelease rollout 2019-08-17 14:51:36 +02:00
milaq
6eba2c8ec2 remove disjointed todo 2019-08-16 15:06:34 +02:00
milaq
940c5cb446 unify acquisition for paging elements 2019-08-16 15:05:40 +02:00
milaq
0e29afa077 Server: Removed unused yaml import 2019-08-14 16:11:19 +02:00
milaq
c3866440fa Radiobrowser: Fix handling of request errors 2019-08-14 16:11:19 +02:00
milaq
1316bb65d0 Decouple 'My Stations' feature from server module
Also add in check whether to show the respective link or just
a disclaimer on the landing page.
2019-08-14 16:11:17 +02:00
milaq
92756a7144 Fix up station parameters
Correct wording for bandwidth and bookmark.

Also add 'Relia' station reliability parameter.
Use hardcoded mean value of 3 for now (seems to be 1-5).
2019-08-14 14:50:02 +02:00
milaq
63b87dfa95 Do not send a proper XML header on init token response
The vTuner API doesn't do it and some AVRs have problems with it.
Thanks to @AlfredJ91 for the heads-up.
2019-08-14 14:29:54 +02:00
milaq
9e1bb5e17b Append bogus parameter to every target url
To work around the issue that a few AVRs blindly append parameters
with an ampersand.

This also allows us to get rid of the search logic workaround.
Furthermore the vTuner API also hacks around the issue this way.
So this seems like the correct way to handle that even if it looks ugly.
2019-08-12 20:12:12 +02:00
milaq
4a2ecd9821 add support for start and howmany request arguments
seems like some AVRs use these for paging.
also unify request extraction logic on the way.
2019-08-12 20:12:01 +02:00
milaq
4fb591a18b vtuner pages: always calculate element count 2019-08-12 14:59:51 +02:00
milaq
bfa203d160 added minimum version check to main 2019-08-12 14:16:07 +02:00