-
Notifications
You must be signed in to change notification settings - Fork 2
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
[Spec] Add #AUDIOURL, #VIDEOURL, #COVERURL, #BACKGROUNDURL #22
Comments
Would this field contain a link for example: |
Yes.
I would consider this an implementation detail of karaoke players, not part of the spec. For instance, Melody Mania loads only websites from supported hosts. And a new host can be supported by adding a corresponding JavaScript file. As I said, I would not consider whitelisting part of the spec.
New platforms may arrive in the future. Further, communities might want to host their own song server. Which websites can be used should be a config issue of the player in one way or another. Not part of the spec. |
How would this be combined with say for example our current If we're going to introduce this tag it'll be an optional field aside from the existing mandatory Now thinking of it... what prevents us from chucking in a website in the Within performous we can for example specify a NAS through the network share |
Good question.
Yes.
Nothing. Actually, Melody Mania and UltraStar Play accept an http URL in these fields that points to an audio / video / image file. However, my goal is to provide a fallback mechanism when local files are not present. Thereby, it would be nice to stay compatible with offline play in existing UltraStar games. Thus, I argue that a new field is required for this. But you are right, other header fields could make use of an online fallback as well. Further, I would expect the fallback to be something online (e.g., a URI, YouTube video ID, or some other identifier). Example:
I think this would be similar to what people are doing with new txt files on usdb.animux.de. |
SUMMARYSo here is a summary for this issue up till now. We add this tag to version 1.1.0:
The description in the spec (website) could be:
@bohning : could you help us out here with usdb syncer meta-tags ? That's a lot to document here. You also got advanced features: cropping, rotating and resizing of covers. |
Can't we use several flat tags for this? I do not understand why we are suddenly making the tags way more complex to parse and edit instead of keeping a flat, easy-to-understand structure. Instead of #KEY:VALUE we suddenly have |
I can see why it's been done for USDB_Syncer and the |
Then I would vote for #COVERURL, #VIDEOURLand #AUDIOURL (and sort them right after the respective offline tags), so that #AUDIO:xyz.mp3 The main reason for using YT and fanart.tv IDs for usdb/usdb syncer is to save characters (max. line length = 255 chars) and to push people towards using those two platforms over others. If the source URLs get their own tag, then at least the first reason vanishes. |
I agree
In any case, I would prefer that we keep the file format consistent.
|
Yes, let's use flat structure for all tags. |
We might want/need to add #COVERROTATE:[angle in degrees ccw -> float] if online resources are used. Similarly, for backgrounds (but not rotation needed): #BACKGROUNDCROP: These are features that the syncer uses to provide square covers and e.g. 16:9 backgrounds (furthermore, it has the option to increase the image contrast for covers --> #COVERCONTRAST:). |
2nd SUMMARY / VOTE NOW 📈 ✋Thanks for the discussion. So here is the second summary for this issue. We are close to a final result. Please vote for this issue till 15th nov 2023 with emoticon 🎉 / 🚀. Options 🚀 A: Add #AUDIOURL, #VIDEOURL, #COVERURL, #BACKGROUNDURL 🎉 B: Add #AUDIOURL, #VIDEOURL, #COVERURL, #BACKGROUNDURL 👀 C: Add #AUDIOURL, #VIDEOURL, #COVERURL, #BACKGROUNDURL ❤️ D: Change value structure in #AUDIO/#MP3, #COVER, #VIDEO, #BACKGROUND from flat to complex (for txt-file hostings). What?
Why?
details A 🚀:We add to the next version v.1.1.0
These tags are optional. ➕ Built-in standard method in USDB SYNCER that crops/resizes cover and background images with centered clipping to max Full-HD. Many CD Covers will not be cropped good. details B 🎉:We add to the next version v.1.1.0
These tags are optional. details C 👀 :Introduce complex tags
details D ❤️ :We change the value structure in existing # Attributes in the next version v.1.1.0 from flat to complex.
#Audio/#MP3 stays mandatory, the others stay optional. Games detect files in the specific song folder by file type for instance .mp3, .wav .ogg = Audio, mp4 m4a wmv = VIDEO, Cover = jpg / png file name contains [CO], Background = jpg png file name contains [BG]. |
What is the state of this proposal? If it‘s not too late I‘d like to add the suggestion of using multi-valued tags to solve this issue. This could be similar to how HTTP handles headers:
(The same behavior should of course be applied to other multi-valued tags) I think this would be a quite elegant solution for this proposal: The fields
Would semantically be equivalent to:
When loading such a song a program would first try to load the local From a specification perspective each value would be a URL. If a value does not include a URL scheme it‘s understood to be a local file located relative to the txt file. One drawback of this solution is that file names that contain a comma could not be used. I think this is an acceptable limitation but could be solved by implementing an escape sequence of some sort. |
@codello For now, my implementation is single-valued only, but that doesn't mean, it couldn't be multi-valued. To be honest, personally, I'm not sure, what good it would do, to have multi-values anyway. The games would have to have some sort of fallback strategy, if a file was not found locally, to look into a NAS, or on youtube. The path to the NAS would be very user-specific anyway. I doubt, that would have a shared value. |
We had the discussion of multi-value vs. single-value (aka. nested vs. flat) tags before. |
I think I may have worded that badly. I read the whole discussion in this issue and I understand the nested vs. flat argument. On that I don't have a strong opinion either way but from what I gathered there seemed to be a tendency towards simpler structures (so flat tags). To me the multi-value vs. single-value is a different point. The spec already includes multi-valued tags (see #30). I was thinking that maybe the same mechanism could be used to address the need for URL-based files. I'm not suggesting to introduce a complex sub-language for the media files. I just thought that maybe the existing multi-value system might me a good fit as it would alleviate the need for additional tags. I'll try and phrase my suggestion a bit differently: I'd like to suggest a solution to this issue where multiple sources for a media file (
The exact semantics of this would have to be decided. I can think of two plausible approaches:
In addition to this I'd like to unify this syntax of repeating a tag with the existing multi-valued tags in order to reduce the complexity of the spec. But this aspect can be discussed separately. |
The web usually handles multiple same keys in this way: Basicly the same as @codello is suggesting. I'd choose @codello answere over any other mentioned solution |
I like your suggestion in general. The solution with new tags has the advantage that it is backwards compatible because unknown tags are ignored. |
That's a good point. I don't think it's fundamentally incompatible, but in practice it would be implementation-dependent. There is currently no spec that mandates that headers/tags cannot occur multiple times but I think most implementations assume that's the case. Specifically USDX should actually be compatible with this suggestion. USDX issues an I don't know how other implementations would deal with repeated headers, but the most straightforward handling would be to just use the last value. So if an implementation doesn't specifically forbid the use of repeated headers this should be backwards compatible. If we combine this with the multi-valued header syntax used for |
Im late to the party, but, disregarding the tags to edit the images, what is the expected implementation?
All of these are obviously implementation-related, but i do think it makes sense to clarify how these tags are supposed to be used. I propose that the real benefit of these tags is actually updating. Someone finds a better cover image or a cleaner version of a song? No problem, edit txt on usdb, now anyone can grab the new links and update their local files. Of course, that would require a song link, not just the name of the website (not sure if that was the intention of |
That is up to the developer of the specific implementation. This imho should not be part of the standard.
Oh gosh please do not ever implement it like this. Please always keep in mind how many people there are who might be using the program and how few voluntary operators of the file hosting servers there are. Bandwidth is not free. Servers are not free. And song libraries with thousands of songs are not uncommon.
Cache them on your local system at least for a few weeks or until your cache size limit is reached (fifo). But this also is highly dependent on implementation specific requirements.
You are talking about the internet. Stuff goes 404 or unreachable for some unknown amounts of time occasionally, usually comes back again, until it at some point doesn't come back any more. |
Final Result: Introduce URL-HeaderDear all, I've got lost in this long discussion and didn't see the actual result: We already had a consens for Option A (6 Votes). So forget my former post. Here is the final result:
With this I'll do the release of version v1.2.0 with the url-header in january (via website usdx.eu/format and spec.md) |
Suggestion
Melody Mania uses the
#WEBSITE
header field to specify a website that should be used in its embedded browser.This way, it is possible to specify a youtube link for example that can be used as alternative to local audio and video files.
Note that the same approach might also work with other platforms such as Spotify and Apple Music.
Thus, I suggest to use WEBSITE instead of platform specific names such as YOUTUBE or similar.
Note further that WEBSITE fits with other header names of the format, e.g. VIDEO, BACKGROUND, and COVER. These header fields describe what the header value points to.
Use case
Extra info/examples/attachments
No response
The text was updated successfully, but these errors were encountered: