podcast(1) BSD General Commands Manual podcast(1)
NAME
podcast -- Podcast Producer command line tool
SYNOPSIS
podcast [-s server] [-u username] [-p password] [--auth {Password | Kerberos}] [--checksslcert] [--timeout seconds] command [command-options]
DESCRIPTION
The Podcast Producer command line tool is used to interface with a Pod- cast Producer Server. Using the tool it is possible to query the server for status, bind a local device to the server for recording, or control the capture and submission of media for processing by Podcast Producer. It is also possible to perform a number of administrative configuration tasks related to access control and feed generation. Use podcast by passing options for making the connection to the server (see OPTIONS) followed by a command (see COMMANDS). Commands may take additional arguments or options as specified.
OPTIONS
-s, --server server The network address of the Podcast Producer server (defaults to the value returned by hostname(1)) Format: "myserver.example.com" or "https://myserver.example.com:8170/podcastproducer" -u, --user username The username for authentication (used only with Password auth; defaults to the current console user) -p, --pass password The password for authentication (used only with Password auth; podcast will prompt for the password it is not provided on the command line) --auth type The type of authentication to use, either Password or Kerberos (defaults to Password) --checksslcert Validate server SSL certificate --timeout seconds Specify a network timeout in seconds (defaults to 60 seconds) --help Display this man page
COMMANDS
Information Commands --listcameras List available cameras --listworkflows List available workflows --listfeeds Lists available feeds --listcatalogs Lists available catalogs --listservers List available servers (Bonjour discovery) --listinfo List information for a given server (does not require authentication) Agent Commands --isbound Check if the local camera agent is bound to a server (returns 1 if bound, 0 if unbound) --bind camera_name [--lockdown] Bind local camera to a server with name camera_name. The lockdown flag restricts the cam- era to the Administrator group (80). --unbind camera_name Remove binding for local camera --presets Lists available capture presets for camera agent configuration --devices Lists available devices for camera agent configura- tion --getconfig Read agent configuration settings --setconfig key=value[;key=value ...] Write an agent configuration setting (requires root privileges). Valid keys are: o Capture Value takes the form of a <Type>:<Quality> pair. Valid Types: "Audio" or "Video" or "Screen". Valid Qualities: "Good" or "Better" or "Best" o AudioDevice Value is one of [Automatic | SysPref | <DeviceID>] Automatic will use the default audio device input. SysPref will use the audio device input from System Preferences. Use <DeviceID> to specify a particular audio device. o VideoDevice Value is one of [Automatic | <DeviceID>] Automatic will use the default video device input. Use <DeviceID> to specify a particular video device. Camera Control Commands --status camera_name [--update_preview_image [--include_preview_image]] Get status of a specific remote camera. Optionally, ask for the preview image to be updated. When updating the preview image, specifying --include_preview_image will return image data with the command response. --start camera_name [--audio_only] [--delay seconds] Start capture on a specific remote camera. Option- ally, start recording with audio only mode or with delay --pause camera_name Pause capture on a specific remote camera --resume camera_name Resume capture on a specific remote camera --stop camera_name {--workflow_uuid UUID | --submission_uuid UUID} [--user_metadata metadata_file_path] [--title title] [--description description] Stop capture on a specific remote camera and either submits footage for processing with the workflow specified by UUID or as the source for the pre-cre- ated submission specified by UUID (see MULTI-SOURCE RECORDING for more information). The metadata_file_path specifies the location of the file containing user metadata for the recording (note that for compatibility reasons --user_metadata and --metadata are equivalent). You can also specify this information by using title and description --cancel camera_name Cancel capture for a specific remote camera Submission Commands --create_recording --workflow_uuid UUID Create an empty recording container for the work- flow specified by UUID (see MULTI-SOURCE RECORDING for more information) --submit --file file_path [--file file_path ...] {--workflow_uuid UUID | --submission_uuid UUID} [--user_metadata user_metadata_file_path] [--recording_metadata recording_metadata_file_path] [--title title] [--description description] Submit file(s) specified by the file_path arguments either for processing with the workflow specified by UUID or as the source for the pre-created sub- mission specified by UUID (see MULTI-SOURCE RECORDING for more information). The metadata_file_path, if present, specifies the location of the file containing user metadata for the submission (note that for compatibility reasons --user_metadata and --metadata are equivalent). You can also specify this information by using title and description. The recording_metadata_file_path allows you to submit a metadata file containing recording information. The --submit command can also take the following optional arguments: --upload_buffer_size buffer_size Specifies the network trans- fer size for an upload operation (default is 128K) --delete Delete the local copy of the uploaded data on a suc- cessful sub- mission --run_uploader Start the uploader process --list_uploads Lists pending uploads and progress status --clear_completed_uploads Clears completed uploads from list Workflow Administration Commands --installworkflow --path workflow_bundle_path [--overwrite] [--master_password password] Install the workflow at workflow_bundle_path. If a workflow already exists at this location on the server, then it will be replaced if --overwrite is specified. If the workflow bundle is protected by a master password, then the password can be specified with the --master_password argument. If the master password is needed but not specified the command line will attempt to retrieve it from the System Keychain. --enableworkflow --workflow_uuid UUID Enable the workflow specified by UUID --disableworkflow --workflow_uuid UUID Disable the workflow specified by UUID --downloadworkflow --workflow_uuid UUID --path workflow_bundle_path Download the workflow bundle for the workflow spec- ified by UUID to the path specified by workflow_bundle_path --infoworkflow --workflow_uuid UUID Get information about the workflow specified by UUID --deleteworkflow --workflow_uuid UUID Delete the workflow specified by UUID from the server ACL Administration Commands --addaccess --resource_type {Camera | Workflow | Feed} --resource_uuid UUID --record_type {group | user} --shortname name Grant access for a user or group to a resource. This will only have an affect if access controls have been enabled via the --enableacls command. --removeaccess --resource_type {Camera | Workflow | Feed} --resource_uuid UUID --record_type {group | user} --shortname name Remove access for a user or group to a resource. This will only have an affect if access controls have been enabled via the --enableacls command. --showacl --resource_type {Camera | Workflow | Feed} --resource_uuid UUID List all of the access control entries for a resource --enableacl --resource_type {Camera | Workflow | Feed} --resource_uuid UUID Enable access controls for a particular resource --enableacls --resource_type {Camera | Workflow | Feed} Enable access controls for a particular resource type --disableacl --resource_type {Camera | Workflow | Feed} --resource_uuid UUID Disable access controls for a particular resource --disableacls --resource_type {Camera | Workflow | Feed} Disable access controls for a particular resource type --checkaccess --resource_type {Camera | Workflow | Feed} --resource_uuid UUID --shortname username Verify that a given user has an access to a resource The ACL Administration commands take the following options: --resource_type {camera | workflow | feed} Specifies the type of resource for access control administration --resource_uuid UUID The UUID of the resource for access control admin- istration --record_type {group | user} Indicates whether access should be modified for a single user or for a group of users --shortname name The directory service shortname of the user or group whose access is being modified Feed Administration Commands --addfeed {--shortname name | --keyword keyword_string | --query query_string --feed_name name --description description_string} Create a new feed on the server based either on a specific username, a keyword search of podcast metadata, or a query string. See FEED ADMINISTRATION for more information on creating new feeds. --enablefeed --feed_uuid UUID Enable the feed specified by UUID --disablefeed --feed_uuid UUID Disable the feed specified by UUID --removefeed --feed_uuid UUID Remove the feed specified by UUID from the server --setfeedimage --feed_uuid UUID --path PATH_TO_IMAGE Set the logo for the feed specified by UUID to the image at PATH_TO_IMAGE --makeexplicit --feed_uuid UUID Tag the feed specified by UUID as explicit --makenonexplicit --feed_uuid UUID Tag the feed specified by UUID as non explicit --setfeedproperty --feed_uuid UUID --property_name PROPERTY --value VALUE Set the PROPERTY to the specified VALUE for the feed specified by UUID. The following properties can be set for a feed: 'name', 'description', 'author_shortname', 'copyright'. CATALOG ADMINISTRATION --setcatalogimage --feed_uuid UUID --path PATH_TO_IMAGE Set the logo for the catalog specified by UUID to the image at PATH_TO_IMAGE --setcatalogproperty --catalog_uuid UUID --property_name PROPERTY --value VALUE Set the PROPERTY to the specified VALUE for the catalog specified by UUID. The following properties can be set for a catalog: 'title', 'subtitle', 'author_shortname', 'copyright'.
COMMAND EXAMPLES
List Workflows on the server: podcast -s myserver.example.com -u username -p password --listworkflows List cameras agents currently bound to the server: podcast -s myserver.example.com -u username -p password --listcameras Submit a file to the server. (NOTE: Multiple files can be submitted to a single workflow or source at once by appending additional --file file_path arguments): podcast -s myserver.example.com -u username -p password --submit --file /path/to/file --workflow_uuid 73CD7C50-E909-425B-AD22-C6359E5B5D74 --metadata /path/to/metadata.plist Bind a camera agent to a server: podcast -s myserver.example.com -u adminuser -p password --bind 'MyCamera' Set the configuration for a camera agent: podcast --setconfig 'Capture=Video:Good;VideoDevice=iSight;AudioDevice=Automatic' Start a recording on a remote camera agent: podcast -s myserver.example.com -u username -p password --start 'MyCamera' Stop a recording on a remote camera agent: podcast -s myserver.example.com -u username -p password --start 'MyCamera' --workflow_uuid 73CD7C50-E909-425B-AD22-C6359E5B5D74 --metadata /path/to/metadata.plist
MULTI-SOURCE RECORDING
Multi-source workflows can be used with multiple cameras, multiple files to be uploaded, or a combination of the two.With multi-source recording, instead of submitting a file or camera recording to a workflow for pro- cessing, a recording container is first generated for the workflow to be used. This container creation returns submission UUIDs that can then be used for file upload or camera recording. To create the container: podcast -s myserver.example.com -u username -p password --create_recording --workflow_uuid 52DCABC4-8E4F-4A1F-848B-08A3B5692F40 If recording container creation is successful, the output of this command will look like: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version='1.0'> <dict> <key>workflow_uuid</key> <string>751254C7-F3C1-4213-B778-4A36BFF59AE5</string> <key>recording_uuid</key> <string>62849E4F-56D2-4C18-90EF-A2DA8B4245F2</string> <key>submission_uuids</key> <array> <string>41A92378-0D9C-45EF-BD57-BADC89402771</string> <string>68192B93-374D-4E41-A8A4-5C1770B932EA</string> </array> </dict> </plist> The array of submission UUIDs is the information needed to then use this recording container. To submit one (or more) file(s) to the recording: podcast -s myserver.example.com -u username -p password --submit --file /path/to/file --submission_uuid 41A92378-0D9C-45EF-BD57-BADC89402771 Cameras to be used with a multi-source recording are started as in the original maner (see COMMAND EXAMPLES) and can even be started before the creation of the recording container. When the camera to be used is stopped, pass the submission UUID instead of the workflow UUID: podcast -s myserver.example.com -u username -p password --stop 'MyCamera' --submission_uuid 68192B93-374D-4E41-A8A4-5C1770B932EA --metadata /path/to/metadata.plist The ordering of the submission UUIDs returned when the recording con- tainer is created is the same as the ordering of sources in the corre- sponding workflow's sources.plist file. Workflow processing will begin once all submission UUIDs have been used for either file submission or camera recording.
FEED ADMINISTRATION
Using the podcast tool, it is possible to add, remove, enable, and dis- able feeds. These feeds utilize the Podcast Producer library to create collections of Podcasts created by a particular user or based on a key- word search. It is also possible to create a feed based on a custom query string. Creating a feed based on username or keyword requires only the username or keyword for feed generation: podcast -s myserver.example.com -u username -p password --addfeed --shortname podcast_user Generates a feed that will contain all of the episodes produced by the user whose shortname is "podcast_user". podcast -s myserver.example.com -u username -p passoword --addfeed --keyword gravity Generates a feed that will contain all of the episodes that contain the keywork "gravity". On the other hand, creating a feed for a custom query string requires that you give the feed a name and short description, in addition to the string containing the query. The query string uses SQL syntax. podcast -s myserver.example.com -u username -p password --addfeed --feed_name "Test feeds" --description "Feeds generated during testing" --query "episode.title LIKE '%test%'" Available fields include: episode.title, episode.summary, episode.author_shortname, episode.author_fullname, episode.author_email, episode.keywords, episode.workflow_uuid, episode.explicit, episode.enabled, episode.created_at, episode.updated_at After generating a feed, the feed can be checked with any RSS reader at: feed://myserver.example.com:8171/podcastproducer/feeds/fetch?format=rss&uuid="UUID" where "UUID" is the UUID of the created feed (returned by the podcast command upon successful creation).
RETURN VALUES
The podcast command has various return codes to indicate errors. They are grouped generally as follows: o 0 if command completed successfully. o 10-19 for local command line issues. o 20-29 for server connectivity problems. o 30-39 for server command problems. o 40 and above for agent response errors. The specific return values are listed below. 10 Root is required. 11 There was an error reading or writing to a Plist 12 There were command line parameter errors. 20 The server is unavailable. 21 There was a server hostname lookup failure. 22 There was a server timeout. 23 The server is not running SSL. 24 The server certificate is not valid (only with --checksslcert). 25 There was a bad response from the server. 26 The server returned an authorization failure. 30 The submission create failed. 31 The upload server is unavailable. 32 The file upload failed. 33 The file copy failed. 34 The submission complete failed. 35 The agent bind failed on the server. 36 An agent command failed on the server. 37 An unknown server error occurred.
METADATA EXAMPLE
Example of a metadata file submitted during camera stop or file upload with --metadata: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Author</key> <string>Professor Rick Hathaway</string> <key>Comment</key> <string>Strangely, things fall together. Sorry Yeats.</string> <key>Copyright</key> <string>Copyright (c) 2007 Vox Clamantis College</string> <key>Description</key> <string>Gravitation is a phenomenon through which all objects attract each other.</string> <key>Keywords</key> <string>gravitation phys13</string> <key>Title</key> <string>Lecture 4 -- The theory of gravitation</string> </dict> </plist>
OUTPUT EXAMPLES
Sample output from the --listworkflows command example (see COMMAND EXAMPLES above): <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version='1.0'> <dict> <key>workflows</key> <array> <dict> <key>name</key> <string>Workflow1</string> <key>title</key> <string>Physics 13 Workflow</string> <key>description</key> <string>Create podcast for Fall 2007 Physics 13</string> <key>uuid</key> <string>53F32376-B563-4A01-B481-120E9E337DB7</string> <key>user_requirements</key> <array> <string>Title</string> <string>Description</string> </array> </dict> <dict> <key>name</key> <string>Workflow2</string> <key>title</key> <string>Chemistry 5 Workflow</string> <key>description</key> <string>Create podcast for Fall 2007 Chemistry 5</string> <key>uuid</key> <string>BBA1DB24-F6DE-475D-B51B-E7A780888F16</string> <key>user_requirements</key> <array> <string>Title</string> <string>Description</string> </array> </dict> </array> </dict> </plist> Sample output from the --listcameras command example (see COMMAND EXAMPLES above): <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version='1.0'> <dict> <key>cameras</key> <array> <dict> <key>name</key> <string>WilderHall_Room102</string> <key>uuid</key> <string>A4640553-1C93-4FCD-98FE-917AF1700C6B</string> <key>preview_url</key> <string>https://podcastproducer.voxclamantis.edu:8170/agent_previews/A4640553-1C93-4FCD-98FE-917AF1700C6B.jpg</string> </dict> <dict> <key>name</key> <string>SteeleHall_Room006</string> <key>uuid</key> <string>B6DBECAC-3472-4692-B0FC-6143A46A7B53</string> <key>preview_url</key> <string>https://podcastproducer.voxclamantis.edu:8170/agent_previews/B6DBECAC-3472-4692-B0FC-6143A46A7B53.jpg</string> </dict> </array> </dict> </plist> Mac OS X September 17, 2009 Mac OS X
Mac OS X 10.6 - Generated Thu Sep 17 20:08:51 CDT 2009