Internet radio browser GUI for music/video streams from various directory services.

⌈⌋ ⎇ branch:  streamtuner2


Artifact [2b77b35875]

Artifact 2b77b35875bf50ee446d393249718e17b4deb4dc:

Wiki page [XDND types] by mario on 2015-04-26 23:01:26.
D 2015-04-26T23:01:26.047
L XDND\stypes
N text/x-markdown
U mario
W 2805
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 |
---------------------------------------------------------
| <kbd>audio/x-mpegurl</kbd> | 20 | `#EXTM3U`<br>`#EXTINF;-1,Title`<br>`http://example.org/stream.mp3`<br>… | DEFAULT+COPY |
| <kbd>application/x-scpls</kbd> | 21 | `[Playlist]`<br>`File1=http://example.org/stream.mp3`<br>`Title1=Radio`<br>… | DEFAULT+COPY |
| <kbd>application/xspf+xml</kbd> | 22 | `<playlist xmlns=…>`<br>`<track><title>Radio</title>`<br>`<location>http://example.org/stream.mp3</location>`<br>… | DEFAULT+COPY |
| <kbd>application/smil</kbd> <br> <kbd>text/html</kbd> | 23 | `<seq>`<br>`<audio src="http://example.org/stream.mp3">`<br>… | DEFAULT+COPY |
| <kbd>application/jspf+json</kbd> | 25 | `{ "playlist": {`<br>`"track":{`<br>`"location": "http://example.org/stream.mp3"`<br>… | DEFAULT+COPY |
| <kbd>application/x-desktop</kbd> | 26 | `[Desktop Entry]`<br>`Type=Link`<br>`URL=http://example.org/stream.mp3`<br>`Title=Radio`<br>… | DEFAULT+COPY |
| <kbd>text/url</kbd><br><kbd>message/external-body</kbd> | 15 | `[InternetShortcut]`<br>`URL=http://example.org/stream.mp3` | DEFAULT+COPY |
| <kbd>url/direct</kbd> | 15 | `http://example.org/stream.mp3` | DEFAULT+COPY |
| <kbd>FILE_NAME</kbd> | 3 | `/tmp/streamtuner2/RadioStation.pls` | DEFAULT+COPY |
| <kbd>text/uri-list</kbd> | 4 | `file:///tmp/streamtuner2/RadioStation.xspf` | DEFAULT+COPY |
| <kbd>TEXT</kbd><br> <kbd>STRING</kbd><br> <kbd>UTF8_STRING</kbd><br> <kbd>text/plain</kbd> | 5 | `http://example.org:8309/listen.pls`<br>`# Title: Radio`<br>`# Description: Current song etc..` | DEFAULT+COPY |
| <kbd>json/vnd.streamtuner2.station</kbd> <br>*(internal JSON format)* | 51 | `[`<br>&nbsp;`{`<br>&nbsp;&nbsp;`"url": "http://example.org:8429/.ogg",`<br>&nbsp;&nbsp;`"title": "Radio station name"`<br>&nbsp;`},`<br>… | SAMEAPP+ACTIONMOVE |

<style>
 .content table td { border-bottom: 3px dashed #ddd; }
 .content table td { font-size: 80%; }
</style>

The example payloads are abstracted here.

As said, only <kbd>text/uri-list</kbd> 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, the configured default playlist format will be used for temp files.

Z dd8c66e4632e654c560f44f3da968494