2 caption = list of server commands
3 aux_info_prefix = Permissions:
6 The server process listens on a network socket and accepts connections
7 from para_client or para_audiod. For the connection to succeed the
8 connecting peer must authenticate as one of the users stored in the
9 user table of para_server. Each entry of the user table contains the
10 set of permission bits that are granted to the user. Authenticated
11 users may execute one of the commands below if the set of permission
12 bits of the command is a subset of the permission bits that are
17 purpose = add or update audio files
18 non-opts-name = path...
19 aux_info = AFS_READ | AFS_WRITE
21 Each path must be absolute and refer to either an audio file or a
22 directory. In case of a directory, all audio files in that directory
23 are added recursively. Note that the given paths refer to files or
24 directories on the host on which para_server is running.
28 summary = add all files
30 The default is to add only files ending in a known suffix for a
31 supported audio format.
35 summary = add files lazily
37 If the path already exists in the database, skip this file. This
38 operation is really cheap. Useful to update large directories after
39 some files have been added.
43 summary = force adding/updating
45 Recompute the audio format handler data even if a file with the same
46 path and the same hash value exists.
50 summary = enable verbose mode
52 Print what is being done.
56 purpose = add new attribute(s)
57 non-opts-name = attribute...
58 aux_info = AFS_READ | AFS_WRITE
60 This adds new attributes to the attribute table. At most 64 attributes
65 purpose = run integrity checks on database tables
68 If no options are given, all checks are run.
72 summary = run audio file table checks
74 Report stale paths and invalid image and lyrics ids of the audio
79 summary = check for invalid attributes
81 Report audio files whose attribute bitmask is invalid, i.e., has a bit
82 set which does not correspond to any attribute of the attribute table.
86 summary = check for invalid mood definitions
88 Run syntax checks on all moods of the mood table.
92 summary = find invalid paths in playlists
94 Check all playlists for paths not contained in the audio file table.
98 purpose = copy selected parts of the audio file selector info
99 non-opts-name = source pattern...
100 aux_info = AFS_READ | AFS_WRITE
102 If no option, or only --verbose is given, all fields of the audio
103 file selector info structure are copied to each row of the audio file
104 table whose path matches at least one of the given patterns. Otherwise,
105 only those fields which correspond to the given options are copied.
107 [option attribute-bitmap]
109 summary = copy the attribute bitmap
112 summary = copy the image id
115 summary = copy the lyrics id
118 summary = copy the lastplayed timestamp
121 summary = copy the numplayed counter
124 summary = enable verbose mode
127 purpose = jump N seconds forward or backward
129 aux_info = VSS_READ | VSS_WRITE
131 This sets the 'R' (reposition request) bit of the vss status flags
132 which enqueues a request to jump n seconds forwards or backwards.
138 jumps 30 seconds backwards.
143 purpose = list available commands or print command-specific help
144 non-opts-name = [command]
145 aux_info = NO_PERMISSION_REQUIRED
147 Without any arguments, help prints a list of available commands. When
148 called with a command name as first argument, it prints the description
153 purpose = reload config file, log file and user list
156 Reread the config file and the user list file, close and reopen the log
157 file, and ask the afs process to do the same. Sending the HUP signal
158 to the server process has the same effect as running this command.
162 purpose = initialize the database tables for the audio file selector
163 synopsis = [table_name...]
164 aux_info = AFS_READ | AFS_WRITE
166 When invoked without arguments, this command creates all
167 tables: audio_files, attributes, scores, moods, lyrics, images,
168 playlists. Otherwise only the given tables are created.
172 purpose = reposition the current stream
174 aux_info = VSS_READ | VSS_WRITE
176 Set the 'R' (reposition request) bit of the vss status flags and
177 enqueue a request to jump to n% of the current audio file, where 0 <=
182 purpose = list attributes
185 Print the list of all defined attributes which match the given
186 pattern. If no pattern is given, the full list is printed.
191 summary = sort attributes by id
193 The default is to sort alphabetically by name.
195 Attributes are internally represented as an 64 bit array. The attribute
196 id is the bit number in this array.
200 summary = print long listing
202 The long listing prints the attribute id in addition to the name of
203 the attribute. The id is printed as a decimal number and is separated
204 from the name by a tab character.
208 summary = reverse sort order
211 purpose = rename an attribute
212 synopsis = source dest
213 aux_info = AFS_READ | AFS_WRITE
215 Rename the attribute given by the first argument to the destination
216 given by the second argument. It is an error if the destination
221 purpose = close the stream and start to stream the next audio file
222 aux_info = VSS_READ | VSS_WRITE
224 Set the 'N' (next audio file) bit of the vss status flags. This
225 instructs the server to close the current stream, if any. The 'P'
226 (playing) bit is not modified by this command. If it is on, playing
227 continues with the next audio file.
229 This command is equivalent to stop if paused, and has no effect
234 purpose = stop playing after current audio file
235 aux_info = VSS_READ | VSS_WRITE
237 Set the 'O' (no more) bit of the vss status flags which asks
238 para_server to clear the 'P' (playing) bit after the 'N' (next audio
239 file) bit transitions from off to on (because the end of the current
240 audio file is reached). Use this command instead of stop if you don't
245 purpose = suspend the current stream
246 aux_info = VSS_READ | VSS_WRITE
248 Clear the 'P' (playing) bit of the vss status flags.
252 purpose = start or resume playback
253 aux_info = VSS_READ | VSS_WRITE
255 Set the 'P' (playing) bit of the vss status flags.
259 purpose = remove rows from the audio file table
260 non-opts-name = pattern...
261 aux_info = AFS_READ | AFS_WRITE
263 Remove all rows of the audio file table which match any of the given
264 patterns. Note that this affects only the database table; the command
265 won't touch your audio files on disk.
269 summary = print paths of deleted rows
272 summary = don't complain if nothing was removed
273 [option pathname-match]
275 summary = modify matching behaviour
277 Match a slash in the path only with a slash in pattern and not by an
278 asterisk (*) or a question mark (?) metacharacter, nor by a bracket
279 expression ([]) containing a slash (see fnmatch(3)).
283 purpose = remove attribute(s)
284 non-opts-name = pattern...
285 aux_info = AFS_READ | AFS_WRITE
287 Remove all attributes which match any given pattern. All information
288 about the removed attributes in the audio file table is lost.
292 purpose = activate a mood or a playlist
293 non-opts-name = specifier/name
294 aux_info = AFS_READ | AFS_WRITE
296 The specifier is either 'm' or 'p' to indicate whether a playlist or
297 a mood should be activated. Example:
301 activates the mood named 'foo'.
305 purpose = control paraslash senders
306 synopsis = [sender cmd [arguments]]
307 aux_info = VSS_READ | VSS_WRITE
309 Send a command to a specific sender. The following commands are
310 available, but not all senders support every command.
312 help, on, off, add, delete, allow, deny, status.
314 The help command prints the help text of the given sender. If no
315 command is given the list of available senders is shown.
319 para_client sender http help
324 purpose = set or unset attributes
325 synopsis = attribute{+|-}... pattern...
326 aux_info = AFS_READ | AFS_WRITE
328 Set ('+') or unset ('-') the given attributes for all audio files
329 matching the given pattern. Example:
331 setatt rock+ punk+ pop- '*foo.mp3'
333 sets the 'rock' and the 'punk' attribute and unsets the 'pop' attribute
334 of all files ending with 'foo.mp3'.
338 purpose = print server info
339 aux_info = NO_PERMISSION_REQUIRED
341 Show server and afs PID, number of connections, uptime and more.
345 purpose = print information about the current audio file
349 summary = number of times to show the status info
350 arg_info = required_arg
354 Exit after the status information has been shown num times. If this
355 option is not given, the command runs in an endless loop.
357 [option parser-friendly]
359 summary = enable parser-friendly output
361 Show status item identifiers as numerical values and prefix each
362 status item with its size in bytes.
366 purpose = stop playback
367 aux_info = VSS_READ | VSS_WRITE
369 Clear the 'P' (playing) bit and set the 'N' (next audio file) bit of
370 the vss status flags, effectively stopping playback.
374 purpose = list active server tasks
375 aux_info = NO_PERMISSION_REQUIRED
377 For each task, print ID, status and name. This is mostly useful
382 purpose = ask the server to terminate
383 aux_info = VSS_READ | VSS_WRITE
385 Shut down the server. Instead of this command, you can also send
386 SIGINT or SIGTERM to the para_server process. It should never be
387 necessary to send SIGKILL.
391 purpose = manipulate the afs information of audio files
392 non-opts-name = pattern...
393 aux_info = AFS_READ | AFS_WRITE
395 This command modifies the afs info structure of all rows of the audio
396 file table whose path matches at least one of the given patters.
398 If at least one option is given which takes a number as its argument,
399 only those fields of the afs info structure are updated which
400 correspond to the given options while all other fields stay unmodified.
402 If no such option is given, the lastplayed field is set to the current
403 time and the value of the numplayed field is increased by one while
404 all other fields are left unchanged. This mimics what happens when
405 the virtual streaming system selects the file for streaming.
407 If the file is admissible for the current mood (or contained in the
408 current playlist), its score is recomputed according to the changed
413 summary = set the numplayed count manually
415 arg_info = required_arg
418 The numplayed count of an audio file is the number of times the file
419 was selected for streaming. It is one of the inputs to the scoring
420 function which determines the order in which admissible files are
423 The virtual streaming system increases this number automatically each
424 time it opens the file for streaming.
428 summary = set the lastplayed time manually
430 arg_info = required_arg
433 The lastplayed time of an audio file is the time when the file was
434 last opened for streaming.
436 Like the numplayed count, it is an input for the scoring function
437 and is updated automatically by the virtual streaming system.
439 The argument must be a number of seconds since the epoch. Example:
441 touch -l=$(date +%s) file
443 sets the lastplayed time of 'file' to the current time.
447 summary = set the image id
449 arg_info = required_arg
452 The afs info structure of each row of the audio file table contains
453 a slot for the image id of the audio file that corresponds to the
454 row. The image id stored in this slot refers to the key in the image
455 table that identifies the blob.
457 When a new audio file is added to the audio file table, its image
458 id starts out as zero, indicating that there is no image associated
459 with the file. Setting the image id to a non-zero number associates
460 the file with a particular blob of the image table, for example the
461 cover art of the album in jpg format.
465 summary = set the lyrics id
467 arg_info = required_arg
470 This option works just like --image-id, but sets the lyrics ID rather
475 summary = set the amplification value (0-255)
477 arg_info = required_arg
480 The amplification value of an audio file is a number which is stored
481 in the afs info structure.
483 The value determines the scaling factor by which the amplitude of
484 the decoded samples should be multiplied in order to normalize the
485 volume. A value of zero means no amplification, 64 means the amplitude
486 should be multiplied by a factor of two, 128 by three and so on.
488 The amp filter of para_audiod amplifies the volume according to
493 summary = explain what is being done
494 [option pathname-match]
496 summary = modify matching behaviour
498 Match a slash in the path only with a slash in pattern and not by an
499 asterisk (*) or a question mark (?) metacharacter, nor by a bracket
500 expression ([]) containing a slash (see fnmatch(3)).
504 purpose = print the git version string of para_server
505 aux_info = NO_PERMISSION_REQUIRED
508 summary = print detailed (multi-line) version text
510 m4_define(`BLOB_COMMANDS', `
512 purpose = remove `$1' blob(s)
513 non-opts-name = pattern...
514 aux_info = AFS_READ | AFS_WRITE
516 Remove all `$1' blobs which match any of the given patterns.
520 purpose = rename `$1' blob(s)
521 non-opts-name = source dest
522 aux_info = AFS_READ | AFS_WRITE
524 Rename `$1' source to dest. The command fails if the source `$1'
525 does not exist or if the destination `$1' already exists.
529 purpose = add a blob to the `$1' table
530 non-opts-name = `$1'_name
531 aux_info = AFS_READ | AFS_WRITE
533 Read from stdin and ask the audio file selector to create a blob in
534 the `$1' table. If the named blob already exists, it gets replaced
539 purpose = dump a `$1' blob to stdout
540 non-opts-name = `$1'_name
544 purpose = list blobs of type `$1' which match a pattern
545 non-opts-name = [pattern...]
548 Print the list of all blobs which match the given pattern. If no
549 pattern is given, the full list is printed.
553 summary = sort by identifier
555 The default is to sort alphabetically by name.
559 summary = long listing
561 Print identifier and name. The default is to print only the name.
565 summary = reverse sort order
568 BLOB_COMMANDS(`moods', `mood')
569 BLOB_COMMANDS(`playlist', `pl')
570 BLOB_COMMANDS(`image', `img')
571 BLOB_COMMANDS(`lyrics', `lyr')