PHP 8.4 library and CLI tools to read, modify, and generate ProPresenter 7 files: songs (.pro), playlists (.proplaylist), bundles (.probundle), themes, and the global library files (Macros, Labels, Groups, ClearGroups, CCLI, Messages, Timers, Stage, Workspace, Props, TestPatterns, Calendar, KeyMappings, CommunicationDevices). Built on the MIT-licensed ProPresenter7-Proto schema by greyshirtguy (v7.16.2). Includes 18 CLI parsers, comprehensive API docs in doc/, binary-format specs, and a synthetic 369-test PHPUnit suite covering RTF extraction, translation slides, ZIP64 repair, round-trip fidelity, and end-to-end generation.
208 lines
4.9 KiB
Protocol Buffer
Executable file
208 lines
4.9 KiB
Protocol Buffer
Executable file
syntax = "proto3";
|
|
|
|
package rv.data;
|
|
|
|
option cc_enable_arenas = true;
|
|
option csharp_namespace = "Pro.SerializationInterop.RVProtoData";
|
|
option swift_prefix = "RVData_";
|
|
|
|
import "proApiV1Identifier.proto";
|
|
|
|
message API_v1_TimerFormat {
|
|
enum API_v1_TimerUnitDisplayFormat {
|
|
none = 0;
|
|
short = 1;
|
|
long = 2;
|
|
remove_short = 3;
|
|
remove_long = 4;
|
|
}
|
|
|
|
.rv.data.API_v1_TimerFormat.API_v1_TimerUnitDisplayFormat hour = 6;
|
|
.rv.data.API_v1_TimerFormat.API_v1_TimerUnitDisplayFormat minute = 7;
|
|
.rv.data.API_v1_TimerFormat.API_v1_TimerUnitDisplayFormat second = 8;
|
|
.rv.data.API_v1_TimerFormat.API_v1_TimerUnitDisplayFormat millisecond = 9;
|
|
}
|
|
|
|
message API_v1_TimerValue {
|
|
.rv.data.API_v1_Identifier id = 1;
|
|
string time = 2;
|
|
.rv.data.API_v1_TimerState state = 3;
|
|
}
|
|
|
|
message API_v1_Timer {
|
|
message API_v1_Timer_Countdown {
|
|
int32 duration = 1;
|
|
}
|
|
|
|
message API_v1_Timer_CountdownToTime {
|
|
int32 time_of_day = 1;
|
|
.rv.data.API_v1_Timer.API_v1_TimePeriod period = 2;
|
|
}
|
|
|
|
message API_v1_Timer_Elapsed {
|
|
int32 start_time = 1;
|
|
int32 end_time = 2;
|
|
bool has_end_time = 3;
|
|
}
|
|
|
|
enum API_v1_TimePeriod {
|
|
am = 0;
|
|
pm = 1;
|
|
is_24_hour = 2;
|
|
}
|
|
|
|
.rv.data.API_v1_Identifier id = 1;
|
|
bool allows_overrun = 2;
|
|
oneof TimerConfiguration {
|
|
.rv.data.API_v1_Timer.API_v1_Timer_Countdown countdown = 3;
|
|
.rv.data.API_v1_Timer.API_v1_Timer_CountdownToTime count_down_to_time = 4;
|
|
.rv.data.API_v1_Timer.API_v1_Timer_Elapsed elapsed = 5;
|
|
}
|
|
}
|
|
|
|
message API_v1_Timer_Request {
|
|
message Timers {
|
|
}
|
|
|
|
message CreateTimer {
|
|
string name = 1;
|
|
bool allows_overrun = 2;
|
|
.rv.data.API_v1_Timer.API_v1_Timer_Countdown countdown = 3;
|
|
.rv.data.API_v1_Timer.API_v1_Timer_CountdownToTime count_down_to_time = 4;
|
|
.rv.data.API_v1_Timer.API_v1_Timer_Elapsed elapsed = 5;
|
|
}
|
|
|
|
message CurrentTimes {
|
|
}
|
|
|
|
message AllTimersOperation {
|
|
.rv.data.API_v1_TimerOperation operation = 1;
|
|
}
|
|
|
|
message GetTimer {
|
|
string id = 1;
|
|
}
|
|
|
|
message PutTimer {
|
|
string id = 1;
|
|
.rv.data.API_v1_Timer timer = 2;
|
|
}
|
|
|
|
message DeleteTimer {
|
|
string id = 1;
|
|
}
|
|
|
|
message TimerOperation {
|
|
string id = 1;
|
|
.rv.data.API_v1_TimerOperation operation = 2;
|
|
}
|
|
|
|
message PutTimerOperation {
|
|
string id = 1;
|
|
.rv.data.API_v1_TimerOperation operation = 2;
|
|
.rv.data.API_v1_Timer timer = 3;
|
|
}
|
|
|
|
message TimerIncrement {
|
|
string id = 1;
|
|
double amount = 2;
|
|
}
|
|
|
|
message SystemTime {
|
|
}
|
|
|
|
message VideoCountdown {
|
|
}
|
|
|
|
oneof Request {
|
|
.rv.data.API_v1_Timer_Request.Timers timers = 1;
|
|
.rv.data.API_v1_Timer_Request.CreateTimer create_timer = 2;
|
|
.rv.data.API_v1_Timer_Request.CurrentTimes current_times = 3;
|
|
.rv.data.API_v1_Timer_Request.AllTimersOperation all_timers_operation = 4;
|
|
.rv.data.API_v1_Timer_Request.GetTimer get_timer = 5;
|
|
.rv.data.API_v1_Timer_Request.PutTimer put_timer = 6;
|
|
.rv.data.API_v1_Timer_Request.DeleteTimer delete_timer = 7;
|
|
.rv.data.API_v1_Timer_Request.TimerOperation timer_operation = 8;
|
|
.rv.data.API_v1_Timer_Request.PutTimerOperation put_timer_operation = 9;
|
|
.rv.data.API_v1_Timer_Request.TimerIncrement timer_increment = 10;
|
|
.rv.data.API_v1_Timer_Request.SystemTime system_time = 11;
|
|
.rv.data.API_v1_Timer_Request.VideoCountdown video_countdown = 12;
|
|
}
|
|
}
|
|
|
|
message API_v1_Timer_Response {
|
|
message Timers {
|
|
repeated .rv.data.API_v1_Timer timers = 1;
|
|
}
|
|
|
|
message CreateTimer {
|
|
.rv.data.API_v1_Timer timer = 1;
|
|
}
|
|
|
|
message CurrentTimes {
|
|
repeated .rv.data.API_v1_TimerValue timers = 1;
|
|
}
|
|
|
|
message AllTimersOperation {
|
|
}
|
|
|
|
message GetTimer {
|
|
.rv.data.API_v1_Timer timer = 1;
|
|
}
|
|
|
|
message PutTimer {
|
|
.rv.data.API_v1_Timer timer = 1;
|
|
}
|
|
|
|
message DeleteTimer {
|
|
}
|
|
|
|
message TimerOperation {
|
|
}
|
|
|
|
message PutTimerOperation {
|
|
.rv.data.API_v1_Timer timer = 1;
|
|
}
|
|
|
|
message TimerIncrement {
|
|
}
|
|
|
|
message SystemTime {
|
|
uint64 time = 1;
|
|
}
|
|
|
|
message VideoCountdown {
|
|
string time = 1;
|
|
}
|
|
|
|
oneof Response {
|
|
.rv.data.API_v1_Timer_Response.Timers timers = 1;
|
|
.rv.data.API_v1_Timer_Response.CreateTimer create_timer = 2;
|
|
.rv.data.API_v1_Timer_Response.CurrentTimes current_times = 3;
|
|
.rv.data.API_v1_Timer_Response.AllTimersOperation all_timers_operation = 4;
|
|
.rv.data.API_v1_Timer_Response.GetTimer get_timer = 5;
|
|
.rv.data.API_v1_Timer_Response.PutTimer put_timer = 6;
|
|
.rv.data.API_v1_Timer_Response.DeleteTimer delete_timer = 7;
|
|
.rv.data.API_v1_Timer_Response.TimerOperation timer_operation = 8;
|
|
.rv.data.API_v1_Timer_Response.PutTimerOperation put_timer_operation = 9;
|
|
.rv.data.API_v1_Timer_Response.TimerIncrement timer_increment = 10;
|
|
.rv.data.API_v1_Timer_Response.SystemTime system_time = 11;
|
|
.rv.data.API_v1_Timer_Response.VideoCountdown video_countdown = 12;
|
|
}
|
|
}
|
|
|
|
enum API_v1_TimerState {
|
|
stopped = 0;
|
|
running = 1;
|
|
complete = 2;
|
|
overrunning = 3;
|
|
overran = 4;
|
|
}
|
|
|
|
enum API_v1_TimerOperation {
|
|
start = 0;
|
|
stop = 1;
|
|
reset = 2;
|
|
}
|
|
|