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

⌈⌋ branch:  streamtuner2


Check-in [0ea7545d8e]

Overview
Comment:Update documentation (and html/ version) to reflect plugin changes and deprecations.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 0ea7545d8eebc9d628d3d900123cfa4743b27ed0
User & Date: mario on 2020-05-15 17:21:08
Other Links: manifest | tags
Context
2020-05-15
18:15
Tuner2 is gone as well. check-in: 78d057541a user: mario tags: trunk
17:21
Update documentation (and html/ version) to reflect plugin changes and deprecations. check-in: 0ea7545d8e user: mario tags: trunk
16:04
new channel: peertube. Deprecated plugin: youtube check-in: f7c2123fa9 user: mario tags: trunk
Changes

Added help/channel_peertube.page version [337c949d22].













































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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<page	xmlns="http://projectmallard.org/1.0/"
	type="guide"
	id="peertube">

<info>
	<link type="guide" xref="index#channels"/>
	<link type="guide" xref="channels#list"/>
	<link type="guide" xref="configuration#plugins"/>
        <desc>Peertube music/video listings.</desc>
</info>

	<title><media type="image" src="img/channel_peertube.png" /> Peertube</title>
	<subtitle><link	href="http://joinpeertube.org/">//joinpeertube.org/</link></subtitle>

	<p>PeerTube is a federated video hosting network. And this channel
	allows you to browse /Music and other categories. It's not quite a
	very rich ecosystem yet, but very international. So perhaps worth a
	lookaround.</p>

        <p>The category list seeems to be uniform across most Peertube
	instances. So you only need to reload stations/videos once switching
	the address in the settings. </p>

        <p>Per default you should use VLC and 
        <link href="http://youtube-dl.org/">youtube-dl</link> in the
	playback settings. Per default the faux mime type <cmd>video/youtube</cmd>
	is used for all listings. However, internally there's a lookup for
	an .m3u or direct .mp4 link already. So the <cmd>video/*</cmd> entry should
	also be populated.</p>

        <section id="options">
          <title>Channel options.</title>
          <terms>
          <item>
            <title><code>🔠 Peertube server</code></title>
            <p>Sets the main isntance to query video listings from. Now most
	    of the other sites will be peered, so the main server doesn't
	    have that much influence. It changes the ordering however, and
            will reveal more local videos or languages often.</p>
          </item>
          </terms>
        </section>

</page>

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

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
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







+
+
+
+
+
+
+
+
+
+
+



















+
+
+
+
+
+







	<link type="guide" xref="configuration#plugins"/>
        <desc>Youtube music/video listings.</desc>
</info>

	<title><media type="image" src="img/channel_youtube.png" /> Youtube</title>
	<subtitle><link	href="http://youtube.com/">//youtube.com/</link></subtitle>

        <note style="bug"><p>This plugin is no longer supported or a default
	channel. Due to exceeded quotas, it ceased working, and Youtube/Google
	bothered me with inane requests for video recordings of how ST2 works
	(instead of simply looking at the code or investigating their own logs).
	Btw, the exceeded quota was unlikely due to regular ST2 usage. It's
	more probable the builtin and plainly-in-sight builtin API key was
	reappropriated otherwise. Hence, you would have to
        <link href="https://developers.google.com/youtube/v3/getting-started">get
	your own key</link> now, if you wanted to use this channel. Btw,
	overall it's not that interesting / worth the effort IMO.</p></note>

	<p>Googles Youtube provides a quirky JSON API that makes browsing
        channels and genres feasible.  This beta plugin provides a little
        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">
          <title>Channel options.</title>
          <terms>
          <item>
            <title><code>🔠 API key</code></title>
            <p>You will have to aquire your own API key now, if you want to
            test this plugin. Quite cumbersome, and not recommended, but see 
            <link href="https://developers.google.com/youtube/v3/getting-started">YouTube Data API Overview</link> </p>
          </item>
          <item>
            <title><code>🔠 Region</code></title>
            <p>With the country dropdown you can predefine which mostPopular listings are returned.</p>
          </item>
          <item>
            <title><code>🔠 My Channels</code></title>
            <p>You can edit the list of YT channel names to fetch some of your favourite artists/uploaders.

Modified help/html/C.css from [ac93dbe244] to [0c0b8391cf].

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
69
70
71
72
73
74
75
76
77






78
79
80
81
82
83
84
85
86
87
88
89

90
91
92

93
94
95
96
97

98
99
100
101

102
103
104
105

106


107
108
109








110
111

112
113
114
115
116



117

118
119
120
121
122
123
124
125





126
127
128
129

130
131
132
133
134
135

136
137
138
139
140
141


142
143
144
145
146

147
148
149
150
151
152
153
154
155





156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174

175
176

177
178

179
180
181

182
183
184
185
186
187
188

189
190

191
192
193
194
195
196
197
198
199
200
201

202
203
204
205
206




207
208
209
210
211
212
213
214
215

216
217
218
219
220
221
222
223
224
225
226
227
228
229

230
231
232
233
234
235
236
237
238
239
240





241
242
243
244
245


246
247
248
249
250
251
252
253
254
255
256
257
258
259

260
261
262


263
264
265
266


267
268
269
270

271
272
273
274
275
276

277
278
279
280
281
282
283
284

285
286
287
288

289
290

291
292
293


294
295
296
297

298
299
300



301
302
303
304
305
306


307
308
309
310
311
312
313
314
315
316
317
318


319
320
321
322

323
324
325

326
327

328


329


330
331
332
333



334

335





336
337






338
339
340
341
342
343
344

345
346
347
348
349
350
351
352
353




354

355
356


357
358

359
360

361
362

363
364
365
366
367

368
369
370
371
372
373












374
375
376
377


378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401

402
403
404
405
406
407
408
409
410
411
412
413
414
415

416
417
418
419
420

421
422
423
424


425
426
427
428
429

430
431
432

433
434
435
436
437

438
439
440
441
442
443
444
445
446
447
448
449
450


451
452
453
454

455
456
457
458

459
460
461

462
463
464

465
466
467

468
469
470
471
472
473


474
475
476
477


478
479
480


481
482
483
484
485
486
487

488
489
490

491
492
493
494



495
496
497

498
499
500
501
502
503
504



505
506
507
508
509
510

511
512

513
514
515
516
517

518
519
520
521
522
523
524


525
526
527

528
529
530

531
532
533
534
535

536
537

538
539
540
541
542
543
544

545
546
547
548
549
550
551




552
553
554
555
556
557
558








559
560
561
562
563











































564
565
566
567
568
569
570

571
572

573
574
575

576

577
578
579



580
581
582
583
584

585
586
587
588
589
590
591

592
593
594

595
596

597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614


615
616
617

618
619
620
621


622
623
624
625


626
627

628
629
630

631
632








633
634
635
636



637
638


639
640
641
642



643
644

645
646
647
648
649
650
651






















652
653
654
655
656
657
658
659





















660
661
662
663
664





























665
666
667
668
669















670
671
672
673
674
675
676
677
678
679
680
681
682


683




684
685
686
687
















688













































689
690




691





692
693
694
695
696
697
698
699

700
701
702


703
704
705
706
707
708
709
710
711
712
713
714

715
716
717
718
719
720

721


722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737

738
739
740
741
742
743
744
745
746
747
748
749
750
751
752






753
754

755
756
757
758




759
760
761

762
763

764
765
766


767
768




769





770
771
772
773
774





775
776
777
778
779
780
781







782
783
784
785
786
787








788
789
790
791
792
793
794
795


796
797









798
799
800
801
802
803



804
805
806
807




808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826

827
828
829
830
831
832
833
834

835
836
837





838
839


840
841
842
843






844

845
846
847



848
849
850
851
852
853
854















855
856
857



858
859

860
861

862
863

864
865
866



867
868

869
870
871
872
873
874










875
876
877
878







879
880

881
882

883




884

885
886
887

888

889
890
891
892
893
894






895
896
897

898
899


900
901
902





903
904
905
906





907

908
909
910
911
912



913
914
915
916




917



918
919


920
921
922
923
924
925

926
927
928





929
930
931
932
933










934




935
936
937



938
939
940
941


942
943

944
945
946
947
948
949







950
951
952


953
954
955



956
957
958
959




960
961
962
963
964
965
966

967
968
969
970
971

972
973
974
975
976
977
978
979
980
981
982
983

984
985
986
987
988
989
990
991
992
993
994
995















996
997
998
999
1000


1001
1002
1003
1004
1005
1006
1007
1008

1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021

1022
1023

1024
1025

1026
1027
1028
1029

1030
1031

1032
1033
1034



1035
1036
1037
1038
1039
1040
1041
1042
1043










1044
1045
1046
1047

1048
1049
1050
1051

1052
1053
1054
1055
1056
1057

1058
1059
1060
1061
1062

1063
1064
1065
1066
1067


1068
1069
1070
1071
1072
1073
1074
1075

1076


1077

1078

1079
1080
1081



1082
1083
1084

1085











1086
1087
1088
1089
1090
1091
1092
1093
1094

1095
1096
1097
1098
1099
1100
1101
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
69
70
71
72
73
74
75
76
77
78
79
80



81
82
83
84
85

86
87
88

89
90
91
92


93
94
95

96
97

98
99


100
101
102




103
104
105
106
107

108
109
110
111
112
113
114







115
116
117
118
119
120


121
122
123
124
125
126
127
128
129

130



131
132
133
134
135

136
137
138
139

140
141
142
143

144
145
146
147
148


149
150
151
152
153
154
155
156
157

158

159
160


161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181

182
183
184
185
186
187

188
189
190
191
192


193
194
195
196
197
198

199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231

232
233

234
235

236
237
238

239
240
241





242


243











244





245
246
247
248





249
250
251

252
253
254
255
256
257
258
259
260
261
262
263
264
265

266
267
268
269
270
271
272
273
274

275
276
277
278
279
280
281
282
283
284


285
286
287
288
289
290
291
292
293
294
295
296
297
298
299

300



301
302




303
304
305
306
307

308
309





310






311

312




313


314
315


316
317




318
319


320
321
322
323
324
325
326


327
328
329
330
331
332
333
334
335
336
337
338


339
340
341
342


343
344
345

346
347
348
349
350
351
352
353
354
355
356



357
358
359
360
361

362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380

381
382
383
384
385
386
387
388


389
390
391
392
393
394


395
396
397

398


399
400

401





402
403





404
405
406
407
408
409
410
411
412
413
414
415
416
417


418
419
420
421






422
423
424
425
426
427
428
429
430
431
432
433
434
435
436

437
438
439
440
441
442
443
444
445
446
447
448
449
450

451
452
453
454
455

456
457
458


459
460
461
462

463

464



465
466
467
468
469

470


471
472
473
474
475
476
477
478
479


480
481
482
483
484

485
486
487
488
489
490
491
492

493
494
495

496
497
498

499
500
501
502
503


504
505
506
507


508
509
510


511
512
513
514
515
516
517
518

519
520
521

522
523



524
525
526
527
528

529
530
531
532
533



534
535
536


537



538
539

540
541
542
543
544

545
546
547
548
549
550


551
552
553
554

555
556
557

558
559
560
561
562

563
564

565
566
567
568
569
570
571

572
573
574
575




576
577
578
579
580






581
582
583
584
585
586
587
588
589




590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637


638
639

640
641
642

643
644
645



646
647
648





649

650
651
652
653
654

655
656
657

658
659

660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676


677
678



679
680
681


682
683
684
685


686
687


688
689
690

691


692
693
694
695
696
697
698
699
700



701
702
703


704
705
706



707
708
709
710

711
712
713





714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735








736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756





757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786




787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812


813
814
815
816
817
818
819




820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881


882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898

899
900


901
902
903


904
905
906
907
908
909
910
911

912
913
914
915
916
917

918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948





949
950
951
952
953
954

955
956




957
958
959
960
961
962

963


964
965


966
967
968

969
970
971
972
973
974
975
976
977
978





979
980
981
982
983

984





985
986
987
988
989
990
991
992
993
994
995


996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008

1009

1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025



1026
1027
1028


1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047


1048
1049


1050

1051
1052
1053
1054
1055


1056
1057


1058
1059
1060
1061
1062
1063

1064
1065
1066



1067
1068
1069
1070
1071
1072
1073
1074



1075
1076
1077
1078






1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094


1095
1096
1097
1098

1099


1100
1101

1102



1103
1104
1105
1106

1107






1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118



1119
1120
1121
1122
1123
1124
1125
1126

1127
1128

1129
1130
1131
1132
1133
1134

1135


1136
1137

1138

1139




1140
1141
1142
1143
1144
1145

1146

1147


1148
1149
1150


1151
1152
1153
1154
1155




1156
1157
1158
1159
1160

1161
1162




1163
1164
1165




1166
1167
1168
1169
1170
1171
1172
1173


1174
1175





1176
1177
1178


1179
1180
1181
1182
1183

1184



1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199



1200
1201
1202
1203
1204


1205
1206


1207






1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219



1220
1221
1222




1223
1224
1225
1226
1227


1228
1229
1230

1231
1232
1233
1234
1235

1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247

1248
1249
1250










1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268


1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294

1295
1296

1297




1298


1299



1300
1301
1302



1303





1304
1305
1306
1307
1308
1309
1310
1311
1312
1313




1314
1315
1316
1317

1318
1319
1320
1321
1322
1323

1324
1325
1326
1327
1328

1329
1330
1331
1332


1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350



1351
1352
1353



1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374

1375
1376
1377
1378
1379
1380
1381
1382









+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+



-
-
-
+



-
+

-

+
+
+
+
+
+
+
+
+
+
+
+

-
-
-
+
+
+


-
+


-
+



-
-
+
+

-
+

-
+

-
-
+
+

-
-
-
-
+




-
+






-
-
-
-
-
-
-
+
+
+
+
+
+
-
-









-
+
-
-
-
+




-
+



-
+



-
+

+
+

-
-
+
+
+
+
+
+
+
+

-
+
-


-
-
+
+
+

+








+
+
+
+
+



-
+





-
+




-
-
+
+




-
+









+
+
+
+
+


















-
+

-
+

-
+


-
+


-
-
-
-
-
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
+
+
+
+
-
-
-
-
-



-
+













-
+








-


+
+
+
+
+



-
-
+
+













-
+
-
-
-
+
+
-
-
-
-
+
+



-
+

-
-
-
-
-
+
-
-
-
-
-
-

-
+
-
-
-
-
+
-
-
+

-
-
+
+
-
-
-
-
+

-
-
+
+
+




-
-
+
+










-
-
+
+


-
-
+


-
+


+

+
+

+
+

-
-
-
+
+
+

+
-
+
+
+
+
+


+
+
+
+
+
+






-
+







-
-
+
+
+
+

+
-
-
+
+

-
+
-
-
+

-
+
-
-
-
-
-
+

-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+


-
-
+
+


-
-
-
-
-
-















-
+













-
+




-
+


-
-
+
+


-

-
+
-
-
-
+




-
+
-
-









-
-
+
+



-
+




+


-
+


-
+


-
+




-
-
+
+


-
-
+
+

-
-
+
+






-
+


-
+

-
-
-
+
+
+


-
+




-
-
-
+
+
+
-
-

-
-
-
+

-
+




-
+





-
-
+
+


-
+


-
+




-
+

-
+






-
+



-
-
-
-
+
+
+
+

-
-
-
-
-
-
+
+
+
+
+
+
+
+

-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+





-
-
+

-
+


-
+

+
-
-
-
+
+
+
-
-
-
-
-
+
-





-
+


-
+

-
+
















-
-
+
+
-
-
-
+


-
-
+
+


-
-
+
+
-
-
+


-
+
-
-
+
+
+
+
+
+
+
+

-
-
-
+
+
+
-
-
+
+

-
-
-
+
+
+

-
+


-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+











-
-
+
+

+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+

+
+
+
+
+







-
+

-
-
+
+

-
-








-
+





-
+

+
+
















+










-
-
-
-
-
+
+
+
+
+
+
-

+
-
-
-
-
+
+
+
+


-
+
-
-
+

-
-
+
+

-
+
+
+
+

+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-

-
-
-
-
-
+
+
+
+
+
+
+




-
-
+
+
+
+
+
+
+
+





-

-
+
+


+
+
+
+
+
+
+
+
+



-
-
-
+
+
+
-
-


+
+
+
+













-
-


-
-
+
-





-
-
+

-
-
+
+
+
+
+

-
+
+

-
-
-
+
+
+
+
+
+

+
-
-
-
+
+
+

-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

-
-
+
+
+

-
+
-
-
+

-
+
-
-
-
+
+
+

-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+

-
-
-
+
+
+
+
+
+
+

-
+

-
+

+
+
+
+
-
+
-
-

+
-
+
-

-
-
-
-
+
+
+
+
+
+
-

-
+
-
-
+
+

-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
+
-
+

-
-
-
-
+
+
+
-
-
-
-
+
+
+
+

+
+
+
-
-
+
+
-
-
-
-
-

+

-
-
+
+
+
+
+
-

-
-
-
+
+
+
+
+
+
+
+
+
+

+
+
+
+
-
-
-
+
+
+


-
-
+
+
-
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+



+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+

-
-



-
+




-
+











-
+


-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+



-
-
+
+








+













+

-
+

-
+
-
-
-
-
+
-
-
+
-
-
-
+
+
+
-
-
-

-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+



-
+





-
+




-
+



-
-
+
+








+

+
+

+

+
-
-
-
+
+
+
-
-
-
+

+
+
+
+
+
+
+
+
+
+
+








-
+








html { height: 100%; }
body {
  font-family: sans-serif;
  margin: 0; padding: 0;
  background-color: #ffffff;
  color: #000000;
  direction: ltr;
}
article, aside, nav, header, footer, section {
  display: block;
  margin: 0;
  padding: 0;
}
main {
  display: flex;
  flex-flow: row;
}
main > * {
  flex: 0 0 220px;
}
div.page {
  margin: 1em auto 1em auto;
  max-width: 60em;
  border: solid 1px #babdb6;
main > div.page {
  flex-grow: 1;
  margin: 0;
  display: flex;
  flex-flow: column;
  align-items: stretch;
  justify-content: flex-start;
  min-height: 100vh;
}
div.body {
  margin: 0;
  padding-left: 1em;
  padding-right: 1em;
  padding-bottom: 1em;
div.page > article { flex: 1 0 auto; }
div.page > header, div.page > footer { flex: 0 1 auto; }
.pagewide {
  max-width: 940px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 10px;
  padding-right: 10px;
}
aside.sidebar {
  width: 300px;
  padding: 20px 10px;
  background: rgb(244,244,244)
}
aside.sidebar-right { order: 3; }
aside.sidebar section { margin-top: 0; }
aside.sidebar * { margin-bottom: 20px; }
aside.sidebar section > div.inner > div.hgroup {
  border-bottom: none;
}
aside.sidebar section h2 {
  font-size: 1em;
  margin-bottom: 0;
}
article {
  padding-top: 10px;
  padding-bottom: 10px;
  min-height: 20em;
  background-color: #ffffff;
}
div.header { margin: 0; }
div.footer { margin: 0; }
div.sect {
section {
  margin-top: 2.4em;
  clear: both;
}
div.sect div.sect {
section section {
  margin-top: 1.44em;
  margin-left: 1.72em;
}
.yelp-hash-highlight {
  animation-name: yelp-hash-highlight;
  animation-duration: 0.5s;
  animation-fill-mode: forwards;
}
@keyframes yelp-hash-highlight {
  from { transform: translateY(0px) }
  25%  { transform: translateY(20px); }
  50%  { transform: translateY(0); }
  75%  { transform: translateY(10px); }
  to   { transform: translateY(0px); }
}
div.trails {
  margin: 0;
  padding: 0.5em 1em 0.5em 1em;
  background-color: #f3f3f0;
  margin: 0 -10px 0 -10px;
  padding: 0.2em 10px;
  background-color: rgb(244,244,244);
}
div.trail {
  margin: 0.2em 0 0 0;
  margin: 0.2em 0;
  padding: 0 1em 0 1em;
  text-indent: -1em;
  color: #2e3436;
  color: rgb(75,75,73);
}
a.trail { white-space: nowrap; }
div.hgroup {
  margin: 1em 0 0.5em 0;
  color: #2e3436;
  margin-bottom: 0.5em;
  color: rgb(75,75,73);
}
div.sect div.hgroup {
section > div.inner > div.hgroup {
  margin-top: 0;
  border-bottom: solid 1px #babdb6;
  border-bottom: solid 1px #c0bfbc;
}
div.sect-links div.hgroup {
  border-bottom: solid 2px #729fcf;
section.links > div.inner > div.hgroup {
  border-bottom: solid 2px rgb(43,107,185);
}
div.sect div.sect-links {
  margin-left: 0;
}
div.sect div.sect-links div.hgroup {
section section.links > div.inner > div.hgroup {
  border: none;
}
h1, h2, h3, h4, h5, h6, h7 {
  margin: 0; padding: 0;
  color: #2e3436;
  color: rgb(75,75,73);
  font-weight: bold;
}
h1 { font-size: 2em; }
h2 { font-size: 1.44em; }
h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.2em; }
h3, h4, h5, h6, h7 { font-size: 1em; }

p { line-height: 1.72em; }
div, pre, p { margin: 1em 0 0 0; padding: 0; }
div.contents > *:first-child,
th > *:first-child, td > *:first-child,
dt > *:first-child, dd > *:first-child,
li > *:first-child { margin-top: 0; }
p { line-height: 1.44em; }
div, pre, p { margin: 0; padding: 0; }
div.contents > * + *,
th > * + *, td > * + *,
dt > * + *, dd > * + *,
li > * + * { margin-top: 1em; }
div.inner, div.region, div.contents, pre.contents { margin-top: 0; }
pre.contents div { margin-top: 0 !important; }
p img { vertical-align: middle; }
p.lead { font-size: 1.2em; }
div.clear {
  margin: 0; padding: 0;
  height: 0; line-height: 0;
  clear: both;
}
.center { text-align: center; }

div.about {
footer.about { margin: 0; }
  color: #2e3436;
}
div.about > div.inner > div.hgroup {
footer.about > div.inner > div.hgroup {
  margin: 0; padding: 0;
  text-align: center;
  border: none;
}
div.about > div.inner > div.hgroup > h2 {
footer.about > div.inner > div.hgroup > h2 {
  margin: 0; padding: 0.2em;
  font-size: inherit;
}
div.about.ui-expander > div.inner > div.hgroup span.title:before {
footer.about.ui-expander > div.inner > div.hgroup span.title:before {
  content: "";
}
div.copyrights {
  margin: 1em;
  max-width: 700px;
  text-align: center;
  padding: 10px;
  margin: 0 auto;
}
div.copyright {
  margin: 0;
div.copyright { margin: 0; }
div.credits {
  display: flex;
  flex-flow: row wrap;
  align-items: stretch;
  justify-content: flex-start;
  max-width: 720px;
  margin: 0 auto;
}
div.aboutblurb {
div.credits > * {
  display: inline-block;
  vertical-align: top;
  text-align: left;
  max-width: 18em;
  margin: 0 1em 1em 1em;
  flex: 1 0 220px;
  margin: 0;
  padding: 10px;
}
div.credits > *:empty { padding: 0 10px; height: 0; }
ul.credits, ul.credits li {
  margin: 0; padding: 0;
  list-style-type: none;
}
ul.credits li {
  margin-left: 1em;
  text-indent: -1em;
}
div.license {
  max-width: 700px;
  margin: 0 auto;
  padding: 10px;
}

table {
  border-collapse: collapse;
  border-color: #2e3436;
  border-color: #c0bfbc;
  border-width: 1px;
}
td, th {
  padding: 0.5em;
  vertical-align: top;
  border-color: #2e3436;
  border-color: #c0bfbc;
  border-width: 1px;
}
thead td, thead th, tfoot td, tfoot th {
  font-weight: bold;
  color: #2e3436;
  background-color: #e5e5e3;
  color: rgb(75,75,73);
  background-color: rgb(234,234,233);
}
th {
  text-align: left;
  font-weight: bold;
  color: #2e3436;
  color: rgb(75,75,73);
}

ul, ol, dl { margin: 0; padding: 0; }
li {
  margin: 1em 0 0 0;
  margin-left: 2.4em;
  padding: 0;
}
li:first-child { margin-top: 0; }
@media (max-width: 480px) {
  li {
    margin-left: 1.44em;
  }
}
dt { margin-top: 1em; }
dt:first-child { margin-top: 0; }
dt + dt { margin-top: 0; }
dd {
  margin: 0.2em 0 0 0;
  margin-left: 1.44em;
}
dd + dd { margin-top: 1em; }
ol.compact li { margin-top: 0.2em; }
ul.compact li { margin-top: 0.2em; }
ol.compact li:first-child { margin-top: 0; }
ul.compact li:first-child { margin-top: 0; }
dl.compact dt { margin-top: 0.2em; }
dl.compact dt:first-child { margin-top: 0; }
dl.compact dt + dt { margin-top: 0; }

a {
  text-decoration: none;
  color: #204a87;
  color: rgb(43,107,185);
}
a:visited { color: #5c3566; }
a:visited { color: rgb(147,64,167); }
a:hover {
  border-bottom: dotted 1px #729fcf;
  border-bottom: dotted 1px rgb(43,107,185);
}
p a {
  border-bottom: dotted 1px #729fcf;
  border-bottom: dotted 1px rgb(43,107,185);
}
a img { border: none; }
@media only screen and (max-width: 400px) {
  div.page {
    margin: 0;
    border: none;
  }

  div.body {
    padding-left: 0;
.yelp-svg-fill {
    padding-right: 0;
  }
  div.body > div.hgroup,
  div.body > div.region > div.contents > *,
  div.body > div.region > div.sect > div.inner > div.hgroup > *,
  div.body > div.region > div.sect > div.inner > div.region > div.contents > * {
    margin-left: 12px;
    margin-right: 12px;
  }
  div.body > div.region > div.sect-links {
    margin-left: 0;
  fill: rgb(75,75,73);
    margin-right: 0;
  }
  div.trails {
    padding: 12px;
  }
}
.yelp-svg-stroke {
  stroke: rgb(75,75,73);
}
  li {
    margin-left: 1.44em;
  }
}

div.title {
  margin: 0 0 0.2em 0;
  font-weight: bold;
  color: #2e3436;
  color: rgb(75,75,73);
}
div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 {
  margin: 0;
  font-size: inherit;
  font-weight: inherit;
  color: inherit;
}
div.desc { margin: 0 0 0.2em 0; }
div.contents + div.desc { margin: 0.2em 0 0 0; }
pre.contents {
  padding: 0.5em 1em 0.5em 1em;
}
div.links-center { text-align: center; }
div.links .desc { color: #2e3436; }
div.links .desc { color: rgb(102,102,100); }
div.links > div.inner > div.region > div.desc { font-style: italic; }
div.links ul { margin: 0; padding: 0; }
div.links ul ul {
  margin-left: 1em;
}
li.links {
  margin: 0.5em 0 0.5em 0;
  padding: 0;
  padding-left: 1em;
  list-style-type: none;
}
li.links-head {
  margin-top: 1em;
  color: rgb(102,102,100);
  border-bottom: solid 1px #c0bfbc;
}
div.sectionlinks {
  display: inline-block;
  padding: 0 1em 0 1em;
  background-color: #e6f2ff;
  border: solid 1px #729fcf;
  background-color: rgb(241,246,253);
  border: solid 1px rgb(43,107,185);
}
div.sectionlinks ul { margin: 0; }
div.sectionlinks li { padding: 0; }
div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; }
div.sectionlinks div.sectionlinks {
  display: block;
  margin: 0.5em 0 0 0;
  padding: 0;
  border: none;
}
div.sectionlinks div.sectionlinks li {
  padding-left: 1.44em;
}
div.nextlinks {
nav.prevnext { clear: both; }
  font-size: 1.2em;
  margin-left: 1.2em;
  float: right;
div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; }
nav.prevnext > div.inner { float: right; }
  clear: both;
}
div.nextlinks a {
  background-color: #f3f3f0;
nav.prevnext > div.inner > * {
  background-color: rgb(244,244,244);
  display: inline-block;
  position: relative;
  height: 1.44em;
  padding: 0.2em 0.83em;
  padding: 0.2em 0.83em 0 0.83em;
  margin-bottom: 1em;
}
a.nextlinks-prev { margin-left: 0.72em; }
a.nextlinks-next { margin-right: 0.72em; }
a.nextlinks-prev:after, a.nextlinks-next:after {
  border: solid transparent;
  border: solid 1px #c0bfbc;
  content: " ";
  position: absolute;
  height: 0; width: 0;
  border-width: 0.92em;
  top: 50%;
  margin-top: -0.92em;
}
a.nextlinks-prev:after {
nav.prevnext > div.inner > span { visibility: hidden; }
  right: 100%;
  border-right-color: #f3f3f0;
}
a.nextlinks-next:after {
nav.prevnext > div.inner > a + a {
  left: 100%;
  border-left-color: #f3f3f0;
  border-left: none;
}
div.nextlinks a:hover {
border: none;
nav.prevnext > div.inner > a:first-child {
  border-top-left-radius: 2px;
  background: #e6f2ff
}
a.nextlinks-prev:hover:after {
  border-right-color: #e6f2ff
  border-bottom-left-radius: 2px;
}
a.nextlinks-next:hover:after {
  border-left-color: #e6f2ff
nav.prevnext > div.inner > a:last-of-type {
  border-top-right-radius: 2px;
  border-bottom-right-radius: 2px;
}
div.serieslinks {
  display: inline-block;
  padding: 0 1em 0 1em;
  background-color: #e6f2ff;
  border: solid 1px #729fcf;
  background-color: rgb(241,246,253);
  border: solid 1px rgb(43,107,185);
}
div.serieslinks ul { margin: 0; }
div.serieslinks li { padding: 0; }
div.serieslinks div.title { margin: 0.5em 0 0.5em 0; }
pre.numbered {
  margin: 0;
  padding: 0.5em;
  float: left;
  margin-right: 0.5em;
  text-align: right;
  color: #2e3436;
  background-color: #fffacc;
  color: rgb(102,102,100);
  background-color: rgb(253,251,233);
}
div.code {
  background: url('yelp-code.png') no-repeat top right;
  border: solid 1px #babdb6;
  border: solid 1px #c0bfbc;
}
div.example {
  border-left: solid 4px #babdb6;
  border-left: solid 4px #c0bfbc;
  padding-left: 1em;
}
div.example > div.inner > div.region > div.desc { font-style: italic; }
div.figure {
  display: inline-block;
  max-width: 100%;
  margin-left: 1.72em;
}
div.figure > div.inner {
  padding: 4px;
  color: #2e3436;
  border: solid 1px #babdb6;
  background-color: #f3f3f0;
  color: rgb(75,75,73);
  border: solid 1px #c0bfbc;
  background-color: rgb(244,244,244);
}
@media (max-width: 960px) {
div.figure > div.inner > a.zoom {
  div.figure {
    margin-left: 0;
  }
}
a.figure-zoom {
  float: right;
}
a.figure-zoom:hover { border-bottom: none; }
a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; }
a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; }
a.figure-zoom .figure-zoom-out { display: none; }
a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; }
a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; }
div.figure > div.inner > div.region > div.contents {
  margin: 0;
  padding: 0.5em 1em 0.5em 1em;
  clear: both;
  text-align: center;
  color: #000000;
  border: solid 1px #babdb6;
  border: solid 1px #c0bfbc;
  background-color: #ffffff;
}
div.list > div.inner > div.title { margin-bottom: 0.5em; }
div.listing > div.inner { margin: 0; padding: 0; }
div.listing > div.inner > div.region > div.desc { font-style: italic; }
div.note {
  padding: 6px;
  border: solid 1px #e5e5e3;
  background-color: #f3f3f0;
  border: solid 1px rgb(234,234,233);
  background-color: rgb(244,244,244);
  display: flex;
  flex-flow: row;
}
div.note > * { margin: 0 6px; padding: 0; min-height: 24px; min-width: 24px; }
div.note > div.inner > div.title {
  margin-left: 30px;
div.note-warning > svg .yelp-svg-fill {
  fill: #c01c28;
}
div.note > div.inner > div.region > div.contents {
div.note-danger {
  margin: 0; padding: 0;
  margin-left: 30px;
  border-color: #c01c28;
}
div.note > div.inner {
div.note-important > svg .yelp-svg-fill {
  margin: 0; padding: 0;
  background-image: url("yelp-note.png");
  background-position: left top;
  background-repeat: no-repeat;
  min-height: 24px;
  fill: #3584e4;
}
div.note-advanced > div.inner {  }
div.note-bug > div.inner { background-image: url("yelp-note-bug.png"); }
div.note-important > div.inner { background-image: url("yelp-note-important.png"); }
div.note-tip > div.inner { background-image: url("yelp-note-tip.png"); }
div.note-warning > div.inner { background-image: url("yelp-note-warning.png"); }
div.note-danger > svg .yelp-svg-fill {
  fill: #c01c28;
  animation-name: yelp-note-danger;
  animation-duration: 2s;
  animation-fill-mode: forwards;
  animation-iteration-count: infinite;
}
@keyframes yelp-note-danger {
  from { fill: #c01c28 }
  50%  { fill: #c0bfbc }
  to   { fill: #c01c28 }
}
div.note-sidebar {
  float: right;
  max-width: 40%;
  margin-left: 6px;
  max-width: 206px;
  margin-left: 20px;
  padding: 6px;
}
div.note-sidebar > div.inner { background-image: none; }
div.note-sidebar > div.inner > div.title { margin-left: 0px; }
div.note-sidebar > div.inner > div.region > div.contents { margin-left: 0px; }
div.note-plain > div.inner { background-image: none; }
div.note-plain > div.inner > div.title { margin-left: 0px; }
div.note-plain > div.inner > div.region > div.contents { margin-left: 0px; }
div.quote {
  padding: 0;
  min-height: 48px;
}
div.quote > div.inner:before {
  float: left;
  content: '“';
  font-family: "Century Schoolbook L";
  font-size: 48px;
  font-weight: bold;
  line-height: 1em;
  margin: 0; padding: 0;
  height: 48px;
  width: 48px;
  text-align: center;
  color: #e5e5e3;
  color: rgb(234,234,233);
}
div.quote > div.inner > div.title {
  margin: 0;
  margin-left: 48px;
}
blockquote {
  margin: 0; padding: 0;
  margin-left: 48px;
}
blockquote > *:first-child { margin-top: 0; }
div.quote > div.inner > div.region > div.cite {
  margin-top: 0.5em;
  margin-left: 48px;
  color: #2e3436;
  color: rgb(102,102,100);
}
div.quote > div.inner > div.region > div.cite::before {
  
  content: '― ';
  color: #2e3436;
  color: rgb(102,102,100);
}
div.screen {
  background-color: #f3f3f0;
  border: solid 1px #babdb6;
  background-color: rgb(244,244,244);
  border: solid 1px #c0bfbc;
}
ol.steps, ul.steps {
  margin: 0;
  padding: 0.5em 1em 0.5em 1em;
  border-left: solid 4px #edd400;
  border-left: solid 4px #f8e45c;
  -moz-box-shadow: 0 1px 2px #babdb6;
  -webkit-box-shadow: 0 1px 2px #babdb6;
  box-shadow: 0 1px 2px #babdb6;
  box-shadow: 0 1px 2px #c0bfbc;
}
ol.steps .steps {
  padding: 0;
  border: none;
  background-color: none;
  background-color: unset;
  -moz-box-shadow: none;
  -webkit-box-shadow: none;
  box-shadow: none;
}
li.steps { margin-left: 1.44em; }
li.steps li.steps { margin-left: 2.4em; }
div.synopsis > div.inner > div.region > div.contents,
div.synopsis > div.contents, div.synopsis > pre.contents {
  padding: 0.5em 1em 0.5em 1em;
  border-top: solid 1px;
  border-bottom: solid 1px;
  border-color: #729fcf;
  background-color: #f3f3f0;
  border-color: rgb(43,107,185);
  background-color: rgb(244,244,244);
}
div.synopsis > div.inner > div.region > div.desc { font-style: italic; }
div.synopsis div.code {
  background: none;
  background: unset;
  border: none;
  padding: 0;
}
div.synopsis div.code > pre.contents { margin: 0; padding: 0; }
div.unknown > div.inner > div.region > div.desc { font-style: italic; }
div.table > div.desc { font-style: italic; }
tr.shade {
  background-color: #f3f3f0;
  background-color: rgb(244,244,244);
}
td.shade {
  background-color: #f3f3f0;
  background-color: rgb(244,244,244);
}
tr.shade td.shade {
  background-color: #e5e5e3;
  background-color: rgb(234,234,233);
}

span.app { font-style: italic; }
span.cmd {
  font-family: monospace;
  background-color: #f3f3f0;
  font-family: monospace,monospace; font-size: 0.83em;
  background-color: rgb(244,244,244);
  padding: 0 0.2em 0 0.2em;
}
span.cmd span.cmd { background-color: none; padding: 0; }
pre span.cmd { background-color: none; padding: 0; }
span.cmd span.cmd { background-color: unset; padding: 0; }
pre span.cmd { background-color: unset; padding: 0; }
span.code {
  font-family: monospace;
  border-bottom: solid 1px #e5e5e3;
  font-family: monospace,monospace; font-size: 0.83em;
  border-bottom: solid 1px rgb(234,234,233);
}
span.code span.code { border: none; }
pre span.code { border: none; }
span.em { font-style: italic; }
span.em-bold {
  font-style: normal; font-weight: bold;
  color: #2e3436;
  color: rgb(75,75,73);
}
pre span.error {
  color: #a40000;
  color: rgb(173,25,36);
}
span.file { font-family: monospace; }
span.gui, span.guiseq { color: #2e3436; }
span.input { font-family: monospace; }
span.file { font-family: monospace,monospace; font-size: 0.83em; }
span.gui, span.guiseq { color: rgb(75,75,73); }
span.input { font-family: monospace,monospace; font-size: 0.83em; }
pre span.input {
  font-weight: bold;
  color: #2e3436;
  color: rgb(75,75,73);
}
kbd {
  font-family: inherit;
  font-size: inherit;
  color: #2e3436;
  background-color: #f3f3f0;
  border: solid 1px #babdb6;
  color: rgb(75,75,73);
  background-color: rgb(244,244,244);
  border: solid 1px #c0bfbc;
  -moz-border-radius: 2px;
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -moz-box-shadow: 1px 1px 2px #babdb6;
  -webkit-box-shadow: 1px 1px 2px #babdb6;
  box-shadow: 1px 1px 2px #babdb6;
  box-shadow: 1px 1px 2px #c0bfbc;
  margin: 0 0.2em 0 0.2em;
  padding: 0 0.5em 0 0.5em;
  padding: 0.2em 0.5em 0 0.5em;
  white-space: nowrap;
}
kbd.key-Fn {
  font-weight: bold;
  color: #729fcf;
  color: rgb(43,107,185);
}
span.key a {
  border-bottom: none;
}
a > kbd {
  color: #204a87;
  border-color: #729fcf;
  color: rgb(43,107,185);
  border-color: rgb(43,107,185);
}
span.keyseq {
  color: #2e3436;
  color: rgb(75,75,73);
  white-space: nowrap
}
span.output { font-family: monospace; }
span.output { font-family: monospace,monospace; font-size: 0.83em; }
pre span.output {
  color: #000000;
}
pre span.prompt {
  color: #2e3436;
  color: rgb(75,75,73);
}
span.sys { font-family: monospace; }
span.sys { font-family: monospace,monospace; font-size: 0.83em; }
span.var { font-style: italic; }

.ui-tile-img .media-controls { display: none; }
span.media-audio, span.media-video { display: inline-block; }
audio, video { display: block; margin: 0; }
div.media > div.inner { display: inline-block; text-align: center; }
div.media-controls {
.media-controls {
  min-width: 24em;
  height: 24px;
  margin: 0; padding: 0;
  border-left: solid 1px #000000;;
  border-right: solid 1px #000000;;
  border-bottom: solid 1px #000000;;
  background-color: #2e3436;
  border-left: solid 1px #000000;
  border-right: solid 1px #000000;
  border-bottom: solid 1px #000000;
  background-color: rgb(75,75,73);
  color: #ffffff;
  -moz-border-bottom-left-radius: 4px;
  -moz-border-bottom-right-radius: 4px;
  -webkit-border-bottom-left-radius: 4px;
  -webkit-border-bottom-right-radius: 4px;
  border-bottom-left-radius: 4px;
  border-bottom-right-radius: 4px;
  border-bottom-left-radius: 4px;
  border-bottom-right-radius: 4px;
  display: flex;
  align-items: center;
}
.media-audio .media-controls {
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
}
div.media-controls-audio {
  border-top: solid 1px #000000;;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
.media-controls > * {
  flex: 0 1 auto;
}
.media-controls > input.media-range {
  flex: 1 0 auto;
  background-color: rgb(75,75,73);
  margin: 0 10px;
  -webkit-appearance: none;
}
input.media-range::-webkit-slider-runnable-track {
  height: 4px;
  background: rgb(102,102,100);
  border-radius: 2px;
}
input.media-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  height: 16px;
  width: 16px;
  border-radius: 8px;
  background: rgb(234,234,233);
  border: solid 1px rgb(75,75,73);
  margin-top: -6px;
}
input.media-range::-webkit-slider-thumb:hover,
input.media-range::-webkit-slider-thumb:focus {
  background: rgb(244,244,244);
}
input.media-range::-moz-range-track {
  height: 4px;
  background: rgb(102,102,100);
  border-radius: 2px;
}
input.media-range::-moz-range-thumb {
  -webkit-appearance: none;
  height: 16px;
  width: 16px;
  border-radius: 8px;
  background: rgb(234,234,233);
  border: solid 1px rgb(75,75,73);
  margin-top: -6px;
}
.media-controls-audio {
  border-top: solid 1px #000000;
  border-radius: 4px;
}
button.media-play {
  height: 24px;
  padding: 0 2px 0 2px; line-height: 0;
  float: left;
  background-color: #2e3436;
  background-color: rgb(75,75,73);
  border: none;
  border-right: solid 1px #000000;;
  border-right: solid 1px #000000;
}
button.media-play:hover, button.media-play:focus {
  background-color: #729fcf;
  background-color: rgb(43,107,185);
}
button.media-play .yelp-svg-fill { fill: rgb(244,244,244); }
button.media-play canvas { margin: 0; }
div.media-range {
  display: inline-block;
button.media-play .media-pause { display: none; }
button.media-play-playing .media-play { display: none; }
button.media-play-playing .media-pause { display: inline; }
  margin: 2px 8px 0 8px;
  padding: 0;
  height: 20px;
}
div.media-time {
.media-time {
  float: right;
  margin: 0;
  font-size: 16px;
  height: 24px;
  line-height: 24px;
}
div.media-time > span {
.media-time > span {
  padding-right: 8px;
}
span.media-duration {
.media-duration {
  font-size: 12px;
  color: #e5e5e3;
  color: rgb(234,234,233);
  opacity: 0.8;
}
div.media-ttml { margin: 0; padding: 0; }
.media-ttml-pre { white-space: pre; }
.media-ttml-nopre { white-space: normal; }
div.media-ttml-div {
  text-align: left;
  display: none;
  margin: 0; padding: 0;
}
div.media-ttml-p {
  text-align: left;
  display: none;
  margin: 6px auto 0 auto;
  padding: 6px;
  max-width: 24em;
  border: solid 1px #edd400;
  background-color: #fffacc;
  border: solid 1px rgb(107,99,41);
  background-color: rgb(253,251,233);
  -moz-box-shadow: 2px 2px 4px #babdb6;
  -webkit-box-shadow: 2px 2px 4px #babdb6;
  box-shadow: 2px 2px 4px #babdb6;
  box-shadow: 2px 2px 4px #c0bfbc;
}
div.yelp-data { display: none; }
div.ui-expander > div.inner > div.title span.title,
div.ui-expander > div.inner > div.hgroup span.title {
.ui-expander > div.inner > div.title span.title,
.ui-expander > div.inner > div.hgroup span.title {
  cursor: default;
}
div.ui-expander > div.inner > div.title span.title:before,
div.ui-expander > div.inner > div.hgroup span.title:before {
.ui-expander > div.inner > div.title span.title:before,
.ui-expander > div.inner > div.hgroup span.title:before {
  font-size: 2em;
  font-weight: normal;
  font-weight: bold;
  content: "⌃";
  display: inline-block;
  line-height: 0.2em;
  margin: 0;
  vertical-align: bottom;
  color: #204a87;
  color: rgb(43,107,185);
  transform: translateY(0.2em) rotate(0deg);
  -webkit-transform: translateY(0.2em) rotate(0deg);
  transition: transform 0.2s linear;
  transform-origin: 50% 30%;
  -webkit-transform-origin: 50% 30%;
  -webkit-transition: -webkit-transform 0.2s linear;
  margin: 0 0.2em;
}
div.ui-expander-c > div.inner > div.hgroup { border-bottom: none; }
div.ui-expander-e > div.inner > div.title span.title:before,
div.ui-expander-e > div.inner > div.hgroup span.title:before {
.ui-expander-c > div.inner > div.hgroup { border-bottom: none; }
.ui-expander-e > div.inner > div.title span.title:before,
.ui-expander-e > div.inner > div.hgroup span.title:before {
  content: "⌄";
  vertical-align: top;
  transform: translateY(0.2em) rotate(180deg);
  -webkit-transform: translateY(0.2em) rotate(180deg);
}
div.ui-expander > div.inner > div.title:hover,
div.ui-expander > div.inner > div.hgroup:hover * {
  color: #204a87;
.ui-expander > div.inner > div.title:hover,
.ui-expander > div.inner > div.hgroup:hover * {
  color: rgb(43,107,185);
}
div.ui-expander > div.inner > div.hgroup > .subtitle {
.ui-expander > div.inner > div.hgroup > .subtitle {
  margin-left: 2em;
}
@media only screen and (max-width: 400px) {
  div.links {
    margin-left: 12px;
    margin-right: 12px;
  } 
.ui-expander-c > div.inner > div.region {
  display: none;
}
.ui-expander-e > div.inner > div.region {
  animation-name: yelp-ui-expander-e;
  animation-duration: 0.2s;
  animation-fill-mode: forwards;
  transform-origin: 0 0;
}
@keyframes yelp-ui-expander-e {
  from { transform: scaleY(0); }
  to   { transform: scaleY(1); }
}
div.ui-expander-preview > div.inner > div.region {
  transform-origin: 0 0;
  transition: transform 0.2s linear, background-color 0.2s linear;
  animation-name: none;
}
div.ui-expander-preview.ui-expander-c > div.inner {
  max-height: 100px;
  overflow: hidden;
}
  li.links { padding: 0; }
  div.body > div.region > div.contents > div.example,
  div.body > div.region > div.contents > div.steps,
  div.body > div.region > div.contents > div.note,
  div.body > div.region > div.sect > div.inner > div.region > div.contents > div.example,
  div.body > div.region > div.sect > div.inner > div.region > div.contents > div.steps,
  div.body > div.region > div.sect > div.inner > div.region > div.contents > div.note {
    margin-left: 0;
div.ui-expander-preview.ui-expander-c > div.inner > div.region {
  display: block;
  transform: scaleY(0.4);
  background-color: rgb(244,244,244);
}
div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover {
  background-color: rgb(241,246,253);
  cursor: zoom-in;
}
div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * {
  cursor: zoom-in;
}
div.ui-expander-preview > div.inner > div.region > * {
  transform-origin: 0 0;
  transition: transform 0.2s linear;
}
div.ui-expander-preview.ui-expander-c > div.inner > div.region > * {
  transform: scaleX(0.4);
}
section.ui-expander-preview > div.inner > div.region > div.contents{
  transform-origin: 0 0;
    margin-right: 0;
  }
  div.steps > div.inner > div.title {
    margin-left: 18px;
    margin-right: 18px;
  transition: transform 0.2s linear, background-color 0.2s linear;
}
section.ui-expander-preview.ui-expander-c > div.inner {
  max-height: 140px;
  overflow: hidden;
}
section.ui-expander-preview.ui-expander-c > div.inner > div.region {
  display: block;
}
section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents {
  transform: scaleY(0.6);
  background-color: rgb(244,244,244);
}
section.ui-expander-preview > div.inner > div.region > div.contents > * {
  transform-origin: 0 0;
  transition: transform 0.2s linear;
}
section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * {
  transform: scaleX(0.6);
}
section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover {
  background-color: rgb(241,246,253);
  cursor: zoom-in;
}
@media only screen and (max-width: 480px) {
  article > div.region > div.contents > div.example,
  article > div.region > section > div.inner > div.region > div.contents > div.example {
    margin-left: -10px;
    margin-right: -10px;
  }
  ol.steps, ul.steps {
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
    box-shadow: none;
  div.example {
    padding-left: 6px;
    padding-right: 10px;
  }
  article > div.region > div.contents > div.note,
  article > div.region > section > div.inner > div.region > div.contents > div.note {
    margin-left: -10px;
    margin-right: -10px;
    padding-left: 10px;
    padding-right: 10px;
  }
  article > div.region > div.contents > div.note,
  article > div.region > section > div.inner > div.region > div.contents > div.note {
    border-left: none;
    border-right: none;
  }
  div.note-sidebar {
    float: none;
    max-width: none;
    margin-left: inherit;
    margin-right: inherit;
    padding-left: inherit;
    padding-right: inherit;
  }
  div.note-sidebar > div.inner > div.title,
  div.note-sidebar > div.inner > div.region > div.contents {
    margin-left: 12px;
    margin-right: 12px;
    margin-left: 10px;
    margin-right: 10px;
  }
  article > div.region > div.contents > div.steps,
  article > div.region > section > div.inner > div.region > div.contents > div.steps {
    margin-left: -10px;
    margin-right: -10px;
}

pre.syntax span.function, pre.syntax span.keyword, pre.syntax span.tag {
  color: #729fcf;
  }
  div.steps > div.inner > div.title {
    margin-left: 10px;
    margin-right: 10px;
  }
  ol.steps, ul.steps {
    box-shadow: none;
    padding: 0;
    padding-left: 6px;
    padding-right: 10px;
  }
}

.hljs a {
  color: inherit;
  border-bottom: dotted 1px rgb(43,107,185);
}
.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); }
.hljs-addition {
  color: rgb(46,121,73);
  background-color: rgb(227,250,236);
}
.hljs-deletion {
  color: rgb(173,25,36);
  background-color: rgb(251,243,244);
}
.hljs-emphasis  { font-style: italic; }
.hljs-strong    { font-weight: bold; }
.hljs-attr      { color: rgb(43,107,185); }
.hljs-attribute { color: rgb(107,99,41); }
.hljs-built_in  { color: rgb(150,96,43); }
.hljs-bullet    { color: rgb(46,121,73); }
.hljs-class     { }
.hljs-code      { }
.hljs-comment   { color: rgb(102,102,100); }
.hljs-doctag    { }
.hljs-formula   { color: rgb(75,75,73); }
.hljs-function  { }
.hljs-keyword   { color: rgb(147,64,167); }
.hljs-link      { color: rgb(150,96,43); }
.hljs-literal   { color: rgb(150,96,43); }
.hljs-meta      { color: rgb(150,96,43); }
.hljs-name      { color: rgb(173,25,36); }
.hljs-number    { color: rgb(150,96,43); }
.hljs-params    { color: rgb(150,96,43); }
.hljs-quote     { color: rgb(102,102,100); }
.hljs-regexp    { color: rgb(173,25,36); }
.hljs-rest_arg  { }
.hljs-section   { color: rgb(43,107,185); }
.hljs-string    { color: rgb(46,121,73); }
.hljs-subst     { }
.hljs-symbol    { color: rgb(46,121,73); }
.hljs-tag       { color: rgb(173,25,36); }
.hljs-title     { color: rgb(43,107,185); }
.hljs-type      { }
.hljs-variable  { }
.hljs-selector-attr  { }
.hljs-selector-class { color: rgb(173,25,36); }
.hljs-selector-id    { color: rgb(173,25,36); }
.hljs-selector-tag   { color: rgb(147,64,167); }
.hljs-template-tag      { }
.hljs-template-variable { }
pre.syntax span.string, pre.syntax span.operator {
  color: #2e3436;


div.links .desc a {
  color: inherit;
}
div.links .desc a:hover {
  color: rgb(43,107,185);
}
a.bold { font-weight: bold; }


div.link-button {
  font-size: 1.2em;
  font-weight: bold;
}
.link-button a {
  display: inline-block;
  background-color: #729fcf;
  background-color: #3584e4;
  color: #ffffff;
  text-shadow: #204a87 1px 1px 0px;
  border: solid 1px #204a87;
  text-shadow: rgb(43,107,185) 1px 1px 0px;
  border: solid 1px rgb(43,107,185);
  padding: 0.2em 0.5em 0.2em 0.5em;
  -moz-border-radius: 2px;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.link-button a:visited {
  color: #ffffff;
}
.link-button a:hover {
  text-decoration: none;
  color: #ffffff;
  box-shadow: 1px 1px 1px #729fcf;
  box-shadow: 1px 1px 1px #3584e4;
}
div.link-button a .desc {
  display: block;
  font-weight: normal;
  font-size: 0.83em;
  color: #f3f3f0;
  color: rgb(244,244,244);
}


div.floatleft {
  float: left;
  margin-right: 1em;
}
div.floatright {
  float: right;
  margin-left: 1em;
}
div.floatstart {
  float: left;
  margin-right: 1em;
}
div.floatend {
  float: right;
  margin-left: 1em;
}


div.title-heading h1, div.title-heading h2, div.title-heading h3,
div.title-heading h4, div.title-heading h5, div.title-heading h6 {
  font-size: 1.72em;
  font-weight: bold;
}
ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; }
div.links-heading > a { font-size: 1.72em; font-weight: bold; }
ul.links-heading > li > div.desc { margin-top: 0.5em; }

div.mouseovers {
  width: 250px;
  height: 200px;
  text-align: center;
  margin: 0;
div.links-uix-hover {
  position: relative;
  display: flex;
  flex-flow: row nowrap;
  align-items: stretch;
  justify-content: flex-start;
  float: left;
}
ul.links-uix-hover { flex-grow: 1; }
ul.mouseovers li { margin: 0; }
ul.mouseovers a {
  display: inline-block;
  padding: 4px 1.2em 4px 1.2em;
ul.links-uix-hover li { margin: 0; padding: 0; }
ul.links-uix-hover a {
  display: block;
  padding: 8px 1.2em;
  border-bottom: none;
}
ul.mouseovers a:hover {
ul.links-uix-hover a:hover, ul.links-uix-hover a:focus {
  text-decoration: none;
  background: #e6f2ff;
  background: rgb(241,246,253);
}
ul.mouseovers a img {
  display: none;
ul.links-uix-hover img {
  display: block;
  position: absolute;
  margin: 0; padding: 0;
  top: 0; left: 0;
  visibility: hidden;
  opacity: 0.0;
  transition: opacity 0.6s, visibility 0.6s;
}
ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img {
  visibility: visible;
  opacity: 1.0;
  transition: opacity 0.2s, visibility 0.2s;
}
@media only screen and (max-width: 400px) {
  ul.mouseovers a {
    display: block;
    padding: 12px;
    margin-left: -12px;
@media only screen and (max-width: 480px) {
  div.links-uix-hover-img { display: none; }
  ul.links-uix-hover img { display: none; }
  ul.links-uix-hover li {
    margin-left: -10px; margin-right: -10px;
    margin-right: -12px;
  }
  div.mouseovers { display: none; }
}

div.ui-screen {
  display: none;
  ul.links-uix-hover li a {
    padding: 10px;
  }
}


div.ui-overlay-screen {
  position: fixed;
  margin: 0;
  left: 0; top: 0;
  width: 100%; height: 100%;
  background: #2e3436;
  opacity: 0.6;
  background: rgb(75,75,73);
  animation-name: yelp-overlay-screen;
  animation-duration: 0.8s;
  animation-fill-mode: forwards;
}
@keyframes yelp-overlay-screen {
  from { opacity: 0.0; }
  to   { opacity: 0.6; }
}
div.ui-overlay {
  display: none;
  position: fixed;
  text-align: center;
  left: 0;
  top: 20px;
  width: 100%;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10;
}
div.ui-overlay-show {
  animation-name: yelp-overlay-slide;
  animation-duration: 0.8s;
  animation-fill-mode: forwards;
}
@keyframes yelp-overlay-slide {
  from { transform: translateY(-400px) translateX(-50%); }
  to   { transform: translateY(0) translateX(-50%); }
}
div.ui-overlay > div.inner {
  display: inline-block;
  padding: 8px;
  background-color: #f3f3f0;
  border: solid 1px #2e3436;
  box-shadow: 0 2px 4px #2e3436;
  background-color: rgb(244,244,244);
  border: solid 1px rgb(75,75,73);
  box-shadow: 0 2px 4px rgb(75,75,73);
  -moz-border-radius: 6px;
  -webkit-border-radius: 6px;
  border-radius: 6px;
  text-align: left;
}
div.ui-overlay img, div.ui-overlay video {
  max-height: 80vh;
  max-width: 90vw;
}
div.ui-overlay > div.inner > div.title { margin-top: -4px; }
a.ui-overlay-close {
  display: block;
  float: right;
  width: 23px; height: 23px;
  font-size: 18px; line-height: 23px;
  font-weight: bold;
  margin-top: -28px;
  margin-right: -24px;
  padding: 1px 2px 3px 2px;
  text-align: center;
  border: none;
  -moz-border-radius: 50%;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  background-color: #000000;
  background-image: -moz-radial-gradient(50% 30%, circle farthest-corner, #2e3436, #000000);
  background-image: radial-gradient(50% 30%, circle farthest-corner, #2e3436, #000000);
  background-image: radial-gradient(circle farthest-corner at 50% 30%, rgb(75,75,73), #000000);
  background-image: -webkit-radial-gradient(50% 30%, circle farthest-corner, #2e3436, #000000);
  border: 3px solid #ffffff; 
  color: #ffffff;
  box-shadow: 0 2px 2px #000000;
  text-shadow: 0 2px 2px #000000;
}
a.ui-overlay-close:hover {
}


div.ui-tile {
  display: inline-block;
div.links-tiles {
  display: flex;
  flex-flow: row wrap;
  align-items: stretch;
  justify-content: stretch;
  vertical-align: top;
  clear: both
  clear: both;
  margin: 0 -10px;
}
div.region > div.ui-tile {
  margin-top: 0;
  margin-bottom: 1em;
div.links-tile {
  max-width: 300px;
  flex: 1 0 300px;
  vertical-align: top;
  margin: 0;
  padding: 10px;
}
div.links-tiles > div.links-tile { max-width: none; }
div.ui-tile:first-child { margin-top: 1em; }
div.ui-tile > a {
  display: inline-block;
div.links-tile:empty { padding: 0 10px; height: 0; }
div.links-tile > a {
  display: block;
  vertical-align: top;
  margin: 0;
  margin-right: 1em;
  padding: 1em;
  -moz-border-radius: 6px;
  -webkit-border-radius: 6px;
  border-radius: 6px;
  padding: 9px;
  border-radius: 6px;
  border: solid 1px #ffffff;
}
div.links-tile > a:hover {
  border: solid 1px rgb(241,246,253);
  box-shadow: 0 1px 2px #3584e4;
}
div.links-tile > a > span.links-tile-img {
  display: block;
  text-align: center;
}
div.links-tile > a > span.links-tile-img > img {
  width: 100%;
  border-radius: 3px;
}
div.ui-tile > a {
  border: solid 1px #f3f3f0;
div.links-tile > a > span.links-tile-text > span.title {
  display: block;
  font-weight: bold;
}
div.ui-tile > a:hover {
div.links-tile > a > span.links-tile-text > * + span.title {
  border: solid 1px #e6f2ff;
  box-shadow: 0 1px 2px #729fcf;
  margin-top: 0.5em;
}
div.ui-tile > a > * { display: block; }
div.links-tile > a > span.links-tile-text > span.desc {
div.ui-tile-side > a > * {
  display: inline-block;
  vertical-align: top;
  display: block;
  margin: 0.2em 0 0 0;
  color: rgb(75,75,73);
}
div.ui-tile-side > a > span.ui-tile-text {

  margin-left: 1em;
}
div.ui-tile > a > span.ui-tile-text > span.title {
  display: block;
  margin-top: 0.5em;
  font-weight: bold;

div.links-grid-container {
  margin-left: -10px;
  margin-right: -10px;
  display: flex;
  flex-flow: row wrap;
  align-items: stretch;
  justify-content: flex-start;
  vertical-align: top;
  clear: both;
}
div.ui-tile-side > a > span.ui-tile-text > span.title { margin-top: 0; }
div.ui-tile > a > span.ui-tile-text > span.desc {
  display: block;
div.links-grid {
  flex: 1 0 300px;
  padding: 10px;
}
div.links-grid:empty { padding: 0 10px; height: 0; }
div.links-grid-link { font-weight: bold; }
div.links-grid > div.desc {
  margin: 0.2em 0 0 0;
  color: #2e3436;
  color: rgb(75,75,73);
}
span.ui-tile-img { text-align: center; }



div.links-norwich {
  width: 900px;
}
div.links-ui-hover {
div.links-norwich-primary {
  text-align: center;
  margin: 0;
  float: left;
  vertical-align: top;
  margin-right: 1.2em;
  margin: 0; padding: 0;
  overflow: hidden;
}
ul.links-ui-hover li { margin: 0; }
ul.links-ui-hover a {
  display: block;
  padding: 4px 1.2em 4px 1.2em;
div.links-norwich-big {
  vertical-align: top;
  display: inline-block;
  background: rgb(241,246,253);
  background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(241,246,253), #3584e4);
  margin: 0 20px 20px 0;
  border-bottom: none;
}
ul.links-ui-hover a:hover {
div.links-norwich-big + div.links-norwich-big {
  text-decoration: none;
  background: #e6f2ff;
  background: rgb(253,251,233);
  background: radial-gradient(ellipse 800px 1200px at 100% 20px, rgb(253,251,233), #f8e45c);
}
span.links-ui-hover-img {
  display: none;
div.links-norwich-big a {
  display: block;
  width: 230px;
  height: 500px;
  height: 320px;
  position: absolute;
  margin: 0; padding: 0;
  overflow: hidden;
  background: #e6f2ff;
  padding: 9px;
  font-size: 1.2em;
  color:  #000000;
  border: solid 1px #3584e4;
  background-repeat: no-repeat;
  text-align: center;
  background-position: right -80px bottom -80px;
}
@media only screen and (max-width: 400px) {
  ul.links-ui-hover a {
    display: block;
    padding: 12px;
div.links-norwich-big a:hover {
  border: solid 1px #3584e4;
  box-shadow: 2px 2px 2px #3584e4;
    margin-left: -12px;
    margin-right: -12px;
  }
  div.links-ui-hover { display: none; }
}
div.links-norwich-big a span.title {
  font-size: 1.2em;
  font-weight: bold;
}
div.links-norwich-big a .desc {
  color:  #000000;
  font-weight: normal;

div.links-grid {
}
div.links-norwich-secondary {
  display: inline-block;
  clear: both
  margin-top: 1em;
  width: 30%;
  margin-right: 2%;
  vertical-align: top;
  margin: 0; padding: 0;
}
div.links-grid-link {
  margin: 0;
div.links-norwich-small {
  display: inline-block;
  vertical-align: top;
  background: rgb(244,244,244);
  margin: 0 20px 20px 0;
  font-weight: bold;
}
div.links-grid > div.desc {
  margin: 0;
  color: #2e3436;
div.links-norwich-small a {
  display: block;
  width: 140px;
  height: 140px;
  padding: 9px;
  font-weight: bold;
  color:  #000000;
  border: solid 1px #c0bfbc;
  background-repeat: no-repeat;
  background-position: right 4px bottom 4px;
}
div.links-norwich-small a:hover {
  border: solid 1px #c0bfbc;
  box-shadow: 2px 2px 2px #3584e4;
}
@media only screen and (max-width: 400px) {
  div.links-grid {
    width: 47%;
@media only screen and (max-width: 900px) {
  div.links-norwich {
    width: 720px;
  }
}

div.links-twocolumn {
@media only screen and (max-width: 720px) {
  div.links-norwich {
  display: inline-block;
  width: 48%;
    width: 540px;
  margin-top: 0;
  margin-right: 1%;
  vertical-align: top;
}
@media only screen and (max-width: 400px) {
  div.links-twocolumn {
  }
}
@media only screen and (max-width: 540px) {
  div.links-norwich {
    width: 100%;
  }
  div.links-norwich-big {
    width: 100%;
    margin-right: 0;
  }
  div.links-norwich-big a {
    width: auto;
}

div.links .desc a {
  }
}

  color: inherit;
}
div.links .desc a:hover {
  color: #204a87;

div.links-divs {
  margin-left: -10px;
  margin-right: -10px;
}
a.bold { font-weight: bold; }
div.linkdiv { margin: 0; padding: 0; }
a.linkdiv {
  display: block;
  margin: 0;
  padding: 0.5em;
  padding: 10px;
  border-bottom: none;
}
a.linkdiv:hover {
  text-decoration: none;
  background-color: #e6f2ff;
  background-color: rgb(241,246,253);
}
a.linkdiv > span.title {
  display: block;
  margin: 0;
  font-size: 1em;
  font-weight: bold;
  color: inherit;
}
a.linkdiv > span.desc {
  display: block;
  margin: 0.2em 0 0 0;
  color: #2e3436;
  color: rgb(75,75,73);
}
span.linkdiv-dash { display: none; }
@media only screen and (max-width: 400px) {
  div.linkdiv {
    margin-left: -12px;
    margin-right: -12px;
  }
  div.linkdiv a {
    padding-left: 12px;
    padding-right: 12px;
  }
}
div.links-twocolumn {
  display: flex;
  flex-flow: row wrap;
  align-items: stretch;
  justify-content: flex-start;
  vertical-align: top;
  margin-left: -10px;
  margin-right: -10px;
}
div.links-twocolumn > div.links-divs {
  flex: 1 0 320px;
  vertical-align: top;
  margin: 0;
}


div.comment {
  padding: 0.5em;
  border: solid 2px #ef2929;
  background-color: #ffdede;
  border: solid 2px #c01c28;
  background-color: rgb(251,243,244);
}
div.comment div.comment {
  margin: 1em 1em 0 1em;
}
div.comment div.cite {
  margin: 0 0 0.5em 0;
  font-style: italic;
}


div.tree > div.inner > div.title { margin-bottom: 0.5em; }
ul.tree {
  margin: 0; padding: 0;
  list-style-type: none;
}
li.tree { margin: -2px 0 0 0; padding: 0; }
li.tree div { margin: 0; padding: 0; }
ul.tree ul.tree {
  margin-left: 1.44em;
}
div.tree-lines ul.tree { margin-left: 0; }


span.hi {
  background-color: #fffacc;
  background-color: rgb(253,251,233);
}

span.hi.hi-ins {
div.facets {
  display: inline-block;
  padding: 6px;
  background-color: #fffacc;
  background-color: rgb(227,250,236);
  border: solid 1px #729fcf;
} 
}
div.facet {
 vertical-align: top;
  display: inline-block;
span.hi.hi-del {
  background-color: rgb(251,243,244);
  text-decoration: line-through;
  margin-top: 0;
  margin-bottom: 1em;
  margin-right: 1em;
}
div.facet div.title { margin: 0; }
div.facet li {
  margin: 0; padding: 0;
  list-style-type: none;
}
span.hi.hi-ins ins { text-decoration: none; }
span.hi.hi-del del { text-decoration: none; }
span.hi.hi-red { background-color: rgb(251,243,244); }
span.hi.hi-orange { background-color: rgb(255,243,231); }
span.hi.hi-yellow { background-color: rgb(253,251,233); }
span.hi.hi-green { background-color: rgb(227,250,236); }
span.hi.hi-blue { background-color: rgb(241,246,253); }
span.hi.hi-purple { background-color: rgb(249,243,250); }
span.hi.hi-gray { background-color: rgb(244,244,244); }

div.facet input {
  vertical-align: middle;
  margin: 0;
}

dt.gloss-term {
  margin-top: 1.2em;
  font-weight: bold;
  color: #2e3436;
  color: rgb(75,75,73);
}
dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; }
dt.gloss-term + dd { margin-top: 0.2em; }
dd.gloss-link {
  margin: 0 0.2em 0 0.2em;
  border-left: solid 4px #729fcf;
  border-left: solid 4px #3584e4;
  padding-left: 1em;
}
dd.gloss-def {
  margin: 0 0.2em 1em 0.2em;
  border-left: solid 4px #babdb6;
  border-left: solid 4px #c0bfbc;
  padding-left: 1em;
}
a.gloss-term {
  tabindex: 0;
  border-bottom: dashed 1px #729fcf;
  position: relative;
  border-bottom: dashed 1px #3584e4;
}
a.gloss-term:hover {
  text-decoration: none;
  border-bottom-style: solid;
}
span.gloss-desc {
  display: none;
  position: absolute;
  z-index: 100;
  margin: 0;
  left: 0;
  top: 1.2em;
  padding: 0.2em 0.5em 0.2em 0.5em;
  min-width: 12em;
  max-width: 24em;
  overflow: hidden;
  color: #2e3436;
  background-color: #fffacc;
  border: solid 1px #edd400;
  color: rgb(75,75,73);
  background-color: rgb(253,251,233);
  border: solid 1px #f8e45c;
  -moz-box-shadow: 2px 2px 4px #babdb6;
  -webkit-box-shadow: 2px 2px 4px #babdb6;
  box-shadow: 2px 2px 4px #babdb6;
  box-shadow: 2px 2px 4px #c0bfbc;
}
a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc {
  display: inline-block;
  animation-name: yelp-gloss-fade;
  animation-duration: 1s;
  animation-fill-mode: forwards;
}
@keyframes yelp-gloss-fade {
  from { opacity: 0.0; }
  to   { opacity: 1.0; }
}


.if-if { display: none; }
.if-choose, .if-when, .if-else { margin: 0; padding: 0; }
.if-choose > .if-when { display: none; }
.if-choose > .if-else { display: block; }
.if-if.if__not-target-mobile { display: block; }
.if-choose.if__not-target-mobile > .if-when { display: block; }
.if-choose.if__not-target-mobile > .if-else { display: none; }
@media only screen and (max-width: 400px) {
@media only screen and (max-width: 480px) {
  .if-if.if__target-mobile { display: block; }
  .if-if.if__not-target-mobile { display: none; }
  .if-choose.if__target-mobile > .if-when { display: block; }
  .if-choose.if__target-mobile > .if-else { display: none; }
  .if-choose.if__not-target-mobile > .if-when { display: none; }
  .if-choose.if__not-target-mobile > .if-else { display: block; }
}

Modified help/html/bookmarks.html from [50bc096509] to [049dbe6bb7].


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
69

70
71
72

73
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

69
70




71
72
73
74
75
76
77
78
79
80

81
82

83



84
85
+






+
+
+
+
+
+
-
+

-
-
+
+






-
-
-
+

-
+










-
-
-
+
+
+







-
+
-
-
-
+
+



+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+


-
+

-
-
-
-
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>Bookmarks</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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="streams.html" title="Streams / Stations">Streams / Stations</a> › <a class="trail" href="streams.html#actions" title="Actions">Actions</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#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">Bookmarks</span></h1></div>
</div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Bookmarks</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Streamtuner2 allows to bookmark favourite streams/stations.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">Use right click for a stations <span class="guiseq"><span class="gui">context menu</span> ▸ <span class="gui">bookmark</span></span></p></li>
<li class="list"><p class="p">Or just press <span class="key"><kbd>F8</kbd></span> on a selected radio.</p></li>
<li class="list"><p class="p">Else use the main menu <span class="guiseq"><span class="gui">Station</span> ▸ <span class="gui">bookmark</span></span></p></li>
</ul></div></div></div>
<p class="p">Once bookmarked the station is listed under <span class="guiseq"><span class="gui"><span class="key"><kbd>bookmarks</kbd></span></span> ▸ <span class="gui"><span class="key"><kbd>favourite</kbd></span></span></span>.</p>
<p class="p">Additionally every appearance of the station in other channel
        tabs gets a ★ star icon.</p>
</div>
<div id="editing" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Editing</span></h2></div>
<div class="region"><div class="contents">
<section id="editing"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Editing</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Entries can be removed from the bookmark list again. Use
        <span class="guiseq"><span class="gui">Edit</span> ▸ <span class="gui">Delete</span></span> or the <span class="key"><kbd>DEL</kbd></span>
	key for that.</p>
<p class="p">You can also manually adapt an entry via <span class="guiseq"><span class="gui">Station</span> ▸ <span class="gui">Edit</span></span>
        or by pressing <span class="key"><kbd>F3</kbd></span>.
	</p>
</div></div>
</div></div>
</div></section><section id="other"><div class="inner">
<div id="other" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Subcategories</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Subcategories</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">The bookmarks tab can display other categories besides "favourite". For example the
	search feature creates a "search", while the "timer" and "links" plugins also display
	lists here.</p>
<div class="note note-bug" title="Bug">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m7 8v7h0.0078a5 6.3027 0 0 0 3.9922 5.867v-6.867h2v6.871a5 6.3027 0 0 0 3.988-5.871h0.012v-7h-10z"></path>
 <path class="yelp-svg-fill" d="m12 3a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4z"></path>
 <path class="yelp-svg-fill" d="m16 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m9.2045 16.361h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m21.704 4.2894h6v1h-6z"></path>
 <path class="yelp-svg-fill" d="m2 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m5.5801 4.3612h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m-6.9199 16.289h6v1h-6z"></path>
<div class="note note-bug" title="Bug"><div class="inner"><div class="region"><div class="contents"><p class="p">However the favourite list itself can not yet be categorized
	further.</p></div></div></div></div>
<div class="links topiclinks"><div class="inner"><div class="region">
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">However the favourite list itself can not yet be categorized
	further.</p></div></div></div>
</div>
<div class="links topiclinks"><div class="inner"><div class="region"><div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="search.html" title="Searching"><span class="title">Searching</span><span class="linkdiv-dash"> — </span><span class="desc">Quicksearch field and Ctrl+F compound search window.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="timer.html" title="Timer"><span class="title">Timer</span><span class="linkdiv-dash"> — </span><span class="desc">Programming recurring play and recording events.</span></a></div>
</div></div></div>
</div></div></div></div>
</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="streams.html#actions" title="Actions">Actions</a></li>
<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></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/channels.html from [294b7f5f57] to [73465d01f9].


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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86



87
88
89
90

91
92

93
94
95

96
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86




87
88
89
90
91
92

93
94

95



96
97
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+


















-
-
-
+
+
+

-


+

+













-
-
+
+
-
-
-
+
+

-
+
-
-
-
+
+


















-
-
-
-
+
+
+



-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>Channels</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Channels</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Channels</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">The tabs in the main window represent the music directory
        channels/services.  Each lists categories/genres and their associated radios/streams.</p>
<div class="media media-image"><div class="inner"><img src="img/channels-left.png" class="media media-block" alt=""></div></div>
<p class="p">The notebook tabs can also be repositioned with
        <span class="guiseq"><span class="gui">Edit</span> ▸ <span class="gui">Channel tab position</span> ▸ <span class="gui">Top</span></span>.
        And you can directly rearrange the channel tabs themselves,
        by dragging them within the list.</p>
<p class="p">If you first select a channel tab, the categories should appear or be loading.
        Otherwise:</p>
<div class="steps"><div class="inner"><div class="region"><ol class="steps">
<li class="steps"><p class="p">Select a channel tab</p></li>
<li class="steps"><p class="p">Choose <span class="guiseq"><span class="gui">Channel</span> ▸ <span class="gui">Reload categories...</span></span></p></li>
<li class="steps"><p class="p">Pick a category/genre from the overview, left.</p></li>
</ol></div></div></div>
<p class="p">Individual channels provide different music/radio information. The table
        views are however mostly identical for each tab. Some views may rename columns,
        or remove them alltogether.</p>
</div>
<div id="list" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Available channels</span></h2></div>
<div class="region"><div class="contents"><div class="links topiclinks"><div class="inner"><div class="region">
<section id="list"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Available channels</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="links topiclinks"><div class="inner"><div class="region"><div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="bookmarks.html" title="Bookmarks"><span class="title">Bookmarks</span><span class="linkdiv-dash"> — </span><span class="desc">Collect favourites via bookmark function, entry editing and deleting.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="dirble.html" title="Dirble"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_dirble.png" class="media media-inline" alt=""></span></span> Dirble</span><span class="linkdiv-dash"> — </span><span class="desc">Dirble.com</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="internet_radio_org_uk.html" title="Internet-Radio"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_internet_radio.png" class="media media-inline" alt=""></span></span> Internet-Radio</span><span class="linkdiv-dash"> — </span><span class="desc">Large radio directory from the UK.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="jamendo.html" title="Jamendo"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_jamendo.png" class="media media-inline" alt=""></span></span> Jamendo</span><span class="linkdiv-dash"> — </span><span class="desc">Creative Commons music and artist hub.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="liveradio.html" title="LiveRadio.ie"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_liveradio.png" class="media media-inline" alt=""></span></span> LiveRadio.ie</span><span class="linkdiv-dash"> — </span><span class="desc">Ireland-based radio directory</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="myoggradio.html" title="MyOggRadio"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_myoggradio.png" class="media media-inline" alt=""></span></span> MyOggRadio</span><span class="linkdiv-dash"> — </span><span class="desc">Open source stream directory.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="peertube.html" title="Peertube"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_peertube.png" class="media media-inline" alt=""></span></span> Peertube</span><span class="linkdiv-dash"> — </span><span class="desc">Peertube music/video listings.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="radiobrowser.html" title="Radio-Browser"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_radiobrowser.png" class="media media-inline" alt=""></span></span> Radio-Browser</span><span class="linkdiv-dash"> — </span><span class="desc">Community-driven streaming directory</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="radionomy.html" title="Radionomy"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_radionomy.png" class="media media-inline" alt=""></span></span> Radionomy</span><span class="linkdiv-dash"> — </span><span class="desc">Large internet streaming provider</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="reddit.html" title="Reddit"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_reddit.png" class="media media-inline" alt=""></span></span> Reddit</span><span class="linkdiv-dash"> — </span><span class="desc">Music subreddit posts</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="shoutcast.html" title="Shoutcast"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_shoutcast.png" class="media media-inline" alt=""></span></span> Shoutcast</span><span class="linkdiv-dash"> — </span><span class="desc">Probably still the largest radio station list.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="somafm.html" title="SomaFM"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_somafm.png" class="media media-inline" alt=""></span></span> SomaFM</span><span class="linkdiv-dash"> — </span><span class="desc">Set of radio stations</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="surfmusik.html" title="SurfMusic"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_surfmusik.png" class="media media-inline" alt=""></span></span> SurfMusic</span><span class="linkdiv-dash"> — </span><span class="desc">International radio listings.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="modarchive.html" title="The MOD Archive"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_modarchive.png" class="media media-inline" alt=""></span></span> The MOD Archive</span><span class="linkdiv-dash"> — </span><span class="desc">Tracker audio file collection.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="tunein.html" title="TuneIn"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_tunein.png" class="media media-inline" alt=""></span></span> TuneIn</span><span class="linkdiv-dash"> — </span><span class="desc">Radio and Podcast directory.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="ubuntuusersm.html" title="UbuntuUsers"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_ubuntuusers.png" class="media media-inline" alt=""></span></span> UbuntuUsers</span><span class="linkdiv-dash"> — </span><span class="desc">Wiki list of radio stations</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="xiph.html" title="Xiph.org"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_xiph.png" class="media media-inline" alt=""></span></span> Xiph.org</span><span class="linkdiv-dash"> — </span><span class="desc">ICEcast radio directory.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="youtube.html" title="Youtube"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_youtube.png" class="media media-inline" alt=""></span></span> Youtube</span><span class="linkdiv-dash"> — </span><span class="desc">Youtube music/video listings.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="filtermusic.html" title="filtermusic"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_filtermusic.png" class="media media-inline" alt=""></span></span> filtermusic</span><span class="linkdiv-dash"> — </span><span class="desc">Selection of the best radio stations</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="contrib_channels.html" title="→ Contrib/Extra Channels"><span class="title">→ Contrib/Extra Channels</span><span class="linkdiv-dash"> — </span><span class="desc">Downloadable channel plugins</span></a></div>
</div></div></div></div></div>
</div></div>
</div></div></div></div></div></div>
</div></section><section id="homepage"><div class="inner">
<div id="homepage" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Channel service homepage</span></h2></div>
<div class="region"><div class="contents"><p class="p">You can double click the channel tab to visit the channel/directory homepage.
<div class="hgroup pagewide"><h2 class="title"><span class="title">Channel service homepage</span></h2></div>
<div class="region"><div class="contents pagewide"><p class="p">You can double click the channel tab to visit the channel/directory homepage.
	Alternatively there is an entry in the <span class="gui">Channel</span> menu.</p></div></div>
</div></div>
</div></section><section id="actions"><div class="inner">
<div id="actions" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Channel menu actions</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Channel menu actions</span></h2></div>
<div class="region"><div class="contents pagewide">
<div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms">Homepage of directory service</dt>
<dd class="terms"><p class="p">Opens the website of the currently selected channel
			in your configured web browser.</p></dd>
<dt class="terms">Reload</dt>
<dd class="terms"><p class="p">Updates the current category and displays fresh station lists.</p></dd>
<dt class="terms">Update favicons...</dt>
<dd class="terms"><p class="p">Starts assembling favicons for the current list of stations in the background.
			To actually display the freshly loaded favicons, reselect the current category.</p></dd>
<dt class="terms">Reload category tree</dt>
<dd class="terms"><p class="p">Updates the genre list in the left category pane.
			For most channels the category list is already complete, but it might
			change over time. So this option is often only used for initializing streamtuner2
			channels when the list is empty.</p></dd>
</dl></div></div></div>
<p class="p">The channel menu also contains a list of available channels. Select an entry to switch
	into that tab.</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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#browsing" title="Browsing channels and radio stations">Browsing channels and radio stations</a></li></ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/cli.html from [25386f6ff9] to [95be9def52].


1
2
3
4
5
6






7

8
9
10
11



12
13
14
15

16
17
18
19
20
21
22
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
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+







<!DOCTYPE html>
<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>CLI (command line interface)</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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#extra" title="Additional features">Additional features</a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">CLI (command line interface)</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">CLI (command line interface)</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Streamtuner2 is a graphical tool. But it also has a limited commandline interface,
	which can be used to query station information. This is useful for interfacing with
	other applications.</p>
<p class="p">Open a terminal and call <span class="code">streamtuner2 help</span> to get an overview over
	available commands.</p>
<div class="terms"><div class="inner">
<div class="title title-terms"><h2><span class="title">Examples</span></h2></div>
36
37
38
39
40
41
42
43
44
45



46
47
48
49
50
51
52
41
42
43
44
45
46
47



48
49
50
51
52
53
54
55
56
57







-
-
-
+
+
+







<dt class="terms"><span class="code">streamtuner2 categories channel</span></dt>
<dd class="terms"><p class="p">Fetches the current list of available categories/genres for a channel service.</p></dd>
</dl></div>
</div></div>
<p class="p">Specifying a channel name is often optional. If you add one, it should be all-lowercase.
	You can also give a list, like "shoutcast,xiph" which would be searched then.</p>
</div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">GUI options</span></h2></div>
<div class="region"><div class="contents">
<section id=""><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">GUI options</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">There are also a few command line flags, which influence the
        graphical runtime.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list">
<div class="title title-item"><h3><span class="title">--gtk3</span></h3></div>
<p class="p">Picks the Gtk3 toolkit. Which is default for Python3 runs.
            But could also be used for Python2 instead of pygtk.</p>
79
80
81
82
83
84
85
86
87
88
89



90
91
92
93

94
95

96
97
98

99
84
85
86
87
88
89
90




91
92
93
94
95
96

97
98

99



100
101







-
-
-
-
+
+
+



-
+

-
+
-
-
-
+

</li>
<li class="list">
<div class="title title-item"><h3><span class="title">-x</span></h3></div>
<p class="p">Exit right away. A flag only used for testing.</p>
</li>
</ul></div></div></div>
</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/config_apps.html from [bb6cc34403] to [0be493100d].


1
2
3
4
5
6






7

8
9
10
11



12
13
14
15

16
17
18
19
20
21
22
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
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+







<!DOCTYPE html>
<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>Audio players</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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#functions" title="Functions">Functions</a> » <a class="trail" href="configuration.html" title="Configuration / Settings dialog">Configuration / Settings dialog</a> › <a class="trail" href="configuration.html#apps" title="Player application settings">Player application settings</a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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#functions" title="Functions">Functions</a> » <a class="trail" href="configuration.html" title="Configuration / Settings dialog">Configuration / Settings dialog</a> › <a class="trail" href="configuration.html#apps" title="Player application settings">Player application settings</a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Audio players</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Audio players</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">On BSD/Linux systems there are a plethora of audio players. In streamtuner2 you can
	<span class="link"><a href="configuration.html" title="Configuration / Settings dialog">configure</a></span> most of them as target application. Mostly it makes sense to use a single
	application for all audio formats. But at least the */* media type should be handled
	by a generic player, like vlc.</p>
<p class="p"><span class="media"><span class="media media-image"><img src="img/configapps.png" class="media media-inline" alt=""></span></span></p>
<p class="p">A few common applications and invocation strings to use are:</p>
<div class="table"><div class="inner"><div class="region"><table class="table">
54
55
56
57
58
59
60
61
62
63



64
65
66
67
68
69
70
59
60
61
62
63
64
65



66
67
68
69
70
71
72
73
74
75







-
-
-
+
+
+







	which ends the previous player process and starts it anew.
        For VLC there's however also the <span class="code">--one-instance</span> option, which sometimes
        works better. (And sometimes not.)</p>
<p class="p">Some applications, like Rhythmbox or Banshee, are primarily playlist managers, not players,
        and cannot be invoked with a station URL. This makes them less suitable for use with streamtuner2.
        (Same goes for streamtuner2 itself. It's not a player, but just a playlist browser.)</p>
</div>
<div id="placeholders" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">URL placeholders</span></h2></div>
<div class="region"><div class="contents">
<section id="placeholders"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">URL placeholders</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Listed audio players get run with a streaming server address (URL).
	These can either be direct MP3/Ogg servers (<span class="var">http://example.org:7843/</span>)
	and sometimes playlist files (<span class="var">http://example.org/listen.pls</span>)
	- depending on the channel directory.</p>
<p class="p">Most audio players automatically handle any station URLs. Some however
	support just a few formats, or can't handle modern XSPF playlists for
	instance. Which is why you can control this by adding a placeholder
114
115
116
117
118
119
120




121

122
123
124
125
126
127
128
129


130
131
132
133



134
135
136
137
138
139
140
119
120
121
122
123
124
125
126
127
128
129

130
131
132
133
134
135
136


137
138
139



140
141
142
143
144
145
146
147
148
149







+
+
+
+
-
+






-
-
+
+

-
-
-
+
+
+







<p class="p">Preferrably use the long %abbr names for configuration. The
        default is <span class="var">%pls</span> if you leave it out. (Most directories
        already provide PLS files, which avoids any extra conversion by ST2
        which sometimes delay playback.)</p>
<p class="p">A few channels (like Jamendo) send custom JSON playlist snippets,
        which no audio player would understand. Which is why they're always
        pre-converted.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents">
</svg><div class="inner"><div class="region"><div class="contents">
<p class="p">Most audio players like %pls, yet sometimes the
	older %m3u format more.  Streamripper requires %srv for recording.</p>
<p class="p">Use the newer <span class="var">%xspf</span> format if your player supports
	it. This format retains the maximum of station infos (such as
	homepages etc.), and thus often makes for better bookmarking directly
	in your player.</p>
</div></div></div></div>
</div></div>
</div></div></div>
</div>
</div></div>
<div id="row_placeholders" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Other placeholders</span></h2></div>
<div class="region"><div class="contents">
</div></section><section id="row_placeholders"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Other placeholders</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">In addition to stream URL + type placeholders (<span class="var">%r</span>, <span class="var">%x</span>, 
	<span class="var">%pls</span>, <span class="var">%m3u</span>, etc),	you can also pass station
	info placeholders. These contain the stream information like title or
	bitrate, or any other internal field:</p>
<div class="table"><div class="inner"><div class="region"><table class="table">
<thead><tr>
<td><p class="p">Placeholder</p></td>
180
181
182
183
184
185
186




187

188
189
190
191


192
193
194
195



196
197
198
199
200
201
202
203
204
205

206
207
208
209

210
211
212
213
214
215
216
217
218

219
220
221


222
223
224
225
226
227
228
229












230
231
232
233
234






235
236
237
238
239






240
241
242
243
244






245
246
247
248
249
250












251
252
253
254




255
256
257



258
259
260
261



262
263
264
265
266
267
268
269
270
271

272
273

274
275
276

277
189
190
191
192
193
194
195
196
197
198
199

200
201
202


203
204
205



206
207
208
209
210
211
212
213
214
215
216
217

218
219
220
221

222
223
224
225
226
227
228
229
230

231



232
233
234
235
236
237
238
239
240

241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256

257
258
259
260
261
262
263
264
265
266

267
268
269
270
271
272
273
274
275
276

277
278
279
280
281
282
283
284
285
286
287

288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307



308
309
310
311



312
313
314
315
316
317
318
319
320
321
322
323

324
325

326



327
328







+
+
+
+
-
+


-
-
+
+

-
-
-
+
+
+









-
+



-
+








-
+
-
-
-
+
+







-
+
+
+
+
+
+
+
+
+
+
+
+




-
+
+
+
+
+
+




-
+
+
+
+
+
+




-
+
+
+
+
+
+





-
+
+
+
+
+
+
+
+
+
+
+
+




+
+
+
+
-
-
-
+
+
+

-
-
-
+
+
+









-
+

-
+
-
-
-
+

<td style="border-top-style: solid;"><p class="p">%favourite</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">$favourite</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">If bookmarked</p></td>
</tr>
</table></div></div></div>
<p class="p">Not all fields are used in all channels. Sometimes they're repurposed (like <span class="var">playing</span>
	often doubles as Location: field). And some channels may even use custom internal names.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">You often want to use such placeholders if you have a player or recording shell script, such as
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">You often want to use such placeholders if you have a player or recording shell script, such as
	<span class="link"><a href="http://fossil.include-once.org/streamtuner2/artifact/51b695f41d9f9ad2" title="http://fossil.include-once.org/streamtuner2/artifact/51b695f41d9f9ad2"><span class="file">contrib/cmdline/streamripper_addgenre</span></a></span>
	to handle them. Or if you define a <span class="link"><a href="specbuttons.html" title="Special extra/mini buttons">mini-toolbar specbutton</a></span>
	with custom commands.</p></div></div></div></div>
</div></div>
	with custom commands.</p></div></div></div>
</div>
</div></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Other players</span></h2></div>
<div class="region"><div class="contents">
</div></section><section id=""><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Other players</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Here a few other configuration examples for other
players/backends.</p>
<div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms">MPD</dt>
<dd class="terms">
<p class="p">
       Rocus van Oosten <span class="link"><a href="https://sourceforge.net/p/streamtuner2/discussion/1173108/thread/82b6be86/" title="https://sourceforge.net/p/streamtuner2/discussion/1173108/thread/82b6be86/">recommends</a></span>
       following wrapper script to start playing radio streams via MPD right away:
    </p>
<div class="code"><pre class="contents ">MPD_HOST='10.0.0.222' # or your MPD host
<div class="code"><pre class="contents"><code>MPD_HOST='10.0.0.222' # or your MPD host
export MPD_HOST
mpc clear
mpc load $1
mpc play</pre></div>
mpc play</code></pre></div>
<p class="p">
	Save it as <span class="file">mpc-pls</span> script and configure it in streamtuner as
	<span class="cmd">mpc-pls %pls</span> for example. You can find an extended
	version in the <span class="file">contrib/cmdline/</span> directory.
    </p>
</dd>
</dl></div></div></div>
</div></div>
</div></div>
</div></section><section id="windows"><div class="inner">
<div id="windows" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Windows config</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Windows config</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">There's a few things you have to take care of when configuring players
and recording apps on Windows. Common applications and settings would be:</p>
<div class="table"><div class="inner"><div class="region"><table class="table">
<tr><td colspan="3"><p class="p"><span class="em">Player config</span></p></td></tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p"><span class="app">audio/mpeg</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">wmplayer.exe %asx</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><div class="note note-bug" title="Bug"><div class="inner"><div class="region"><div class="contents"><p class="p">Windows media player doesn't understand PLS or M3U files.</p></div></div></div></div></td>
<td style="border-top-style: solid;border-left-style: solid;"><div class="note note-bug" title="Bug">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m7 8v7h0.0078a5 6.3027 0 0 0 3.9922 5.867v-6.867h2v6.871a5 6.3027 0 0 0 3.988-5.871h0.012v-7h-10z"></path>
 <path class="yelp-svg-fill" d="m12 3a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4z"></path>
 <path class="yelp-svg-fill" d="m16 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m9.2045 16.361h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m21.704 4.2894h6v1h-6z"></path>
 <path class="yelp-svg-fill" d="m2 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m5.5801 4.3612h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m-6.9199 16.289h6v1h-6z"></path>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">Windows media player doesn't understand PLS or M3U files.</p></div></div></div>
</div></td>
</tr>
<tr>
<td style="border-top-style: solid;"><p class="p"><span class="app">video/*</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">C:\Programs\VLC\vlc.exe %srv</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">VLC pretty much works alike on Windows.</p></div></div></div></div></td>
<td style="border-top-style: solid;border-left-style: solid;"><div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">VLC pretty much works alike on Windows.</p></div></div></div>
</div></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p"><span class="app">url/http</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">"C:/Program Files/Mozilla Firefox/firefox.exe" %url</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">It's best to enclose paths with spaces in quotes.</p></div></div></div></div></td>
<td style="border-top-style: solid;border-left-style: solid;"><div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">It's best to enclose paths with spaces in quotes.</p></div></div></div>
</div></td>
</tr>
<tr>
<td style="border-top-style: solid;"><p class="p"><span class="app">url/http</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">iexplore.exe %url</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">IE is not recommended, of course.</p></div></div></div></div></td>
<td style="border-top-style: solid;border-left-style: solid;"><div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">IE is not recommended, of course.</p></div></div></div>
</div></td>
</tr>
<tr class="shade"><td style="border-top-style: solid;" colspan="3"><p class="p"><span class="em">Recording apps</span></p></td></tr>
<tr>
<td style="border-top-style: solid;"><p class="p"><span class="app">audio/*</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">/D "C:\Programs\Streamripper" streamripper.exe %srv</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><div class="note note-bug" title="Bug"><div class="inner"><div class="region"><div class="contents"><p class="p">Command line programs need the /D switch first, then its path enclosed in quotes and a space before the program.</p></div></div></div></div></td>
<td style="border-top-style: solid;border-left-style: solid;"><div class="note note-bug" title="Bug">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m7 8v7h0.0078a5 6.3027 0 0 0 3.9922 5.867v-6.867h2v6.871a5 6.3027 0 0 0 3.988-5.871h0.012v-7h-10z"></path>
 <path class="yelp-svg-fill" d="m12 3a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4z"></path>
 <path class="yelp-svg-fill" d="m16 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m9.2045 16.361h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m21.704 4.2894h6v1h-6z"></path>
 <path class="yelp-svg-fill" d="m2 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m5.5801 4.3612h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m-6.9199 16.289h6v1h-6z"></path>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">Command line programs need the /D switch first, then its path enclosed in quotes and a space before the program.</p></div></div></div>
</div></td>
</tr>
</table></div></div></div>
<p class="p">You can avoid a few issues: if you put your executables in paths without
spaces, or set the system $PATH variable accordingly.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">As reported by Oliver in the sourceforge Discussion
board.</p></div></div></div></div>
</div></div>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">As reported by Oliver in the sourceforge Discussion
board.</p></div></div></div>
</div>
</div></div>
<div class="sect sect-links" role="navigation">
<div class="hgroup"></div>
<div class="contents">
</div></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide">
<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="configuration.html#apps" title="Player application settings">Player application settings</a></li></ul></div>
</div></div>
<div class="links seealsolinks"><div class="inner">
<div class="title"><h2><span class="title">See Also</span></h2></div>
<div class="region"><ul><li class="links "><a href="index.html#functions" title="Functions">Functions</a></li></ul></div>
</div></div>
</div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/configuration.html from [a2922cc168] to [ce7ea5b02c].


1
2
3
4
5
6






7

8
9
10
11



12
13
14
15

16
17
18
19
20
21
22
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
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+







<!DOCTYPE html>
<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>Configuration / Settings dialog</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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#functions" title="Functions">Functions</a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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#functions" title="Functions">Functions</a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Configuration / Settings dialog</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Configuration / Settings dialog</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">
There are various options for streamtuner2, available under <span class="guiseq"><span class="gui">Edit</span> ▸ <span class="gui">Preferences</span></span> or via <span class="key"><kbd>F12</kbd></span>.
</p>
<p class="p"><span class="media"><span class="media media-image"><img src="img/configtabs.png" class="media media-inline" alt=""></span></span></p>
<div class="terms"><div class="inner">
<div class="title title-terms"><h2><span class="title">It's grouped into:</span></h2></div>
<div class="region"><dl class="terms">
38
39
40
41
42
43
44
45
46
47



48
49
50
51
52
53
54
43
44
45
46
47
48
49



50
51
52
53
54
55
56
57
58
59







-
-
-
+
+
+







<dt class="terms">📦 <span class="link"><a href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Add</a></span>
</dt>
<dd class="terms"><p class="p">The <span class="link"><a href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2</a></span> adds another
    tab for updating or installing new plugins.</p></dd>
</dl></div>
</div></div>
</div>
<div id="apps" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Player application settings</span></h2></div>
<div class="region"><div class="contents">
<section id="apps"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Player application settings</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">MIME types are abstract identifiers for media types. <span class="var">Audio/mpeg</span> for
    example represents MP3 files, and <span class="var">audio/ogg</span> means OGG Vorbis.  And the player
    setting dialog simply associates an audio type with a playback application:</p>
<p class="p"><span class="media"><span class="media media-image"><img src="img/configapps.png" class="media media-inline" alt=""></span></span></p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p"><span class="link"><a href="config_apps.html" title="Audio players">Application names</a></span> are most
      always lowercase binary names.</p></li>
81
82
83
84
85
86
87
88

89
90

91
92
93


94
95
96
97
98
99
100
101
102
103
104
105
106
107
108

109
110

111
112
113


114
115
116
117
118
119
120
86
87
88
89
90
91
92

93
94

95



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111

112
113

114



115
116
117
118
119
120
121
122
123







-
+

-
+
-
-
-
+
+














-
+

-
+
-
-
-
+
+







<li class="list"><p class="p">In practice you only needed one entry for <span class="var">audio/*</span>
      and one for <span class="var">video/*</span>, both can use the same player even. 
      </p></li>
<li class="list"><p class="p"> You can remove existing entries by clearing both the Format
      field and its associated Application.  Add completely new associations
      through the emtpy line.  </p></li>
</ul></div></div></div>
<div class="links topiclinks"><div class="inner"><div class="region"><div class="linkdiv "><a class="linkdiv" href="config_apps.html" title="Audio players"><span class="title">Audio players</span><span class="linkdiv-dash"> — </span><span class="desc">Common applications to use as players.</span></a></div></div></div></div>
<div class="links topiclinks"><div class="inner"><div class="region"><div class="links-divs"><div class="linkdiv "><a class="linkdiv" href="config_apps.html" title="Audio players"><span class="title">Audio players</span><span class="linkdiv-dash"> — </span><span class="desc">Common applications to use as players.</span></a></div></div></div></div></div>
</div></div>
</div></div>
</div></section><section id="recording"><div class="inner">
<div id="recording" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Recording Apps</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Recording Apps</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">The second block of entries in the 'Apps' section specifies recording applications.
    Here streamripper is preconfigured for audio streams, and youtube-dl for Youtube videos for instance.</p>
<div class="table"><div class="inner"><div class="region"><table class="table">
<tr>
<td><p class="p"><span class="var">audio/*</span></p></td>
<td style="border-left-style: solid;"><p class="p"><span class="cmd">xterm -e streamripper %srv</span></p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p"><span class="var">video/youtube</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">xterm -e "youtube-dl %srv"</span></p></td>
</tr>
</table></div></div></div>
<p class="p">To define a target directory, you can often add commandline arguments to each. Also it's typically
    helpful to leave the xterm prefix on, so you can follow the processing state.</p>
<div class="links topiclinks"><div class="inner"><div class="region"><div class="linkdiv "><a class="linkdiv" href="recording.html" title="Recording"><span class="title">Recording</span><span class="linkdiv-dash"> — </span><span class="desc">Save radio songs as MP3 files via streamripper.</span></a></div></div></div></div>
<div class="links topiclinks"><div class="inner"><div class="region"><div class="links-divs"><div class="linkdiv "><a class="linkdiv" href="recording.html" title="Recording"><span class="title">Recording</span><span class="linkdiv-dash"> — </span><span class="desc">Save radio songs as MP3 files via streamripper.</span></a></div></div></div></div></div>
</div></div>
</div></div>
</div></section><section id="gui"><div class="inner">
<div id="gui" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Display/GUI options</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Display/GUI options</span></h2></div>
<div class="region"><div class="contents pagewide">
<div class="terms"><div class="inner">
<div class="title title-terms"><h3><span class="title">Display settings</span></h3></div>
<div class="region"><dl class="terms">
<dt class="terms">☑ Show bookmark star</dt>
<dd class="terms"><p class="p">Bookmarked stations will be marked with a ★ star in all other station lists / categories.
      That doesn't often work for the same station entry from two different channel services / tabs though.</p></dd>
<dt class="terms">☑ Save window states</dt>
173
174
175
176
177
178
179




180

181
182
183
184
185
186


187
188
189
190
191
192
193
176
177
178
179
180
181
182
183
184
185
186

187
188
189
190
191
192

193
194
195
196
197
198
199
200
201







+
+
+
+
-
+





-
+
+







<dt class="terms">☑ Forgo any playlist conversion</dt>
<dd class="terms">
<p class="p">Per default most server playlists (be they .pls or .m3u, .xpsf) are converted.
      All player/recording apps receive a default <span class="var">%pls</span> file normally.
      Set this option to disable any such placeholders from the Player tab, and avoid
      streamtuner2 pre-downloading any m3u/pls/xspf. Instead your audio  player gets passed
      the literal server/playlist streaming URL then.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">Note that this is only
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">Note that this is only
      a minor speedup, but may trip up some applications. A few channel sources don't
      even provide standard stream addresses and playlists. (Jamendo albums for example really
      need pre-conversion; no audio player can deal with such custom JSON playlists).
      In short: you don't normally want to enable this flag - unless you run into problems
      with streamtuner2 taking too long, or when it hangs by accidentially downloading streams
      itself.</p></div></div></div></div>
      itself.</p></div></div></div>
</div>
</dd>
</dl></div>
</div></div>
<div class="terms"><div class="inner">
<div class="title title-terms"><h3><span class="title">System</span></h3></div>
<div class="region"><dl class="terms">
<dt class="terms">🔠 Temporary files</dt>
215
216
217
218
219
220
221
222

223
224

225
226

227
228
229
230
231
232
233
234
235
236
237
238
239

240
241

242

243
244
245
246
247
248
249
250
251
252
253
254

255
256
257
258



259
260
261
262
263
264

265
266

267
268
269






270
271
272
273
274
275





276
277
278
279

280
281

282
283
284

285
223
224
225
226
227
228
229

230


231
232

233
234
235
236
237
238
239
240
241
242
243
244
245

246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262

263
264



265
266
267
268
269
270
271
272

273
274

275



276
277
278
279
280
281
282





283
284
285
286
287
288
289
290

291
292

293



294
295







-
+
-
-
+

-
+












-
+


+

+











-
+

-
-
-
+
+
+





-
+

-
+
-
-
-
+
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+



-
+

-
+
-
-
-
+

      between categories too quickly.  This is only an issue for Python3 on Gtk3 with
      streamtuner2.  In such cases you can disable the concurrent-tasking mode.  The GUI will
      appear slower at times, and freeze between fetching lists, but remains stable on the
      upside.  There's also a command line flag <span class="cmd">--nt</span> to enable this workaround.</p></dd>
</dl></div>
</div></div>
</div></div>
</div></div>
</div></section><section id="plugins"><div class="inner">
<div id="plugins" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Channel and feature plugins and settings</span></h2></div>
<div class="hgroup pagewide"><h2 class="title"><span class="title">Channel and feature plugins and settings</span></h2></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<div class="table"><div class="inner"><div class="region"><table class="table"><tr>
<td><p class="p">The <span class="key"><kbd>📻 Channels</kbd></span> tab shows all available directory
    services.</p></td>
<td><p class="p">While the <span class="key"><kbd>🔌 Features</kbd></span> group provides internal or menu
    enhancements.</p></td>
</tr></table></div></div></div>
<p class="p">Disabling or enabling a plugin however requires a restart of Streamtuner2
    to take effect. (Unless the <span class="link"><a href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2</a></span>
    is enabled, with its <span class="key"><kbd>📦 Add</kbd></span> tab visible.)</p>
<p class="p"><span class="media"><span class="media media-image"><img src="img/configplugins.png" class="media media-inline" alt=""></span></span></p>
<p class="p">Each plugin can have its own little list of extra options. They'll be
    applied right away for already active channel/feature plugins.</p>
<div class="links topiclinks"><div class="inner"><div class="region">
<div class="links topiclinks"><div class="inner"><div class="region"><div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="internet_radio_org_uk.html" title="Internet-Radio"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_internet_radio.png" class="media media-inline" alt=""></span></span> Internet-Radio</span><span class="linkdiv-dash"> — </span><span class="desc">Large radio directory from the UK.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="jamendo.html" title="Jamendo"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_jamendo.png" class="media media-inline" alt=""></span></span> Jamendo</span><span class="linkdiv-dash"> — </span><span class="desc">Creative Commons music and artist hub.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="liveradio.html" title="LiveRadio.ie"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_liveradio.png" class="media media-inline" alt=""></span></span> LiveRadio.ie</span><span class="linkdiv-dash"> — </span><span class="desc">Ireland-based radio directory</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="myoggradio.html" title="MyOggRadio"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_myoggradio.png" class="media media-inline" alt=""></span></span> MyOggRadio</span><span class="linkdiv-dash"> — </span><span class="desc">Open source stream directory.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="peertube.html" title="Peertube"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_peertube.png" class="media media-inline" alt=""></span></span> Peertube</span><span class="linkdiv-dash"> — </span><span class="desc">Peertube music/video listings.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="radiobrowser.html" title="Radio-Browser"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_radiobrowser.png" class="media media-inline" alt=""></span></span> Radio-Browser</span><span class="linkdiv-dash"> — </span><span class="desc">Community-driven streaming directory</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="radionomy.html" title="Radionomy"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_radionomy.png" class="media media-inline" alt=""></span></span> Radionomy</span><span class="linkdiv-dash"> — </span><span class="desc">Large internet streaming provider</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="reddit.html" title="Reddit"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_reddit.png" class="media media-inline" alt=""></span></span> Reddit</span><span class="linkdiv-dash"> — </span><span class="desc">Music subreddit posts</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="somafm.html" title="SomaFM"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_somafm.png" class="media media-inline" alt=""></span></span> SomaFM</span><span class="linkdiv-dash"> — </span><span class="desc">Set of radio stations</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="surfmusik.html" title="SurfMusic"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_surfmusik.png" class="media media-inline" alt=""></span></span> SurfMusic</span><span class="linkdiv-dash"> — </span><span class="desc">International radio listings.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="tunein.html" title="TuneIn"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_tunein.png" class="media media-inline" alt=""></span></span> TuneIn</span><span class="linkdiv-dash"> — </span><span class="desc">Radio and Podcast directory.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="xiph.html" title="Xiph.org"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_xiph.png" class="media media-inline" alt=""></span></span> Xiph.org</span><span class="linkdiv-dash"> — </span><span class="desc">ICEcast radio directory.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="youtube.html" title="Youtube"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_youtube.png" class="media media-inline" alt=""></span></span> Youtube</span><span class="linkdiv-dash"> — </span><span class="desc">Youtube music/video listings.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="filtermusic.html" title="filtermusic"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_filtermusic.png" class="media media-inline" alt=""></span></span> filtermusic</span><span class="linkdiv-dash"> — </span><span class="desc">Selection of the best radio stations</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="contrib_channels.html" title="→ Contrib/Extra Channels"><span class="title">→ Contrib/Extra Channels</span><span class="linkdiv-dash"> — </span><span class="desc">Downloadable channel plugins</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="contrib_features.html" title="→ Feature plugins"><span class="title">→ Feature plugins</span><span class="linkdiv-dash"> — </span><span class="desc">Additional feature plugins</span></a></div>
</div></div></div>
</div></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">
<section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><div class="links guidelinks"><div class="inner">
<div class="title"><h3><span class="title">More Information</span></h3></div>
<div class="region"><ul><li class="links ">
<a href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a><span class="desc"> — User plugin installation</span>
</li></ul></div>
</div></div></div>
</div>
</div></section>
</div>
</div></div>
</div></section><section id="note"><div class="inner">
<div id="note" class="sect"><div class="inner">
<div class="hgroup"></div>
<div class="region"><div class="contents"><div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">If you want to find out more about the short option descriptions (most settings are checkboxes),
<div class="hgroup pagewide"></div>
<div class="region"><div class="contents pagewide"><div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">If you want to find out more about the short option descriptions (most settings are checkboxes),
    please have a look into the channels directory /usr/share/streamtuner2/channels/ and corresponding
    *.py files. These are somewhat readable even to non-programmers, and sometimes contain more information.</p></div></div></div></div></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">
    *.py files. These are somewhat readable even to non-programmers, and sometimes contain more information.</p></div></div></div>
</div></div></div>
</div></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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#functions" title="Functions">Functions</a></li></ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/contrib_channels.html from [c7266d6408] to [3d4dfd673a].


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
69
70
71



72
73
74
75



76
77
78


79
80
81
82

83
84
85


86
87
88
89

90
91
92


93
94
95

96
97
98


99
100
101
102
103
104
105

106
107
108
109
110
111
112


113
114

115
116
117
118
119
120
121
122


123
124
125
126

127
128

129
130
131


132
133
134
135
136
137



138
139
140
141
142
143
144
145
146
147
148

149
150

151
152
153

154
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
69

70



71
72
73
74
75

76



77
78
79
80

81



82
83
84
85
86
87
88
89

90







91
92
93

94








95
96
97
98
99

100
101

102



103
104
105
106




107
108
109
110
111
112
113
114
115
116
117
118
119

120
121

122



123
124
+






+
+
+
+
+
+
-
+

-
-
+
+








-
-
-
+

-
-
-
+
+
+

-
+


-
-
-
+
+
+


-
+
-
-
-
+
+



-
+
-
-
-
+
+

-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
+
+


-
+
-
-
-
-
+
+
+
-
-
-
-
+
+
+
-
-
-
+
+



-
+
-
-
-
+
+



-
+
-
-
-
+
+


-
+
-
-
-
+
+






-
+
-
-
-
-
-
-
-
+
+

-
+
-
-
-
-
-
-
-
-
+
+



-
+

-
+
-
-
-
+
+


-
-
-
-
+
+
+










-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>→ Contrib/Extra Channels</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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">→ Contrib/Extra Channels</span></h1></div>
</div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">→ Contrib/Extra Channels</span></h1></div>
<div class="region">
<div class="contents"></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">More channels to install</span></h2></div>
<div class="contents pagewide"></div>
<section id=""><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">More channels to install</span></h2></div>
<div class="region">
<div class="contents"><p class="p">Besides the standard channels, there are a few more plugins available
<div class="contents pagewide"><p class="p">Besides the standard channels, there are a few more plugins available
for download. See the <span class="link"><a href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager</a></span>
and its <span class="key"><kbd>📦 Add</kbd></span> tab, where you can easily install them.</p></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://radio.net/" title="http://radio.net/">Radio.net</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">Radio.net is a European radio directory. It nicely catalogues
<section id=""><div class="inner">
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://radio.net/" title="http://radio.net/">Radio.net</a></span></span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Radio.net is a European radio directory. It nicely catalogues
    stations into genres as usual. The primary list is ordered by
    popularity even. </p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://magnatune.com/" title="http://magnatune.com/">Magnatune</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">Magnatune is an independent label for artists. It makes most
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://magnatune.com/" title="http://magnatune.com/">Magnatune</a></span></span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Magnatune is an independent label for artists. It makes most
    albums available for free listening with only a few intermittent
    adverts. Otherwise it's a flatrate payable music discovery and
    download service. </p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://publicradiofan.com/" title="http://publicradiofan.com/">PublicRadioFan</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">PublicRadioFan.com hosts a huge lists of worldwide radio stations.
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://publicradiofan.com/" title="http://publicradiofan.com/">PublicRadioFan</a></span></span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">PublicRadioFan.com hosts a huge lists of worldwide radio stations.
    This plugin displays just the genre list though.</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://delicast.com/" title="http://delicast.com/">Delicast</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">Delicast.com is another web directory of radio stations. It's
    somewhat slower because playback addresses are hidden away with extra
    page requests. Works reliably still.</p></div></div>
</div></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://listenlive.eu/" title="http://listenlive.eu/">ListenLive.eu</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">ListenLive is also an Europe-centric radio directory.</p></div></div>
</div></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://liveradio.ie/" title="http://liveradio.ie/">Liveradio.ie</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">Is an Ireland-based radio station directory.</p></div></div>
</div></div>
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://liveradio.ie/" title="http://liveradio.ie/">Liveradio.ie</a></span></span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Is an Ireland-based radio station directory.</p></div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://radiosure.com/" title="http://radiosure.com/">RadioSure</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">Station database that's readily available as CSV list. You'll
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://radiosure.com/" title="http://radiosure.com/">RadioSure</a></span></span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Station database that's readily available as CSV list. You'll
    currently need the tmp_clean_multiurl plugin as well, as most entries
    supply multiple URLs, but action.py doesn't support those currently.</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://vtuner.com/" title="http://vtuner.com/">vTuner</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">Categorized station list by a cross-platform streaming service provider. </p></div></div>
</div></div>
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://vtuner.com/" title="http://vtuner.com/">vTuner</a></span></span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Categorized station list by a cross-platform streaming service provider. </p></div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://reciva.com/" title="http://reciva.com/">Reciva</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">Reciva is an iPhone app, with a browsable station list. </p></div></div>
</div></div>
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://reciva.com/" title="http://reciva.com/">Reciva</a></span></span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Reciva is an iPhone app, with a browsable station list. </p></div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://house-mixes.com/" title="http://house-mixes.com/">house-mixes</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">House-mixes.com provides a growing collection of DJ mixes (house,
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://house-mixes.com/" title="http://house-mixes.com/">house-mixes</a></span></span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">House-mixes.com provides a growing collection of DJ mixes (house,
    dance, etc). The website can be used after a free registration to download
    complete MP3s (often in high quality). In Streamtuner2 you can even
    drag and drop them onto your desktop directly.</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://punkcast.com/" title="http://punkcast.com/">PunkCast</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">PunkCast is no longer maintained. It covered the NY music and tech
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://punkcast.com/" title="http://punkcast.com/">PunkCast</a></span></span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">PunkCast is no longer maintained. It covered the NY music and tech
    scenes, but existing recordings are still accessible mostly (some are
    just weblinks however). This plugin is kept for nostalgic reasons;
    it was available with streamtuner1 as well. </p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 GrLittleRadioPlayer</span></h4></div>
<div class="region"><div class="contents"><p class="p">Great Little Radio Player is another Linux desktop radio browser.
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 GrLittleRadioPlayer</span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Great Little Radio Player is another Linux desktop radio browser.
    It comes with a default set of categorized stations. This plugin merely
    imports that list as static directory. </p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 File browser</span></h4></div>
<div class="region"><div class="contents"><p class="p">You can also browse local files with streamtuner2 using the file
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 File browser</span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">You can also browse local files with streamtuner2 using the file
    browser plugin. It must be configured with your music collection path.
    It's not a default plugin, because this isn't really what Streamtuner2
    is made for. There are way better local music collection managers for
    Linux. It's just here for convenience, and displays files just as any
    other channel list. It has no specific file management features. (ID3
    editing or file renaming were planned, but never implemented.) </p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://tuner2.com/" title="http://tuner2.com/">Tuner2</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">Map-oriented radio station directory. </p></div></div>
</div></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://radiolist.net/" title="http://radiolist.net/">radiolist.net</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">Is a continent/country-oriented radio directory. The stream formats
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://radiolist.net/" title="http://radiolist.net/">radiolist.net</a></span></span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Is a continent/country-oriented radio directory. The stream formats
    vary wildly however.</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 <span class="link"><a href="http://streamlicensing.com/" title="http://streamlicensing.com/">streamlicensing</a></span></span></h4></div>
<div class="region"><div class="contents"><p class="p">Is a streaming server provider and handles licensing for stations.
    Provides a small genre-oriented directory. </p></div></div>
</div></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">📻 Compound</span></h4></div>
<div class="region"><div class="contents"><p class="p">The compound channel is a meta plugin. It can aggregate categories
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">📻 Compound</span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">The compound channel is a meta plugin. It can aggregate categories
    from other channel plugins on a per-category basis. You for example
    can mash Top40 or Classic genres from Shoutcast, Xiph, InternetRadio,
    Tunein, etc. Which avoids switching between channel tabs somewhat. </p></div></div>
</div></div>
</div></section>
</div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h3 class="subtitle"><span class="subtitle">Repository</span></h3></div>
<div class="region"><div class="contents"><p class="p">See also the list of
<div class="hgroup pagewide"><h3 class="subtitle"><span class="subtitle">Repository</span></h3></div>
<div class="region"><div class="contents pagewide"><p class="p">See also the list of
<span class="link"><a href="http://fossil.include-once.org/streamtuner2/wiki/plugins" title="http://fossil.include-once.org/streamtuner2/wiki/plugins">available
plugins</a></span> in the project wiki.</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
<li class="links ">
<a href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a><span class="desc"> — User plugin installation</span>
</li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/contrib_features.html from [49acb3febc] to [f9342377b0].


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
69


70
71
72
73
74




75
76


77
78
79
80



81
82
83
84
85
86
87

88
89
90


91
92

93
94
95


96
97

98
99
100


101
102
103
104
105

106
107
108
109
110
111
112
113
114
115
116
117

118
119

120
121
122


123
124
125
126
127
128
129
130
131
132
133
134
135
136
137

138
139

140
141

142
143
144
145



146
147
148
149




150
151



152
153
154
155

156
157
158
159



160
161
162


163
164
165

166
167
168


169
170
171

172
173
174


175
176
177

178
179
180


181
182
183
184










185
186



187
188
189
190
191
192
193
194
195

196
197
198


199
200
201

202
203
204


205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

225
226
227


228
229
230
231
232
233

234
235
236


237
238






239
240
241
242
243
244






245
246
247
248
249
250
251
252
253
254

255
256

257
258
259

260
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

69



70
71
72
73
74
75
76
77
78
79
80


81
82
83



84
85
86
87
88
89
90
91
92

93



94
95
96

97



98
99
100

101



102
103
104
105
106
107

108
109
110
111
112
113
114
115
116
117
118
119

120
121

122



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138

139


140
141

142
143



144
145
146
147
148
149
150
151
152
153
154


155
156
157
158
159
160

161




162
163
164



165
166
167
168

169



170
171
172
173

174



175
176
177
178

179



180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195


196
197
198
199
200
201
202
203
204
205
206

207



208
209
210
211

212



213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233

234



235
236
237
238
239
240
241

242



243
244
245
246
247
248
249
250
251
252






253
254
255
256
257
258
259
260
261
262
263
264
265
266
267

268
269

270



271
272
+






+
+
+
+
+
+
-
+

-
-
+
+






-
-
-
+

-
-
-
+
+
+

-
+


-
-
-
+
+
+











-
+
-
-
-
+
+


-
+

-
+


-
+
-
-
-
+
+









-
+
-
-
-
+
+





+
+
+
+
-
-
+
+

-
-
-
+
+
+






-
+
-
-
-
+
+

-
+
-
-
-
+
+

-
+
-
-
-
+
+




-
+











-
+

-
+
-
-
-
+
+














-
+
-
-
+

-
+

-
-
-
+
+
+




+
+
+
+
-
-
+
+
+



-
+
-
-
-
-
+
+
+
-
-
-
+
+


-
+
-
-
-
+
+


-
+
-
-
-
+
+


-
+
-
-
-
+
+




+
+
+
+
+
+
+
+
+
+
-
-
+
+
+








-
+
-
-
-
+
+


-
+
-
-
-
+
+



















-
+
-
-
-
+
+





-
+
-
-
-
+
+


+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+









-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>→ Feature plugins</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a> » </div>
</div></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">→ Feature plugins</span></h1></div>
</div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">→ Feature plugins</span></h1></div>
<div class="region">
<div class="contents"></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title"><span class="key"><kbd>🔌 Feature</kbd></span> plugins and settings</span></h2></div>
<div class="contents pagewide"></div>
<section id=""><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title"><span class="key"><kbd>🔌 Feature</kbd></span> plugins and settings</span></h2></div>
<div class="region">
<div class="contents"><p class="p">Extra functionality and behaviour changes are available in
<div class="contents pagewide"><p class="p">Extra functionality and behaviour changes are available in
the <span class="key"><kbd>🔌 Feature</kbd></span> <span class="link"><a href="configuration.html" title="Configuration / Settings dialog">configuration</a></span>
section.</p></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h3 class="title"><span class="title">🔌 Filter Bitrate</span></h3></div>
<div class="region"><div class="contents">
<section id=""><div class="inner">
<div class="hgroup pagewide"><h3 class="title"><span class="title">🔌 Filter Bitrate</span></h3></div>
<div class="region"><div class="contents pagewide">
<p class="p">Some channels provide lower-quality audio streams. In particular
  Xiph lists some awful radio stations. And this plugin helps filtering
  those out of station lists.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">MP3 streams often start to sound okay at 96kbit/s.</p></li>
<li class="list"><p class="p">Whereas OGG Vorbis or AAC are sometimes acceptable at 64kbit/s already.</p></li>
</ul></div></div></div>
<p class="p">Note that you may end up with empty channel lists
  altogether if you set these options too high. Some channels provide all
  their streams with 64kbit/s only.</p>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h3 class="title"><span class="title">🔌 Channel toolbar link</span></h3></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h3 class="title"><span class="title">🔌 Channel toolbar link</span></h3></div>
<div class="region"><div class="contents pagewide">
<p class="p">Adds a toolbar entry which shows the current channel/directory
  service title and its homepage link. Such as:</p>
<div class="code"><pre class="contents "><span class="span">    ▶    ●    🏠     Shoutcast</span>
<div class="code"><pre class="contents"><code><span class="span">    ▶    ●    🏠     Shoutcast</span>
  play rcrd  hmpg   <span class="link"><a href="http://shoutcast.com/" title="http://shoutcast.com/">//shoutcast.com/</a></span>
  </pre></div>
  </code></pre></div>
<p class="p">It depends on the "update window title" option being enabled.</p>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h3 class="title"><span class="title">🔌 Export all stations</span></h3></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h3 class="title"><span class="title">🔌 Export all stations</span></h3></div>
<div class="region"><div class="contents pagewide">
<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>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">This is of course intended primarily for saving your bookmarks.</p></li>
<li class="list"><p class="p">And it allows to import radio lists into any other music player  or playlist collection/management app (such as Rhythmbox).</p></li>
<li class="list"><p class="p">You can set the desired playlist format in the file saving dialog that pops up.</p></li>
</ul></div></div></div>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h3 class="title"><span class="title">🔌 RadioTray hook</span></h3></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h3 class="title"><span class="title">🔌 RadioTray hook</span></h3></div>
<div class="region"><div class="contents pagewide">
<p class="p">This plugin enables an extra category in the <span class="key"><kbd>bookmarks</kbd></span> tab.
  It shows bookmarked stations from the RadioTray application, if that's
  installed. Additionally it adds a context option to save new stations
  from Streamtuner2 to RadioTray. The mapping option influences if added
  radios are recategorized in RadioTray.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p"> Please see the Wiki for further <span class="link"><a href="http://fossil.include-once.org/streamtuner2/wiki/radiotray" title="http://fossil.include-once.org/streamtuner2/wiki/radiotray">setup instructions</a></span>.</p></div></div></div></div>
</div></div>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p"> Please see the Wiki for further <span class="link"><a href="http://fossil.include-once.org/streamtuner2/wiki/radiotray" title="http://fossil.include-once.org/streamtuner2/wiki/radiotray">setup instructions</a></span>.</p></div></div></div>
</div>
</div></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h3 class="title"><span class="title">🔌 User Agent Switcher</span></h3></div>
<div class="region"><div class="contents">
</div></section><section id=""><div class="inner">
<div class="hgroup pagewide"><h3 class="title"><span class="title">🔌 User Agent Switcher</span></h3></div>
<div class="region"><div class="contents pagewide">
<p class="p">This plugin merely masks Streamtuner2 as an ordinary web browser when retrieving station lists.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p"> It's technically unneeded, as ST2 isn't stressful to directory websites and not blocked anywhere. </p></li>
<li class="list"><p class="p">It's only useful as additional privacy feature really, but shouldn't be used habitually. </p></li>
</ul></div></div></div>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h3 class="title"><span class="title">🔌 History</span></h3></div>
<div class="region"><div class="contents"><p class="p">Provides the small "history" category in the bookmarks tab. The length of
<div class="hgroup pagewide"><h3 class="title"><span class="title">🔌 History</span></h3></div>
<div class="region"><div class="contents pagewide"><p class="p">Provides the small "history" category in the bookmarks tab. The length of
  which is configurable (defaults to 20).</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h3 class="title"><span class="title">🔌 Links to directory services</span></h3></div>
<div class="region"><div class="contents"><p class="p">Adds a list of weblinks to other online music services in the "links" category
<div class="hgroup pagewide"><h3 class="title"><span class="title">🔌 Links to directory services</span></h3></div>
<div class="region"><div class="contents pagewide"><p class="p">Adds a list of weblinks to other online music services in the "links" category
  within the bookmarks tab.</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h3 class="title"><span class="title">🔌 Recording options</span></h3></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h3 class="title"><span class="title">🔌 Recording options</span></h3></div>
<div class="region"><div class="contents pagewide">
<p class="p">Overrides the <span class="gui"><span class="key"><kbd>●</kbd></span> record</span> button to
  not start streamripper right away. Instead it prompts for additional
  settings before proceeding.</p>
<p class="p">Common options are conveniently listed and saveable on a per-station
  basis. Which allows to suppress stream editing (record just one long
  basis. Which allows to suppress stream splitting (record just one long
  MP3 file), or file naming schemes.</p>
<p class="p">Additionally it supports options of following recording backends:</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p"><span class="app">streamrippper</span> - for radio stations</p></li>
<li class="list"><p class="p"><span class="app">fPls/fIcy</span> - for radio stations</p></li>
<li class="list"><p class="p"><span class="app">youtube-dl</span> - video downloads</p></li>
<li class="list"><p class="p"><span class="app">wget</span> - plain MOD/ZIP files</p></li>
</ul></div></div></div>
<p class="p">The plugin provides config options of its own, such as a default
  output directory, or how many / how detailed options to show.</p>
</div></div>
</div></div>
</div></section>
</div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Core feature plugins</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Core feature plugins</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Following plugins are covered more in-depth in the according manual
 sections:</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p"><span class="link"><a href="dragndrop.html" title="Drag'n'drop">🔌 Drag and Drop</a></span></p></li>
<li class="list"><p class="p"><span class="link"><a href="favicon.html" title="Station favicons">🔌 Favicons</a></span></p></li>
<li class="list"><p class="p"><span class="link"><a href="global_key.html" title="Global_key">🔌 Global key shortcut</a></span></p></li>
<li class="list"><p class="p"><span class="link"><a href="timer.html" title="Timer">🔌 Timer</a></span></p></li>
<li class="list"><p class="p"><span class="link"><a href="specbuttons.html" title="Special extra/mini buttons">🔌 Specbuttons</a></span></p></li>
</ul></div></div></div>
<p class="p">The "<span class="link"><a href="search.html" title="Searching">search</a></span>",
 "<span class="link"><a href="configuration.html" title="Configuration / Settings dialog">configwin</a></span>" and
 "<span class="link"><a href="edit.html" title="Edit">streamedit</a></span>" plugins are considered
 built-ins and cannot be disabled.</p>
</div></div>
</div></div>
</div></section><section id="contrib"><div class="inner">
<div id="contrib" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Downloadable contrib/ feature plugins</span></h2></div>
<div class="hgroup pagewide"><h2 class="title"><span class="title">Downloadable contrib/ feature plugins</span></h2></div>
<div class="region">
<div class="contents"><p class="p">The <span class="link"><a href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager</a></span> lists more
<div class="contents pagewide"><p class="p">The <span class="link"><a href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager</a></span> lists more
downloadable feature plugins in the <span class="key"><kbd>📦 Add</kbd></span> tab.</p></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">🔌 Soundcloud streaming</span></h4></div>
<div class="region"><div class="contents">
<section id=""><div class="inner">
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">🔌 Soundcloud streaming</span></h4></div>
<div class="region"><div class="contents pagewide">
<p class="p">Enables playback of soundcloud.com links, which are only used
    in the <span class="link"><a href="channel_reddit.html" title="channel_reddit">📻 Reddit</a></span> plugin currently.
    Homepage links are transformed into direct MP3 streaming addresses
    on playback.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">Depends on python-soundcloud, which you can install per
    <span class="cmd">pip install soundcloud</span>.</p></div></div></div></div>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">Depends on python-soundcloud, which you can install per
    <span class="cmd">pip install soundcloud</span>.</p></div></div></div>
</div>
<p class="p"> Alternatively you could configure an external player like <span class="link"><a href="http://github.com/rekado/soundCLI" title="http://github.com/rekado/soundCLI">soundcli</a></span> of course.
    Use the pseudo type "audio/soundcloud" for the player settings table.</p>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">🔌 dev_faulthandler</span></h4></div>
<div class="region"><div class="contents"><p class="p">This is a pure development plugin, meant to debug ST2 crashes.</p></div></div>
</div></div>
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">🔌 dev_faulthandler</span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">This is a pure development plugin, meant to debug ST2 crashes.</p></div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">🔌 bookmarks_show_extra</span></h4></div>
<div class="region"><div class="contents"><p class="p">Is a slim UI adaption to show the `extra` field in the bookmarks
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">🔌 bookmarks_show_extra</span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Is a slim UI adaption to show the `extra` field in the bookmarks
    channel. This field can contain user comments, but is used per default
    to store the originating channel in.</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">🔌 new_station</span></h4></div>
<div class="region"><div class="contents"><p class="p">(Still unfinished). Small plugin to provide an "Add station..."
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">🔌 new_station</span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">(Still unfinished). Small plugin to provide an "Add station..."
    menu entry. Note that ST2 is not meant as playlist manager, which is
    why this isn't a built-in feature. However, it's oft-requested anyway.</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">🔌 tmp_clean_multiurl</span></h4></div>
<div class="region"><div class="contents"><p class="p">Strips extra space-separate URLs from station list. (Currently only
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">🔌 tmp_clean_multiurl</span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Strips extra space-separate URLs from station list. (Currently only
    required for 📻 RadioSure channel. Later ST2 versions will likely support
    such entries per default again).</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">🔌 Gtk theme setting</span></h4></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">🔌 Gtk theme setting</span></h4></div>
<div class="region"><div class="contents pagewide">
<p class="p">You can set a custom theme for Streamtuner2 using the gtk_theme
    plugin. It ought to list all available themes for Gtk2 or Gtk3 in
    the according dropdown box. The "apply instantly" option may help
    with enabling them right away.</p>
<div class="note note-bug" title="Bug">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m7 8v7h0.0078a5 6.3027 0 0 0 3.9922 5.867v-6.867h2v6.871a5 6.3027 0 0 0 3.988-5.871h0.012v-7h-10z"></path>
 <path class="yelp-svg-fill" d="m12 3a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4z"></path>
 <path class="yelp-svg-fill" d="m16 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m9.2045 16.361h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m21.704 4.2894h6v1h-6z"></path>
 <path class="yelp-svg-fill" d="m2 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m5.5801 4.3612h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m-6.9199 16.289h6v1h-6z"></path>
<div class="note note-bug" title="Bug"><div class="inner"><div class="region"><div class="contents"><p class="p">Take note that not all Gtk themes will work,
    and some might crash streamtuner2.</p></div></div></div></div>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">Take note that not all Gtk themes will work,
    and some might crash streamtuner2.</p></div></div></div>
</div>
<p class="p">If you see ST2 hang at startup, then either edit
    <span class="file">settings.json</span> to remove the <span class="cmd">"theme": "..."</span>
    name, or use the <span class="code"><span class="app">streamtuner2 -d gtk_theme</span></span>
    start command.</p>
<p class="p">To install/enable themes just for ST2, you could create a
    <span class="file">~/.config/streamtuner2/themes/</span> folder, or one below
    <span class="file">/usr/share/streamtuner2/themes/</span> even.</p>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">🔌 stop_button</span></h4></div>
<div class="region"><div class="contents"><p class="p">Adds the toolbar button to stop streamripper/fpls - same as in
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">🔌 stop_button</span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Adds the toolbar button to stop streamripper/fpls - same as in
    streamtuner1. Has become kind of redundant due to the newer
    <span class="link"><a href="specbuttons.html" title="Special extra/mini buttons">🔌 specbuttons</a></span> plugin.</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">🔌 Config prefs</span></h4></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">🔌 Config prefs</span></h4></div>
<div class="region"><div class="contents pagewide">
<p class="p">Introduces three main menu entries:</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list">
<div class="title title-item"><h4><span class="title"><span class="guiseq"><span class="gui">Station</span> ▸ <span class="gui">Extensions</span> ▸ <span class="gui">Config save</span></span></span></h4></div>
<p class="p">Saves the streamtuner2.json file verbatim.</p>
</li>
<li class="list">
<div class="title title-item"><h4><span class="title"><span class="guiseq"><span class="gui">Station</span> ▸ <span class="gui">Extensions</span> ▸ <span class="gui">Config restore</span></span></span></h4></div>
<p class="p">While the file dialog incorrectly says and behaves like a file
       save dialog, it does in fact open and load the JSON file.</p>
</li>
<li class="list">
<div class="title title-item"><h4><span class="title"><span class="guiseq"><span class="gui">Station</span> ▸ <span class="gui">Extensions</span> ▸ <span class="gui">Config delete</span></span></span></h4></div>
<p class="p">The config reset additionally opens the settings window and
       requires you to hit <span class="key"><kbd>Save</kbd></span> for confirmation. In any case
       ST2 should also be restarted afterwards to unload disabled plugins.</p>
</li>
</ul></div></div></div>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">🔌 Cache reset</span></h4></div>
<div class="region"><div class="contents"><p class="p">Adds a <span class="key"><kbd>Cache reset</kbd></span> button in the Options tab of
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">🔌 Cache reset</span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Adds a <span class="key"><kbd>Cache reset</kbd></span> button in the Options tab of
    the settings window. It shows how much space all cache files of
    ST2 occupy. Usually the icons take up most, while the channel/station
    archive is often just 2-3 MB. Temporary m3u/pls files can also
    be deleted. → Tick the parts you want to have removed before hitting
    the reset button.</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h4 class="subtitle"><span class="subtitle">🔌 OGG Icon</span></h4></div>
<div class="region"><div class="contents"><p class="p">Introduces small state icons to make higher-quality Vorbis and
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">🔌 OGG Icon</span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Introduces small state icons to make higher-quality Vorbis and
    Opus stations stand out. (Not all channels provide exact format
    information, so you'll mostly notice for Jamendo and Xiph.) </p></div></div>
</div></section><section id=""><div class="inner">
<div class="hgroup pagewide"><h4 class="subtitle"><span class="subtitle">🔌  Win32/subprocess</span></h4></div>
<div class="region"><div class="contents pagewide"><p class="p">Wraps the player/application exec() method. Instead of simple
    shell execution, uses the Python subprocess module or win32 API
    functions. This is mostly unneeded on Linux (kills a few features
    even), but avoids the cmd.exe popup and delay on Windows. Highly
</div></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">
    experimental at the moment.</p></div></div>
</div></section>
</div>
</div></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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>
<li class="links "><a href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links ">
<a href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a><span class="desc"> — User plugin installation</span>
</li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Deleted help/html/dirble.html version [7d6534e40b].

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
69
70
71
72








































































-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
<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> Dirble</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"><span class="media"><span class="media media-image"><img src="img/channel_dirble.png" class="media media-inline" alt=""></span></span> Dirble</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://dirble.com/" title="http://dirble.com/">//dirble.com/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<p class="p">Dirble.com is another radio station directory, based on
	user-contributed entries and automatic streaming server polling.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">Provides a JSON API, which in v2 is easy to extract from.</p></li>
<li class="list"><p class="p">Station lists contain even station homepages mostly.</p></li>
<li class="list"><p class="p">And the channel plugin selects among the available
         streaming URLs based on format (Ogg, AAC, preferred over MP3) and
         maximum bitrate.</p></li>
</ul></div></div></div>
</div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h3 class="subtitle"><span class="subtitle">Station status indicators</span></h3></div>
<div class="region"><div class="contents">
<p class="p">For the dirble plugin each station entry may contain a stream
        status icon. They often just represent a heuristic check or general
        reachability statistic. You can usually start playback without
        paying attention to the status icons: </p>
<div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms">▮▮</dt>
<dd class="terms"><p class="p">Maybe currently inactive.</p></dd>
<dt class="terms">▶▶▮</dt>
<dd class="terms"><p class="p">Available stream, no recent outage.</p></dd>
<dt class="terms">◀◀</dt>
<dd class="terms"><p class="p">Unclear Status 2</p></dd>
</dl></div></div></div>
</div></div>
</div></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"></div>
<div class="region"><div class="contents"><div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">There's a hidden config option for a custom API key.
        It's perhaps redundant. Should streamtuner2 -D however reveal an error,
        you can configure your own account in <span class="file">settings.json</span>.
        </p></div></div></div></div></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="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>

Modified help/html/dragndrop.html from [53d8691182] to [99d9f80421].


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
69

70
71
72

73
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
69


70
71
72



73
74
75
76
77
78

79
80

81



82
83
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+












-
-
-
+
+
+




+
+
+
-
+

-
+
+








-
+
-
-
-
+
+




+
+
+
+
-
+



-
-
+
+

-
-
-
+
+
+



-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>Drag'n'drop</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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#extra" title="Additional features">Additional features</a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Drag'n'drop</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Drag'n'drop</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">With the DND feature plugin enabled, there's an even simpler
	method now to export stations.  Simply click and hold the mouse on a
	stream entry, then drag it out to the desktop, file manager or
	directly into VLC or any running music player.  That'll usually
	copy a stream/station address directly.</p>
<p class="p">Now it's not guaranteed to work with all applications or file
	managers, as X11/Gtk DND support is somewhat arcane and wonky.
	You may specifically have to adapt the default export format for
	this. Generally an XSPF or PLS file gets created for file managers.
	While VLC is one of the few applications that understands direct
	playlist URLs or literal M3U/PLS payloads even.</p>
</div>
<div id="import" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Importing</span></h2></div>
<div class="region"><div class="contents">
<section id="import"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Importing</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Playlist importing also works mostly. Here the action module
	takes care to unpack PLS, XPSF or M3U files and a few other
	formats. If you drag in streams/playlists from other applications,
	it'll usually be expanded.</p>
<div class="note note-warning" title="Warning">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m11.92 3.3047a1.3872 1.3872 0 0 0-1.129 0.6933l-8.6055 14.922a1.3872 1.3872 0 0 0 1.2012 2.08l17.226-8e-3a1.3872 1.3872 0 0 0 1.201-2.08l-8.619-14.916a1.3872 1.3872 0 0 0-1.136-0.6913 1.3872 1.3872 0 0 0-0.139 0zm0.08 4.6953a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1 1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1zm0 9a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1z"></path>
<div class="note note-warning" title="Warning"><div class="inner"><div class="region"><div class="contents"><p class="p">Take note that Streamtuner2 is not intended as playlist manager
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">Take note that Streamtuner2 is not intended as playlist manager
	though. It will only accept radio streaming lists and discard
	local MP3/Ogg files.</p></div></div></div></div>
	local MP3/Ogg files.</p></div></div></div>
</div>
<p class="p">The import capabilities also allow to move a station entry
	from one of the channel tabs into your bookmarks list. Simply drag
	an entry over the "bookmarks" notebook tab then further along into
	the favourite list. - While this also works the other way round,
	it doesn't make sense to add bookmarks to Shoutcast/Xiph/etc.
	Because when their lists get refreshed (<span class="key"><kbd>F5</kbd></span>) all custom
	entries are usually dropped.</p>
</div></div>
</div></div>
</div></section><section id="configuration"><div class="inner">
<div id="configuration" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Export format configuration</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Export format configuration</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Use <span class="key"><kbd>F12</kbd></span> and change the DND export format. Again
	PLS is most universal, XSPF most complete, but other formats
	still available. Use the "desktop" format only if you want to
	bookmark direct playback links on your desktop.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">This is a workaround, because XDND is commonly just implemented
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">This is a workaround, because XDND is commonly just implemented
	as dumb file transfer scheme. Hardly any application specifies the
	actually desired formats, thus there's no auto-negotiation. ST2
	therefore has to create temporary export files and hope for the
	best.</p></div></div></div></div>
</div></div>
	best.</p></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/edit.html from [915d7fa2e4] to [67b9537e07].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+




-
-
-
+

-
+









+
+
+
+
-
+




-
+

+
-
-
-
+
+
+






-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>Edit</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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="streams.html" title="Streams / Stations">Streams / Stations</a> › <a class="trail" href="streams.html#actions" title="Actions">Actions</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#functions" title="Functions">Functions</a> » </div>
</div></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Edit</span></h1></div>
</div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Edit</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">You probably won't need this often. But there's an
	<span class="guiseq"><span class="gui"></span> ▸ <span class="gui">Edit/Details</span></span> context menu
	which brings up a station editor:
	</p>
<div class="media media-image"><div class="inner"><img src="img/streamedit.png" class="media media-block" alt=""></div></div>
<p class="p">You can see the standard title and genre fields here. But also a
	few internally kept infos. For example the "url" field contains the
	actual pls/m3u/server address. While the "format" can list a
	non-standard audio compression type.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">This dialog is primarily useful for your personal bookmarks.
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">This dialog is primarily useful for your personal bookmarks.
	It allows to shorten or rename things. You can even use
	<span class="gui">new</span> to add new entries this way.
	(Which doesn't make sense in regular channel categories, because
	changes will be lost once you hit Reload). A proper "Add station..."
	dialog is planned though.</p></div></div></div></div>
	dialog is planned though.</p></div></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">
<section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="streams.html#actions" title="Actions">Actions</a></li>
<li class="links "><a href="index.html#functions" title="Functions">Functions</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Added 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>

Added 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>

Modified help/html/favicon.html from [f10dc67d38] to [0b3ba853b9].


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
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
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+










+
+
+
+
-
+



-
+

-
+

+
-
-
-
+
+
+







<!DOCTYPE html>
<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>Station favicons</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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#extra" title="Additional features">Additional features</a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Station favicons</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Station favicons</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Per default you'll get a small logo / icon for any station
with a homepage link. They're automatically fetched and displayed
as soon as you play a radio entry.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">This functionality meanwhile resides in a plugin.</p></li>
<li class="list"><p class="p">It's available in the <span class="key"><kbd>🔌 Features</kbd></span> <span class="link"><a href="configuration.html" title="Configuration / Settings dialog">configuration</a></span> tab.</p></li>
<li class="list"><p class="p">Most configuration options are now collected there.</p></li>
</ul></div></div></div>
<p class="p">Some channels (Jamendo or Radionomy) provide small album previews
or banners even. Whereas normal favicons are just 16x16 pixel images.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">Downloaded image files are meanwhile all sanitized (internally
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">Downloaded image files are meanwhile all sanitized (internally
converted to ensure they're really image files).
Albeit that's not strictly necessary for modern Gtk versions. (But
better safe than sorry).
Images are kept in the <span class="file">~/.config/streamtuner2/icons</span> directory
Images are kept in the <span class="file">~/.cache/streamtuner2/icons</span> directory
(or below <span class="file">%APPDATA%\</span> on Windows).
</p></div></div></div></div>
</p></div></div></div>
</div>
</div>
<div id="configuration" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Configuration options</span></h2></div>
<div class="region"><div class="contents"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
<section id="configuration"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Configuration options</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms">☑ Load favicons on playing</dt>
<dd class="terms"><p class="p">When starting to play a station, its homepage favicon is automatically downloaded
    in the background. It's even displayed right away as soon as it's there. You can
    also have a whole category/genre list updated right away per menu command
    <span class="guiseq"><span class="gui">Channel</span> ▸ <span class="gui">Update favicons...</span></span>.</p></dd>
<dt class="terms">☑ Homepage googling</dt>
<dd class="terms"><p class="p">When playing a station that doesn't have a homepage entry, streamtuner2 tries
55
56
57
58
59
60
61
62
63
64
65



66
67
68
69

70
71

72
73
74

75
65
66
67
68
69
70
71




72
73
74
75
76
77

78
79

80



81
82







-
-
-
-
+
+
+



-
+

-
+
-
-
-
+

    disable this for privacy reasons though.</p></dd>
<dt class="terms">☑ Omit placeholders</dt>
<dd class="terms"><p class="p">Oftentimes the Google favicon service sends back a placeholder icon
    (a blue mini globe), which doesn't look very interesting. So you might
    want to disable those. (They're still downloaded, but just not saved in
    the cache directory.)</p></dd>
</dl></div></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/filetypes.html from [d4f4b5e921] to [567ad64c68].


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

69
70
71
72
73
74
75
76
77
78
79

80
81
82

83
84
85


86
87
88
89
90
91
92
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
69

70
71
72
73
74
75
76
77
78
79
80

81
82
83

84



85
86
87
88
89
90
91
92
93
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+

-
-
-
+
+
+


-
+

-
+

-
+
-
-
-
+
+



-
+



-
+

-
+
-
-
-
+
+






-
+






-
+


-
+
-
-
-
+
+





-
+










-
+


-
+
-
-
-
+
+







<!DOCTYPE html>
<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>File types</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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#footer" title="index#footer"></a> » <a class="trail" href="glossary.html" title="Glossary">Glossary</a> › <a class="trail" href="glossary.html#filetypes" title="Filetypes">Filetypes</a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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#footer" title="index#footer"></a> » <a class="trail" href="glossary.html" title="Glossary">Glossary</a> › <a class="trail" href="glossary.html#filetypes" title="Filetypes">Filetypes</a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">File types</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">File types</span></h1></div>
<div class="region">
<div class="contents"><p class="p">Streamtuner2 understands different playlist formats as used by various
<div class="contents pagewide"><p class="p">Streamtuner2 understands different playlist formats as used by various
directory services and audio players.</p></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">.M3U files</span></h2></div>
<div class="region"><div class="contents">
<section id=""><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">.M3U files</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">M3U files are one of the simplest playlist types. They're often used by desktop audio players.</p>
<p class="p">The MIME type of these files is <span class="sys">audio/x-mpegurl</span> and often contain just a list of URLs:</p>
<div class="code"><pre class="contents ">#M3U
<div class="code"><pre class="contents"><code class="">#M3U
http://123.45.67.189:8222/
http://123.45.67.222:7555/</pre></div>
http://123.45.67.222:7555/</code></pre></div>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">.PLS files</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">.PLS files</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Playlist files often have the extension <span class="file">.pls</span>. It's the primary station
stream link format of SHOUTcast, and was popularized by WinAmp.</p>
<p class="p">The MIME type of these files is <span class="sys">audio/x-scpls</span> and they often look like: </p>
<div class="code"><pre class="contents ">[playlist]
<div class="code"><pre class="contents"><code class="">[playlist]
numberofentries=1
File1=http://123.45.67.189:8222
Title1=(#1 - 555/2000) radio station Xyz - top 100 - all the hitzez
Length1=-1</pre></div>
Length1=-1</code></pre></div>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">.JSON files</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">.JSON files</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">JSON is a data representation format derived from Javascript (the browser embedded
programming language for websites). It's commonly used because it provides a
nice balance between terse and exact data representation, while still being
readable.</p>
<p class="p">Streamtuner2 uses it to store all of its configuration and radio station data files.
The MIME type of these files is <span class="sys">application/json</span> and they often look like: </p>
<div class="code"><pre class="contents ">[
<div class="code"><pre class="contents"><code class="syntax language-json">[
  {
    "title": "Station title..",
    "url": "http://1.2.3.4:8000/",
    "homepage": "http://radio.org/",
  },
  { "title": "second" }
]</pre></div>
]</code></pre></div>
<p class="p">It's also the basis for JSPF, the JSON variant of XSPF.</p>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">.XSPF files</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">.XSPF files</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">The Xiph foundation manages the Ogg streaming format, Vorbis and other
codecs, and introduced the "XML shareable playlist format" or "XSPF" for short.
They're hard to look at and not very widespread. On the upside they
contain more meta information than any other playlist store.</p>
<p class="p">As MIME type <span class="sys">application/xspf+xml</span> and they often look like: </p>
<div class="code"><pre class="contents syntax brush-html">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<div class="code"><pre class="contents"><code class="syntax language-xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;playlist version="1" xmlns="http://xspf.org/ns/0/"&gt;
  &lt;trackList&gt;
    &lt;track&gt;
      &lt;title&gt;Top 500 hitz station XY&lt;/title&gt;
      &lt;annotation&gt;Paris&lt;/annotation&gt;
      &lt;location&gt;http://123.24.67.189:8222&lt;/location&gt;
      &lt;info&gt;Pop, Rock, Future-Jazz&lt;/info&gt;
      &lt;homepage&gt;http://example.com/&lt;/homepage&gt;
    &lt;/track&gt;
  &lt;/trackList&gt;
&lt;/playlist&gt;</pre></div>
&lt;/playlist&gt;</code></pre></div>
<p class="p">A variation of this format exists as JSPF, using JSON (yay!) instead of XML.</p>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Uncommon formats</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Uncommon formats</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Various other file formats are in existence, but not widely used:</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list">
<div class="title title-item"><h3><span class="title">SMIL</span></h3></div>
<p class="p">Synchronized Multimedia Integration Language is an HTML-style
  audio/video/stream-link format.</p>
</li>
113
114
115
116
117
118
119
120
121
122
123



124
125
126
127

128
129

130
131
132

133
114
115
116
117
118
119
120




121
122
123
124
125
126

127
128

129



130
131







-
-
-
-
+
+
+



-
+

-
+
-
-
-
+

<p class="p">*.url (Internet Shortcut) files also are single-link containers.</p>
</li>
</ul></div></div></div>
<p class="p">For a comparison of what various audio players support, see also
<span class="link"><a href="http://fossil.include-once.org/streamtuner2/wiki/Playlist+format+support" title="http://fossil.include-once.org/streamtuner2/wiki/Playlist+format+support">Playlist format support</a></span>
in the ST2 fossil wiki.</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="glossary.html#filetypes" title="Filetypes">Filetypes</a></li></ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/filtermusic.html from [ff0f366b5e] to [90cbdd2e4c].


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
69
70
71
72
73

74
75

76
77
78

79
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


69
70
71



72
73
74
75
76
77
78
79
80
81

82
83

84



85
86
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+










-
-
-
+
+
+



















+
+
+
+
-
+


-
-
+
+

-
-
-
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> filtermusic</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_filtermusic.png" class="media media-inline" alt=""></span></span> filtermusic</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://filtermusic.net/" title="http://filtermusic.net/">//filtermusic.net/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Filtermusic summarizes all the common genres, but is primarily
	focused on electro/dance/pop stations.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">There's around a dozen categories with 20-30 radios each.</p></li>
<li class="list"><p class="p">Prioritizes stations on listener popularity and freshness or something.</p></li>
<li class="list"><p class="p">The plugin fetches an XML list of stations, or extracts from the homepage.</p></li>
</ul></div></div></div>
<p class="p">Most useful if you don't like to browse around, and want to
	listen to most popular stations.</p>
</div>
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents">
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Like the <span class="link"><a href="xiph.html" title="Xiph.org">📻 Xiph plugin</a></span> this channel provides
	three fetch modes:</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list">
<div class="title title-item"><h3><span class="title">Website</span></h3></div>
<p class="p">Extract all streams from the web page
         directly.</p>
</li>
<li class="list">
<div class="title title-item"><h3><span class="title">XML Data</span></h3></div>
<p class="p">Use <span class="file">💾 list.2.0.xml</span> which
         the channel service provides directly.</p>
</li>
<li class="list">
<div class="title title-item"><h3><span class="title">Buffered</span></h3></div>
<p class="p">Keeps the XML file in memory. (It
         rarely changes.)</p>
</li>
</ul></div></div></div>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">
	There's no speed or feature differences this time. You might prefer
	the buffered mode, as it reduces update requests, but still allows
	refreshing lists.</p></div></div></div></div>
</div></div>
	refreshing lists.</p></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/global_key.html from [b904a63bcc] to [1c18ee9a9e].


1
2
3
4
5
6






7

8
9
10
11



12
13
14
15

16
17
18
19
20
21
22
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
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+







<!DOCTYPE html>
<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>Global_key</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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#extra" title="Additional features">Additional features</a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Global_key</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Global_key</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Using the global_key extension you can define a keyboard shortcut for switching within
	a list of favourited radio stations. Per default it uses your bookmarks list, but it can be
	configured to alternate in any other channel.</p>
<p class="p">This is useful if you don't want to keep streamtuner2 atop your
	desktop all the time, but still want to switch radios easily.</p>
<p class="p">Go into settings <span class="key"><kbd>F12</kbd></span> for plugins to define a keyboard shortcut:</p>
<div class="table"><div class="inner"><div class="region"><table class="table">
47
48
49
50
51
52
53










54

55
56
57

58

59
60
61



62
63
64
65

66
67

68
69
70

71
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

69
70
71

72
73
74



75
76
77
78
79
80

81
82

83



84
85







+
+
+
+
+
+
+
+
+
+
-
+


-
+

+
-
-
-
+
+
+



-
+

-
+
-
-
-
+

<tr class="shade">
<td style="border-top-style: solid;"><p class="p"><span class="input">XF86Forward</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Uses a "forward" function key. (default)</p></td>
</tr>
</table></div></div></div>
<p class="p">To define another channel as source, enter its module name in the according field. Also
	add a category separated by : colon here.</p>
<div class="note note-bug" title="Bug">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m7 8v7h0.0078a5 6.3027 0 0 0 3.9922 5.867v-6.867h2v6.871a5 6.3027 0 0 0 3.988-5.871h0.012v-7h-10z"></path>
 <path class="yelp-svg-fill" d="m12 3a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4z"></path>
 <path class="yelp-svg-fill" d="m16 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m9.2045 16.361h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m21.704 4.2894h6v1h-6z"></path>
 <path class="yelp-svg-fill" d="m2 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m5.5801 4.3612h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m-6.9199 16.289h6v1h-6z"></path>
<div class="note note-bug" title="Bug"><div class="inner"><div class="region"><div class="contents"><p class="p">If the configured keyboard shortcut conflicts
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">If the configured keyboard shortcut conflicts
	with another application, it won't work.  And if you choose it too
	generic, you won't be able to type longer documents.  Also found
	out: key names are case sensitive.</p></div></div></div></div>
	out: key names are case sensitive.</p></div></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">
<section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/glossary.html from [752b6c338c] to [8c7860ff9a].


1
2
3
4
5
6






7

8
9
10
11



12
13
14
15

16
17
18
19
20
21
22
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
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+







<!DOCTYPE html>
<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>Glossary</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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#footer" title="index#footer"></a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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#footer" title="index#footer"></a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Glossary</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Glossary</span></h1></div>
<div class="region">
<div class="contents"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
<div class="contents pagewide"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms">Channel</dt>
<dd class="terms"><p class="p">Each tab in the main window is a "channel". It represents one
   	    music directory service.</p></dd>
<dt class="terms">Stream</dt>
<dd class="terms">
<p class="p">"stream" is a technical term which means continuosly flowing
	    data.  MP3 radio music for example is streamed, because it's not
70
71
72
73
74
75
76
77
78
79



80
81
82

83
84
85
86
87



88
89
90
91

92
93

94
95
96

97
75
76
77
78
79
80
81



82
83
84
85
86

87
88




89
90
91
92
93
94

95
96

97



98
99







-
-
-
+
+
+


-
+

-
-
-
-
+
+
+



-
+

-
+
-
-
-
+

<dt class="terms">Bitrate</dt>
<dd class="terms"><p class="p">Audio streams are compressed with exactness loss. This can be heard
	    at lower "bitrates". For MP3 files any music with less than 100 kbit/s
	    starts to hiss, while OGG Vorbis still sounds okay at a datarate of
	    e.g. 64 kbit per second. So while bitrate basically means file size per duration,
	    it's commonly used as quality indicator.</p></dd>
</dl></div></div></div></div>
<div id="filetypes" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Filetypes</span></h2></div>
<div class="region"><div class="contents">
<section id="filetypes"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Filetypes</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Besides audio formats MP3 and OGG, there are also station/streaming link files.
            These are often downloaded from the directory servers, before your music player gets activated.</p>
<div class="links topiclinks"><div class="inner"><div class="region"><div class="linkdiv "><a class="linkdiv" href="filetypes.html" title="File types"><span class="title">File types</span><span class="linkdiv-dash"> — </span><span class="desc">PLS, M3U, JSON files types.</span></a></div></div></div></div>
<div class="links topiclinks"><div class="inner"><div class="region"><div class="links-divs"><div class="linkdiv "><a class="linkdiv" href="filetypes.html" title="File types"><span class="title">File types</span><span class="linkdiv-dash"> — </span><span class="desc">PLS, M3U, JSON files types.</span></a></div></div></div></div></div>
</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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#footer" title="index#footer"></a></li></ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Added help/html/highlight.pack.js version [a0f3b3e811].

cannot compute difference between binary files

Modified help/html/homepage.html from [9017356090] to [269f8d2247].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+




-
-
-
+

-
+








-
-
-
+
+
+


-
-
-
-
+
+
+






-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>Radio homepages</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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="streams.html" title="Streams / Stations">Streams / Stations</a> › <a class="trail" href="streams.html#actions" title="Actions">Actions</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#functions" title="Functions">Functions</a> » </div>
</div></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Radio homepages</span></h1></div>
</div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Radio homepages</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Most radio stations are listed with a homepage URL. Use the <span class="gui"><span class="key"><kbd>🏠</kbd></span> house</span> symbol in the toolbar or
	<span class="guiseq"><span class="gui">right click</span> ▸ <span class="gui">homepage</span></span> to open
	it in a web browser.</p>
<p class="p">Some homepage links are guessed, because some channels (e.g.
	Shoutcast) don't provide them (anymore).  If you play a station
	without homepage URL, it automatically gets googled.  (The link will
	be visible once you reselect the genre/category.) </p>
</div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Channel homepages</span></h2></div>
<div class="region"><div class="contents"><p class="p">You can also visit channel homepages (Shoutcast.com, Xiph.org,
<section id=""><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Channel homepages</span></h2></div>
<div class="region"><div class="contents pagewide"><p class="p">You can also visit channel homepages (Shoutcast.com, Xiph.org,
	etc).  Either from the <span class="gui">Channel</span> menu, or via double
	clicking the channel tab.</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="streams.html#actions" title="Actions">Actions</a></li>
<li class="links "><a href="index.html#functions" title="Functions">Functions</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Added help/html/img/channel_liveradio.png version [79d114b1a2].

cannot compute difference between binary files

Added help/html/img/channel_peertube.png version [52f49dcbe9].

cannot compute difference between binary files

Modified help/html/img/channel_radiobrowser.png from [3fbe2b73c1] to [acacd21a16].

cannot compute difference between binary files

Modified help/html/index.html from [e7a2cca727] to [b492a34e7b].


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
69
70
71
72
73




74
75
76
77
78
79
80
81
82
83
84

85
86

87
88
89
90



91
92
93
94
95
96

97
98
99
100
101
102
103


104
105
106


107
108
109
110
111
112
113
114
115
116
117
118
119
120

121
122
123

124
125

126
127
128
129
130

131
132
133


134
135
136
137
138
139






140
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

69
70
71
72
73




74
75
76
77
78
79
80
81
82
83
84
85
86
87

88
89

90




91
92
93
94
95
96
97
98

99
100
101
102
103
104


105
106



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

122
123
124

125
126

127
128




129
130
131

132
133
134
135




136
137
138
139
140
141
142
+






+
+
+
+
+
+
-
+

-
-
-
-
+
+

-
-
-
-
-
+
+
+
+
+



-
+



-
-
+
+
-
-
-
-
+
+
+

-


+

+





-
+










-
-
+
+
-
-
+

-
-
+
+





-
+




-
-
-
-
+
+
+
+










-
+

-
+
-
-
-
-
+
+
+





-
+





-
-
+
+
-
-
-
+
+













-
+


-
+

-
+

-
-
-
-
+


-
+
+


-
-
-
-
+
+
+
+
+
+

<!DOCTYPE html>
<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>♪ Streamtuner2 </title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/logo.png" class="media media-inline" alt="♪"></span></span> Streamtuner2 </span></h1></div>
<body><main><div class="page">
<header><div class="inner pagewide"></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/logo.png" class="media media-inline" alt="♪"></span></span> Streamtuner2 </span></h1></div>
<div class="region">
<div class="contents"><p class="p">Streamtuner2 shows internet radio stations for easy browsing, playing, recording.</p></div>
<div id="browsing" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Browsing channels and radio stations</span></h2></div>
<div class="region"><div class="contents"><div class="links topiclinks"><div class="inner"><div class="region">
<div class="links-twocolumn">
<div class="contents pagewide"><p class="p">Streamtuner2 shows internet radio stations for easy browsing, playing, recording.</p></div>
<section id="browsing"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Browsing channels and radio stations</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="links topiclinks"><div class="inner"><div class="region"><div class="links-twocolumn">
<div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="channels.html" title="Channels"><span class="title">Channels</span><span class="linkdiv-dash"> — </span><span class="desc">Switching through the channel tabs, different radio directory services.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="introduction.html" title="Introduction"><span class="title">Introduction</span><span class="linkdiv-dash"> — </span><span class="desc">Basic usage instructions. Selecting a channel, category, and playing a radio.</span></a></div>
</div>
<div class="links-twocolumn">
<div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="playing.html" title="Playing"><span class="title">Playing</span><span class="linkdiv-dash"> — </span><span class="desc">Double click a station to start it in your audio player.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="streams.html" title="Streams / Stations"><span class="title">Streams / Stations</span><span class="linkdiv-dash"> — </span><span class="desc">Radio streams lists, station information columns, entry actions.</span></a></div>
</div>
</div></div></div></div></div>
</div></div>
</div></div></div></div></div></div>
</div></section><section id="channels"><div class="inner">
<div id="channels" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Channel tabs</span></h2></div>
<div class="region"><div class="contents"><div class="links topiclinks"><div class="inner"><div class="region">
<div class="links-twocolumn">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Channel tabs</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="links topiclinks"><div class="inner"><div class="region"><div class="links-twocolumn">
<div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="bookmarks.html" title="Bookmarks"><span class="title">Bookmarks</span><span class="linkdiv-dash"> — </span><span class="desc">Collect favourites via bookmark function, entry editing and deleting.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="dirble.html" title="Dirble"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_dirble.png" class="media media-inline" alt=""></span></span> Dirble</span><span class="linkdiv-dash"> — </span><span class="desc">Dirble.com</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="internet_radio_org_uk.html" title="Internet-Radio"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_internet_radio.png" class="media media-inline" alt=""></span></span> Internet-Radio</span><span class="linkdiv-dash"> — </span><span class="desc">Large radio directory from the UK.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="jamendo.html" title="Jamendo"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_jamendo.png" class="media media-inline" alt=""></span></span> Jamendo</span><span class="linkdiv-dash"> — </span><span class="desc">Creative Commons music and artist hub.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="liveradio.html" title="LiveRadio.ie"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_liveradio.png" class="media media-inline" alt=""></span></span> LiveRadio.ie</span><span class="linkdiv-dash"> — </span><span class="desc">Ireland-based radio directory</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="myoggradio.html" title="MyOggRadio"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_myoggradio.png" class="media media-inline" alt=""></span></span> MyOggRadio</span><span class="linkdiv-dash"> — </span><span class="desc">Open source stream directory.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="peertube.html" title="Peertube"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_peertube.png" class="media media-inline" alt=""></span></span> Peertube</span><span class="linkdiv-dash"> — </span><span class="desc">Peertube music/video listings.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="radiobrowser.html" title="Radio-Browser"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_radiobrowser.png" class="media media-inline" alt=""></span></span> Radio-Browser</span><span class="linkdiv-dash"> — </span><span class="desc">Community-driven streaming directory</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="radionomy.html" title="Radionomy"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_radionomy.png" class="media media-inline" alt=""></span></span> Radionomy</span><span class="linkdiv-dash"> — </span><span class="desc">Large internet streaming provider</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="reddit.html" title="Reddit"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_reddit.png" class="media media-inline" alt=""></span></span> Reddit</span><span class="linkdiv-dash"> — </span><span class="desc">Music subreddit posts</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="shoutcast.html" title="Shoutcast"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_shoutcast.png" class="media media-inline" alt=""></span></span> Shoutcast</span><span class="linkdiv-dash"> — </span><span class="desc">Probably still the largest radio station list.</span></a></div>
</div>
<div class="links-twocolumn">
<div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="somafm.html" title="SomaFM"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_somafm.png" class="media media-inline" alt=""></span></span> SomaFM</span><span class="linkdiv-dash"> — </span><span class="desc">Set of radio stations</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="surfmusik.html" title="SurfMusic"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_surfmusik.png" class="media media-inline" alt=""></span></span> SurfMusic</span><span class="linkdiv-dash"> — </span><span class="desc">International radio listings.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="modarchive.html" title="The MOD Archive"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_modarchive.png" class="media media-inline" alt=""></span></span> The MOD Archive</span><span class="linkdiv-dash"> — </span><span class="desc">Tracker audio file collection.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="tunein.html" title="TuneIn"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_tunein.png" class="media media-inline" alt=""></span></span> TuneIn</span><span class="linkdiv-dash"> — </span><span class="desc">Radio and Podcast directory.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="ubuntuusersm.html" title="UbuntuUsers"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_ubuntuusers.png" class="media media-inline" alt=""></span></span> UbuntuUsers</span><span class="linkdiv-dash"> — </span><span class="desc">Wiki list of radio stations</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="xiph.html" title="Xiph.org"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_xiph.png" class="media media-inline" alt=""></span></span> Xiph.org</span><span class="linkdiv-dash"> — </span><span class="desc">ICEcast radio directory.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="youtube.html" title="Youtube"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_youtube.png" class="media media-inline" alt=""></span></span> Youtube</span><span class="linkdiv-dash"> — </span><span class="desc">Youtube music/video listings.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="filtermusic.html" title="filtermusic"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_filtermusic.png" class="media media-inline" alt=""></span></span> filtermusic</span><span class="linkdiv-dash"> — </span><span class="desc">Selection of the best radio stations</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="contrib_channels.html" title="→ Contrib/Extra Channels"><span class="title">→ Contrib/Extra Channels</span><span class="linkdiv-dash"> — </span><span class="desc">Downloadable channel plugins</span></a></div>
</div>
</div></div></div></div></div>
</div></div>
</div></div></div></div></div></div>
</div></section><section id="functions"><div class="inner">
<div id="functions" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Functions</span></h2></div>
<div class="hgroup pagewide"><h2 class="title"><span class="title">Functions</span></h2></div>
<div class="region">
<div class="contents"><div class="links topiclinks"><div class="inner"><div class="region">
<div class="links-twocolumn">
<div class="contents pagewide"><div class="links topiclinks"><div class="inner"><div class="region"><div class="links-twocolumn">
<div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="configuration.html" title="Configuration / Settings dialog"><span class="title">Configuration / Settings dialog</span><span class="linkdiv-dash"> — </span><span class="desc"><span class="key"><kbd>F12</kbd></span> brings up the options window with the Player, Display, System and Plugin sections.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="edit.html" title="Edit"><span class="title">Edit</span><span class="linkdiv-dash"> — </span><span class="desc">Edit or inspect a station entry.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="playing.html" title="Playing"><span class="title">Playing</span><span class="linkdiv-dash"> — </span><span class="desc">Double click a station to start it in your audio player.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="homepage.html" title="Radio homepages"><span class="title">Radio homepages</span><span class="linkdiv-dash"> — </span><span class="desc">Start a web browser for a station.</span></a></div>
</div>
<div class="links-twocolumn">
<div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="recording.html" title="Recording"><span class="title">Recording</span><span class="linkdiv-dash"> — </span><span class="desc">Save radio songs as MP3 files via streamripper.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="saving.html" title="Saving"><span class="title">Saving</span><span class="linkdiv-dash"> — </span><span class="desc">Export a station entry as .m3u/.pls file.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="search.html" title="Searching"><span class="title">Searching</span><span class="linkdiv-dash"> — </span><span class="desc">Quicksearch field and Ctrl+F compound search window.</span></a></div>
</div>
</div></div></div></div>
<div class="sect sect-links" role="navigation">
<div class="hgroup"></div>
<div class="contents"><div class="links seealsolinks"><div class="inner">
</div></div></div></div></div>
<section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><div class="links seealsolinks"><div class="inner">
<div class="title"><h3><span class="title">See Also</span></h3></div>
<div class="region"><ul>
<li class="links ">
<a href="config_apps.html" title="Audio players">Audio players</a><span class="desc"> — Common applications to use as players.</span>
</li>
<li class="links ">
<a href="streams.html" title="Streams / Stations">Streams / Stations</a><span class="desc"> — Radio streams lists, station information columns, entry actions.</span>
</li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
</div></div>
</div></section><section id="extra"><div class="inner">
<div id="extra" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Additional features</span></h2></div>
<div class="region"><div class="contents"><div class="links topiclinks"><div class="inner"><div class="region">
<div class="links-twocolumn">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Additional features</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="links topiclinks"><div class="inner"><div class="region"><div class="links-twocolumn">
<div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="cli.html" title="CLI (command line interface)"><span class="title">CLI (command line interface)</span><span class="linkdiv-dash"> — </span><span class="desc">Console interface, exporting data.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="dragndrop.html" title="Drag'n'drop"><span class="title">Drag'n'drop</span><span class="linkdiv-dash"> — </span><span class="desc">Drag and drop support.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="global_key.html" title="Global_key"><span class="title">Global_key</span><span class="linkdiv-dash"> — </span><span class="desc">Global keyboard shortcut for radio switching.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add"><span class="title">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </span><span class="linkdiv-dash"> — </span><span class="desc">User plugin installation</span></a></div>
</div>
<div class="links-twocolumn">
<div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="specbuttons.html" title="Special extra/mini buttons"><span class="title">Special extra/mini buttons</span><span class="linkdiv-dash"> — </span><span class="desc">Toolbar application short cuts.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="favicon.html" title="Station favicons"><span class="title">Station favicons</span><span class="linkdiv-dash"> — </span><span class="desc">Favicons</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="timer.html" title="Timer"><span class="title">Timer</span><span class="linkdiv-dash"> — </span><span class="desc">Programming recurring play and recording events.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="contrib_features.html" title="→ Feature plugins"><span class="title">→ Feature plugins</span><span class="linkdiv-dash"> — </span><span class="desc">Additional feature plugins</span></a></div>
</div>
</div></div></div></div></div>
</div></div>
</div></div></div></div></div></div>
</div></section><section id="footer"><div class="inner">
<div id="footer" class="sect"><div class="inner">
<div class="hgroup"><h3 class="subtitle"><span class="subtitle">Project resources and additional help</span></h3></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h3 class="subtitle"><span class="subtitle">Project resources and additional help</span></h3></div>
<div class="region"><div class="contents pagewide">
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">You can get additional help from the
   	  <span class="link"><a href="http://sourceforge.net/p/streamtuner2/discussion/1173108/" title="http://sourceforge.net/p/streamtuner2/discussion/1173108/">online forum</a></span>.
   	  Or via <span class="guiseq"><span class="gui">Help</span> ▸ <span class="gui">Forum</span></span>.</p></li>
<li class="list"><p class="p">Feedback on issues you ran into is also very welcome.
	  <span class="link"><a href="http://fossil.include-once.org/streamtuner2/rptview?rn=1" title="http://fossil.include-once.org/streamtuner2/rptview?rn=1">Bug reports</a></span>
	  don't require any account registration. But please include -D debug output.
	  Also accessible via <span class="guiseq"><span class="gui">Help</span> ▸ <span class="gui">Wiki/Fossil/Bugs</span></span>.</p></li>
<li class="list"><p class="p">Watch for new project releases on
	  <span class="link"><a href="http://freshcode.club/projects/streamtuner2" title="http://freshcode.club/projects/streamtuner2">freshcode.club</a></span></p></li>
</ul></div></div></div>
<p class="p">This manual was last updated for available functions in streamtuner2
	version 2.2.0, as of Nov 2016.</p>
<div class="links topiclinks"><div class="inner"><div class="region">
<div class="links topiclinks"><div class="inner"><div class="region"><div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="glossary.html" title="Glossary"><span class="title">Glossary</span><span class="linkdiv-dash"> — </span><span class="desc">Technical and streamtuner2 specific terminology and jargon.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="technical.html" title="Technical information"><span class="title">Technical information</span><span class="linkdiv-dash"> — </span><span class="desc">Filenames, Directories, Dependencies</span></a></div>
</div></div></div>
</div></div></div></div>
</div></div>
</div></div>
</div></section>
</div>
<div class="clear"></div>
</div>
<div class="footer"><div class="sect about ui-expander" role="contentinfo">
<div class="yelp-data yelp-data-ui-expander" data-yelp-expanded="false"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"><footer class="about ui-expander" role="contentinfo"><div class="yelp-data yelp-data-ui-expander" data-yelp-expanded="false"></div>
<div class="inner">
<div class="hgroup"><h2><span class="title">About</span></h2></div>
<div class="region"><div class="contents"><div class="aboutblurb authors">
<div class="region"><div class="contents"><div class="credits">
<div class="credits-authors">
<div class="title"><span class="title">Written By</span></div>
<ul class="credits"><li>Mario Salzer</li></ul>
</div></div></div>
</div>
</div></div>
</div></body>
</div>
<div class="credits-blank"></div>
<div class="credits-blank"></div>
</div></div></div>
</div></footer></div></footer>
</div></main></body>
</html>

Modified help/html/internet_radio_org_uk.html from [233516ae57] to [7f57be2384].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+








-
-
-
+
+
+





-
-
-
-
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> Internet-Radio</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_internet_radio.png" class="media media-inline" alt=""></span></span> Internet-Radio</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://internet-radio.com/" title="http://internet-radio.com/">//internet-radio.com/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Internet-Radio.com is a broad alternative to Shoutcast.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">It has regained station homepages for most entries again.</p></li>
<li class="list"><p class="p">Genres are similiar to Shoutcast.</p></li>
<li class="list"><p class="p">Updating station lists is comparatively fast.</p></li>
<li class="list"><p class="p">Uses HTML extraction (regex or pyquery) internally.</p></li>
</ul></div></div></div>
</div>
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents"><div class="list"><div class="inner"><div class="region"><ul class="list"><li class="list">
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="list"><div class="inner"><div class="region"><ul class="list"><li class="list">
<div class="title title-item"><h3><span class="title">🔟 pages to fetch</span></h3></div>
<p class="p">Note that this plugin has its own setting on how many
         links to retrieve.  Instead of stream numbers, it only counts pages.
         Which is because this directly influences the stream loading time.</p>
</li></ul></div></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/introduction.html from [4e023c8740] to [f739ddcf5c].


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
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
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+






-
-
-
+
+
+










-
+
-
-
-
+
+







<!DOCTYPE html>
<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>Introduction</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Introduction</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Introduction</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Streamtuner2 is a simple browser for internet radios. It acquires its radio lists
	from various directory services. These are represented as "channel" tabs in the main
	window. The category/genre lists are in the left pane, and associated stations right
	to them.</p>
<div class="media media-image"><div class="inner"><img src="img/mainwindow.png" class="media media-block" alt=""></div></div>
</div>
<div id="play" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">How to select and play a radio.</span></h2></div>
<div class="region"><div class="contents">
<section id="play"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">How to select and play a radio.</span></h2></div>
<div class="region"><div class="contents pagewide">
<div class="steps"><div class="inner"><div class="region"><ol class="steps">
<li class="steps"><p class="p">Select a channel tab, like <span class="code">Shoutcast</span>.</p></li>
<li class="steps"><p class="p">Click one of the genres in the left pane. For example <span class="code">Classic</span>.</p></li>
<li class="steps"><p class="p">Now the right pane loads a radio list.</p></li>
<li class="steps"><p class="p">Double click one of the radio streams or use the <span class="key"><kbd>▶ play</kbd></span> toolbar button.</p></li>
</ol></div></div></div>
<p class="p">Note that some categories are expandable. In a few plugins (modarchive),
	the grouping genre/categories are empty, while in other channels they're
	filled genre lists themselves.</p>
</div></div>
</div></div>
</div></section><section id="actions"><div class="inner">
<div id="actions" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">What else can you do?</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">What else can you do?</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Double clicking an entry row in the radio list starts your audio player. But there are
	other functions available. Either go to the <span class="guiseq"><span class="gui"></span> ▸ <span class="gui">Station</span></span> menu,
	or access the context menu with a right click.</p>
<div class="table"><div class="inner"><div class="region"><table class="table">
<tr>
<td><p class="p"><span class="link"><a href="playing.html" title="Playing">Play</a></span></p></td>
<td style="border-left-style: solid;"><p class="p">Starts the radio in a configured audio player</p></td>
71
72
73
74
75
76
77
78

79
80
81


82
83
84
85
86
87
88

89
90
91
92
93
94
95










96
97
98
99

100
101

102
103
104

105
75
76
77
78
79
80
81

82



83
84
85
86
87
88
89
90

91







92
93
94
95
96
97
98
99
100
101
102
103
104

105
106

107



108
109







-
+
-
-
-
+
+






-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+



-
+

-
+
-
-
-
+

<tr class="shade">
<td style="border-top-style: solid;"><p class="p"><span class="link"><a href="search.html" title="Searching">Searching</a></span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">You can get a radio list according to search criteria.</p></td>
</tr>
</table></div></div></div>
<p class="p"> Play, Record and Homepage also have buttons in the toolbar.</p>
</div></div>
</div></div>
</div></section><section id="none"><div class="inner">
<div id="none" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Refresh radio lists</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Refresh radio lists</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">After some time, stream informations become obsolete. Therefore you should regularily
	<span class="link"><a href="reloading.html" title="Reloading">refresh</a></span> the lists. The <span class="gui">Reload</span> button in the toolbar
	(or <span class="key"><kbd>F5</kbd></span>) is your friend.</p>
<p class="p">You can also update the category lists with <span class="guiseq"><span class="gui">Channel</span> ▸ <span class="gui">Reload Category Tree</span></span>
	and load <span class="link"><a href="favicon.html" title="Station favicons">favicons</a></span> using <span class="guiseq"><span class="gui">Channel</span> ▸ <span class="gui">Update favicons..</span></span>.</p>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"></div>
<div class="region"><div class="contents"><div class="note note-tip" title="Tip"><div class="inner"><div class="region"><div class="contents"><p class="p">You should only select radio stations and genres that you like.</p></div></div></div></div></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="hgroup pagewide"></div>
<div class="region"><div class="contents pagewide"><div class="note note-tip" title="Tip">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m12 2c-3.8541 0-7 3.1459-7 7 0 1.823 0.4945 3.139 1.1641 4.133 0.6695 0.994 1.4328 1.671 2.039 2.471 0.0882 0.116 0.1749 0.656 0.2071 1.32 0.016 0.332 0.0133 0.68 0.1894 1.119 0.0881 0.22 0.2439 0.478 0.5059 0.672 0.2619 0.194 0.6028 0.285 0.8945 0.285h4c0.583 0 1.204-0.478 1.402-0.908 0.199-0.43 0.217-0.793 0.244-1.137 0.056-0.688 0.138-1.319 0.211-1.441 0.549-0.916 1.304-2.009 1.94-3.114 0.636-1.104 1.203-2.199 1.203-3.4 0-3.8541-3.146-7-7-7zm0 2c2.773 0 5 2.2267 5 5 0 0.456-0.359 1.401-0.936 2.402-0.111 0.195-0.246 0.399-0.369 0.598h-7.8825c-0.4871-0.728-0.8125-1.519-0.8125-3 0-2.7733 2.2267-5 5-5z" style="block-progression:tb;color-rendering:auto;color:#000000;image-rendering:auto;isolation:auto;mix-blend-mode:normal;shape-rendering:auto;solid-color:#000000;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"></path>
 <path class="yelp-svg-fill" d="m9 20a0.5 0.5 0 0 0-0.5 0.5 0.5 0.5 0 0 0 0.5 0.5h6a0.5 0.5 0 0 0 0.5-0.5 0.5 0.5 0 0 0-0.5-0.5h-6zm0 2a0.5 0.5 0 0 0-0.5 0.5 0.5 0.5 0 0 0 0.5 0.5h6a0.5 0.5 0 0 0 0.5-0.5 0.5 0.5 0 0 0-0.5-0.5h-6z"></path>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">You should only select radio stations and genres that you like.</p></div></div></div>
</div></div></div>
</div></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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#browsing" title="Browsing channels and radio stations">Browsing channels and radio stations</a></li></ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/jamendo.html from [7a62d2169e] to [122f64e043].


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
69

70
71
72

73
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
69
70
71




72
73
74
75
76
77
78
79
80
81

82
83

84



85
86
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+











-
-
-
+
+
+













+
+
+
+
+
+
+
+
+
+
-
+
+



-
-
-
-
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> Jamendo</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_jamendo.png" class="media media-inline" alt=""></span></span> Jamendo</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://jamendo.com/" title="http://jamendo.com/">//jamendo.com/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Jamendo is a Creative Commons licensing oriented music distributor. It
hosts audio files for individual musicians and artists.  It allows to list
albums, playlists, and individual tracks by genre.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">The new Jamendo v3.0 is now utilized, which is JSON based and easy to extract.</p></li>
<li class="list"><p class="p">Its radio list is static. It loops over randomized songs from each genre.</p></li>
<li class="list"><p class="p">There's a custom JSON playlist extractor (JAMJSON), to avoid preloading stream URLs for feeds/albums. While tracks/genre lists contain direct streaming addresses already.</p></li>
<li class="list"><p class="p">Instead of favicons, streamtuner2 can fetch slightly larger album or track covers.</p></li>
</ul></div></div></div>
<p class="p">Tracks and albums can be downloaded free of charge (Creative Commons). Yeah, imagine that.</p>
</div>
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title"><span class="link"><a href="configuration.html" title="Configuration / Settings dialog">Config</a></span> options</span></h2></div>
<div class="region"><div class="contents"><div class="terms"><div class="inner">
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title"><span class="link"><a href="configuration.html" title="Configuration / Settings dialog">Config</a></span> options</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="terms"><div class="inner">
<div class="title title-terms"><h3><span class="title">System</span></h3></div>
<div class="region"><dl class="terms">
<dt class="terms">🔠 Streaming format</dt>
<dd class="terms"><p class="p">You can switch between MP3 and Ogg Vorbis audio streams for Jamendo.
     It's not honored by the radio section, but albums and tracks should be
     received as Ogg when configured so.</p></dd>
<dt class="terms">🔠 Preview image sizes</dt>
<dd class="terms"><p class="p">Album covers are downloaded in lieu of favicons. They're available
     in different sizes. Use 25px if you want just favicon-sized icons.</p></dd>
<dt class="terms">🔟 Result length</dt>
<dd class="terms">
<p class="p">Currently only 1 page (of 200 entries each) of album/track lists are
     fetched.</p>
<div class="note note-bug" title="Bug">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m7 8v7h0.0078a5 6.3027 0 0 0 3.9922 5.867v-6.867h2v6.871a5 6.3027 0 0 0 3.988-5.871h0.012v-7h-10z"></path>
 <path class="yelp-svg-fill" d="m12 3a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4z"></path>
 <path class="yelp-svg-fill" d="m16 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m9.2045 16.361h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m21.704 4.2894h6v1h-6z"></path>
 <path class="yelp-svg-fill" d="m2 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m5.5801 4.3612h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m-6.9199 16.289h6v1h-6z"></path>
<div class="note note-bug" title="Bug"><div class="inner"><div class="region"><div class="contents"><p class="p">Setting a higher value may not work.</p></div></div></div></div>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">Setting a higher value may not work.</p></div></div></div>
</div>
</dd>
</dl></div>
</div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Added help/html/jquery.syntax.brush.html.js version [f11c4b32b9].



































































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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
// brush: "html" aliases: []

//	This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
//	Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
//	See <jquery.syntax.js> for licensing details.

Syntax.brushes.dependency('html', 'xml');
Syntax.brushes.dependency('html', 'javascript');
Syntax.brushes.dependency('html', 'css');
Syntax.brushes.dependency('html', 'php-script');
Syntax.brushes.dependency('html', 'ruby');

Syntax.register('html', function(brush) {
	brush.push({
		pattern: /<script.*?type\=.?text\/javascript.*?>((.|\n)*?)<\/script>/gmi,
		matches: Syntax.extractMatches({brush: 'javascript'})
	});
	
	brush.push({
		pattern: /<style.*?type=.?text\/css.*?>((.|\n)*?)<\/style>/gmi,
		matches: Syntax.extractMatches({brush: 'css'})
	});
	
	brush.push({
		pattern: /((<\?php)([\s\S]*?)(\?>))/gm,
		matches: Syntax.extractMatches(
			{klass: 'php-tag', allow: ['keyword', 'php-script']},
			{klass: 'keyword'},
			{brush: 'php-script'},
			{klass: 'keyword'}
		)
	});
	
	brush.push({
		pattern: /((<\?rb?)([\s\S]*?)(\?>))/gm,
		matches: Syntax.extractMatches(
			{klass: 'ruby-tag', allow: ['keyword', 'ruby']},
			{klass: 'keyword'},
			{brush: 'ruby'},
			{klass: 'keyword'}
		)
	});
	
	brush.push({
		pattern: /<%=?(.*?)(%>)/g,
		klass: 'instruction',
		allow: ['string']
	});
	
	brush.push({
		pattern: /<\!(DOCTYPE(.*?))>/g,
		matches: Syntax.extractMatches({klass: 'doctype'})
	});
	
	// Is this rule still relevant?
	brush.push({
		pattern: /(%[0-9a-f]{2})/gi,
		klass: 'percent-escape',
		only: ['html']
	});
	
	// The position of this statement is important - it determines at what point the rules of the parent are processed.
	// In this case, the rules for xml are processed after the rules for html.
	brush.derives('xml');
});

Added help/html/liveradio.html version [e6449ef24c].



























































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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE html>
<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> LiveRadio.ie</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></header><article><div class="hgroup pagewide">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_liveradio.png" class="media media-inline" alt=""></span></span> LiveRadio.ie</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://liveradio.ie/" title="http://liveradio.ie/">//liveradio.ie/</a></span></span></h2>
</div>
<div class="region">
<div class="contents pagewide">
<p class="p">LiveRadio.ie is a station directory from Irish radio enthusiasts. It's
going pretty strong with over 4500 entries and a neat UI. It obviously also
lists international stations. </p>
<p class="p">It doesn't have an API in itself, but utilizes HTML5 microdata. And
the station logos are utilized directly in ST2 as favicons.</p>
</div>
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p"> There's an option for querying LiveRadio.UK instead. This requires
 a Streamtuner2 restart however, and might not be reflected in the UI. </p>
<p class="p"> Responds to the PyQuery (instead of regex) parsing main option. </p>
<p class="p"> Per default fetches 10 pages at once. </p>
</div></div>
</div></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div></section>
</div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div></main></body>
</html>

Modified help/html/modarchive.html from [2c891eaa2a] to [d9ebdeac53].


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
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



69
70
+






+
+
+
+
+
+
-
+

-
-
+
+




-
+
-
-




-
+










-
-
-
+
+
+
















-
-
-
-
+
+
+






-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> The MOD Archive</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_modarchive.png" class="media media-inline" alt=""></span></span> The MOD Archive</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://modarchive.org/" title="http://modarchive.org/">//modarchive.org/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">MODArchive is a collection of module/tracker files. It's a community project, and
        categorizes individual audio files. You'll need a MOD-capable audio player.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">XMP/libxmp</p></li>
<li class="list"><p class="p">MikMod</p></li>
<li class="list"><p class="p">MODPlug for XMMS</p></li>
<li class="list"><p class="p">GModplay</p></li>
<li class="list"><p class="p">VLC (built-in support)</p></li>
</ul></div></div></div>
</div>
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents">
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Audio files are packaged up in ZIP files on MODArchive. 
	While they are different formats (IT, S3M, XM, etc) they'll all
	carry a generic <span class="var">audio/mod+zip</span> type specifier in
	streamtuner2 for configuration:</p>
<div class="table"><div class="inner"><div class="region"><table class="table">
<tr><td colspan="2"><p class="p">Recording apps</p></td></tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p"><span class="var">audio/mod+zip</span></p></td>
<td class="shade" style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">cd ~/Music ; wget %srv</span></p></td>
</tr>
</table></div></div></div>
<p class="p">You can use <span class="cmd">curl</span>, or wrap the command with <span class="cmd">xterm</span>
	(though files are too quick to download).
	A few file managers might be able to open the URLs directly even.
	See <span class="link"><a href="recording.html" title="Recording">recording configuration</a></span> for more examples.</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/myoggradio.html from [9e03599eee] to [a76e84239a].


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
69
70
71
72
73
74
75



76
77
78
79
80
81
82
83

84
85

86
87
88

89
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
69
70
71
72
73
74
75
76
77

78
79

80
81
82
83
84

85
86
87
88
89
90
91
92




93
94
95
96
97
98
99
100
101
102

103
104

105



106
107
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+




-
-
-
+
+
+



-
+
-
-
-
+
+



+
+
+
+
-
-
-
+
+
+

-
-
-
+
+
+





-
+
+
+
+
+
+
+
+
+
+
+
+
+



-
+

-
+




-
+
+






-
-
-
-
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> MyOggRadio</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_myoggradio.png" class="media media-inline" alt=""></span></span> MyOggRadio</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://myoggradio.org/" title="http://myoggradio.org/">//myoggradio.org/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p"><span class="link"><a href="http://MyOggRadio.org/" title="http://MyOggRadio.org/">MyOggRadio</a></span> is an open
source internet radio directory project.</p>
<p class="p">Since it provides its station list as JSON it's very well supported.</p>
</div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Sharing is caring</span></h2></div>
<div class="region"><div class="contents"><p class="p">To help with populating the directory further,
<section id=""><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Sharing is caring</span></h2></div>
<div class="region"><div class="contents pagewide"><p class="p">To help with populating the directory further,
  streamtuner2 provides an option to share radio station links.
  Use the <span class="guiseq"><span class="gui">Station</span> ▸ <span class="gui">Share on MyOggRadio...</span></span>
  context menu entry to upload a selected radio (e.g. from your bookmarks).</p></div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Personal</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Personal</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">The personal section is empty per default. You need to specify a user account
  in the settings dialog, and actually bookmark stations in the MyOggRadio web site.
  Shared entries aren't automatically in the <span class="gui">personal</span> list.</p>
<div class="note note-tip" title="Tip">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m12 2c-3.8541 0-7 3.1459-7 7 0 1.823 0.4945 3.139 1.1641 4.133 0.6695 0.994 1.4328 1.671 2.039 2.471 0.0882 0.116 0.1749 0.656 0.2071 1.32 0.016 0.332 0.0133 0.68 0.1894 1.119 0.0881 0.22 0.2439 0.478 0.5059 0.672 0.2619 0.194 0.6028 0.285 0.8945 0.285h4c0.583 0 1.204-0.478 1.402-0.908 0.199-0.43 0.217-0.793 0.244-1.137 0.056-0.688 0.138-1.319 0.211-1.441 0.549-0.916 1.304-2.009 1.94-3.114 0.636-1.104 1.203-2.199 1.203-3.4 0-3.8541-3.146-7-7-7zm0 2c2.773 0 5 2.2267 5 5 0 0.456-0.359 1.401-0.936 2.402-0.111 0.195-0.246 0.399-0.369 0.598h-7.8825c-0.4871-0.728-0.8125-1.519-0.8125-3 0-2.7733 2.2267-5 5-5z" style="block-progression:tb;color-rendering:auto;color:#000000;image-rendering:auto;isolation:auto;mix-blend-mode:normal;shape-rendering:auto;solid-color:#000000;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"></path>
 <path class="yelp-svg-fill" d="m9 20a0.5 0.5 0 0 0-0.5 0.5 0.5 0.5 0 0 0 0.5 0.5h6a0.5 0.5 0 0 0 0.5-0.5 0.5 0.5 0 0 0-0.5-0.5h-6zm0 2a0.5 0.5 0 0 0-0.5 0.5 0.5 0.5 0 0 0 0.5 0.5h6a0.5 0.5 0 0 0 0.5-0.5 0.5 0.5 0 0 0-0.5-0.5h-6z"></path>
<div class="note note-tip" title="Tip"><div class="inner"><div class="region"><div class="contents"><p class="p">MyOggRadio also has a neat cross-platform player:
  <span class="link"><a href="http://freshcode.club/projects/jmorp" title="http://freshcode.club/projects/jmorp">JMyOggRadioPlayer</a></span>.</p></div></div></div></div>
</div></div>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">MyOggRadio also has a neat cross-platform player:
  <span class="link"><a href="http://freshcode.club/projects/jmorp" title="http://freshcode.club/projects/jmorp">JMyOggRadioPlayer</a></span>.</p></div></div></div>
</div>
</div></div>
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Channel options.</span></h2></div>
<div class="region"><div class="contents"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
</div></section><section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Channel options.</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms"><span class="code">Login settings</span></dt>
<dd class="terms">
<p class="p">If you want to upload station infos to MyOggRadio, you need an account there.
    Registration is free and doesn't require personal information nor email address.
    Specify it as <span class="input">username:password</span> separated with a : colon in this field.</p>
<div class="note note-advanced" title="Advanced"><div class="inner"><div class="region"><div class="contents">
<div class="note note-advanced" title="Advanced">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m5.4473 12.572c-2.039 0.957-3.4473 3.019-3.4473 5.428v4h20v-4c0-2.406-1.406-4.466-3.441-5.424a8 8 0 0 1-6.559 3.424 8 8 0 0 1-6.5527-3.428z"></path>
 <path class="yelp-svg-fill" d="m12 3a5 5 0 0 0-5 5 5 5 0 0 0 5 5 5 5 0 0 0 5-5 5 5 0 0 0-5-5zm0 3a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2z"></path>
 <path class="yelp-svg-fill" d="m15.312 6 3.688 1v2l-3.4688 1z"></path>
 <path class="yelp-svg-fill" d="m14 11.312-1 3.688h-2l-1-3.469z"></path>
 <path class="yelp-svg-fill" d="m10 4.6875 1-3.6875h2l1 3.4688z"></path>
 <path class="yelp-svg-fill" d="m8.6875 10-3.6875-1v-2l3.4688-1z"></path>
 <path class="yelp-svg-fill" d="m12.928 4.2435 3.3146-1.9003 1.4142 1.4142-1.7457 3.1599z"></path>
 <path class="yelp-svg-fill" d="m15.757 8.9281 1.9003 3.3146-1.4142 1.4142-3.1599-1.7457z"></path>
 <path class="yelp-svg-fill" d="m8.2435 7.0719-1.9004-3.3145 1.4143-1.4143 3.1596 1.7457z"></path>
 <path class="yelp-svg-fill" d="m11.072 11.757-3.3146 1.9-1.4143-1.414 1.7457-3.1602z"></path>
</svg><div class="inner"><div class="region"><div class="contents">
<p class="p">Alternatively you can store your account settings in the central
      <span class="file">~/.netrc</span> config file. Or in <span class="file">~/.config/netrc</span> even.</p>
<p class="p">Your entry for MyOggRadio should follow the common format:</p>
<div class="code"><pre class="contents ">machine myoggradio.org
<div class="code"><pre class="contents"><code>machine myoggradio.org
    login usr123
    password pw123</pre></div>
    password pw123</code></pre></div>
<p class="p">Which is useful because it's a standard format, and prevents
      leaking authorization data into per-application config stores.
      Note that a user:pw setting in streamtuner still takes precedence
      however.</p>
</div></div></div></div>
</div></div></div>
</div>
</dd>
<dt class="terms"><span class="code">stream URL format</span></dt>
<dd class="terms"><p class="p">When uploading stations, the streaming URL can be converted into
    raw/direct server address. When undefined, station URLs are left as
    .M3U/.PLS link.</p></dd>
</dl></div></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Added help/html/peertube.html version [95e03cd09d].




































































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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE html>
<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> Peertube</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></header><article><div class="hgroup pagewide">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_peertube.png" class="media media-inline" alt=""></span></span> Peertube</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://joinpeertube.org/" title="http://joinpeertube.org/">//joinpeertube.org/</a></span></span></h2>
</div>
<div class="region">
<div class="contents pagewide">
<p class="p">PeerTube is a federated video hosting network. And this channel
	allows you to browse /Music and other categories. It's not quite a
	very rich ecosystem yet, but very international. So perhaps worth a
	lookaround.</p>
<p class="p">The category list seeems to be uniform across most Peertube
	instances. So you only need to reload stations/videos once switching
	the address in the settings. </p>
<p class="p">Per default you should use VLC and 
        <span class="link"><a href="http://youtube-dl.org/" title="http://youtube-dl.org/">youtube-dl</a></span> in the
	playback settings. Per default the faux mime type <span class="cmd">video/youtube</span>
	is used for all listings. However, internally there's a lookup for
	an .m3u or direct .mp4 link already. So the <span class="cmd">video/*</span> entry should
	also be populated.</p>
</div>
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Channel options.</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms"><span class="code">🔠 Peertube server</span></dt>
<dd class="terms"><p class="p">Sets the main isntance to query video listings from. Now most
	    of the other sites will be peered, so the main server doesn't
	    have that much influence. It changes the ordering however, and
            will reveal more local videos or languages often.</p></dd>
</dl></div></div></div></div></div>
</div></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div></section>
</div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div></main></body>
</html>

Modified help/html/playing.html from [248a899bd6] to [0ad6a25126].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+






-
-
-
+

-
+














-
-
-
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>Playing</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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> » </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#browsing" title="Browsing channels and radio stations">Browsing channels and radio stations</a> » <a class="trail" href="streams.html" title="Streams / Stations">Streams / Stations</a> › <a class="trail" href="streams.html#actions" title="Actions">Actions</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#functions" title="Functions">Functions</a> » </div>
</div></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Playing</span></h1></div>
</div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Playing</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">To start playing a station, you can:</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">Just <span class="em">double click</span> an entry.</p></li>
<li class="list"><p class="p">Use the <span class="key"><kbd>▶ play</kbd></span> toolbar button.</p></li>
<li class="list"><p class="p">Right click for the context menu and the <span class="key"><kbd>play</kbd></span> action.</p></li>
<li class="list"><p class="p">Drag and drop it directly into your audio player. (Only on U*ix/X11 systems)</p></li>
<li class="list"><p class="p">Save it (<span class="key"><kbd>F2</kbd></span>) to a playlist file, then start your player with that.</p></li>
</ul></div></div></div>
<p class="p">In streamtuner2 you can configure different audio players for different audio
        formats (MP3 or OGG). In the <span class="link"><a href="config_apps.html" title="Audio players">Apps</a></span> section of the
        <span class="link"><a href="configuration.html" title="Configuration / Settings dialog">settings dialog</a></span>, you can associate one player
        with each audio file (MIME) type. Nowadays you can often configure the same player
        for all audio (and even video) types.</p>
</div>
<div class="sect sect-links" role="navigation">
<div class="hgroup"></div>
<div class="contents"><div class="links guidelinks"><div class="inner">
<section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="streams.html#actions" title="Actions">Actions</a></li>
<li class="links "><a href="index.html#browsing" title="Browsing channels and radio stations">Browsing channels and radio stations</a></li>
<li class="links "><a href="index.html#functions" title="Functions">Functions</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/pluginmanager2.html from [88aaf76b41] to [359adad2bb].


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
69
70
71
72
73
74
75
76


77
78
79
80



81
82
83

84
85
86
87
88
89
90



91
92
93
94

95
96

97
98
99

100
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

69




70
71
72
73
74
75
76
77

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95


96
97
98



99
100
101
102
103

104
105
106
107




108
109
110
111
112
113

114
115

116



117
118
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+
















+
+
+
+
-
+

-
-
+
+
+



-
+

-
-
-
+
+
+















-
+
-
-
-
-
+
+
+
+
+



-
+
+
+
+
+
+
+
+
+
+
+







-
-
+
+

-
-
-
+
+
+


-
+



-
-
-
-
+
+
+



-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>Plugin Manager 2 - 📦 Add </title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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#extra" title="Additional features">Additional features</a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">For updating or installing new plugins (extra channels or
	features), there's a user plugin manager. It's available as
	feature extension itself.</p>
<div class="steps"><div class="inner"><div class="region"><ol class="steps">
<li class="steps"><p class="p">See the <span class="key"><kbd>F12</kbd></span> config dialog <span class="key"><kbd>🔌 Feature</kbd></span> section.</p></li>
<li class="steps"><p class="p">Enable the <span class="key"><kbd>⨯</kbd></span> Plugin Manager (listed near the end).</p></li>
<li class="steps"><p class="p">Restart streamtuner2 one last time for this change to take effect.</p></li>
</ol></div></div></div>
<p class="p">Once activated it brings up a new <span class="key"><kbd>📦 Add</kbd></span> tab
	in the configuration window.</p>
<p class="p"><span class="media"><span class="media media-image"><img src="img/pluginmanager2.png" class="media media-inline" alt="Install dialog for user plugins"></span></span></p>
<p class="p">You can scan for available/new plugins there. And have them
	downloaded right away. New plugins are just downloaded, not
	implictly enabled. Reopen the config dialog to see them in the
	regular <span class="key"><kbd>📻 Channels</kbd></span> or <span class="key"><kbd>🔌 Feature</kbd></span> tabs, and
	then enable them.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">Updated plugin versions won't be instantiated right away
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">Updated plugin versions won't be instantiated right away
	if they've been active already. That requires either a restart.
	Or disabling + saving once, then reenabling them.</p></div></div></div></div>
<div class="links topiclinks"><div class="inner"><div class="region">
	Or disabling + saving once, then reenabling them.</p></div></div></div>
</div>
<div class="links topiclinks"><div class="inner"><div class="region"><div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="configuration.html#plugins" title="Channel and feature plugins and settings"><span class="title">Channel and feature plugins and settings</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="contrib_channels.html" title="→ Contrib/Extra Channels"><span class="title">→ Contrib/Extra Channels</span><span class="linkdiv-dash"> — </span><span class="desc">Downloadable channel plugins</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="contrib_features.html" title="→ Feature plugins"><span class="title">→ Feature plugins</span><span class="linkdiv-dash"> — </span><span class="desc">Additional feature plugins</span></a></div>
</div></div></div>
</div></div></div></div>
</div>
<div id="configuration" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents"><div class="list"><div class="inner"><div class="region"><ul class="list">
<section id="configuration"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">Alternative download repositories may be configured. (Little
	practical value at the moment.)</p></li>
<li class="list">
<p class="p">And you can let the plugin manager handle ☑ autoactivation
	of changed plugin states.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">After reconfiguring existing channel plugins, they get
   	  automatically instantiated or disabled in the user interface.
   	  (Which avoids the usual restart).</p></li>
<li class="list"><p class="p">This currently doesn't work with feature/core
   	  plugins. Plugin deactivation is mostly visual, but does not undo
   	  menu extensions or undefine callback hooks.</p></li>
</ul></div></div></div>
</li>
</ul></div></div></div></div></div>
</div></div>
</div></section><section id="userplugins"><div class="inner">
<div id="userplugins" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">User plugins</span></h2></div>
<div class="region"><div class="contents">
<p class="p">Downloaded plugins are stored in <span class="file">~/.config/streamtuner2/plugins/</span>.
<div class="hgroup pagewide"><h2 class="title"><span class="title">User plugins</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Downloaded plugins are stored in <span class="file">~/.config/streamtuner2/plugins/</span>
	(not in <span class="file">~/.cache</span>, because they're sort of configuration
	and should be backed up in case of local modifications).
	To remove them, delete the individual *.py files there manually. But
	keep the <span class="file">__init__.py</span> stub.</p>
<p class="p">On Windows they're stored in <span class="file">%APPDATA%\streamtuner2\plugins\</span>.</p>
<div class="note note-bug" title="Bug"><div class="inner"><div class="region"><div class="contents">
<div class="note note-bug" title="Bug">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m7 8v7h0.0078a5 6.3027 0 0 0 3.9922 5.867v-6.867h2v6.871a5 6.3027 0 0 0 3.988-5.871h0.012v-7h-10z"></path>
 <path class="yelp-svg-fill" d="m12 3a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4z"></path>
 <path class="yelp-svg-fill" d="m16 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m9.2045 16.361h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m21.704 4.2894h6v1h-6z"></path>
 <path class="yelp-svg-fill" d="m2 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m5.5801 4.3612h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m-6.9199 16.289h6v1h-6z"></path>
</svg><div class="inner"><div class="region"><div class="contents">
<p class="p">Core plugins (those which are installed
	system-wide) can often also be updated. The user-saved plugin will
	take precedence after a restart. However the version number in
	PluginManager2 still shows the system-installed/older version
	regardless.</p>
<p class="p">So you'll have to take care to eventually refresh/delete outdated user plugins,
	whenever you install a newer Streamtuner2 version.</p>
</div></div></div></div>
</div></div>
</div></div></div>
</div>
</div></div>
<div id="disable" class="sect"><div class="inner">
<div class="hgroup"><h3 class="subtitle"><span class="subtitle">Disable user plugin loading</span></h3></div>
<div class="region"><div class="contents">
</div></section><section id="disable"><div class="inner">
<div class="hgroup pagewide"><h3 class="subtitle"><span class="subtitle">Disable user plugin loading</span></h3></div>
<div class="region"><div class="contents pagewide">
<p class="p">Since this is still rather experimental, you may disable all
	associated features by starting ST2 via:</p>
<div class="screen"><pre class="contents ">streamtuner2 -d <span class="input">pluginmanager2</span></pre></div>
<div class="screen"><pre class="contents"><code>streamtuner2 -d <span class="input">pluginmanager2</span></code></pre></div>
<p class="p">Which inhibits loading this whole extension. (The <span class="code">-d</span>
	flag also works	for any other plugin name.)</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/radiobrowser.html from [426469a7b0] to [b4b43078ae].


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

69
70

71
72
73

74
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
69





70
71
72
73
74
75
76
77
78
79
80
81

82
83

84



85
86
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+

















-
-
-
+
+
+




+
-
+
+
+
+
+

-
-
-
+
+
+
+
+
+
+


-
-
-
-
-
+
+
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> Radio-Browser</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_radiobrowser.png" class="media media-inline" alt=""></span></span> Radio-Browser</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://radio-browser.info/" title="http://radio-browser.info/">//radio-browser.info/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Radio-Browser is an ambitious community project. It collects as many
public internet radio stations as possible. It's free to use, has a well
documented API, with a simple JSON interface.</p>
<p class="p">It's now the backend in many open source music players:</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">Rhythmbox (for which it was originally intended)</p></li>
<li class="list"><p class="p">Streamtuner2 (obviously)</p></li>
<li class="list"><p class="p">RadioDroid (Android)</p></li>
<li class="list"><p class="p">DreamBox plugin</p></li>
<li class="list"><p class="p">Musicbox (Android)</p></li>
<li class="list"><p class="p">Gradio</p></li>
<li class="list"><p class="p">Kodi/XBMC</p></li>
</ul></div></div></div>
<p class="p">Since v0.3 (in streamtuner2 2.2.0) you can now also share your favorite
stations directly. There's a new <span class="guiseq"><span class="gui">context menu</span> ▸ <span class="gui">Share in
Radio-Browser</span></span>.</p>
</div>
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents">
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p"> Instead of browsing by genres, you can switch to languages or
 countries.</p>
<p class="p"> Note that you'll have to use <span class="guiseq"><span class="gui">Channel</span> ▸ <span class="gui">Reload Category Tree (F5)</span></span>
 again to update the category view.</p>
<p class="p"> The API server option lets you predefine a more local cache to be used
</div></div>
 for station list queries.</p>
<p class="p"> And "Minimum stations to list a category" can be used to filter out
 fringe/sparsely populated genres - on using <span class="guiseq"><span class="gui">Channel</span> ▸ <span class="gui">Reload Category Tree (F5)</span></span>. Typically 15 should be okay,
 or 150 if you want to see only major categories. Else the category list
 would become around a thousand entries.</p>
</div></div>
<div id="advertisment" class="sect"><div class="inner">
<div class="hgroup"></div>
<div class="region"><div class="contents"><div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p"> With <span class="link"><a href="https://play.google.com/store/apps/details?id=net.programmierecke.radiodroid2" title="https://play.google.com/store/apps/details?id=net.programmierecke.radiodroid2">RadioDroid</a></span>
</div></section><section id="advertisment"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="region"><div class="contents pagewide"><div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p"> With <span class="link"><a href="https://play.google.com/store/apps/details?id=net.programmierecke.radiodroid2" title="https://play.google.com/store/apps/details?id=net.programmierecke.radiodroid2">RadioDroid</a></span>
 there's a mobile version to access and play from radio-browser.info
 directly. Get it on <span class="link"><a href="https://f-droid.org/forums/topic/radiodroid/" title="https://f-droid.org/forums/topic/radiodroid/">F-Droid</a></span>
 or the Play store.</p></div></div></div></div></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">
 or the Play store.</p></div></div></div>
</div></div></div>
</div></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/radionomy.html from [61d48708a5] to [9208d61be7].


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
69

70
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
69

70



71
72
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+













-
-
-
+
+
+












-
-
-
-
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> Radionomy</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_radionomy.png" class="media media-inline" alt=""></span></span> Radionomy</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://radionomy.com/" title="http://radionomy.com/">//radionomy.com/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Radionomy is an internet radio streaming provider, orginally
founded in Belgium.  It commands a pretty big slice of the worldwide
internet radio stuff these days. - It took over Shoutcast.com for
instance.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">Its directory contains over 6000 stations already, all of them hosted by Radionomy directly.</p></li>
<li class="list"><p class="p">This plugin uses a mixture of RegExp/DOM extraction, JSON reading, and simulated AJAX queries to fetch station lists.</p></li>
<li class="list"><p class="p">Station logos are 25x25px large, and directly fetched from radionomy.com as well.</p></li>
</ul></div></div></div>
<p class="p">Both listening and station hosting are free (given agreement
to autoplay advertisements, and a minimum quota of daily listeners). 
Radionomy is therefore pretty popular and growing.</p>
</div>
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents"><div class="list"><div class="inner"><div class="region"><ul class="list">
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list">
<div class="title title-item"><h3><span class="title">🔟 Number of pages</span></h3></div>
<p class="p"> You can configure the number of pages it'll try (<span class="key"><kbd>3</kbd></span> by
  default) to influence the length of station lists.</p>
</li>
<li class="list">
<div class="title title-item"><h3><span class="title">☑ OnAir updates</span></h3></div>
<p class="p"> And the song title updating can be disabled (for speedier loading).
  Future versions of this channel plugin might poll it automatically,
  and keep the station list auto-updated.</p>
</li>
</ul></div></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/recording.html from [0ec4fd2fce] to [01fc39cbce].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+






-
-
-
+

-
+







-
-
-
+
+
+







<!DOCTYPE html>
<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>Recording</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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="streams.html" title="Streams / Stations">Streams / Stations</a> › <a class="trail" href="streams.html#actions" title="Actions">Actions</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#functions" title="Functions">Functions</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#functions" title="Functions">Functions</a> » <a class="trail" href="configuration.html" title="Configuration / Settings dialog">Configuration / Settings dialog</a> › <a class="trail" href="configuration.html#recording" title="Recording Apps">Recording Apps</a> » </div>
</div></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Recording</span></h1></div>
</div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Recording</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Most stations that stream MP3 or OGG music can be recorded. This is
accomplished through the command-line tool <span class="app">streamripper</span>.  If you
select a station and press <span class="gui"><span class="key"><kbd>●</kbd></span> record</span>, a console
window should appear, where streamripper shows its progress.</p>
<p class="p">You can <span class="link"><a href="configuration.html" title="Configuration / Settings dialog">configure the recording tool</a></span>
according to audio types again. Usually you want to use the <span class="link"><a href="config_apps.html#placeholders" title="URL placeholders"><span class="cmd">%srv</span> placeholder</a></span>.</p>
</div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Streamripper</span></h2></div>
<div class="region"><div class="contents">
<section id=""><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Streamripper</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">There's already a default entry for recording radio stations:</p>
<div class="table"><div class="inner"><div class="region"><table class="table">
<thead><tr>
<td><p class="p">Format</p></td>
<td style="border-left-style: solid;"><p class="p">Application</p></td>
</tr></thead>
<tr>
61
62
63
64
65
66
67
68

69
70
71


72
73
74
75
76
77

78
79
80


81
82
83
84
85
86
87
88
89
90
91
92
93

94
95
96


97
98
99
100
101
102

103
104
105


106
107
108
109
110
111
112
66
67
68
69
70
71
72

73



74
75
76
77
78
79
80

81



82
83
84
85
86
87
88
89
90
91
92
93
94
95

96



97
98
99
100
101
102
103

104



105
106
107
108
109
110
111
112
113







-
+
-
-
-
+
+





-
+
-
-
-
+
+












-
+
-
-
-
+
+





-
+
-
-
-
+
+







</ol></div></div></div>
<p class="p">Whenever you leave out the <span class="cmd">xterm</span> prefix, it runs silently in the background.
Common xterm alternatives are <span class="cmd">x-terminal-emulator</span>, or <span class="cmd">rxvt</span>,
<span class="cmd">gnome-terminal</span>, and <span class="cmd">xfce4-terminal</span> etc.</p>
<p class="p">See the streamripper(1) man page or its
<span class="link"><a href="http://streamripper.sourceforge.net/faq.php" title="http://streamripper.sourceforge.net/faq.php">FAQ</a></span> for more tips.</p>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">fIcy/fPls</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">fIcy/fPls</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">As alternative to streamripper, check out <span class="link"><a href="http://freshcode.club/projects/ficy" title="http://freshcode.club/projects/ficy">fIcy/fPls</a></span>
for recording ICEcast/SHOUTcast streaming servers.</p>
<p class="p">It can be configured just as easily with:</p>
<div class="steps"><div class="inner"><div class="region"><ol class="steps"><li class="steps"><p class="p"><span class="cmd">xterm -e "fPls %pls"</span></p></li></ol></div></div></div>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Graphical stream recording tools</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Graphical stream recording tools</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">You can also try a streamripper GUI or graphical
reimplementation:</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p"><span class="link"><a href="http://sourceforge.net/projects/stripper/" title="http://sourceforge.net/projects/stripper/">StreamRipStar</a></span> (Java), works best per drag and drop; set the DND format to PLS or M3U however.</p></li>
<li class="list"><p class="p"><span class="link"><a href="http://launchpad.net/streamtastic" title="http://launchpad.net/streamtastic">Streamtastic</a></span> (Java), only imports a text entry per drag and drop.</p></li>
<li class="list"><p class="p"><span class="link"><a href="http://kstreamripper.sourceforge.net/" title="http://kstreamripper.sourceforge.net/">KStreamRipper</a></span>, though no current version in distros.</p></li>
<li class="list"><p class="p">VLC has built-in recording capabilities.</p></li>
</ul></div></div></div>
<p class="p">Which all simplify defining a custom download directory, or how radio
streams are split (between advertisement breaks), and the naming scheme
for resulting *.mp3 filenames of course.</p>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Youtube-DL</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Youtube-DL</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">The recording settings already have a specific entry for "video/youtube" URLs.</p>
<p class="p">To configure a custom download directory, use:</p>
<div class="steps"><div class="inner"><div class="region"><ol class="steps"><li class="steps"><p class="p"><span class="cmd">xterm -e "cd /media/music ; youtube-dl %srv"</span></p></li></ol></div></div></div>
<p class="p">The <span class="cmd">cd</span> trick also works with streamripper, or other tools.</p>
</div></div>
</div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Wget for MOD files</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Wget for MOD files</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">To download audio files from The MOD Archive directly, you can also
define a custom handler.</p>
<div class="steps"><div class="inner"><div class="region"><ol class="steps">
<li class="steps"><p class="p">Scroll/click on the ⎘ empty row in the recording application list.</p></li>
<li class="steps">
<p class="p">There create a new recording MIME type:</p>
<div class="list"><div class="inner"><div class="region"><ul class="list"><li class="list"><p class="p"><span class="var">audio/mod+zip</span></p></li></ul></div></div></div>
120
121
122
123
124
125
126
127
128
129
130



131
132
133
134
135
136
137
138

139
140

141
142
143

144
121
122
123
124
125
126
127




128
129
130
131
132
133
134
135
136
137

138
139

140



141
142







-
-
-
-
+
+
+







-
+

-
+
-
-
-
+

</ul></div></div></div>
</li>
</ol></div></div></div>
<p class="p">
All MOD file formats (IT, XM, S3M, etc.) are mapped to this generic type specifier.
</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="streams.html#actions" title="Actions">Actions</a></li>
<li class="links "><a href="index.html#functions" title="Functions">Functions</a></li>
<li class="links "><a href="configuration.html#recording" title="Recording Apps">Recording Apps</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/reddit.html from [522e0149eb] to [8fc7c18c7e].


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
69
70
71
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
69
70
71
72
73
74
75
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+



















-
-
-
+
+
+














-
+
-
-
-
+
+







<!DOCTYPE html>
<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> Reddit</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_reddit.png" class="media media-inline" alt=""></span></span> Reddit</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://reddit.com/r/Music" title="http://reddit.com/r/Music">//reddit.com/r/Music</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Reddit (AKA "the frontpage of the internet") is a social media website.
Among its various sections is a large group of music subreddits.
Most of them link popular or novel Youtube music/videos, or user-produced
content etc.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">Around <span class="em">620</span> subreddits are queried. That's just a selected part
  though. Most others do not see as many audio posts / or are just for
  discussion and news.</p></li>
<li class="list"><p class="p">Besides youtube/mp3 files, this channel may also
  list Soundcloud/Mixcloud/Bandcamp links.</p></li>
<li class="list"><p class="p"><span class="link"><a href="http://radioreddit.com/" title="http://radioreddit.com/">Radioreddit.com</a></span>
  even provides streaming servers. Its categories are: main, random,
  rock, metal, indie, electronic, hiphop, talk, festival.</p></li>
<li class="list"><p class="p">Thumbnails are slightly larger (32x26) than regular favicons.</p></li>
<li class="list"><p class="p">All entries also show poster name and user votes.</p></li>
</ul></div></div></div>
<p class="p">See the config options if you want to keep regular webpage posts - instead
of just showing playable content.</p>
</div>
<div id="statusicons" class="sect"><div class="inner">
<div class="hgroup"><h3 class="subtitle"><span class="subtitle">Status icons</span></h3></div>
<div class="region"><div class="contents">
<section id="statusicons"><div class="inner">
<div class="hgroup pagewide"><h3 class="subtitle"><span class="subtitle">Status icons</span></h3></div>
<div class="region"><div class="contents pagewide">
<p class="p">Station entries may contain a status icon (leftmost; where usually
the bookmarks ✩ star goes).
It's a quick indicator of what type of content is linked:</p>
<div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms">▶</dt>
<dd class="terms"><p class="p">Directly playable entry (MP3, MP4, Youtube, MIDI)</p></dd>
<dt class="terms">▶▶</dt>
<dd class="terms"><p class="p">Walled garden (Soundcloud, Spotify, Bandcamp, Mixcloud) → playable</p></dd>
<dt class="terms">▮▮</dt>
<dd class="terms"><p class="p">Walled gardens without playback handler.</p></dd>
<dt class="terms">📄</dt>
<dd class="terms"><p class="p">Just a web-link. Those are kept with the ☒ keep all option.</p></dd>
</dl></div></div></div>
</div></div>
</div></div>
</div></section><section id="options"><div class="inner">
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">There's a few options for the reddit plugin:</p>
<div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms"><span class="code">🔟  Number of pages to fetch </span></dt>
<dd class="terms"><p class="p">Influences how many JSON requests are made to assemble a list of
    subreddit posts with playable content. (For this plugin that's
    configurable, because counting streams wouldn't work as reddit
    result lists vary wildly in their usable links.)</p></dd>
105
106
107
108
109
110
111




112

113
114
115
116


117
118
119
120



121
122
123
124
125
126
127
128

129
130

131
132
133

134
109
110
111
112
113
114
115
116
117
118
119

120
121
122


123
124
125



126
127
128
129
130
131
132
133
134
135

136
137

138



139
140







+
+
+
+
-
+


-
-
+
+

-
-
-
+
+
+







-
+

-
+
-
-
-
+

</dd>
<dt class="terms"><span class="code">☑ Keep all web links </span></dt>
<dd class="terms"><p class="p">Besides audio/video links, some subreddits link to album art or
    are just news feeds. Enable the "keep all" option to retain them.
    Such entries will open in your web browser instead of an audio player,
    of course.</p></dd>
</dl></div></div></div>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">To utilize Soundcloud links, there's an <span class="link"><a href="contrib_features.html" title="→ Feature plugins">extra url_soundcloud plugin</a></span>. 
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">To utilize Soundcloud links, there's an <span class="link"><a href="contrib_features.html" title="→ Feature plugins">extra url_soundcloud plugin</a></span>. 
 It overrides the <span class="file">audio/soundcloud</span> player config, and
 resolves such streams to MP3 urls (session typically times out
 quickly, so no bookmarking/export possible etc).</p></div></div></div></div>
</div></div>
 quickly, so no bookmarking/export possible etc).</p></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/reloading.html from [4ed418b840] to [b2fa882066].


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
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
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+








-
-
-
+
+
+



-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>Reloading</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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="streams.html" title="Streams / Stations">Streams / Stations</a> › <a class="trail" href="streams.html#actions" title="Actions">Actions</a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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="streams.html" title="Streams / Stations">Streams / Stations</a> › <a class="trail" href="streams.html#actions" title="Actions">Actions</a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Reloading</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Reloading</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Station information can get stale. Especially Shoutcast invalidates old information
        frequently. Therefore you have to <span class="gui"><span class="key"><kbd>↻</kbd></span> Reload</span> the lists.
        There is an action button below the menu bar for this.
        It retrieves the current data from the directory service.</p>
<p class="p">Favicons aren't loaded automatically. There is a menu entry in Channels for that, which
        works in the background and doesn't display the new icons automatically either. Simply
        reselect the category/genre in the left pane. Or again, use the station reload button.</p>
</div>
<div class="sect sect-links" role="navigation">
<div class="hgroup"></div>
<div class="contents"><div class="links guidelinks"><div class="inner">
<section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="streams.html#actions" title="Actions">Actions</a></li></ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/saving.html from [45b4666dff] to [6bd0cc06e7].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+




-
-
-
+

-
+







+
+
+
+
-
+


-
+

+
-
-
-
+
+
+






-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>Saving</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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="streams.html" title="Streams / Stations">Streams / Stations</a> › <a class="trail" href="streams.html#actions" title="Actions">Actions</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#functions" title="Functions">Functions</a> » </div>
</div></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Saving</span></h1></div>
</div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Saving</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">You can export the currently selected stream using
	<span class="guiseq"><span class="gui">Station</span> ▸ <span class="gui">Save</span></span> or by pressing
	<span class="key"><kbd>F2</kbd></span>.  A file dialog opens, where you can adapt the title.
	</p>
<p class="p">The extension of the filename decides on the saved link format.  Per
	default a .m3u file is created, because that's what most audio players
	understand.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p"> You can also save in <span class="file">.pls</span> or <span class="file">.xspf</span>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p"> You can also save in <span class="file">.pls</span> or <span class="file">.xspf</span>
	or <span class="file">.asx</span> or <span class="file">.smil</span> format.  In current
	releases the file extension is automatically adapted when changing
	the filter dropdown (bottom right corner in the file dialog). </p></div></div></div></div>
	the filter dropdown (bottom right corner in the file dialog). </p></div></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">
<section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="streams.html#actions" title="Actions">Actions</a></li>
<li class="links "><a href="index.html#functions" title="Functions">Functions</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/search.html from [36f7458303] to [436b875106].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+








-
-
-
+

-
-
-
-
+
+
+
+


-
+
-
-
-
+
+







<!DOCTYPE html>
<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>Searching</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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="streams.html" title="Streams / Stations">Streams / Stations</a> › <a class="trail" href="streams.html#actions" title="Actions">Actions</a> » <a class="trail" href="bookmarks.html" title="Bookmarks">Bookmarks</a> › <a class="trail" href="bookmarks.html#other" title="Subcategories">Subcategories</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#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> » <a class="trail" href="bookmarks.html" title="Bookmarks">Bookmarks</a> › <a class="trail" href="bookmarks.html#other" title="Subcategories">Subcategories</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> » <a class="trail" href="bookmarks.html" title="Bookmarks">Bookmarks</a> › <a class="trail" href="bookmarks.html#other" title="Subcategories">Subcategories</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#functions" title="Functions">Functions</a> » </div>
</div></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Searching</span></h1></div>
</div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Searching</span></h1></div>
<div class="region">
<div class="contents"><p class="p">There are two search functions.</p></div>
<div id="quicksearch" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Quick search</span></h2></div>
<div class="region"><div class="contents"><p class="p">Just enter text into the quick search box atop. Streamtuner2 will instantly highlight
<div class="contents pagewide"><p class="p">There are two search functions.</p></div>
<section id="quicksearch"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Quick search</span></h2></div>
<div class="region"><div class="contents pagewide"><p class="p">Just enter text into the quick search box atop. Streamtuner2 will instantly highlight
	any matches in the current stations view. If you switch tabs, just click the glass icon
	to reapply the highlighting.</p></div></div>
</div></div>
</div></section><section id="cachesearch"><div class="inner">
<div id="cachesearch" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Search window</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Search window</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">You can get to the search dialog via <span class="guiseq"><span class="gui">Edit</span> ▸ <span class="gui">Find</span></span> or <span class="key"><kbd>Ctrl</kbd></span>+<span class="key"><kbd>F</kbd></span>.  Centrally
	to this dialog is a text field, where you can specify the phrase
	to scan for.</p>
<div class="media media-image"><div class="inner"><img src="img/search.png" class="media media-block" alt=""></div></div>
<p class="p">It either will search in:</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p"><span class="gui">☐ all channels</span></p></li>
56
57
58
59
60
61
62
63
64
65
66



67
68
69
70
71
72
73

74
75

76
77
78

79
60
61
62
63
64
65
66




67
68
69
70
71
72
73
74
75

76
77

78



79
80







-
-
-
-
+
+
+






-
+

-
+
-
-
-
+

<div class="title title-item"><h3><span class="title"><span class="key"><kbd>Cache find</kbd></span></span></h3></div>
<p class="p">While <span class="gui">cache find</span> would just look up entries in your
         already downloaded channel/genre lists.  This is sufficient when
         you're just looking for something previously seen/listened to.</p>
</li>
</ul></div></div></div>
</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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#functions" title="Functions">Functions</a></li>
<li class="links "><a href="bookmarks.html#other" title="Subcategories">Subcategories</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/shoutcast.html from [f759284b96] to [4cbc1dbe00].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+




-
+
-
-




-
+













-
-
-
+
+
+






-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> Shoutcast</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_shoutcast.png" class="media media-inline" alt=""></span></span> Shoutcast</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://shoutcast.com/" title="http://shoutcast.com/">//shoutcast.com/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">SHOUTcast is the name of a MP3 streaming server software. It automatically collects all
	station lists on shoutcast.com.
        </p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">Station entries usually provide current playing information.</p></li>
<li class="list"><p class="p">Stream links are plain <span class="link"><a href="pls.html" title="pls">PLS files</a></span>.</p></li>
<li class="list"><p class="p">Genres are subcategorized, so the main groups in the category
		list must be expanded to see the interesting entries.</p></li>
</ul></div></div></div>
<p class="p">Since being sold from AOL to Radionomy, the directory got cut down. There are no longer
        entries for currently played songs, and homepage links are largely gone. Hencewhy the
        Shoutcast channel is no longer considered a primary feature.</p>
</div>
<div class="sect sect-links" role="navigation">
<div class="hgroup"></div>
<div class="contents"><div class="links guidelinks"><div class="inner">
<section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/somafm.html from [3d65961af9] to [e2102a92fa].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+


+
+
+
+
-
-
+
+

+
-
-
-
+
+
+






-
-
-
-
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> SomaFM</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_somafm.png" class="media media-inline" alt=""></span></span> SomaFM</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://somafm.com/" title="http://somafm.com/">//somafm.com/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">SomaFM is a small radio station network. It provides its own
	unique channels. Which streamtuner2 shows in a static list.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">SomaFM is a non-commercial and ad-free provider. It
        strongly depends on listener donations.</p></div></div></div></div>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">SomaFM is a non-commercial and ad-free provider. It
        strongly depends on listener donations.</p></div></div></div>
</div>
</div>
<div id="configuration" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Bitrate configuration</span></h2></div>
<div class="region"><div class="contents">
<section id="configuration"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Bitrate configuration</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">It provides streaming links in different audio formats. Only
	AAC64 is guaranteed to be available for all. Other bitrates depend
	on the station.</p>
<p class="p">After reconfiguring the bitrate/format, you can <span class="link"><a href="reloading.html" title="Reloading">Reload</a></span> the station list to update them. 
	Otherwise refreshing has no effect.</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/specbuttons.html from [1f631d0f0a] to [a440dc5f47].


1
2
3
4
5
6






7

8
9
10
11



12
13
14
15

16
17
18
19
20
21
22
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
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+







<!DOCTYPE html>
<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>Special extra/mini buttons</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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#extra" title="Additional features">Additional features</a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Special extra/mini buttons</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Special extra/mini buttons</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Using the specbuttons plugin, you can define additional
	shortcuts. This is meant as convenience - allows to start
	other audio apps or system controls from within streamtuner2.</p>
<p class="p"><span class="media"><span class="media media-image"><img src="img/specbuttons.png" class="media media-inline" alt=""></span></span></p>
<p class="p">The settings list can be found with the plugin options in the
	<span class="key"><kbd>🔌 Features</kbd></span> tab.  It follows the layout of the player/recording
	configuration.  Except that it lists icons and their according
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
69
70
71

72
73
74


75
76
77
78
79
80
81
82
83
84

85
86
87


88
89
90










91

92
93
94
95


96
97
98
99



100
101
102
103

104
105

106
107
108

109
49
50
51
52
53
54
55



56
57
58
59
60
61
62

63



64
65
66
67
68
69
70
71
72
73
74

75



76
77
78
79
80
81
82
83
84
85
86

87



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

103
104
105


106
107
108



109
110
111
112
113
114

115
116

117



118
119







-
-
-
+
+
+




-
+
-
-
-
+
+









-
+
-
-
-
+
+









-
+
-
-
-
+
+



+
+
+
+
+
+
+
+
+
+
-
+


-
-
+
+

-
-
-
+
+
+



-
+

-
+
-
-
-
+

</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p"><span class="app">./import.png</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">audacity %pls</span></p></td>
</tr>
</table></div></div></div>
</div>
<div id="gtk-icons" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">gtk-icons</span></h2></div>
<div class="region"><div class="contents"><p class="p">Note that the icon name can also be that of a Gtk-builtin icon. Their
<section id="gtk-icons"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">gtk-icons</span></h2></div>
<div class="region"><div class="contents pagewide"><p class="p">Note that the icon name can also be that of a Gtk-builtin icon. Their
        names always start with "<span class="app">gtk-</span>" - for example "<span class="app">gtk-cancel</span>". You can
        find a list of all available builtins under
        <span class="link"><a href="http://www.pygtk.org/pygtk2reference/gtk-stock-items.html" title="http://www.pygtk.org/pygtk2reference/gtk-stock-items.html">http://www.pygtk.org/pygtk2reference/gtk-stock-items.html</a></span>.
        They usually match your Gtk theme though.</p></div></div>
</div></div>
</div></section><section id="png-icons"><div class="inner">
<div id="png-icons" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">PNG icons</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">PNG icons</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">In case you enter something like "<span class="app">player</span>", the icon name will be
	searched for and expanded to an absolute PNG filename. For example
        "<span class="file">totem</span>" might become <span class="file">/usr/share/icons/HighContrast/16x16/apps/totem.png</span>.</p>
<p class="p">This won't always yield the exact icon / theme / or size you wanted. So it's
	sometimes necessary to look up the complete path yourself.
	So you might want search them manually <span class="cmd">locate /usr/shar/icons |
	grep "volume"</span> to pick out a more fitting icon.</p>
<p class="p">You can also use png files located in your homedir or else.</p>
</div></div>
</div></div>
</div></section><section id="placeholders"><div class="inner">
<div id="placeholders" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Commands</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Commands</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">You can define any graphical or commandline application to be
        invoked by your custom toolbar button. Foremost you want to invoke
        audio controls of course, or start/stop players.</p>
<p class="p">For example <span class="cmd">amixer sset Master 1dB+</span> is likely to work
        for all current distributions.</p>
<p class="p"><span class="link"><a href="config_apps.html#placeholders" title="URL placeholders">Placeholders</a></span>
	like %title and %url or %pls and %m3u are supported for all commands
	as well. So you can have additional play/record	shortcuts.</p>
</div></div>
</div></div>
</div></section><section id="icon-rows"><div class="inner">
<div id="icon-rows" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">icon rows</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">icon rows</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">With the "number of rows" setting, more buttons can be packed together.
	It looks okay with up to 3 rows - when using the large sized main toolbar.
	The defined icon shortcuts will always be packed column-wise.</p>
<div class="note note-bug" title="Bug">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m7 8v7h0.0078a5 6.3027 0 0 0 3.9922 5.867v-6.867h2v6.871a5 6.3027 0 0 0 3.988-5.871h0.012v-7h-10z"></path>
 <path class="yelp-svg-fill" d="m12 3a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4z"></path>
 <path class="yelp-svg-fill" d="m16 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m9.2045 16.361h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m21.704 4.2894h6v1h-6z"></path>
 <path class="yelp-svg-fill" d="m2 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m5.5801 4.3612h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m-6.9199 16.289h6v1h-6z"></path>
<div class="note note-bug" title="Bug"><div class="inner"><div class="region"><div class="contents"><p class="p">The icon list isn't ordered. So you cannot
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">The icon list isn't ordered. So you cannot
        define which button appears first. (Albeit the plugin config
        definition can be changed from 'dict' to 'table' now, and the plugin
        required just a little editing then.)</p></div></div></div></div>
</div></div>
        required just a little editing then.)</p></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/streams.html from [0579549c85] to [411d82bdf2].


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
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
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
+








-
-
-
+
+
+







-
-
+
+
-
-
-
+
+







-
-
-
-
+
+
+









-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>Streams / Stations</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Streams / Stations</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Streams / Stations</span></h1></div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Radio stations are listed in the right pane. Usually they have a title and a
        description. The description is often the last played song. (This isn't updated
        automatically to conserve bandwidth and because live information is seldomly available.)</p>
<div class="media media-image"><div class="inner"><img src="img/streams.png" class="media media-block" alt=""></div></div>
<p class="p">You can double click a station line to get it to play. Alternatively there are the
        play and record buttons in the menubar. You can also invoke a stations homepage, if it
        has one.</p>
</div>
<div id="actions" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Actions</span></h2></div>
<div class="region"><div class="contents"><div class="links topiclinks"><div class="inner"><div class="region">
<section id="actions"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Actions</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="links topiclinks"><div class="inner"><div class="region"><div class="links-divs">
<div class="linkdiv "><a class="linkdiv" href="bookmarks.html" title="Bookmarks"><span class="title">Bookmarks</span><span class="linkdiv-dash"> — </span><span class="desc">Collect favourites via bookmark function, entry editing and deleting.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="edit.html" title="Edit"><span class="title">Edit</span><span class="linkdiv-dash"> — </span><span class="desc">Edit or inspect a station entry.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="playing.html" title="Playing"><span class="title">Playing</span><span class="linkdiv-dash"> — </span><span class="desc">Double click a station to start it in your audio player.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="homepage.html" title="Radio homepages"><span class="title">Radio homepages</span><span class="linkdiv-dash"> — </span><span class="desc">Start a web browser for a station.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="recording.html" title="Recording"><span class="title">Recording</span><span class="linkdiv-dash"> — </span><span class="desc">Save radio songs as MP3 files via streamripper.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="reloading.html" title="Reloading"><span class="title">Reloading</span><span class="linkdiv-dash"> — </span><span class="desc">Updating station lists.</span></a></div>
<div class="linkdiv "><a class="linkdiv" href="saving.html" title="Saving"><span class="title">Saving</span><span class="linkdiv-dash"> — </span><span class="desc">Export a station entry as .m3u/.pls file.</span></a></div>
</div></div></div></div></div>
</div></div>
</div></div></div></div></div></div>
</div></section><section id=""><div class="inner">
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Context menu</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Context menu</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">Additionally most actions are available in a context menu. Right click
        a station entry to display it.</p>
<div class="media media-image"><div class="inner"><img src="img/streamactions.png" class="media media-block" alt=""></div></div>
<p class="p">You can reach them in the <span class="guiseq"><span class="gui">Main menu</span> ▸ <span class="gui">Stations</span></span>
        as well. The <span class="guiseq"><span class="gui">Extensions</span> ▸ <span class="gui"></span></span> submenu there will
        list a few other plugin extensions.</p>
</div></div>
</div></div>
<div class="sect sect-links" role="navigation">
<div class="hgroup"></div>
<div class="contents">
</div></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide">
<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#browsing" title="Browsing channels and radio stations">Browsing channels and radio stations</a></li></ul></div>
</div></div>
<div class="links seealsolinks"><div class="inner">
<div class="title"><h2><span class="title">See Also</span></h2></div>
<div class="region"><ul><li class="links "><a href="index.html#functions" title="Functions">Functions</a></li></ul></div>
</div></div>
</div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/surfmusik.html from [5ebd43e1df] to [90bcdd7d6d].


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
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
69
70
71

72
73

74



75
76
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+







+
+
+
+
+
+
+
+
+
+
-
-
+
+

+
-
-
-
+
+
+








-
-
-
-
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> SurfMusic</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_surfmusik.png" class="media media-inline" alt=""></span></span> SurfMusic</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://surfmusic.de/" title="http://surfmusic.de/">//surfmusic.de/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p"><span class="link"><a href="http://surfmusic.de/" title="http://surfmusic.de/">SurfMusic</a></span> is a user-collection of
        internet radios. It's grouped by genres, or locations / countries.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">It's both pretty large and rather quick to extract listings from.</p></li>
<li class="list"><p class="p">Pretty much all entries already contain station homepages.</p></li>
<li class="list"><p class="p">This channel plugin uses raw RegExp extraction.</p></li>
</ul></div></div></div>
<div class="note note-bug" title="Bug">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m7 8v7h0.0078a5 6.3027 0 0 0 3.9922 5.867v-6.867h2v6.871a5 6.3027 0 0 0 3.988-5.871h0.012v-7h-10z"></path>
 <path class="yelp-svg-fill" d="m12 3a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4z"></path>
 <path class="yelp-svg-fill" d="m16 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m9.2045 16.361h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m21.704 4.2894h6v1h-6z"></path>
 <path class="yelp-svg-fill" d="m2 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m5.5801 4.3612h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m-6.9199 16.289h6v1h-6z"></path>
<div class="note note-bug" title="Bug"><div class="inner"><div class="region"><div class="contents"><p class="p">The MusicTV and NewsTV sections also return results, but those are mostly
        web-based video stations. Some of them are outdated links even.</p></div></div></div></div>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">The MusicTV and NewsTV sections also return results, but those are mostly
        web-based video stations. Some of them are outdated links even.</p></div></div></div>
</div>
</div>
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Channel options.</span></h2></div>
<div class="region"><div class="contents"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Channel options.</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms"><span class="code">🔠 Language</span></dt>
<dd class="terms">
<p class="p">There's an English and a German variant of this radio directory. Genres are
    also localized.</p>
<p class="p">Restart streamtuner2 after switching the Language option. Then
    use <span class="guiseq"><span class="gui">Channel</span> ▸ <span class="gui">Reload category tree</span></span>.</p>
</dd>
</dl></div></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/technical.html from [c3904fea2f] to [d044ffabbe].


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
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
+






+
+
+
+
+
+
-
+

-
-
-
+
+
+
-
-

-
-
-
-
+
+
+
+







<!DOCTYPE html>
<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>Technical information</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</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#footer" title="index#footer"></a> » </div></div></div>
<body><main><div class="page">
<header><div class="inner pagewide"><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#footer" title="index#footer"></a> » </div></div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Technical information</span></h1></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Technical information</span></h1></div>
<div class="region">
<div class="contents"></div>
<div id="dependecies" class="sect"><div class="inner">
<div class="hgroup"></div>
<div class="region"><div class="contents">
<div class="contents pagewide"></div>
<section id="dependecies"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="region"><div class="contents pagewide">
<div class="terms"><div class="inner">
<div class="title title-terms"><h3><span class="title">Dependencies</span></h3></div>
<div class="region"><dl class="terms">
<dd class="terms"><p class="p"><span class="link">Python 2.7 or 3.x</span></p></dd>
<dd class="terms"><p class="p"><span class="link">PyGtk or PyGI</span></p></dd>
<dd class="terms"><p class="p">Gtk2 or Gtk3</p></dd>
<dd class="terms"><p class="p"><span class="link">Requests/urllib3</span></p></dd>
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
69
70
71



72
73
74
75
76
77
78
79

80
81
82


83
84
85




86
87


88
89
90
91



92
93
94
95

96
97

98
99
100

101
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
69
70
71
72
73


74
75
76



77
78
79
80
81
82
83
84
85
86

87



88
89
90
91
92
93
94
95
96


97
98
99



100
101
102
103
104
105

106
107

108



109
110







-
+
-
-
-
+
+




+
+
+
+








-
-
-
+
+
+






-
-
+
+

-
-
-
+
+
+







-
+
-
-
-
+
+



+
+
+
+
-
-
+
+

-
-
-
+
+
+



-
+

-
+
-
-
-
+

<dd class="terms"><p class="p">Audacious/VLC or any other player</p></dd>
<dd class="terms"><p class="p">Streamripper or fIcy</p></dd>
<dd class="terms"><p class="p">youtube-dl</p></dd>
<dd class="terms"><p class="p">fonts: Symbola/Unifont for some UI parts</p></dd>
</dl></div>
</div></div>
</div></div>
</div></div>
</div></section><section id="config_files"><div class="inner">
<div id="config_files" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Configuration files</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Configuration files</span></h2></div>
<div class="region"><div class="contents pagewide">
<div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms"><span class="file">/home/$USER/.config/streamtuner2/</span></dt>
<dd class="terms"><p class="p">Corresponds to the XDG_CONFIG_HOME setting. All ST2 configuration settings
            are contained within here and are in JSON format.</p></dd>
<dt class="terms"><span class="file">/home/$USER/.cache/streamtuner2/</span></dt>
<dd class="terms"><p class="p">Set from XDG_CACHE_HOME environment variable. Contains the
            channel cache/ and icons/. Symlinks in <span class="file">.config</span>
            remain for convenience.</p></dd>
<dt class="terms"><span class="file">~/.config/streamtuner2/settings.json</span></dt>
<dd class="terms"><p class="p">General runtime options, plugin settings, and configured audio players.</p></dd>
<dt class="terms"><span class="file">~/.config/streamtuner2/window.json</span></dt>
<dd class="terms"><p class="p">Saved window sizes, list widths.</p></dd>
<dt class="terms"><span class="file">~/.config/streamtuner2/state.json</span></dt>
<dd class="terms"><p class="p">Last category in each channel tab.</p></dd>
<dt class="terms"><span class="file">~/.config/streamtuner2/bookmarks.json</span></dt>
<dd class="terms"><p class="p">Is a separate cache file for your bookmarked/favourite radio stations.</p></dd>
<dt class="terms"><span class="file">~/.config/streamtuner2/cache/***.json</span></dt>
<dd class="terms"><p class="p">JSON files for stream lists in each channel.</p></dd>
<dt class="terms"><span class="file">~/.config/streamtuner2/icons/*.png</span></dt>
<dt class="terms"><span class="file">~/.cache/streamtuner2/cache/***.json</span></dt>
<dd class="terms"><p class="p">Channel cache, with station/stream lists in JSON files.</p></dd>
<dt class="terms"><span class="file">~/.cache/streamtuner2/icons/*.png</span></dt>
<dd class="terms"><p class="p">Holds downloaded favicons for station homepages.</p></dd>
<dt class="terms"><span class="file">~/.config/streamtuner2/plugins/*.py</span></dt>
<dd class="terms"><p class="p">Contain downloaded contrib/ plugins.</p></dd>
</dl></div></div></div>
<p class="p">On Windows the <span class="file">~/.config/</span> directory is called
	<span class="file">%APPDATA%</span> instead. The paths in there are equally
	structured.</p>
</div></div>
	structured. On Linux <span class="file">~/.cache/</span> is used to separate
        temporary from configuration data.</p>
</div></div>
<div id="install_dirs" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Installation spread</span></h2></div>
<div class="region"><div class="contents"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
</div></section><section id="install_dirs"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Installation spread</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms"><span class="file">/usr/bin/streamtuner2</span></dt>
<dd class="terms"><p class="p">Associates the main binary.</p></dd>
<dt class="terms"><span class="file">/usr/share/streamtuner2/</span></dt>
<dd class="terms"><p class="p">Contains the individual ST2 python modules, and plugins in channels/. Also packages in pyquery/, but which is only used if the according modules aren't installed by the distribution.</p></dd>
<dt class="terms"><span class="file">/usr/share/doc/streamtuner2/</span></dt>
<dd class="terms"><p class="p">Contains the README, and Mallard/gnome-help/yelp files under help/.</p></dd>
</dl></div></div></div></div></div>
</div></div>
</div></section><section id="license"><div class="inner">
<div id="license" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Public Domain</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Public Domain</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">The majority of code distributed with ST2 is placed into the Public Domain; meaning
        no licensing requirement and all code can be copied, modified
	and distributed unrestrictively.</p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">The bundled kronos.py and requests/ library are NOT however.</p></div></div></div></div>
</div></div>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">The bundled kronos.py and requests/ library are NOT however.</p></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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#footer" title="index#footer"></a></li></ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/timer.html from [85a02da8f4] to [c969e9acf3].


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
69
70
71

72
73

74
75
76

77
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



69
70
71
72



73
74
75
76
77
78
79
80
81

82
83

84



85
86
+






+
+
+
+
+
+
-
+

-
-
+
+








-
-
-
+

-
-
-
-
+
+
+
+






+
+
+
+
-
+

-
-
+
+

-
-
-
+
+
+










-
+
-
-
-
+
+



+
+
+
-
-
-
+
+
+

-
-
-
+
+
+






-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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>Timer</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</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#browsing" title="Browsing channels and radio stations">Browsing channels and radio stations</a> » <a class="trail" href="streams.html" title="Streams / Stations">Streams / Stations</a> › <a class="trail" href="streams.html#actions" title="Actions">Actions</a> » <a class="trail" href="bookmarks.html" title="Bookmarks">Bookmarks</a> › <a class="trail" href="bookmarks.html#other" title="Subcategories">Subcategories</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#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> » <a class="trail" href="bookmarks.html" title="Bookmarks">Bookmarks</a> › <a class="trail" href="bookmarks.html#other" title="Subcategories">Subcategories</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> » <a class="trail" href="bookmarks.html" title="Bookmarks">Bookmarks</a> › <a class="trail" href="bookmarks.html#other" title="Subcategories">Subcategories</a> » </div>
</div></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Timer</span></h1></div>
</div></div></header><article><div class="hgroup pagewide"><h1 class="title"><span class="title">Timer</span></h1></div>
<div class="region">
<div class="contents"></div>
<div id="intro" class="sect"><div class="inner">
<div class="hgroup"></div>
<div class="region"><div class="contents">
<div class="contents pagewide"></div>
<section id="intro"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="region"><div class="contents pagewide">
<p class="p">You can program play/recording events with the timer plugin. Simply select a station
	and choose <span class="guiseq"><span class="gui">Station</span> ▸ <span class="gui">Add timer...</span></span>.
	A small popup will ask for a date/time string. If you press <span class="key"><kbd>OK</kbd></span> the station
	and the programmed time will be stored in the bookmarks channel in the "timer" category.
	<span class="em">Please take note of the required text format</span>.</p>
<p class="p"><span class="media"><span class="media media-image"><img src="img/timer.png" class="media media-inline" alt="Timer"></span></span></p>
<div class="note note-tip" title="Tip">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m12 2c-3.8541 0-7 3.1459-7 7 0 1.823 0.4945 3.139 1.1641 4.133 0.6695 0.994 1.4328 1.671 2.039 2.471 0.0882 0.116 0.1749 0.656 0.2071 1.32 0.016 0.332 0.0133 0.68 0.1894 1.119 0.0881 0.22 0.2439 0.478 0.5059 0.672 0.2619 0.194 0.6028 0.285 0.8945 0.285h4c0.583 0 1.204-0.478 1.402-0.908 0.199-0.43 0.217-0.793 0.244-1.137 0.056-0.688 0.138-1.319 0.211-1.441 0.549-0.916 1.304-2.009 1.94-3.114 0.636-1.104 1.203-2.199 1.203-3.4 0-3.8541-3.146-7-7-7zm0 2c2.773 0 5 2.2267 5 5 0 0.456-0.359 1.401-0.936 2.402-0.111 0.195-0.246 0.399-0.369 0.598h-7.8825c-0.4871-0.728-0.8125-1.519-0.8125-3 0-2.7733 2.2267-5 5-5z" style="block-progression:tb;color-rendering:auto;color:#000000;image-rendering:auto;isolation:auto;mix-blend-mode:normal;shape-rendering:auto;solid-color:#000000;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"></path>
 <path class="yelp-svg-fill" d="m9 20a0.5 0.5 0 0 0-0.5 0.5 0.5 0.5 0 0 0 0.5 0.5h6a0.5 0.5 0 0 0 0.5-0.5 0.5 0.5 0 0 0-0.5-0.5h-6zm0 2a0.5 0.5 0 0 0-0.5 0.5 0.5 0.5 0 0 0 0.5 0.5h6a0.5 0.5 0 0 0 0.5-0.5 0.5 0.5 0 0 0-0.5-0.5h-6z"></path>
<div class="note note-tip" title="Tip"><div class="inner"><div class="region"><div class="contents"><p class="p">Note that streamtuner2 must be running for the programmed timer events to work.
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">Note that streamtuner2 must be running for the programmed timer events to work.
	(In a future version there might be the option to have it handled by the system cron
	daemon.)</p></div></div></div></div>
</div></div>
	daemon.)</p></div></div></div>
</div>
</div></div>
<div id="timestring" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Time specification strings</span></h2></div>
<div class="region"><div class="contents">
</div></section><section id="timestring"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Time specification strings</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">The time and date specificators follow a simple scheme. It's always one or more day names
	followed by a clock range, and finally the action.</p>
<p class="p">For example "<span class="code">Mon,Tue,Wed</span>" will make the event occur on the first
	three days of each week, while just "Fri" would limit it to Fridays.</p>
<p class="p">A clock range of "<span class="code">18:00-20:00</span>"
	would start the event at 18 o'clock and last it two hours. Note that for "play" events, the end
	time is irrelevant, since streamtuner2 can't kill your audio player anyway.</p>
<p class="p">The end time is only important if you replace "play" with the word "<span class="code">record</span>"
        in the timer event string. This runs streamripper instead and limits the recording time.</p>
</div></div>
</div></div>
</div></section><section id="editing"><div class="inner">
<div id="editing" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Editing events</span></h2></div>
<div class="region"><div class="contents">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Editing events</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">You can remove entries from the "timer" list again. Use the normal <span class="guiseq"><span class="gui">Edit</span> ▸ <span class="gui">Delete</span></span> for
	that. It's also possible to modify the date+time strings by editing the stream info and
	the specification in the "playing" field.</p>
<div class="note note-warning" title="Warning">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m11.92 3.3047a1.3872 1.3872 0 0 0-1.129 0.6933l-8.6055 14.922a1.3872 1.3872 0 0 0 1.2012 2.08l17.226-8e-3a1.3872 1.3872 0 0 0 1.201-2.08l-8.619-14.916a1.3872 1.3872 0 0 0-1.136-0.6913 1.3872 1.3872 0 0 0-0.139 0zm0.08 4.6953a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1 1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1zm0 9a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1z"></path>
<div class="note note-warning" title="Warning"><div class="inner"><div class="region"><div class="contents"><p class="p">However, such edits don't take effect until you restart streamtuner2. The timer
	events are only scheduled when adding a new event, or on starting streamtuner2.</p></div></div></div></div>
</div></div>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">However, such edits don't take effect until you restart streamtuner2. The timer
	events are only scheduled when adding a new event, or on starting streamtuner2.</p></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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>
<li class="links "><a href="bookmarks.html#other" title="Subcategories">Subcategories</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/tunein.html from [cbe2c6c64a] to [7bbb413fac].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+


-
-
-
+
+
+



-
-
-
-
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> TuneIn</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_tunein.png" class="media media-inline" alt=""></span></span> TuneIn</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://tunein.com/" title="http://tunein.com/">//tunein.com/</a></span></span></h2>
</div>
<div class="region">
<div class="contents"><p class="p">TuneIn hosts a major radio, show and podcast directory. It also provides the
<div class="contents pagewide"><p class="p">TuneIn hosts a major radio, show and podcast directory. It also provides the
        RadioTime/AIR interface for listener feedback or something. ST2 queries the OPML
        lists only for radio stations currently.</p></div>
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents"><p class="p">You can switch between "music" and "genres" list. The genres
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Configuration</span></h2></div>
<div class="region"><div class="contents pagewide"><p class="p">You can switch between "music" and "genres" list. The genres
        list is basically a longer and expanded variant of "music".
        Use <span class="guiseq"><span class="gui">Channel</span> ▸ <span class="gui">Reload category tree</span></span>
        to update them thereafter.</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/ubuntuusersm.html from [a5d8076a02] to [94b6f7a495].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+




-
+
-
-




-
+







+
+
+
+
-
+

-
+

+
-
-
-
+
+
+






-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> UbuntuUsers</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_ubuntuusers.png" class="media media-inline" alt=""></span></span> UbuntuUsers</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://ubuntuusers.de/" title="http://ubuntuusers.de/">//ubuntuusers.de/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">There's a manually curated list of radio stations in the
	UbuntuUsers.de Wiki.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">Like the origin website, most entries are German or European stations.</p></li>
<li class="list"><p class="p">So this is more of an example plugin, as it's not a huge list.</p></li>
<li class="list"><p class="p">RegExp are used for extraction, because the Wiki markup is rather well-maintained and consistent.</p></li>
</ul></div></div></div>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">There's also a small streaming TV list. But most entries
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">There's also a small streaming TV list. But most entries
	aren't really accessible (anymore) without command line tools. 
	(Which that very Wiki page covers in detail.)</p></div></div></div></div>
	(Which that very Wiki page covers in detail.)</p></div></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">
<section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/xiph.html from [60dac22923] to [517e0e6e1a].


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
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
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+














-
-
-
+
+
+







<!DOCTYPE html>
<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> Xiph.org</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_xiph.png" class="media media-inline" alt=""></span></span> Xiph.org</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://dir.xiph.org/" title="http://dir.xiph.org/">//dir.xiph.org/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<p class="p">Xiph.org is a non-profit organization which develops and maintains
various audio- and video-related standards.</p>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">For example the OGG streaming/multiplexing format.</p></li>
<li class="list"><p class="p">Audio compression schemes like Vorbis, Speex, FLAC, Opus.</p></li>
<li class="list"><p class="p">Video encoding formats like Theora, Tarkin, Dirac.</p></li>
<li class="list"><p class="p">The ICEcast streaming server is an alternative to SHOUTcast.</p></li>
<li class="list"><p class="p">And the more modern .xspf (and .jspf) playlist format, which is used by all channel entries.</p></li>
</ul></div></div></div>
<p class="p">There are different ways for streamtuner2 to retrieve the station
lists available on dir.xiph.org.  That's because this is a primary
plugin, and fallback solutions therefore important.  Each fetching
mode has its own advantages and drawbacks though.</p>
</div>
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Channel fetch mode option</span></h2></div>
<div class="region"><div class="contents">
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Channel fetch mode option</span></h2></div>
<div class="region"><div class="contents pagewide">
<p class="p">There are now three options to retrieve Xiph directory stations.</p>
<div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms"><span class="code">Cache JSON</span></dt>
<dd class="terms"><p class="p">There's a caching server specifically for streamtuner2. It fixes
    Xiphs quirky JSON API, and provides a simpler interface. It can't
    correct the invalid encodings however, which is why you see ????
    question marks a lot. This method does not reveal station homepages,
70
71
72
73
74
75
76




77
78



79
80
81
82
83
84
85
86



87
88
89
90
91
92
93
94

95
96

97
98
99

100
75
76
77
78
79
80
81
82
83
84
85


86
87
88
89
90
91
92




93
94
95
96
97
98
99
100
101
102

103
104

105



106
107







+
+
+
+
-
-
+
+
+




-
-
-
-
+
+
+







-
+

-
+
-
-
-
+

    something which Xiph doesn't approve of.  But the drawbacks of their
    alternative offerings are too severe and user-unfriendly; which is
    why there's this raw HTML extraction mode now.</p>
<p class="p">The website listings contain full station homepages and a few
    more extras.  In this mode we can even acceess the XSPF playlist
    formats directly.  Both, the server search function, or browsing by
    audio/video format are supported.  </p>
<div class="note" title="Note">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"></path>
 <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"></path>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">A miximum of 100 entries get fetched in this mode however
    (which is 5 pages à 20 entries).</p></div></div></div></div>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">A miximum of 100 entries get fetched in this mode however
    (which is 5 pages à 20 entries).</p></div></div></div>
</div>
</dd>
</dl></div></div></div>
<p class="p">The filter-by-bitrate option is now a generic plugin.</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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Modified help/html/yelp.js from [e4d677e371] to [4995ba1bc5].

















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








69
70
71
72
73
74
75






76
77
78




79
80
81
82
83
84


85
86
87

88
89

90
91
92

93
94
95
96

97
98
99
100

101
102
103

104
105

106
107
108
109
110










111
112

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

129
130
131
132
133
134

















135
136
137
138

139
140
141
142
143


144
145
146
147
148







149
150

151
152



153
154
155





156
157
158
159



160
161
162
163
164
165
166
167

168
169
170
171
172
173
174
175
176
177
178
179
180
181

























182
183
184

185
186
187

188
189
190
191
192
193
194
195
196
197
198




199
200

201
202
203
204



205
206
207
208





209
210
211
212
213
214



215
216
217
218
219
220
221
222
223











224
225
226
227
228


229
230
231
232

233
234

235
236


237
238
239

240
241
242
243
244
245
246

247
248
249
250


251
252
253
254

255
256
257
258
259
260
261
262
263
264
















265
266
267
268
269
270
271
272
273




274
275
276
277




278
279
280


281
282

283
284
285
286




287
288
289








290
291
292
293
294
295
296
297



298
299
300
301
302









303
304
305

306
307
308
309
310
311



312
313
314
315
316
317
318
319
320
321
322
323
324
325
326




















327
328
329
330
331
332
333
334
335

336
337



338

339
340


341
342
343
344
345
346


347
348
349
350
351

352
353
354
355
356
357
358






359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377


378
379
380
381


382
383
384






385
386
387




388
389
390
391
392
393
394
395
396

397
398






399
400
401
402
403
404








405
406
407
408
409
410




411
412




413
414
415
416
417


418
419
420
421
422
423
424






425
426
427
428
429
430
431

432
433
434



435
436
437
438
439
440








441
442
443
444






445
446
447
448
449



450
451
452
453
454
455
456
457

458
459
460
461

462
463
464
465

466
467
468
469
470
471
472
473
474




















475
476
477
478
479
480
481
482




483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499

















500
501
502
503

504
505
506



507
508
509
510
511




512
513
514
515
516





517

518
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









69
70
71
72
73
74
75






76
77
78
79
80
81
82
83







84
85
86
87
88
89



90
91
92
93






94
95



96


97



98




99




100



101


102

103



104
105
106
107
108
109
110
111
112
113


114













115


116
117





118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134




135





136
137





138
139
140
141
142
143
144
145

146


147
148
149



150
151
152
153
154




155
156
157








158














159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183



184



185











186
187
188
189


190




191
192
193




194
195
196
197
198






199
200
201









202
203
204
205
206
207
208
209
210
211
212





213
214




215


216


217
218



219







220




221
222




223










224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239









240
241
242
243

244


245
246
247
248



249
250


251




252
253
254
255



256
257
258
259
260
261
262
263
264



265



266
267
268
269




270
271
272
273
274
275
276
277
278



279






280
281
282















283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302









303


304
305
306
307
308


309
310
311
312
313
314


315
316





317







318
319
320
321
322
323



















324
325




326
327



328
329
330
331
332
333



334
335
336
337







338

339


340
341
342
343
344
345






346
347
348
349
350
351
352
353






354
355
356
357


358
359
360
361





362
363







364
365
366
367
368
369







370



371
372
373






374
375
376
377
378
379
380
381




382
383
384
385
386
387
388




389
390
391








392




393




394









395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414








415
416
417
418

















419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435




436



437
438
439





440
441
442
443





444
445
446
447
448

449
450
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+




-
+




-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
-
-
+
+
+

-
-
-
+
+
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+

-
-
+
-
-
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
-
-
-
+
-
-
+
-
-
-
+
-
-
-
-
+
-
-
-
-
+
-
-
-
+
-
-
+
-

-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-

-
-
+

-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
-
-
-
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+

-
+
-
-
+
+
+
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
+
-
-
-
-
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
-
-
-
-
+
-
-
+
-
-
+
+
-
-
-
+
-
-
-
-
-
-
-
+
-
-
-
-
+
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
-

-
-
+
+
+
+
-
-
-
+
+
-
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+

-
-
-

-
-
-
+
+
+

-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
+
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
-
-
+
+
+

+
-
-
+
+




-
-
+
+
-
-
-
-
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
+
+
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
+
-
-
-
-
-
-
-

-
+
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
-
-
+
+
+
+
-
-
-
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+

-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
-
-
-
-
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
+


document.addEventListener('DOMContentLoaded', function() {
  var yelp_hash_highlight = function () {
    if (location.hash != '') {
      var sect = document.querySelector(location.hash);
      if (sect != null) {
        sect.classList.add('yelp-hash-highlight');
        window.setTimeout(function () {
          sect.classList.remove('yelp-hash-highlight');
        }, 500);
      }
    }
  }
  window.addEventListener('hashchange', yelp_hash_highlight, false);
  yelp_hash_highlight();
}, false);

var __yelp_generate_id_counter__ = 0;
function yelp_generate_id () {
  var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString();
  if ($('#' + ret).length != 0)
  if (document.getElementById(ret) != null)
    return yelp_generate_id();
  else
    return ret;
};
$(document).ready (function () {
  var highlight_hash = function () {
    if (location.hash != '') {
      var sect = $(location.hash);
      sect.css('background-color',  '#fffacc');
      window.setTimeout(function () {
        sect.css({
function yelp_ui_expander_init (expander) {
  var yelpdata = null;
  var innerdiv = null;
  var region = null;
  var contents = null;
  var title = null;
  var title_e = null;
  var title_c = null;
  var titlespan = null;
  var issect = false;
          '-webkit-transition': 'background-color 2s linear',
          '-moz-transition': 'background-color 2s linear',
          'transition': 'background-color 2s linear',
          'background-color': 'rgba(1, 1, 1, 0)'
  for (var i = 0; i < expander.children.length; i++) {
        });
      }, 200);
    var child = expander.children[i];
    if (child.classList.contains('yelp-data-ui-expander')) {
      yelpdata = child;
    }
  };
  $(window).bind('hashchange', highlight_hash);
  highlight_hash();
    else if (child.classList.contains('inner')) {
      innerdiv = child;
});

    }
  }
  if (innerdiv == null) {
    return;
  }
$.fn.yelp_ui_expander_toggle = function (onlyopen, callback) {
  var expander = $(this);
  var region = expander.children('.inner').children('.region');
  var yelpdata = expander.children('div.yelp-data-ui-expander');
  var compfunc = function () {
  for (var i = 0; i < innerdiv.children.length; i++) {
    var child = innerdiv.children[i];
    if (child.classList.contains('region')) {
      region = child;
    if (expander.is('div.figure')) { expander.yelp_auto_resize(); }
    if (callback) { callback(); }
    }
    else if (child.classList.contains('title')) {
    return true;
  };
  var title = expander.children('.inner').children('.title');
  if (title.length == 0)
    title = expander.children('.inner').children('.hgroup');
  var title = title.find('span.title:first');
  if (expander.is('.ui-expander-e')) {
    if (!onlyopen) {
      title = child;
    }
    else if (child.classList.contains('hgroup')) {
      title = child;
      issect = true;
    }
  }
  if (region == null || title == null) {
    return;
      expander.removeClass('ui-expander-e').addClass('ui-expander-c');
      region.attr('aria-expanded', 'false').slideUp('fast', compfunc);
      title.html(yelpdata.children('div.yelp-title-collapsed').html());
    }
  }
  if (!region.hasAttribute('id')) {
    region.setAttribute('id', yelp_generate_id());
  }
  else {
    expander.removeClass('ui-expander-c').addClass('ui-expander-e');
  title.setAttribute('aria-controls', region.getAttribute('id'));
    region.attr('aria-expanded', 'true').slideDown('fast', compfunc);
    title.html(yelpdata.children('div.yelp-title-expanded').html());
  }

};
$(document).ready(function () {
  $('.ui-expander').each(function () {
    var expander = $(this);
    var yelpdata = expander.children('div.yelp-data-ui-expander');
    var region = expander.children('.inner').children('.region');
    var title = expander.children('.inner').children('.title');
    var issect = false;
    if (title.length == 0) {
  if (yelpdata != null) {
    for (var i = 0; i < yelpdata.children.length; i++) {
      var child = yelpdata.children[i];
      if (child.classList.contains('yelp-title-expanded')) {
        title_e = child;
      }
      else if (child.classList.contains('yelp-title-collapsed')) {
      title = expander.children('.inner').children('.hgroup');
      issect = true;
    }
    if (title.length == 0) {
      return;
    }
        title_c = child;
      }
    }
  }
  titlespan = title.querySelector('span.title');
  if (titlespan == null) {
    return;
  }
    if (region.attr('id') == '')
      region.attr('id', yelp_generate_id());
    title.attr('role', 'button').attr('aria-controls', region.attr('id'));
    var titlespan = title.find('span.title:first');
    var title_e = yelpdata.children('div.yelp-title-expanded');
    var title_c = yelpdata.children('div.yelp-title-collapsed');
    if (title_e.length == 0)
  if (title_e == null) {
    var node = document.createElement('div');
    node.className = 'yelp-title-expanded';
    node.innerHTML = titlespan.innerHTML;
    yelpdata.appendChild(node);
    title_e = node;
      yelpdata.append($('<div class="yelp-title-expanded"></div>').html(titlespan.html()));
    if (title_c.length == 0)
      yelpdata.append($('<div class="yelp-title-collapsed"></div>').html(titlespan.html()));
  }
  if (title_c == null) {
    var node = document.createElement('div');
    node.className = 'yelp-title-collapsed';
    if (yelpdata.attr('data-yelp-expanded') == 'false') {
      expander.addClass('ui-expander-c');
      region.attr('aria-expanded', 'false').hide();
      if (title_c.length != 0)
        titlespan.html(title_c.html());
    } else {
    node.innerHTML = titlespan.innerHTML;
    yelpdata.appendChild(node);
      expander.addClass('ui-expander-e');
      region.attr('aria-expanded', 'true');
      if (title_e.length != 0)
    title_c = node;
        titlespan.html(title_e.html());
    }
  }
    title.click(function () {
      expander.yelp_ui_expander_toggle(false);
    });

  });
});
$(document).ready(function () {
  var expand_hash = function () {
  var ui_expander_zoom_region = function (event) {
    if (location.hash != '') {
      var target = $(location.hash);
      var parents = target.parents('div.ui-expander');
      if (target.is('div.ui-expander'))
    if (yelpdata.getAttribute('data-yelp-expanded') != 'false') {
        parents = parents.andSelf();
      parents.each(function () {
        $(this).yelp_ui_expander_toggle(true, function () {
      ui_expander_toggle();
          window.scrollTo(0, $(target).offset().top);
        });
      event.preventDefault();
      });
    }
  };
  $(window).bind('hashchange', expand_hash);
  expand_hash();
  }
  if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') {
    for (var i = 0; i < region.children.length; i++) {
      var child = region.children[i];
      if (child.classList.contains('contents')) {
        contents = child;
        break;
      }
    }
    contents.addEventListener('click', ui_expander_zoom_region, true);
});

  }
yelp_color_text_light = '#2e3436';
yelp_color_gray_background = '#f3f3f0';
yelp_color_gray_border = '#babdb6';
yelp_paint_zoom = function (zoom, zoomed) {
  var ctxt = zoom.children('canvas')[0].getContext('2d');
  ctxt.strokeStyle = ctxt.fillStyle = yelp_color_text_light;
  ctxt.clearRect(0, 0, 10, 10);
  ctxt.strokeRect(0.5, 0.5, 9, 9);
  if (zoomed) {
    ctxt.fillRect(1, 1, 9, 4);
    ctxt.fillRect(5, 5, 4, 4);
    zoom.attr('title', zoom.attr('data-zoom-out-title'));
  }
  else {
    ctxt.fillRect(1, 5, 4, 4);
    zoom.attr('title', zoom.attr('data-zoom-in-title'));
    region.addEventListener('click', ui_expander_zoom_region, true);
  }
}
$.fn.yelp_auto_resize = function () {
  var fig = $(this);
  if (fig.is('img'))
    fig = fig.parents('div.figure').eq(0);

  var ui_expander_toggle = function () {
    if (yelpdata.getAttribute('data-yelp-expanded') == 'false') {
      yelpdata.setAttribute('data-yelp-expanded', 'true');
      expander.classList.remove('ui-expander-e');
      expander.classList.add('ui-expander-c');
      region.setAttribute('aria-expanded', 'false');
      if (title_c != null)
        titlespan.innerHTML = title_c.innerHTML;
    }
    else {
      yelpdata.setAttribute('data-yelp-expanded', 'false');
      expander.classList.remove('ui-expander-c');
      expander.classList.add('ui-expander-e');
      region.setAttribute('aria-expanded', 'true');
      if (title_e != null)
        titlespan.innerHTML = title_e.innerHTML;
  if (fig.data('yelp-zoom-timeout') != undefined) {
    clearInterval(fig.data('yelp-zoom-timeout'));
    fig.removeData('yelp-zoom-timeout');
  }
    }
  var imgs = fig.find('img');
  for (var i = 0; i < imgs.length; i++) {
    var img = $(imgs[i]);
    if (img.data('yelp-load-bound') == true)
      img.unbind('load', fig.yelp_auto_resize);
  };
  expander.yelp_ui_expander_toggle = ui_expander_toggle;
    if (!imgs[i].complete) {
      img.data('yelp-load-bound', true);
      img.bind('load', fig.yelp_auto_resize);
      return false;
    }
  title.addEventListener('click', ui_expander_toggle, false);
  ui_expander_toggle();
}
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('.ui-expander');
  for (var i = 0; i < matches.length; i++) {
    yelp_ui_expander_init(matches[i]);
  }
  $(window).unbind('resize', yelp_resize_imgs);
  var yelp_hash_ui_expand = function () {
  var zoom = fig.children('div.inner').children('a.zoom');
  if (fig.find('div.contents:first').is(':hidden')) {
    if (location.hash != '') {
      var sect = document.querySelector(location.hash);
      if (sect != null) {
    zoom.hide();
    return;
  }
        for (var cur = sect; cur instanceof Element; cur = cur.parentNode) {
          if (cur.classList.contains('ui-expander')) {
            if (cur.classList.contains('ui-expander-c')) {
              cur.yelp_ui_expander_toggle();
            }
  for (var i = 0; i < imgs.length; i++) {
    var img = $(imgs[i]);
    if (img.data('yelp-original-width') == undefined) {
      var iwidth = parseInt(img.attr('width'));
          }
        }
        sect.scrollIntoView();
      if (!iwidth)
        iwidth = img[0].width;
      img.data('yelp-original-width', iwidth);
      var iheight = parseInt(img.attr('height'));
      if (!iheight)
        iheight = img[0].height * (iwidth / img[0].width);
      img.data('yelp-original-height', iheight);
    }
      }
    if (img.data('yelp-original-width') > img.parent().width()) {
      if (img.data('yelp-zoomed') != true) {
        img[0].width = img.parent().width();
        img[0].height = (parseInt(img.data('yelp-original-height')) *
                         img.width() / parseInt(img.data('yelp-original-width')));
      }
      zoom.show();
    }
    else {
      img[0].width = img.data('yelp-original-width');
      img[0].height = img.data('yelp-original-height');
      zoom.hide();
    }
  }
    }
  };
  window.addEventListener('hashchange', yelp_hash_ui_expand, false);
  yelp_hash_ui_expand();
}, false);

yelp_color_text_light = 'rgb(75,75,73)';
yelp_color_gray_background = 'rgb(244,244,244)';
yelp_color_gray_border = '#c0bfbc';
function yelp_figure_init (figure) {
  var zoom = figure.querySelector('a.figure-zoom');

  var figure_resize = function () {
    var zoomed = zoom.classList.contains('figure-zoomed');
    var imgs = figure.querySelectorAll('img');
    for (var i = 0; i < imgs.length; i++) {
      var img = imgs[i];
      var mediaDiv = null;
      for (var cur = img; cur instanceof Element; cur = cur.parentNode) {
        if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') &&
            cur.classList.contains('media')) {
          mediaDiv = cur;
          break;
        }
      }
  /* The image scaling above can cause the window to resize if it causes
   * scrollbars to disappear or reapper. Unbind the resize handler before
   * scaling the image. Don't rebind immediately, because we'll still get
      if (mediaDiv == null)
   * that resize event in an idle. Rebind on the callback instead.
   */
  var reresize = function () {
        continue;
    $(window).unbind('resize', reresize);
    $(window).bind('resize', yelp_resize_imgs);
  }
  $(window).bind('resize', reresize);
  return false;
};
yelp_resize_imgs = function () {
  $('div.figure img').parents('div.figure').each(function () {
    var div = $(this);
    if (div.data('yelp-zoom-timeout') == undefined)
      div.data('yelp-zoom-timeout', setTimeout(function () { div.yelp_auto_resize() }, 1));
      if (!img.hasAttribute('data-yelp-original-width')) {
        var iwidth = null;
        if (img.hasAttribute('width'))
          iwidth = parseInt(img.getAttribute('width'));
  });
  return false;
        else
};
$(document).ready(function () {
  $('div.figure img').parents('div.figure').each(function () {
    var fig = $(this);
          iwidth = img.width;
        img.setAttribute('data-yelp-original-width', iwidth);
        var iheight = null;
    var zoom = fig.children('div.inner').children('a.zoom');
    zoom.append($('<canvas width="10" height="10"/>'));
    yelp_paint_zoom(zoom, false);
    zoom.data('yelp-zoomed', false);
        if (img.hasAttribute('height'))
          iheight = parseInt(img.getAttribute('height'));
        else
          iheight = img.height * (iwidth / img.width);
        img.setAttribute('data-yelp-original-height', iheight);
    zoom.click(function () {
      var zoomed = !zoom.data('yelp-zoomed');
      zoom.data('yelp-zoomed', zoomed);
      zoom.parent().find('img').each(function () {
        var zimg = $(this);
        zimg.data('yelp-zoomed', zoomed);
      }
      var owidth = img.width;
      var oheight = img.height;
        if (zoomed) {
          zimg[0].width = zimg.data('yelp-original-width');
          zimg[0].height = zimg.data('yelp-original-height');
        } else {
          zimg[0].width = zimg.parent().width();
          zimg[0].height = (parseInt(zimg.data('yelp-original-height')) *
                            zimg.width() / parseInt(zimg.data('yelp-original-width')));
        }
        yelp_paint_zoom(zoom, zoomed);
      img.width = parseInt(img.getAttribute('data-yelp-original-width'));
      img.height = parseInt(img.getAttribute('data-yelp-original-height'));
      var mediaw = mediaDiv.offsetWidth;
      img.width = owidth;
      img.height = oheight;
      if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) {
        img.width = parseInt(img.getAttribute('data-yelp-original-width'));
        img.height = parseInt(img.getAttribute('data-yelp-original-height'));
        zoom.style.display = 'none';
      }
      else if (zoomed) {
      });
      return false;
    });
  });
  yelp_resize_imgs();
        img.width = parseInt(img.getAttribute('data-yelp-original-width'));
        img.height = parseInt(img.getAttribute('data-yelp-original-height'));
  $(window).bind('resize', yelp_resize_imgs);
});
function yelp_init_video (element) {
  var video = $(element);
        zoom.style.display = 'block';
  video.removeAttr('controls');

      }
  var controls = $('<div class="media-controls media-controls-' + element.nodeName + '"></div>');
  var playControl = $('<button class="media-play"></button>').attr({
      else {
        img.width = mediaw;
    'data-play-label': video.attr('data-play-label'),
    'data-pause-label': video.attr('data-pause-label'),
    'value': video.attr('data-play-label')
        img.height = (parseInt(img.getAttribute('data-yelp-original-height')) *
  });
  var playCanvas = $('<canvas width="20" height="20"></canvas>');
  playControl.append(playCanvas);
  var rangeCanvas = $('<canvas width="104" height="20"></canvas>');
  var rangeCanvasCtxt = rangeCanvas[0].getContext('2d');
  rangeCanvasCtxt.strokeStyle = yelp_color_gray_border;
  rangeCanvasCtxt.strokeWidth = 1;
                      img.width /
  rangeCanvasCtxt.strokeRect(0.5, 0.5, 103, 19);
  var currentSpan = $('<span class="media-current">0:00</span>');
  var durationSpan = $('<span class="media-duration">-:--</span>');
  controls.append(playControl,
                      parseInt(img.getAttribute('data-yelp-original-width')));
        zoom.style.display = 'block';
                  $('<div class="media-range"></div>').append(rangeCanvas),
                  $('<div class="media-time"></div>').append(currentSpan, durationSpan));
  video.after(controls);

      }
  var playCanvasCtxt = playCanvas[0].getContext('2d');
  var paintPlayButton = function () {
    playCanvasCtxt.fillStyle = yelp_color_gray_background;
    playCanvasCtxt.clearRect(0, 0, 20, 20);
    playCanvasCtxt.beginPath();
    playCanvasCtxt.moveTo(5, 5);   playCanvasCtxt.lineTo(5, 15);
    playCanvasCtxt.lineTo(15, 10); playCanvasCtxt.lineTo(5, 5);
    playCanvasCtxt.fill();
  }
  var paintPauseButton = function () {
    }
  }
  figure.yelp_figure_resize = figure_resize;
  figure.yelp_figure_resize();

  zoom.onclick = function (e) {
    var zoomed = zoom.classList.contains('figure-zoomed');
    if (zoomed)
      zoom.classList.remove('figure-zoomed');
    else
      zoom.classList.add('figure-zoomed');
    figure.yelp_figure_resize();
    return false;
  };
}
window.addEventListener('load', function() {
    playCanvasCtxt.fillStyle = yelp_color_gray_background;
    playCanvasCtxt.clearRect(0, 0, 20, 20);
    playCanvasCtxt.beginPath();
    playCanvasCtxt.moveTo(5, 5);   playCanvasCtxt.lineTo(9, 5);
    playCanvasCtxt.lineTo(9, 15);  playCanvasCtxt.lineTo(5, 15);
    playCanvasCtxt.lineTo(5, 5);   playCanvasCtxt.fill();
    playCanvasCtxt.beginPath();
    playCanvasCtxt.moveTo(11, 5);  playCanvasCtxt.lineTo(15, 5);
    playCanvasCtxt.lineTo(15, 15); playCanvasCtxt.lineTo(11, 15);
  var figures = document.querySelectorAll('div.figure');
  for (var i = 0; i < figures.length; i++) {
    if (figures[i].querySelector('img') != null)
      yelp_figure_init(figures[i]);
    playCanvasCtxt.lineTo(11, 5);  playCanvasCtxt.fill();
  }
  paintPlayButton();

  var timeout = null;
  var yelp_figures_resize = function () {
    if (timeout != null)
      return;
  var video_el = video[0];
  var mediaChange = function () {
    if (video_el.ended)
    timeout = window.setTimeout(function () {
      for (var i = 0; i < figures.length; i++) {
      video_el.pause()
    if (video_el.paused) {
        if (figures[i].querySelector('img') != null)
      playControl.attr('value', playControl.attr('data-play-label'));
      paintPlayButton();
    }
    else {
          figures[i].yelp_figure_resize();
      }
      window.clearTimeout(timeout);
      timeout = null;
      playControl.attr('value', playControl.attr('data-pause-label'));
      paintPauseButton();
    }
    }, 100);
  };
  window.addEventListener('resize', yelp_figures_resize, false);
}, false);
function yelp_media_init (media) {
  media.removeAttribute('controls');
  if (media.parentNode.classList.contains('links-tile-img')) {
    return;
  }
  video_el.addEventListener('play', mediaChange, false);
  video_el.addEventListener('pause', mediaChange, false);
  video_el.addEventListener('ended', mediaChange, false);

  var playClick = function () {
    if (video_el.paused || video_el.ended)
      video_el.play();
  media.addEventListener('click', function () {
    if (media.paused)
      media.play();
    else
      video_el.pause();
  };
  playControl.click(playClick);

      media.pause();
  }, false);

  var controls = null;
  for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) {
    if (cur.classList.contains('media-controls')) {
      controls = cur;
      break;
    }
  var ttmlDiv = video.parent().children('div.media-ttml');
  var ttmlNodes = ttmlDiv.find('.media-ttml-node');

  }
  var timeUpdate = function () {
    var pct = (element.currentTime / element.duration) * 100;
    rangeCanvasCtxt.fillStyle = yelp_color_gray_border;
    rangeCanvasCtxt.clearRect(2, 2, 100, 16);
    rangeCanvasCtxt.fillRect(2, 2, pct, 16);
    var mins = parseInt(element.currentTime / 60);
  if (controls == null) {
    media.setAttribute('controls', 'controls');
    return;
    var secs = parseInt(element.currentTime - (60 * mins))
    currentSpan.text(mins + (secs < 10 ? ':0' : ':') + secs);
    ttmlNodes.each(function () {
      var ttml = this;
      if (element.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) &&
          (!ttml.hasAttribute('data-ttml-end') ||
           element.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) {
        if (ttml.tagName == 'span')
          ttml.style.display = 'inline';
        else
          ttml.style.display = 'block';
      }
      else {
        ttml.style.display = 'none';
      }
  }
  var playbutton = controls.querySelector('button.media-play');
  playbutton.addEventListener('click', function () {
    if (media.paused || media.ended)
      media.play();
    else
      media.pause();
  }, false);

  var mediachange = function () {
    if (media.ended)
      media.pause()
    if (media.paused) {
      playbutton.setAttribute('value', playbutton.getAttribute('data-play-label'));
      playbutton.classList.remove('media-play-playing');
    }
    else {
      playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label'));
      playbutton.classList.add('media-play-playing');
    }
    });
  };
  element.addEventListener('timeupdate', timeUpdate, false);
  var durationUpdate = function () {
    if (!isNaN(element.duration)) {
      mins = parseInt(element.duration / 60);
      secs = parseInt(element.duration - (60 * mins));
      durationSpan.text(mins + (secs < 10 ? ':0' : ':') + secs);
    }
  }
  };
  element.addEventListener('durationchange', durationUpdate, false);
  media.addEventListener('play', mediachange, false);
  media.addEventListener('pause', mediachange, false);
  media.addEventListener('ended', mediachange, false);

  var mediarange = controls.querySelector('input.media-range');
  rangeCanvas.click(function (event) {
    var pct = event.clientX - Math.floor(rangeCanvas.offset().left);
  mediarange.addEventListener('input', function () {
    var pct = this.value;
    if (pct < 0)
      pct = 0;
    if (pct > 100)
      pct = 100;
    element.currentTime = (pct / 100.0) * element.duration;
  });
    media.currentTime = (pct / 100.0) * media.duration;
  }, false);
};
$(document).ready(function () {
  $('video, audio').each(function () { yelp_init_video(this) });;
});

  var curspan = controls.querySelector('span.media-current');
$(document).ready( function () { jQuery.syntax({root: '', blockLayout: 'yelp',
theme: false, linkify: false}); });

$(document).ready(function () {
  $('input.facet').change(function () {
    var control = $(this);
    var content = control.closest('div.body,div.sect');
  var durspan = controls.querySelector('span.media-duration');
  var durationUpdate = function () {
    if (!isNaN(media.duration)) {
      mins = parseInt(media.duration / 60);
      secs = parseInt(media.duration - (60 * mins));
      durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs);
    content.find('.facet-link').each(function () {
      var link = $(this);
      var facets = link.parents('div.body,div.sect').children('div.region').children('div.contents').children('div.facets').children('div.facet');
      var visible = true;
      for (var i = 0; i < facets.length; i++) {
        var facet = facets.slice(i, i + 1);
        var facetvis = false;
        var inputs = facet.find('input.facet:checked');
        for (var j = 0; j < inputs.length; j++) {
          var input = inputs.slice(j, j + 1);
          var inputvis = false;
          var key = input.attr('data-facet-key');
          var values = input.attr('data-facet-values').split(' ');
          for (var k = 0; k < values.length; k++) {
            if (link.is('*[data-facet-' + key + ' ~= "' + values[k] + '"]')) {
              inputvis = true;
              break;
            }
          }
    }
  };
          if (inputvis) {
            facetvis = true;
            break;
          }
  media.addEventListener('durationchange', durationUpdate, false);

        }
        if (!facetvis) {
          visible = false;
  var ttmlDiv = null;
  var ttmlNodes = null;
  for (var i = 0; i < media.parentNode.children.length; i++) {
    var child = media.parentNode.children[i];
    if (child.classList.contains('media-ttml'))
      ttmlDiv = child;
          break;
        }
      }
  }
  if (ttmlDiv != null) {
    ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node');
  }
      if (!visible)
        link.hide('fast');
      else
        link.show('fast');
    });
  });
});

$(document).ready(function () {
  var timeUpdate = function () {
  $('a.gloss-term').each(function () {
    if ($(this).attr('href') == '#') {
    var pct = (media.currentTime / media.duration) * 100;
    mediarange.value = pct;
    var mins = parseInt(media.currentTime / 60);
    var secs = parseInt(media.currentTime - (60 * mins))
    curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs);
    if (ttmlNodes != null) {
      $(this).click(function () { return false; });
    }
    var showtip = function () {
      var desc = $(this).children('span.gloss-desc');
      if (desc.is(':visible'))
        return;
      for (var i = 0; i < ttmlNodes.length; i++) {
        var ttml = ttmlNodes[i];
        if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) &&
            (!ttml.hasAttribute('data-ttml-end') ||
             media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) {
          if (ttml.tagName == 'span' || ttml.tagName == 'SPAN')
            ttml.style.display = 'inline';
          else
      var top = $(this).offset().top + $(this).height() + 1;
      var left = $(this).offset().left;
      var cnt = $(this).closest('div.contents');
      var diff = cnt.offset().left + cnt.width() - desc.width() - 4;
      if (left > diff)
        left = diff;
            ttml.style.display = 'block';
        }
        else {
          ttml.style.display = 'none';
      desc.css({'top': top + 'px', 'left': left + 'px'}).fadeIn('slow');
    };
        }
      }
    }
  };
    var hidetip = function () {
      if ($(this).is(':focus'))
        return;
      $(this).children('span.gloss-desc').fadeOut('fast');
    };
  media.addEventListener('timeupdate', timeUpdate, false);
};
    $(this).hover(showtip, hidetip);
    $(this).focus(showtip);
    $(this).blur(hidetip);
  });
});

$(document).ready(function () {
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('video, audio');
  for (var i = 0; i < matches.length; i++) {
    yelp_media_init(matches[i]);
  }
}, false);
  $('div.mouseovers').each(function () {
    var contdiv = $(this);
    var width = 0;
    var height = 0;
    contdiv.find('img').each(function () {
      if ($(this).attr('data-yelp-match') == '')
        $(this).show();

    });
    contdiv.next('ul').find('a').each(function () {
      var mlink = $(this);
document.addEventListener('DOMContentLoaded', function() {
  var tiles = document.querySelectorAll('div.links-tile');
  for (var i = 0; i < tiles.length; i++) {
      mlink.hover(
        function () {
          if (contdiv.is(':visible')) {
            var offset = contdiv.offset();
            mlink.find('img').css({left: offset.left, top: offset.top, zIndex: 10});
            mlink.find('img').fadeIn('fast');
    (function (tile) {
      if (!tile.parentNode.classList.contains('links-tiles') &&
          (tile.nextElementSibling &&
           tile.nextElementSibling.classList.contains('links-tile')) &&
          !(tile.previousElementSibling &&
            tile.previousElementSibling.classList.contains('links-tile'))) {
        var tilesdiv = document.createElement('div');
        tilesdiv.className = 'links-tiles';
          }
        },
        function () {
          mlink.find('img').fadeOut('fast');
        tile.parentNode.insertBefore(tilesdiv, tile);
        var cur = tile;
        while (cur && cur.classList.contains('links-tile')) {
          var curcur = cur;
          cur = cur.nextElementSibling;
          tilesdiv.appendChild(curcur);
        }
      );
    });
  });
  $('div.links-ui-hover').each(function () {
        for (j = 0; j < 2; j++) {
          var paddiv = document.createElement('div');
          paddiv.className = 'links-tile';
    var contdiv = $(this);
    var width = 0;
    var height = 0;
    contdiv.next('ul').find('a').each(function () {
      var mlink = $(this);
      mlink.hover(
        function () {
          if (contdiv.is(':visible')) {
          tilesdiv.appendChild(paddiv);
            var offset = contdiv.offset();
            mlink.find('img').parent('span').css({left: offset.left, top: offset.top, zIndex: 10});
            mlink.find('img').parent('span').show();
          }
        }
        },
        function () {
          mlink.find('img').parent('span').hide();
        }
      }
      );
    });
  });
  $('a.ui-overlay').each(function () {
    $(this).click(function () {
      var overlay = $(this).parent('div').children('div.ui-overlay');
      var inner = overlay.children('div.inner');
      var close = inner.children('a.ui-overlay-close');
      var media = inner.find('audio, video');
    })(tiles[i]);
  }
});
document.addEventListener('DOMContentLoaded', function() {
  var overlays = document.querySelectorAll('a.ui-overlay');
  for (var i = 0; i < overlays.length; i++) {
    (function (ovlink) {
      var overlay = ovlink.parentNode.querySelector('div.ui-overlay');
      var ui_overlay_show = function (ev) {
        overlay.style.display = 'block';
        overlay.classList.add('ui-overlay-show');
        var screen = document.querySelector('div.ui-overlay-screen');
        if (screen == null) {
          screen = document.createElement('div');
          screen.className = 'ui-overlay-screen';
          document.body.appendChild(screen);
        }
        var inner = overlay.querySelector('div.inner');
        var close = inner.querySelector('a.ui-overlay-close');
        var media = inner.querySelectorAll('audio, video');
      var screen = $('div.ui-screen');
      if (screen.length == 0) {
        screen = $('<div class="ui-screen"></div>');
        $('body').append(screen);
      }
      var hideoverlay = function () {
        if (media.length > 0)
          media[0].pause();

        var overlay_play_func = function () {
          for (var j = 0; j < media.length; j++) {
            media[j].play();
        $(document).unbind('keydown.yelp-ui-overlay');
        close.unbind('click');
        screen.unbind('click');
        screen.fadeOut('slow');
        overlay.unbind('click');
        overlay.slideUp('fast');
        return false;
      };
      screen.click(hideoverlay);
      close.click(hideoverlay);
      $(document).bind('keydown.yelp-ui-overlay', function (event) {
        if (event.which == 27) {
          hideoverlay();
        }
      });
      overlay.click(function (event) {
        var target = event.target;
          }
        };
        var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000);

        var ui_overlay_funcs = {};
        ui_overlay_funcs['hide'] = function () {
          overlay.style.display = 'none';
          document.body.removeChild(screen);
          document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false);
          for (var j = 0; j < media.length; j++) {
            media[j].pause();
          }
          window.clearTimeout(overlay_play_timeout);
        };
        ui_overlay_funcs['hideclick'] = function (uiev) {
          ui_overlay_funcs['hide']();
          uiev.preventDefault();
        do {
          if (target == inner[0]) {
            break;
          }
        };
        } while (target = target.parentNode);
        if (target != inner[0]) {
          hideoverlay();
        ui_overlay_funcs['keydown'] = function (uiev) {
          if (uiev.keyCode == 27) {
            ui_overlay_funcs['hide']();
          return false;
        }
      });
      screen.fadeIn('slow');
      overlay.slideDown('fast', function () {
          }
        };
        screen.addEventListener('click', ui_overlay_funcs['hideclick'], false);
        close.addEventListener('click', ui_overlay_funcs['hideclick'], false);
        if (media.length > 0)
          media[0].play();
      });
      return false;
    });
        document.addEventListener('keydown', ui_overlay_funcs['keydown'], false);
        ev.preventDefault();
      };
      ovlink.addEventListener('click', ui_overlay_show, false);
    })(overlays[i]);
  });
  }
});

Modified help/html/youtube.html from [dee3f42011] to [bd547aa56e].


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
69

70
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82




83
84
85
86
87
88
89
90
91
92

93
94

95



96
97
+






+
+
+
+
+
+
-
+

-
-
+
+






-
+
-
-




-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+













-
-
-
+
+
+
+
+
+
+












-
-
-
-
+
+
+







-
+

-
+
-
-
-
+

<!DOCTYPE html>
<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> Youtube</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
  var matches = document.querySelectorAll('code.syntax')
  for (var i = 0; i < matches.length; i++) {
    hljs.highlightBlock(matches[i]);
  }
<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>
}, false);</script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation">
<body><main><div class="page">
<header><div class="inner pagewide"><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#extra" title="Additional features">Additional features</a> » <a class="trail" href="pluginmanager2.html" title="Plugin Manager 2 - 📦 Add">Plugin Manager 2 - <span class="key"><kbd>📦 Add</kbd></span> </a> » <a class="trail" href="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</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#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></div></header><article><div class="hgroup pagewide">
<div class="body">
<div class="hgroup">
<h1 class="title"><span class="title"><span class="media"><span class="media media-image"><img src="img/channel_youtube.png" class="media media-inline" alt=""></span></span> Youtube</span></h1>
<h2 class="subtitle"><span class="subtitle"><span class="link"><a href="http://youtube.com/" title="http://youtube.com/">//youtube.com/</a></span></span></h2>
</div>
<div class="region">
<div class="contents">
<div class="contents pagewide">
<div class="note note-bug" title="Bug">
<svg width="24" height="24" version="1.1">
 <path class="yelp-svg-fill" d="m7 8v7h0.0078a5 6.3027 0 0 0 3.9922 5.867v-6.867h2v6.871a5 6.3027 0 0 0 3.988-5.871h0.012v-7h-10z"></path>
 <path class="yelp-svg-fill" d="m12 3a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4z"></path>
 <path class="yelp-svg-fill" d="m16 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m9.2045 16.361h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m21.704 4.2894h6v1h-6z"></path>
 <path class="yelp-svg-fill" d="m2 12h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(30)" d="m5.5801 4.3612h6v1h-6z"></path>
 <path class="yelp-svg-fill" transform="rotate(-30)" d="m-6.9199 16.289h6v1h-6z"></path>
</svg><div class="inner"><div class="region"><div class="contents"><p class="p">This plugin is no longer supported or a default
	channel. Due to exceeded quotas, it ceased working, and Youtube/Google
	bothered me with inane requests for video recordings of how ST2 works
	(instead of simply looking at the code or investigating their own logs).
	Btw, the exceeded quota was unlikely due to regular ST2 usage. It's
	more probable the builtin and plainly-in-sight builtin API key was
	reappropriated otherwise. Hence, you would have to
        <span class="link"><a href="https://developers.google.com/youtube/v3/getting-started" title="https://developers.google.com/youtube/v3/getting-started">get
	your own key</a></span> now, if you wanted to use this channel. Btw,
	overall it's not that interesting / worth the effort IMO.</p></div></div></div>
</div>
<p class="p">Googles Youtube provides a quirky JSON API that makes browsing
        channels and genres feasible.  This beta plugin provides a little
        overview, and usually retrieves recent video uploads.</p>
<p class="p">VLC can directly play Youtube URLs. For other players one can use
        <span class="link"><a href="http://youtube-dl.org/" title="http://youtube-dl.org/">youtube-dl</a></span> as wrapper.
        For example <span class="cmd">totem $(youtube-dl %srv)</span> as configured player
        command.</p>
<p class="p">Youtube-dl is preconfigured as "recording"/download tool for this channel
        tab.</p>
<p class="p">Of course you could also just invoke a specific YT video by
        opening it in your web browser - click the station <span class="key"><kbd>home</kbd></span>
        button simply.</p>
</div>
<div id="options" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Channel options.</span></h2></div>
<div class="region"><div class="contents"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
<section id="options"><div class="inner">
<div class="hgroup pagewide"><h2 class="title"><span class="title">Channel options.</span></h2></div>
<div class="region"><div class="contents pagewide"><div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms"><span class="code">🔠 API key</span></dt>
<dd class="terms"><p class="p">You will have to aquire your own API key now, if you want to
            test this plugin. Quite cumbersome, and not recommended, but see 
            <span class="link"><a href="https://developers.google.com/youtube/v3/getting-started" title="https://developers.google.com/youtube/v3/getting-started">YouTube Data API Overview</a></span> </p></dd>
<dt class="terms"><span class="code">🔠 Region</span></dt>
<dd class="terms"><p class="p">With the country dropdown you can predefine which mostPopular listings are returned.</p></dd>
<dt class="terms"><span class="code">🔠 My Channels</span></dt>
<dd class="terms">
<p class="p">You can edit the list of YT channel names to fetch some of your favourite artists/uploaders.
            To apply this setting, and have new categories show up in the genre pane, use
            <span class="guiseq"><span class="gui">Channel</span> ▸ <span class="gui">Update category tree</span></span> first.</p>
<p class="p">It's not an exact map, but utilizes the search function to find channels.</p>
</dd>
<dt class="terms"><span class="code">☑ Wadsworth constant</span></dt>
<dd class="terms"><p class="p">Only influences the video homepage link.</p></dd>
</dl></div></div></div></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></section><section class="links" role="navigation"><div class="inner">
<div class="hgroup pagewide"></div>
<div class="contents pagewide"><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="configuration.html#plugins" title="Channel and feature plugins and settings">Channel and feature plugins and settings</a></li>
<li class="links "><a href="index.html#channels" title="Channel tabs">Channel tabs</a></li>
</ul></div>
</div></div></div>
</div>
</div></section>
</div>
<div class="clear"></div>
<div class="clear"></div></article><footer><div class="inner pagewide"></div></footer>
</div>
<div class="footer"></div>
</div></body>
</div></main></body>
</html>

Added help/img/channel_peertube.png version [52f49dcbe9].

cannot compute difference between binary files