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

⌈⌋ ⎇ branch:  streamtuner2


Check-in [32d14f2031]

Overview
Comment:Typo fix and deleting old html pages exportcat/extending/live365
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 32d14f203153d4ad2e0b65782f429c7156a9f8c4
User & Date: mario on 2016-12-09 18:37:28
Other Links: manifest | tags
Context
2016-12-09
18:37
Support for %% escaping. check-in: 5994cb76a9 user: mario tags: trunk
18:37
Typo fix and deleting old html pages exportcat/extending/live365 check-in: 32d14f2031 user: mario tags: trunk
18:36
Fix incorrect timespec format warning check-in: e332cd9fe0 user: mario tags: trunk
Changes

Modified help/channel_youtube.page from [f9c9cb9f16] to [4a2ae526e2].

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
        overview, and usually retrieves recent video uploads.</p>

        <p>VLC can directly play Youtube URLs. For other players one can use
        <link href="http://youtube-dl.org/">youtube-dl</link> as wrapper.
        For example <cmd>totem $(youtube-dl %srv)</cmd> as configured player
        command.</p>
        
        <p>Youtube-dl is preconfigued as "recording"/download tool for this channel
        tab.</p>

        <p>Of course you could also just invoke a specific YT video by
        opening it in your web browser - click the station <key>home</key>
        button simply.</p>

        <section id="options">







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
        overview, and usually retrieves recent video uploads.</p>

        <p>VLC can directly play Youtube URLs. For other players one can use
        <link href="http://youtube-dl.org/">youtube-dl</link> as wrapper.
        For example <cmd>totem $(youtube-dl %srv)</cmd> as configured player
        command.</p>
        
        <p>Youtube-dl is preconfigured as "recording"/download tool for this channel
        tab.</p>

        <p>Of course you could also just invoke a specific YT video by
        opening it in your web browser - click the station <key>home</key>
        button simply.</p>

        <section id="options">

Deleted help/html/exportcat.html version [b528a7d076].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>Export all stations</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="jquery.js"></script><script type="text/javascript" src="jquery.syntax.js"></script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<div class="trail">
<a class="trail" href="glossary.html" title="Glossary">Glossary</a> » <a class="trail" href="index.html#extra" title="Additional features">Additional features</a> » </div>
<div class="trail">
<a class="trail" href="technical.html" title="Technical information">Technical information</a> » <a class="trail" href="index.html#extra" title="Additional features">Additional features</a> » </div>
</div></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Export all stations</span></h1></div>
<div class="region">
<div class="contents">
<p class="p">There's an "Export All" plugin available. It adds an entry under
	<span class="guiseq"><span class="gui">Main menu</span> ▸ <span class="gui">Extensions</span> ▸ <span class="gui">Export all stations</span></span>.
	Which allows to export all stations from the currently visible channel category.</p>
<p class="p">This is of course intended primarily for saving your bookmarks.
	And it allows to import radio lists into any other music player
	or playlist collection/management app (such as Rhythmbox).</p>
</div>
<div id="configuration" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Configuration option</span></h2></div>
<div class="region"><div class="contents">
<p class="p">You can set the default export format in the settings dialog
	<span class="key"><kbd>F12</kbd></span>.</p>
<p class="p">It supports all common export formats now, with .PLS being the
	default.</p>
</div></div>
</div></div>
<div class="sect sect-links" role="navigation">
<div class="hgroup"></div>
<div class="contents"><div class="links guidelinks"><div class="inner">
<div class="title"><h2><span class="title">More Information</span></h2></div>
<div class="region"><ul><li class="links "><a href="index.html#extra" title="Additional features">Additional features</a></li></ul></div>
</div></div></div>
</div>
</div>
<div class="clear"></div>
</div>
<div class="footer"></div>
</div></body>
</html>
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
































































































Deleted help/html/extending.html version [bbaab3fc5e].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>Extension Howto</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="jquery.js"></script><script type="text/javascript" src="jquery.syntax.js"></script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation"><div class="trail">
<a class="trail" href="index.html" title="♪ Streamtuner2"><span class="media"><span class="media media-image"><img src="img/logo.png" class="media media-inline" alt="♪"></span></span> Streamtuner2 </a> › <a class="trail" href="index.html#advanced" title="Advanced topics">Advanced topics</a> » </div></div></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Extension Howto</span></h1></div>
<div class="region">
<div class="contents">
<p class="p">Streamtuner2 is written in Python, a rather easy programming language. And it's also rather simple
	to write a new channel plugin.</p>
<p class="p">The basic layout of every channel plugin is as follows:</p>
<div class="code"><pre class="contents ">
from channels import *

class myplugin (ChannelPlugin):

    title = "MyNewChannel"
    module = "myplugin"
    homepage = "http://www.mymusicstation.com/"
    categories = []



    def update_categories(self):
    
        self.categories = []



    def update_streams(self, cat, force=0):

        entries = []

        # ...
        # get it from somewhere
        # ...        

        return entries
        
	</pre></div>
<p class="p">There are some self-explanatory description fields, and two important methods. Sometimes you
        don't need categories even. The update_streams() function often downloads a website, parses it
	with regular expressions or PyQuery / DOM methods, and packs into into a result list.</p>
<p class="p">Here entries is a list of dictionaries, with standardized entry names like "title" and "playing"
	for the description, and "homepage" for a browsable link, and most importantly "url" for the
	actual streaming link. Often you want to add a "genre" and "format" and "bitrate" info. But this depends
	on your plugins data source, really.</p>
</div>
<div class="sect sect-links" role="navigation">
<div class="hgroup"></div>
<div class="contents"><div class="links guidelinks"><div class="inner">
<div class="title"><h2><span class="title">More Information</span></h2></div>
<div class="region"><ul><li class="links "><a href="index.html#advanced" title="Advanced topics">Advanced topics</a></li></ul></div>
</div></div></div>
</div>
</div>
<div class="clear"></div>
</div>
<div class="footer"></div>
</div></body>
</html>
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<








































































































































Deleted help/html/live365.html version [33ca6bba4d].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>Live365</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="jquery.js"></script><script type="text/javascript" src="jquery.syntax.js"></script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<div class="trail">
<a class="trail" href="index.html" title="♪ Streamtuner2"><span class="media"><span class="media media-image"><img src="img/logo.png" class="media media-inline" alt="♪"></span></span> Streamtuner2 </a> › <a class="trail" href="index.html#browsing" title="Browsing channels and radio stations">Browsing channels and radio stations</a> » <a class="trail" href="channels.html" title="Channels">Channels</a> › <a class="trail" href="channels.html#list" title="Available channels">Available channels</a> » </div>
<div class="trail">
<a class="trail" href="index.html" title="♪ Streamtuner2"><span class="media"><span class="media media-image"><img src="img/logo.png" class="media media-inline" alt="♪"></span></span> Streamtuner2 </a> › <a class="trail" href="index.html#channels" title="Channel tabs">Channel tabs</a> » </div>
</div></div>
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title">Live365</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://live365.com/" title="http://live365.com/">//live365.com/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<p class="p">Live365 is a radio broadcasting service and directory. It categorizes stations in
        over 250 genres. Not all radio stations are free to listen however. It's a commercial
        provider. Therefore streamtuner2 tries to filter result lists.</p>
<p class="p">This channel plugin is known to break once in a while. And it can't be guaranteed
	to pass working streaming URLs to audio players.</p>
<p class="p">If it breaks once more, it's going to get removed. (Unless someone else sends in
	a patch, of course!)</p>
</div>
<div class="sect sect-links" role="navigation">
<div class="hgroup"></div>
<div class="contents"><div class="links guidelinks"><div class="inner">
<div class="title"><h2><span class="title">More Information</span></h2></div>
<div class="region"><ul>
<li class="links "><a href="channels.html#list" title="Available channels">Available channels</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div>
<div class="clear"></div>
</div>
<div class="footer"></div>
</div></body>
</html>
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<