root/trunk/README @ 35

Revision 35, 4.2 KB (checked in by clauz, 4 years ago)

documenting

Line 
1===============================================================================
2                     RadioMate - Radio Automation Made Easy
3===============================================================================
4
5RadioMate is a Free Engine for Distributed Web Radios, i.e. Web Radios in which
6the users can broadcast from home or wherever there is a connection to the
7Internet.
8
9While Savonet Liquidsoap [http://savonet.sourceforge.net] already provides a
10scriptable language and engine for Web Radios with a centralized schedule,
11RadioMate wraps and extends it to be used for Web Radios in which the schedule
12is managed in an horizontal and distributed way.
13
14Website: http://radiomate.org
15Mailing List: https://lists.subsignal.org/mailman/listinfo/radiomate
16
17
18Structure
19=========
20
21At the moment, RadioMate has two main components: the radiomate.cgi CGI script
22and the radiomated daemon.
23
24radiomate.cgi accepts JSON requests, made with the POST method, interacts with
25the database, and returns JSON responses, as described in the JsonAPI.txt file.
26
27Through the JSON API, the user can:
28- manage roles, i.e. groups of users, with different level of permissions
29- manage users, each user must have a role, created in advance
30- manage mediafiles, i.e. audio (for the moment) files, which must be already
31  present in the server's filesystem
32- manage playlists, which are collections of mediafiles
33- manage timeslots. Each timeslot represents a time interval reserved for a
34  transmission. The slottype parameter must correspond to a defined JukeSlot
35  type (described later).
36
37The radiomated daemon retrieves the reserved timeslots from the database and
38schedules the transmissions, launching the appropriate JukeSlots.
39
40JukeSlots are an abstraction for liquidsoap instances: the main JukeSlot
41manages the global fallback playlist, the actual transmission stream and the
42takeover stream. The global fallback playlist is played when there are no
43scheduled transmissions, while the takeover stream can be used to override the
44normal webradio schedule.
45
46A LiveJukeSlot (slottype:"simplelive") istance represents a transmission in
47which a WJ can connect with her client and transmit/perform live, while in a
48PlayListJukeSlot (slottype:"simpleplaylist") a predefined playlist (or a
49prerecorded transmission) is played.
50
51New JukeSlots can be added, plug-in-wise, as described in the "Plugging in New
52JukeSlot Types" section below.
53
54
55Installation and Configuration
56==============================
57
58For system requirements and installation instructions please refer to the
59INSTALL file.
60
61For what concerns configuration, radiomate will look for a file called
62radiomateconfig.py inside the /etc/ directory. A sample configuration file,
63radiomateconfig.sample.py, is provided, which contains commented sample
64configuration parameters.
65
66
67Plugging in New JukeSlot Types
68==============================
69
70The range of supported JukeSlots can be extended by developers that have some
71skills in the Savonet liquidsoap scripting language (very little knowledge of
72Python is required). The steps can be summarized in:
73
74- creating a new file in which a new Python Class, derived from JukeSlot(), is
75  defined and in which the liquidsoapcode() method is overridden. This may
76  sound complicated to non-Python developers, but is not: just have a look at
77  the simplelive.py and simpleplaylist.py files, inside the radiomate/jukeslots
78  directory and use them as template for the new JukeSlot classes.
79
80- be sure to add a JUKESLOTTYPEDICT entry at the end of the file. For example,
81  at the end of simplelive.py we have the line:
82
83JUKESLOTTYPEDICT['simplelive'] = LiveJukeSlot
84
85  where 'simplelive' is the name that will be used for the timeslot types
86  through the JSON interface, and LiveJukeSlot is the name of the newly
87  defined class.
88
89- put the new file, with .py extension, in the radiomate/jukeslots directory
90
91- edit the radiomate/jukeslots/all.py and add a line similar to this one:
92
93from simplelive import *
94
95  where simplelive corresponds to the filename that contains the new class,
96  with the .py extension omitted
97
98- for non-Python developers: be careful with tabs!!! :) 
99
100- restart the radiomated daemon
101
102For any issue please write to the RadioMate mailing list.
103
104
Note: See TracBrowser for help on using the browser.