Update of "XDND types"
Artifact ID: | 1837154934ae6d8f89c50788683cb59aaaea26eb |
---|---|
Page Name: | XDND types |
Date: | 2015-04-27 22:53:36 |
Original User: | mario |
Mimetype: | text/x-markdown |
Parent: | 2b77b35875bf50ee446d393249718e17b4deb4dc (diff) |
Next | a03b51e56c7331ddc706deeb84314d3c27b3fe9c |
There's drag and drop support in streamtuner2 since 2.1.7, primarily meant for exporting individual stations into .XSPF or .PLS files, or dragging into audio players.
There is also support for exact XDND payloads. Most BSD/Linux desktop applications support little more than STRING
or text/uri-list
file dragging. There's no standardization beyond that. Which is because nobody bothers to document anything. As exception to the rule:
drag target MIME type | info id | content / payload | actions |
---|---|---|---|
audio/x-mpegurl | 20 | #EXTM3U #EXTINF;-1,Title http://example.org/stream.mp3 … |
DEFAULT+COPY |
application/x-scpls | 21 | [Playlist] File1=http://example.org/stream.mp3 Title1=Radio … |
DEFAULT+COPY |
application/xspf+xml | 22 | <playlist xmlns=…> <track><title>Radio</title> <location>http://example.org/stream.mp3</location> … |
DEFAULT+COPY |
application/smil text/html |
23 | <seq> <audio src="http://example.org/stream.mp3"> … |
DEFAULT+COPY |
application/jspf+json | 25 | { "playlist": { "track":{ "location": "http://example.org/stream.mp3" … |
DEFAULT+COPY |
application/x-desktop | 26 | [Desktop Entry] Type=Link URL=http://example.org/stream.mp3 Title=Radio … |
DEFAULT+COPY |
text/url message/external-body |
27 | [InternetShortcut] URL=http://example.org/stream.mp3 |
DEFAULT+COPY |
url/direct text/iri-list |
15 | http://example.org/stream.mp3 |
DEFAULT+COPY |
FILE_NAME | 3 | /tmp/streamtuner2/RadioStation.pls |
DEFAULT+COPY |
text/uri-list | 4 | file:///tmp/streamtuner2/RadioStation.xspf |
DEFAULT+COPY |
TEXT STRING UTF8_STRING text/plain |
5 | http://example.org:8309/listen.pls # Title: Radio # Description: Current song etc.. |
DEFAULT+COPY |
json/vnd.streamtuner2.station (internal JSON format) |
51 | [ { "url": "http://example.org:8429/.ogg", "title": "Radio station name" }, … |
SAMEAPP+ACTIONMOVE |
<style> .content table td { border-bottom: 3px dashed #ddd; } .content table td { font-size: 80%; } </style>
The example payloads are abstracted here. The info ids are just Gtk-internal.
As said, only text/uri-list is used in practice. It doesn't allow actual streaming URLs being transferred. Instead streamtuner2 has to create temporary export files. And since this dumb approach doesn't allow any content-negotation, a preconfigured default playlist format will be used for temp files. (Defaults to XSPF for crashing Rhythmbox.)
Alternatively there's text/iri-list now (yes, why not go with the century?) and url/direct to get a direct streaming URL/IRL.