Commit 67e44a375d2d51cecda669775d361322b5ac3af0
1 parent
4922e3f1
Exists in
master
and in
1 other branch
Modificação nos parâmetros da linha de comando
Showing
11 changed files
with
488 additions
and
265 deletions
Show diff stats
Makefile
main.cpp
| @@ -15,107 +15,132 @@ | @@ -15,107 +15,132 @@ | ||
| 15 | #include "serviceWindowGenerationFromRec.h" | 15 | #include "serviceWindowGenerationFromRec.h" |
| 16 | #include "serviceWindowGenerationFromText.h" | 16 | #include "serviceWindowGenerationFromText.h" |
| 17 | #include "serviceException.h" | 17 | #include "serviceException.h" |
| 18 | +#include <lavidlib/base/RuntimeException.h> | ||
| 19 | +#include "argParser.h" | ||
| 18 | #include <sys/time.h> | 20 | #include <sys/time.h> |
| 19 | #include <stdlib.h> | 21 | #include <stdlib.h> |
| 20 | 22 | ||
| 23 | +#define MAX_SIZE_PATH 256 | ||
| 21 | #define PATH_DEVEL_CONTENTS "vlibras_user/vlibras-contents/videos" | 24 | #define PATH_DEVEL_CONTENTS "vlibras_user/vlibras-contents/videos" |
| 22 | #define PATH_DEVEL_UPLOADS "vlibras_user/vlibras-contents/uploads" | 25 | #define PATH_DEVEL_UPLOADS "vlibras_user/vlibras-contents/uploads" |
| 23 | #define PATH_VBOX_UPLOADS "vlibras_user/.vlibras-config/uploads" | 26 | #define PATH_VBOX_UPLOADS "vlibras_user/.vlibras-config/uploads" |
| 24 | 27 | ||
| 25 | using namespace std; | 28 | using namespace std; |
| 26 | 29 | ||
| 27 | -void serviceSRT(char* service, char* path_video, char* path_srt, char* sublanguage, char* position, char* size, char* transparency, char* id, char* client_type); | ||
| 28 | -void serviceREC(char* service, char* path_video, char* position, char* size, char* transparency, char* id, char* client_type); | 30 | +void serviceSRT(int service, string path_video, string path_srt, int language, int position, int size, int background, string id, int mode); |
| 31 | +void serviceREC(int service, string path_video, int position, int size, int background, string id, int mode); | ||
| 32 | +void serviceOnlySRT(int service, string path_srt, int language, int background, string id, int mode); | ||
| 33 | +void serviceOnlyAudio(int service, string path_audio, int background, string id, int mode); | ||
| 34 | +void serviceText(string path_text, int language, int background, string id, int mode); | ||
| 35 | +void serviceRECWithoutMixing(int service, string path_video, int background, string id, int mode); | ||
| 29 | 36 | ||
| 30 | -void serviceOnlySRT(char* service, char* path_file, char* sublanguage, char* transparency, char* id, char* client_type); | ||
| 31 | -void serviceOnlyAudio(char* service, char* path_audio, char* transparency, char* id, char* client_type); | ||
| 32 | -void serviceRECWithoutMixing(char* service, char* path_video, char* transparency, char* id, char* client_type); | ||
| 33 | -void serviceText(char* service, char* path_text, char* sublanguage, char* transparency, char* id, char* client_type); | ||
| 34 | - | ||
| 35 | -//void serviceREC(char* path_video, char* sublanguage, char* position, char* size, char* transparency, char* username, char* rate); | ||
| 36 | -//void serviceOnlyAudio(char* path_audio, char* transparency, char* username, char* rate); | ||
| 37 | - | ||
| 38 | -void help(); | ||
| 39 | -void serviceHelp(int service); | ||
| 40 | -void setPathContents(char* client); | ||
| 41 | -void fail(string msg); | ||
| 42 | void hasFailed(); | 37 | void hasFailed(); |
| 43 | void hasInvalid(); | 38 | void hasInvalid(); |
| 39 | +void fail(string msg); | ||
| 40 | +void setPathContents(int mode, string id); | ||
| 44 | 41 | ||
| 45 | bool isFailed; | 42 | bool isFailed; |
| 46 | bool isInvalid; | 43 | bool isInvalid; |
| 47 | 44 | ||
| 48 | int main(int argc, char* argv[]) { | 45 | int main(int argc, char* argv[]) { |
| 49 | 46 | ||
| 47 | + int service; | ||
| 48 | + int language; | ||
| 49 | + int position; | ||
| 50 | + int size; | ||
| 51 | + int background; | ||
| 52 | + int mode; | ||
| 53 | + int nomixer; | ||
| 54 | + | ||
| 55 | + string input; | ||
| 56 | + string input_srt; | ||
| 57 | + string id; | ||
| 58 | + | ||
| 59 | + ArgParser *parser; | ||
| 60 | + | ||
| 50 | struct timeval tv1, tv2; | 61 | struct timeval tv1, tv2; |
| 51 | double t1, t2; | 62 | double t1, t2; |
| 52 | 63 | ||
| 53 | gettimeofday(&tv1, NULL); | 64 | gettimeofday(&tv1, NULL); |
| 54 | t1 = (double)(tv1.tv_sec) + (double)(tv1.tv_usec)/ 1000000.00; | 65 | t1 = (double)(tv1.tv_sec) + (double)(tv1.tv_usec)/ 1000000.00; |
| 55 | - | ||
| 56 | - if(argc > 2) { | ||
| 57 | - printf("\n################## VLIBRAS : LAVID ##################\n\n"); | ||
| 58 | - DDPRINTF("Service Type: %s\n", argv[1]); | ||
| 59 | - switch((int) atoi(argv[1])){ | ||
| 60 | - case 1: | ||
| 61 | - if(argc <= 9){ | ||
| 62 | - serviceHelp(1); | ||
| 63 | - hasInvalid(); | ||
| 64 | - }else{ | ||
| 65 | - serviceSRT(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]); | ||
| 66 | - } | ||
| 67 | - break; | ||
| 68 | - case 2: | ||
| 69 | - if(argc <= 7){ | ||
| 70 | - serviceHelp(2); | ||
| 71 | - hasInvalid(); | ||
| 72 | - }else{ | ||
| 73 | - serviceREC(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]); | ||
| 74 | - } | ||
| 75 | - break; | ||
| 76 | - case 3: | ||
| 77 | - if(argc <= 6){ | ||
| 78 | - serviceHelp(3); | ||
| 79 | - hasInvalid(); | ||
| 80 | - }else{ | ||
| 81 | - serviceText(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]); | ||
| 82 | - } | ||
| 83 | - break; | ||
| 84 | - case 4: | ||
| 85 | - if(argc <= 5){ | ||
| 86 | - serviceHelp(4); | ||
| 87 | - hasInvalid(); | ||
| 88 | - }else{ | ||
| 89 | - serviceOnlySRT(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]); | ||
| 90 | - } | ||
| 91 | - break; | ||
| 92 | - case 5: | ||
| 93 | - if(argc <= 5){ | ||
| 94 | - serviceHelp(5); | ||
| 95 | - hasInvalid(); | ||
| 96 | - }else{ | ||
| 97 | - serviceOnlyAudio(argv[1], argv[2], argv[3], argv[4], argv[5]); | ||
| 98 | - } | ||
| 99 | - break; | ||
| 100 | - case 6: | ||
| 101 | - if(argc <= 5){ | ||
| 102 | - serviceHelp(6); | ||
| 103 | - hasInvalid(); | ||
| 104 | - }else{ | ||
| 105 | - serviceRECWithoutMixing(argv[1], argv[2], argv[3], argv[4], argv[5]); | ||
| 106 | - } | ||
| 107 | - break; | ||
| 108 | - default: | ||
| 109 | - cout << "\nFAIL VLibras: Serviço inválido! Tente --help" << endl; | ||
| 110 | - hasInvalid(); | ||
| 111 | - break; | ||
| 112 | - } | ||
| 113 | - }else if(argc == 2 && (strcmp(argv[1], "--help")) == 0){ | ||
| 114 | - help(); | ||
| 115 | - exit(0); | ||
| 116 | - }else{ | ||
| 117 | - cout << "\nFAIL VLibras: Tente --help para obter informações.\n" << endl; | ||
| 118 | - hasInvalid(); | 66 | + |
| 67 | + parser = new ArgParser(); | ||
| 68 | + try{ | ||
| 69 | + parser->readArgs(argv, argc); | ||
| 70 | + }catch(lavidlib::RuntimeException &ex){ | ||
| 71 | + exit(1); | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + printf("\n################## LAViD : VLibras ##################\n\n"); | ||
| 75 | + | ||
| 76 | + service = parser->getService(); | ||
| 77 | + | ||
| 78 | + switch(service){ | ||
| 79 | + case 1: | ||
| 80 | + DDPRINTF("Service Type: Video with Subtitles\n"); | ||
| 81 | + input = parser->getInput(); | ||
| 82 | + input_srt = parser->getInputSRT(); | ||
| 83 | + language = parser->getLanguage(); | ||
| 84 | + position = parser->getPosition(); | ||
| 85 | + size = parser->getSize(); | ||
| 86 | + background = parser->getBackground(); | ||
| 87 | + id = parser->getId(); | ||
| 88 | + mode = parser->getMode(); | ||
| 89 | + serviceSRT(service, input, input_srt, language, position, size, background, id, mode); | ||
| 90 | + break; | ||
| 91 | + | ||
| 92 | + case 2: | ||
| 93 | + DDPRINTF("Service Type: Video Recognize\n"); | ||
| 94 | + input = parser->getInput(); | ||
| 95 | + position = parser->getPosition(); | ||
| 96 | + size = parser->getSize(); | ||
| 97 | + background = parser->getBackground(); | ||
| 98 | + id = parser->getId(); | ||
| 99 | + mode = parser->getMode(); | ||
| 100 | + serviceREC(service, input, position, size, background, id, mode); | ||
| 101 | + break; | ||
| 102 | + | ||
| 103 | + case 3: | ||
| 104 | + DDPRINTF("Service Type: Text\n"); | ||
| 105 | + input = parser->getInput(); | ||
| 106 | + language = parser->getLanguage(); | ||
| 107 | + background = parser->getBackground(); | ||
| 108 | + id = parser->getId(); | ||
| 109 | + mode = parser->getMode(); | ||
| 110 | + serviceText(input, language, background, id, mode); | ||
| 111 | + break; | ||
| 112 | + | ||
| 113 | + case 4: | ||
| 114 | + DDPRINTF("Service Type: Subtitles only\n"); | ||
| 115 | + input = parser->getInput(); | ||
| 116 | + language = parser->getLanguage(); | ||
| 117 | + background = parser->getBackground(); | ||
| 118 | + id = parser->getId(); | ||
| 119 | + mode = parser->getMode(); | ||
| 120 | + serviceOnlySRT(service, input, language, background, id, mode); | ||
| 121 | + break; | ||
| 122 | + | ||
| 123 | + case 5: //reconhecimento de audio | ||
| 124 | + DDPRINTF("Service Type: Audio Recognize\n"); | ||
| 125 | + input = parser->getInput(); | ||
| 126 | + background = parser->getBackground(); | ||
| 127 | + id = parser->getId(); | ||
| 128 | + mode = parser->getMode(); | ||
| 129 | + serviceREC(service, input, 0, 0, background, id, mode); | ||
| 130 | + break; | ||
| 131 | + | ||
| 132 | + case 6: //Reconhecimento de video sem mixagem | ||
| 133 | + DDPRINTF("Service Type: Video Recognize (Mixer Disabled)\n"); | ||
| 134 | + input = parser->getInput(); | ||
| 135 | + background = parser->getBackground(); | ||
| 136 | + id = parser->getId(); | ||
| 137 | + mode = parser->getMode(); | ||
| 138 | + serviceREC(service, input, 0, 0, background, id, mode);//como service != 2 então não há mixagem | ||
| 139 | + break; | ||
| 140 | + | ||
| 141 | + default: | ||
| 142 | + printf("\nOpção de serviço não reconhecida!\n"); | ||
| 143 | + hasInvalid(); | ||
| 119 | } | 144 | } |
| 120 | 145 | ||
| 121 | if(isFailed) | 146 | if(isFailed) |
| @@ -130,14 +155,19 @@ int main(int argc, char* argv[]) { | @@ -130,14 +155,19 @@ int main(int argc, char* argv[]) { | ||
| 130 | exit(0); | 155 | exit(0); |
| 131 | } | 156 | } |
| 132 | 157 | ||
| 133 | -void serviceSRT(char* service, char* path_video, char* path_srt, char* sublanguage, char* position, | ||
| 134 | - char* size, char* transparency, char* id, char* client_type){ | 158 | +void serviceSRT(int service, string path_video, string path_srt, int language, int position, int size, int background, string id, int mode){ |
| 159 | + char* video = new char[MAX_SIZE_PATH]; | ||
| 160 | + char* srt = new char[MAX_SIZE_PATH]; | ||
| 161 | + char* name = new char[64]; | ||
| 135 | 162 | ||
| 136 | - setPathContents(client_type); | 163 | + strcpy(video, path_video.c_str()); |
| 164 | + strcpy(srt, path_srt.c_str()); | ||
| 165 | + strcpy(name, id.c_str()); | ||
| 137 | 166 | ||
| 138 | - ServiceWindowGenerationFromSRT * service_srt; | ||
| 139 | - service_srt = new ServiceWindowGenerationFromSRT(path_video, path_srt, (int) atoi(sublanguage), | ||
| 140 | - (int) atoi(position), (int) atoi(size), (int) atoi(transparency), id, client_type, (int) atoi(service)); | 167 | + setPathContents(mode, id); |
| 168 | + | ||
| 169 | + ServiceWindowGenerationFromSRT* service_srt; | ||
| 170 | + service_srt = new ServiceWindowGenerationFromSRT(video, srt, language, position, size, background, name, mode, service); | ||
| 141 | 171 | ||
| 142 | try{ | 172 | try{ |
| 143 | service_srt->initialize(); | 173 | service_srt->initialize(); |
| @@ -149,18 +179,24 @@ void serviceSRT(char* service, char* path_video, char* path_srt, char* sublangua | @@ -149,18 +179,24 @@ void serviceSRT(char* service, char* path_video, char* path_srt, char* sublangua | ||
| 149 | while(!service_srt->isFinished()){ | 179 | while(!service_srt->isFinished()){ |
| 150 | sleep(5); | 180 | sleep(5); |
| 151 | } | 181 | } |
| 152 | - | 182 | + |
| 183 | + delete [] video; | ||
| 184 | + delete [] srt; | ||
| 185 | + delete [] name; | ||
| 153 | delete service_srt; | 186 | delete service_srt; |
| 154 | } | 187 | } |
| 155 | 188 | ||
| 156 | -void serviceREC(char* service, char* path_video, char* position, char* size, | ||
| 157 | - char* transparency, char* id, char* client_type){ | 189 | +void serviceREC(int service, string path_video, int position, int size, int background, string id, int mode){ |
| 190 | + char* video = new char[MAX_SIZE_PATH]; | ||
| 191 | + char* name = new char[64]; | ||
| 192 | + | ||
| 193 | + strcpy(video, path_video.c_str()); | ||
| 194 | + strcpy(name, id.c_str()); | ||
| 158 | 195 | ||
| 159 | - setPathContents(client_type); | 196 | + setPathContents(mode, id); |
| 160 | 197 | ||
| 161 | - ServiceWindowGenerationFromRec * service_rec; | ||
| 162 | - service_rec = new ServiceWindowGenerationFromRec(path_video, (int) atoi(position), | ||
| 163 | - (int) atoi(size), (int) atoi(transparency), id, client_type, (int) atoi(service)); | 198 | + ServiceWindowGenerationFromRec* service_rec; |
| 199 | + service_rec = new ServiceWindowGenerationFromRec(video, position, size, background, name, mode, service); | ||
| 164 | 200 | ||
| 165 | try{ | 201 | try{ |
| 166 | service_rec->initialize(); | 202 | service_rec->initialize(); |
| @@ -170,26 +206,25 @@ void serviceREC(char* service, char* path_video, char* position, char* size, | @@ -170,26 +206,25 @@ void serviceREC(char* service, char* path_video, char* position, char* size, | ||
| 170 | return; | 206 | return; |
| 171 | } | 207 | } |
| 172 | while(!service_rec->isFinished()){ | 208 | while(!service_rec->isFinished()){ |
| 173 | - sleep(2); | 209 | + sleep(5); |
| 174 | } | 210 | } |
| 211 | + | ||
| 212 | + delete [] video; | ||
| 213 | + delete [] name; | ||
| 175 | delete service_rec; | 214 | delete service_rec; |
| 176 | } | 215 | } |
| 177 | 216 | ||
| 178 | -void serviceRECWithoutMixing(char* service, char* path_video, char* transparency, char* id, char* client_type){ | ||
| 179 | - | ||
| 180 | - char* position = new char[1]; | ||
| 181 | - char* size = new char[1]; | ||
| 182 | - strcpy(position, "0"); | ||
| 183 | - strcpy(size, "0"); | ||
| 184 | - serviceREC(service, path_video, position, size, transparency, id, client_type); | ||
| 185 | -} | 217 | +void serviceText(string path_text, int language, int background, string id, int mode){ |
| 218 | + char* text = new char[MAX_SIZE_PATH]; | ||
| 219 | + char* name = new char[64]; | ||
| 186 | 220 | ||
| 187 | -void serviceText(char* service, char* path_text, char* sublanguage, char* transparency, char* id, char* client_type){ | 221 | + strcpy(text, path_text.c_str()); |
| 222 | + strcpy(name, id.c_str()); | ||
| 188 | 223 | ||
| 189 | - setPathContents(client_type); | 224 | + setPathContents(mode, id); |
| 190 | 225 | ||
| 191 | - ServiceWindowGenerationFromText *service_text; | ||
| 192 | - service_text = new ServiceWindowGenerationFromText(path_text, (int) atoi(sublanguage), (int) atoi(transparency), id, client_type); | 226 | + ServiceWindowGenerationFromText* service_text; |
| 227 | + service_text = new ServiceWindowGenerationFromText(text, language, background, name, mode); | ||
| 193 | 228 | ||
| 194 | try{ | 229 | try{ |
| 195 | service_text->initialize(); | 230 | service_text->initialize(); |
| @@ -202,15 +237,23 @@ void serviceText(char* service, char* path_text, char* sublanguage, char* transp | @@ -202,15 +237,23 @@ void serviceText(char* service, char* path_text, char* sublanguage, char* transp | ||
| 202 | while (!service_text->isFinished()) { | 237 | while (!service_text->isFinished()) { |
| 203 | usleep(100000); //100ms | 238 | usleep(100000); //100ms |
| 204 | } | 239 | } |
| 240 | + | ||
| 241 | + delete [] text; | ||
| 242 | + delete [] name; | ||
| 205 | delete service_text; | 243 | delete service_text; |
| 206 | } | 244 | } |
| 207 | 245 | ||
| 208 | -void serviceOnlySRT(char* service, char* path_file, char* sublanguage, char* transparency, char* id, char* client_type){ | 246 | +void serviceOnlySRT(int service, string path_srt, int language, int background, string id, int mode){ |
| 247 | + char* srt = new char[MAX_SIZE_PATH]; | ||
| 248 | + char* name = new char[64]; | ||
| 209 | 249 | ||
| 210 | - setPathContents(client_type); | 250 | + strcpy(srt, path_srt.c_str()); |
| 251 | + strcpy(name, id.c_str()); | ||
| 211 | 252 | ||
| 212 | - ServiceWindowGenerationFromSRT * service_srt; | ||
| 213 | - service_srt = new ServiceWindowGenerationFromSRT(path_file, (int) atoi(sublanguage), (int) atoi(transparency), id, client_type, (int) atoi(service)); | 253 | + setPathContents(mode, id); |
| 254 | + | ||
| 255 | + ServiceWindowGenerationFromSRT* service_srt; | ||
| 256 | + service_srt = new ServiceWindowGenerationFromSRT(srt, language, background, name, mode, service); | ||
| 214 | try{ | 257 | try{ |
| 215 | service_srt->initialize(); | 258 | service_srt->initialize(); |
| 216 | }catch(ServiceException ex){ | 259 | }catch(ServiceException ex){ |
| @@ -222,67 +265,12 @@ void serviceOnlySRT(char* service, char* path_file, char* sublanguage, char* tra | @@ -222,67 +265,12 @@ void serviceOnlySRT(char* service, char* path_file, char* sublanguage, char* tra | ||
| 222 | while (!service_srt->isFinished()) { | 265 | while (!service_srt->isFinished()) { |
| 223 | usleep(100000); //100ms | 266 | usleep(100000); //100ms |
| 224 | } | 267 | } |
| 225 | - delete service_srt; | ||
| 226 | -} | ||
| 227 | - | ||
| 228 | -void serviceOnlyAudio(char* service, char* path_audio, char* transparency, char* id, char* client_type){ | ||
| 229 | 268 | ||
| 230 | - char* position = new char[1]; | ||
| 231 | - char* size = new char[1]; | ||
| 232 | - strcpy(position, "0"); | ||
| 233 | - strcpy(size, "0"); | ||
| 234 | - serviceREC(service, path_audio, position, size, transparency, id, client_type); | 269 | + delete [] srt; |
| 270 | + delete [] name; | ||
| 271 | + delete service_srt; | ||
| 235 | } | 272 | } |
| 236 | 273 | ||
| 237 | -/*void serviceREC(char* path_video, char* sublanguage, | ||
| 238 | - char* position, char* size, char* transparency, char* id, char* rate){ | ||
| 239 | - | ||
| 240 | - ServiceWindowGenerationFromREC * service_rec; | ||
| 241 | - service_rec = new ServiceWindowGenerationFromREC( | ||
| 242 | - path_video, | ||
| 243 | - (int) atoi(sublanguage), | ||
| 244 | - (int) atoi(position), | ||
| 245 | - (int) atoi(size), | ||
| 246 | - (int) atoi(transparency), | ||
| 247 | - id, 2, rate); | ||
| 248 | - | ||
| 249 | - try{ | ||
| 250 | - service_rec->initialize(); | ||
| 251 | - }catch(ServiceException ex){ | ||
| 252 | - fail(ex.getMessage()); | ||
| 253 | - hasFailed(); | ||
| 254 | - return; | ||
| 255 | - } | ||
| 256 | - while(!service_rec->isFinished()){ | ||
| 257 | - sleep(2); | ||
| 258 | - } | ||
| 259 | - delete service_rec; | ||
| 260 | -}*/ | ||
| 261 | - | ||
| 262 | -/*void serviceOnlyAudio(char* path_audio, char* transparency, char* id, char* rate){ | ||
| 263 | - | ||
| 264 | - ServiceWindowGenerationFromREC * service_rec; | ||
| 265 | - service_rec = new ServiceWindowGenerationFromREC( | ||
| 266 | - path_audio, | ||
| 267 | - 0, | ||
| 268 | - 0, | ||
| 269 | - 0, | ||
| 270 | - (int) atoi(transparency), | ||
| 271 | - id, 5, rate); | ||
| 272 | - | ||
| 273 | - try{ | ||
| 274 | - service_rec->initialize(); | ||
| 275 | - }catch(ServiceException ex){ | ||
| 276 | - fail(ex.getMessage()); | ||
| 277 | - hasFailed(); | ||
| 278 | - return; | ||
| 279 | - } | ||
| 280 | - while(!service_rec->isFinished()){ | ||
| 281 | - sleep(2); | ||
| 282 | - } | ||
| 283 | - delete service_rec; | ||
| 284 | -}*/ | ||
| 285 | - | ||
| 286 | void fail(string msg){ | 274 | void fail(string msg){ |
| 287 | printf("\n"); | 275 | printf("\n"); |
| 288 | DDDDPRINTF("Ops... Tivemos um problema! :(\n"); | 276 | DDDDPRINTF("Ops... Tivemos um problema! :(\n"); |
| @@ -297,84 +285,15 @@ void hasInvalid(){ | @@ -297,84 +285,15 @@ void hasInvalid(){ | ||
| 297 | isInvalid = true; | 285 | isInvalid = true; |
| 298 | } | 286 | } |
| 299 | 287 | ||
| 300 | -void setPathContents(char* client){ | 288 | +void setPathContents(int mode, string id){ |
| 301 | string command = "mkdir -p "; | 289 | string command = "mkdir -p "; |
| 302 | - if(strcmp(client, "devel") == 0) | ||
| 303 | - command.append(PATH_DEVEL_CONTENTS).append(" && mkdir -p ").append(PATH_DEVEL_UPLOADS); | ||
| 304 | - else if (strcmp(client, "prod") == 0) | 290 | + if(mode == 1)// 1 aqui é devel |
| 291 | + command.append(PATH_DEVEL_CONTENTS).append(" && mkdir -p ").append(PATH_DEVEL_UPLOADS).append("/").append(id); | ||
| 292 | + else if (mode == 2)// 2 aqui é prod | ||
| 305 | command.append(PATH_VBOX_UPLOADS); | 293 | command.append(PATH_VBOX_UPLOADS); |
| 306 | else { | 294 | else { |
| 307 | - fail("Cliente Inválido!"); | 295 | + fail("Modo de execução não reconhecido!"); |
| 308 | exit(127); | 296 | exit(127); |
| 309 | } | 297 | } |
| 310 | system(command.c_str()); | 298 | system(command.c_str()); |
| 311 | } | 299 | } |
| 312 | - | ||
| 313 | -void serviceHelp(int service){ | ||
| 314 | - cout << "\nParâmetros inválidos! Tente novamente.\n"; | ||
| 315 | - switch(service){ | ||
| 316 | - case 1: | ||
| 317 | - cout << "\nService Type: Video with Subtitles\n" | ||
| 318 | - << "./vlibras 1 INPUT_VIDEO INPUT_SRT LANGUAGE(1: Portuguese, 2:Glosa) POSITION(1: Top_Left, 2: Top_Right, 3: Bottom_Right, 4: Bottom_Left) " | ||
| 319 | - << "SIZE(1: Small, 2: Medium, 3: Large) TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n"; | ||
| 320 | - break; | ||
| 321 | - case 2: | ||
| 322 | - cout << "\nService Type: Video Recognize\n" | ||
| 323 | - << "./vlibras 2 INPUT_VIDEO POSITION(1: Top_Left, 2: Top_Right, 3: Bottom_Right, 4: Bottom_Left) " | ||
| 324 | - << "SIZE(1: Small, 2: Medium, 3: Large) TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n"; | ||
| 325 | - break; | ||
| 326 | - case 3: | ||
| 327 | - cout << "\nService Type: Text\n" | ||
| 328 | - << "./vlibras 3 INPUT_TEXT_FILE LANGUAGE(1: Portuguese, 2:Glosa) TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n"; | ||
| 329 | - break; | ||
| 330 | - case 4: | ||
| 331 | - cout << "\nService Type: Subtitles only\n" | ||
| 332 | - << "./vlibras 4 INPUT_SRT LANGUAGE(1: Portuguese, 2:Glosa) TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n"; | ||
| 333 | - break; | ||
| 334 | - case 5: | ||
| 335 | - cout << "\nService Type: Audio Recognize\n" | ||
| 336 | - << "./vlibras 5 INPUT_AUDIO TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n"; | ||
| 337 | - break; | ||
| 338 | - case 6: | ||
| 339 | - cout << "\nService Type: Video Recognize Without Mixing\n" | ||
| 340 | - << "./vlibras 6 INPUT_VIDEO TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n"; | ||
| 341 | - break; | ||
| 342 | - } | ||
| 343 | -} | ||
| 344 | - | ||
| 345 | -//Help do programa, explicando todos os parâmetros existentes... | ||
| 346 | -void help() { | ||
| 347 | - | ||
| 348 | - cout << endl | ||
| 349 | - << "Usage Summary: vlibras [SERVICE] [INPUT] ... [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | ||
| 350 | - << "\nSERVICE:\n" | ||
| 351 | - << "1 Video with Subtitles (SRT) - requires INPUT_VIDEO and INPUT_SRT\n" | ||
| 352 | - << "2 Video Recognize - requires INPUT_VIDEO\n" | ||
| 353 | - << "3 Text - requires INPUT_TEXT_FILE\n" | ||
| 354 | - << "4 Subtitles only (SRT) - requires INPUT_SRT\n" | ||
| 355 | - << "5 Audio Recognize - requires INPUT_AUDIO\n" | ||
| 356 | - << "6 Video Recognize without mixing - requires INPUT_VIDEO\n" | ||
| 357 | - << "\nSERVICES PARAMETERS:\n" | ||
| 358 | - << "Video with subtitles:\n" | ||
| 359 | - << " [INPUT_VIDEO] [INPUT_SRT] [LANGUAGE] [POSITION] [SIZE] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | ||
| 360 | - << "\nVideo Recognize:\n" | ||
| 361 | - << " [INPUT_VIDEO] [LANGUAGE] [POSITION] [SIZE] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | ||
| 362 | - << "\nText:\n" | ||
| 363 | - << " [INPUT_TEXT_FILE] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | ||
| 364 | - << "\nSubtitles only:\n" | ||
| 365 | - << " [INPUT_SRT] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | ||
| 366 | - << "\nAudio Recognize\n" | ||
| 367 | - << " [INPUT_AUDIO] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n" | ||
| 368 | - << "\nPARAMETERS:\n" | ||
| 369 | - << "INPUT_VIDEO Path of the video file\n" | ||
| 370 | - << "INPUT_SRT Path of the subtitle file\n" | ||
| 371 | - << "INPUT_TEXT_FILE Path of the text file\n" | ||
| 372 | - << "INPUT_AUDIO Path of the audio file\n" | ||
| 373 | - << "LANGUAGE 1 - means Portuguese, 2 - means Glosa\n" | ||
| 374 | - << "POSITION 1 - means Top_Left, 2 - means Top_Right, 3 - means Bottom_Right, 4 - means Bottom_Left\n" | ||
| 375 | - << "SIZE 1 - means Small, 2 - means Medium, 3 - means Large\n" | ||
| 376 | - << "TRANSPARENCY 0 - means that the background is opaque , 1 - means that the background is transparent\n" | ||
| 377 | - << "ID Relative to the unique ID on the Database\n" | ||
| 378 | - << "CLIENT_TYPE prod - means that the client is web/cloud, devel - means that the client is developer\n" | ||
| 379 | - << endl; | ||
| 380 | -} | ||
| 381 | \ No newline at end of file | 300 | \ No newline at end of file |
servico/src/include/serviceWindowGeneration.h
| @@ -18,8 +18,8 @@ | @@ -18,8 +18,8 @@ | ||
| 18 | #include <json/json.h> | 18 | #include <json/json.h> |
| 19 | #include <lavidlib/base/RuntimeException.h> | 19 | #include <lavidlib/base/RuntimeException.h> |
| 20 | 20 | ||
| 21 | -#define DEVELOPER "devel" | ||
| 22 | -#define PRODUCTION "prod" | 21 | +#define DEVELOPER 1 |
| 22 | +#define PRODUCTION 2 | ||
| 23 | #define PATH_DEVEL_CONTENTS "vlibras_user/vlibras-contents/videos" | 23 | #define PATH_DEVEL_CONTENTS "vlibras_user/vlibras-contents/videos" |
| 24 | #define PATH_DEVEL_UPLOADS "vlibras_user/vlibras-contents/uploads" | 24 | #define PATH_DEVEL_UPLOADS "vlibras_user/vlibras-contents/uploads" |
| 25 | #define PATH_VBOX_UPLOADS "vlibras_user/.vlibras-config/uploads" | 25 | #define PATH_VBOX_UPLOADS "vlibras_user/.vlibras-config/uploads" |
| @@ -51,7 +51,6 @@ protected: | @@ -51,7 +51,6 @@ protected: | ||
| 51 | char* path_libras; | 51 | char* path_libras; |
| 52 | char* path_contents; | 52 | char* path_contents; |
| 53 | char* path_uploads; | 53 | char* path_uploads; |
| 54 | - char* client_type; | ||
| 55 | char* user_id; | 54 | char* user_id; |
| 56 | 55 | ||
| 57 | int size; | 56 | int size; |
| @@ -59,6 +58,7 @@ protected: | @@ -59,6 +58,7 @@ protected: | ||
| 59 | int transparency; | 58 | int transparency; |
| 60 | int sub_language; | 59 | int sub_language; |
| 61 | int service_type; | 60 | int service_type; |
| 61 | + int exec_mode; | ||
| 62 | int numero_legendas; | 62 | int numero_legendas; |
| 63 | int legendas_enviadas; | 63 | int legendas_enviadas; |
| 64 | 64 |
servico/src/include/serviceWindowGenerationFromRec.h
| @@ -23,7 +23,7 @@ public: | @@ -23,7 +23,7 @@ public: | ||
| 23 | ServiceWindowGenerationFromRec(char* pathVideo, int position, int size, | 23 | ServiceWindowGenerationFromRec(char* pathVideo, int position, int size, |
| 24 | int transparency, char* id, char* client, int serviceType, char* rate); | 24 | int transparency, char* id, char* client, int serviceType, char* rate); |
| 25 | ServiceWindowGenerationFromRec(char* pathVideo, int pos, int size, | 25 | ServiceWindowGenerationFromRec(char* pathVideo, int pos, int size, |
| 26 | - int transp, char* id, char* client, int serviceType); | 26 | + int transp, char* id, int mode, int serviceType); |
| 27 | ~ServiceWindowGenerationFromRec(); | 27 | ~ServiceWindowGenerationFromRec(); |
| 28 | 28 | ||
| 29 | void notifyTextRecognized(unsigned char* text, int64_t pts); | 29 | void notifyTextRecognized(unsigned char* text, int64_t pts); |
servico/src/include/serviceWindowGenerationFromSRT.h
| @@ -24,9 +24,9 @@ private: | @@ -24,9 +24,9 @@ private: | ||
| 24 | public: | 24 | public: |
| 25 | //construtor de serviço de video e legenda | 25 | //construtor de serviço de video e legenda |
| 26 | ServiceWindowGenerationFromSRT(char* pathVideo, char* pathSRT, int sublanguage, int pos, | 26 | ServiceWindowGenerationFromSRT(char* pathVideo, char* pathSRT, int sublanguage, int pos, |
| 27 | - int size, int transp, char* id, char* client, int serviceType); | 27 | + int size, int transp, char* id, int mode, int serviceType); |
| 28 | //construtor de serviço de somente legenda | 28 | //construtor de serviço de somente legenda |
| 29 | - ServiceWindowGenerationFromSRT(char* pathSRT, int sublanguage, int transparency, char* id, char* client, int serviceType); | 29 | + ServiceWindowGenerationFromSRT(char* pathSRT, int sublanguage, int transparency, char* id, int mode, int serviceType); |
| 30 | ~ServiceWindowGenerationFromSRT(); | 30 | ~ServiceWindowGenerationFromSRT(); |
| 31 | 31 | ||
| 32 | void notifySubtitle(unsigned char* subtitle, int64_t pts); | 32 | void notifySubtitle(unsigned char* subtitle, int64_t pts); |
servico/src/include/serviceWindowGenerationFromText.h
| @@ -18,7 +18,7 @@ private: | @@ -18,7 +18,7 @@ private: | ||
| 18 | void setPathContents(); | 18 | void setPathContents(); |
| 19 | bool isRunning(); | 19 | bool isRunning(); |
| 20 | public: | 20 | public: |
| 21 | - ServiceWindowGenerationFromText(char* pathFile, int sublanguage, int transparency, char* id, char* client); | 21 | + ServiceWindowGenerationFromText(char* pathFile, int sublanguage, int transparency, char* id, int mode); |
| 22 | ~ServiceWindowGenerationFromText(); | 22 | ~ServiceWindowGenerationFromText(); |
| 23 | 23 | ||
| 24 | void notifyLine(unsigned char* line); | 24 | void notifyLine(unsigned char* line); |
servico/src/serviceWindowGenerationFromRec.cpp
| @@ -8,7 +8,7 @@ ServiceWindowGenerationFromRec::ServiceWindowGenerationFromRec( | @@ -8,7 +8,7 @@ ServiceWindowGenerationFromRec::ServiceWindowGenerationFromRec( | ||
| 8 | this->size = size; | 8 | this->size = size; |
| 9 | this->transparency = transp; | 9 | this->transparency = transp; |
| 10 | this->user_id = id; | 10 | this->user_id = id; |
| 11 | - this->client_type = client; | 11 | + // this->client_type = client; |
| 12 | this->service_type = serviceType; | 12 | this->service_type = serviceType; |
| 13 | numero_legendas = INT_MAX; | 13 | numero_legendas = INT_MAX; |
| 14 | legendas_enviadas = 0; | 14 | legendas_enviadas = 0; |
| @@ -21,14 +21,14 @@ ServiceWindowGenerationFromRec::ServiceWindowGenerationFromRec( | @@ -21,14 +21,14 @@ ServiceWindowGenerationFromRec::ServiceWindowGenerationFromRec( | ||
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | ServiceWindowGenerationFromRec::ServiceWindowGenerationFromRec( | 23 | ServiceWindowGenerationFromRec::ServiceWindowGenerationFromRec( |
| 24 | - char* pathVideo, int pos, int size, int transp, char* id, char* client, int serviceType){ | 24 | + char* pathVideo, int pos, int size, int transp, char* id, int mode, int serviceType){ |
| 25 | 25 | ||
| 26 | this->path_input = pathVideo; | 26 | this->path_input = pathVideo; |
| 27 | this->position = pos; | 27 | this->position = pos; |
| 28 | this->size = size; | 28 | this->size = size; |
| 29 | this->transparency = transp; | 29 | this->transparency = transp; |
| 30 | this->user_id = id; | 30 | this->user_id = id; |
| 31 | - this->client_type = client; | 31 | + this->exec_mode = mode; |
| 32 | this->service_type = serviceType; | 32 | this->service_type = serviceType; |
| 33 | numero_legendas = INT_MAX; | 33 | numero_legendas = INT_MAX; |
| 34 | legendas_enviadas = 0; | 34 | legendas_enviadas = 0; |
| @@ -55,11 +55,12 @@ ServiceWindowGenerationFromRec::~ServiceWindowGenerationFromRec(){ | @@ -55,11 +55,12 @@ ServiceWindowGenerationFromRec::~ServiceWindowGenerationFromRec(){ | ||
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | void ServiceWindowGenerationFromRec::setPathContents(){ | 57 | void ServiceWindowGenerationFromRec::setPathContents(){ |
| 58 | - if(strcmp(client_type,DEVELOPER) == 0){ | 58 | + if(this->exec_mode == DEVELOPER){ |
| 59 | this->path_contents = PATH_DEVEL_CONTENTS; | 59 | this->path_contents = PATH_DEVEL_CONTENTS; |
| 60 | this->path_uploads = PATH_DEVEL_UPLOADS; | 60 | this->path_uploads = PATH_DEVEL_UPLOADS; |
| 61 | rec->setPathAudioContents(path_uploads); | 61 | rec->setPathAudioContents(path_uploads); |
| 62 | - }else if(strcmp(client_type, PRODUCTION) == 0){ | 62 | + |
| 63 | + }else if(this->exec_mode == PRODUCTION){ | ||
| 63 | ifstream conf_file(PATH_CONF_FILE, ifstream::binary); | 64 | ifstream conf_file(PATH_CONF_FILE, ifstream::binary); |
| 64 | parsingSuccessful = reader.parse(conf_file, root); | 65 | parsingSuccessful = reader.parse(conf_file, root); |
| 65 | if(!parsingSuccessful){ | 66 | if(!parsingSuccessful){ |
| @@ -74,7 +75,7 @@ void ServiceWindowGenerationFromRec::setPathContents(){ | @@ -74,7 +75,7 @@ void ServiceWindowGenerationFromRec::setPathContents(){ | ||
| 74 | rec->setPathAudioContents(path_uploads); | 75 | rec->setPathAudioContents(path_uploads); |
| 75 | conf_file.close(); | 76 | conf_file.close(); |
| 76 | }else{ | 77 | }else{ |
| 77 | - throw ServiceException("Invalid client!"); | 78 | + throw ServiceException("Invalid execution mode!"); |
| 78 | } | 79 | } |
| 79 | } | 80 | } |
| 80 | 81 |
servico/src/serviceWindowGenerationFromSRT.cpp
| 1 | #include "serviceWindowGenerationFromSRT.h" | 1 | #include "serviceWindowGenerationFromSRT.h" |
| 2 | 2 | ||
| 3 | ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* pathVideo, char* pathSRT, int sublanguage, | 3 | ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* pathVideo, char* pathSRT, int sublanguage, |
| 4 | - int pos, int size, int transp, char* id, char* client, int serviceType) { | 4 | + int pos, int size, int transp, char* id, int mode, int serviceType) { |
| 5 | 5 | ||
| 6 | this->path_input = pathVideo; | 6 | this->path_input = pathVideo; |
| 7 | this->path_srt = pathSRT; | 7 | this->path_srt = pathSRT; |
| @@ -10,7 +10,7 @@ ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* pathVideo, | @@ -10,7 +10,7 @@ ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* pathVideo, | ||
| 10 | this->size = size; | 10 | this->size = size; |
| 11 | this->transparency = transp; | 11 | this->transparency = transp; |
| 12 | this->user_id = id; | 12 | this->user_id = id; |
| 13 | - this->client_type = client; | 13 | + this->exec_mode = mode; |
| 14 | this->service_type = serviceType; | 14 | this->service_type = serviceType; |
| 15 | numero_legendas = INT_MAX; | 15 | numero_legendas = INT_MAX; |
| 16 | legendas_enviadas = 0; | 16 | legendas_enviadas = 0; |
| @@ -26,12 +26,12 @@ ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* pathVideo, | @@ -26,12 +26,12 @@ ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* pathVideo, | ||
| 26 | DPRINTF("Done!\n"); | 26 | DPRINTF("Done!\n"); |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | -ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* pathSRT, int sublanguage, int transp, char* id, char* client, int serviceType) { | 29 | +ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* pathSRT, int sublanguage, int transp, char* id, int mode, int serviceType) { |
| 30 | this->path_srt = pathSRT; | 30 | this->path_srt = pathSRT; |
| 31 | this->sub_language = sublanguage; | 31 | this->sub_language = sublanguage; |
| 32 | this->transparency = transp; | 32 | this->transparency = transp; |
| 33 | this->user_id = id; | 33 | this->user_id = id; |
| 34 | - this->client_type = client; | 34 | + this->exec_mode = mode; |
| 35 | this->service_type = serviceType; | 35 | this->service_type = serviceType; |
| 36 | numero_legendas = INT_MAX; | 36 | numero_legendas = INT_MAX; |
| 37 | legendas_enviadas = 0; | 37 | legendas_enviadas = 0; |
| @@ -58,10 +58,11 @@ ServiceWindowGenerationFromSRT::~ServiceWindowGenerationFromSRT() { | @@ -58,10 +58,11 @@ ServiceWindowGenerationFromSRT::~ServiceWindowGenerationFromSRT() { | ||
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | void ServiceWindowGenerationFromSRT::setPathContents() { | 60 | void ServiceWindowGenerationFromSRT::setPathContents() { |
| 61 | - if(strcmp(client_type,DEVELOPER) == 0){ | 61 | + if(this->exec_mode == DEVELOPER){ |
| 62 | this->path_contents = PATH_DEVEL_CONTENTS; | 62 | this->path_contents = PATH_DEVEL_CONTENTS; |
| 63 | this->path_uploads = PATH_DEVEL_UPLOADS; | 63 | this->path_uploads = PATH_DEVEL_UPLOADS; |
| 64 | - }else if(strcmp(client_type, PRODUCTION) == 0){ | 64 | + |
| 65 | + }else if(this->exec_mode = PRODUCTION){ | ||
| 65 | ifstream conf_file(PATH_CONF_FILE, ifstream::binary); | 66 | ifstream conf_file(PATH_CONF_FILE, ifstream::binary); |
| 66 | parsingSuccessful = reader.parse(conf_file, root); | 67 | parsingSuccessful = reader.parse(conf_file, root); |
| 67 | if(!parsingSuccessful){ | 68 | if(!parsingSuccessful){ |
| @@ -76,7 +77,7 @@ void ServiceWindowGenerationFromSRT::setPathContents() { | @@ -76,7 +77,7 @@ void ServiceWindowGenerationFromSRT::setPathContents() { | ||
| 76 | this->path_uploads = PATH_VBOX_UPLOADS; | 77 | this->path_uploads = PATH_VBOX_UPLOADS; |
| 77 | conf_file.close(); | 78 | conf_file.close(); |
| 78 | }else{ | 79 | }else{ |
| 79 | - throw ServiceException("Invalid client!"); | 80 | + throw ServiceException("Invalid execution mode!"); |
| 80 | } | 81 | } |
| 81 | } | 82 | } |
| 82 | 83 |
servico/src/serviceWindowGenerationFromText.cpp
| 1 | #include "serviceWindowGenerationFromText.h" | 1 | #include "serviceWindowGenerationFromText.h" |
| 2 | 2 | ||
| 3 | -ServiceWindowGenerationFromText::ServiceWindowGenerationFromText(char* pathFile, int sublanguage, int transp, char* id, char* client) { | 3 | +ServiceWindowGenerationFromText::ServiceWindowGenerationFromText(char* pathFile, int sublanguage, int transp, char* id, int mode) { |
| 4 | this->path_input = pathFile; | 4 | this->path_input = pathFile; |
| 5 | this->transparency = transp; | 5 | this->transparency = transp; |
| 6 | this->sub_language = sublanguage; | 6 | this->sub_language = sublanguage; |
| 7 | this->user_id = id; | 7 | this->user_id = id; |
| 8 | - client_type = client; | 8 | + this->exec_mode = mode; |
| 9 | running = true; | 9 | running = true; |
| 10 | finish = false; | 10 | finish = false; |
| 11 | numero_legendas = INT_MAX; | 11 | numero_legendas = INT_MAX; |
| @@ -30,10 +30,10 @@ ServiceWindowGenerationFromText::~ServiceWindowGenerationFromText() { | @@ -30,10 +30,10 @@ ServiceWindowGenerationFromText::~ServiceWindowGenerationFromText() { | ||
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | void ServiceWindowGenerationFromText::setPathContents() { | 32 | void ServiceWindowGenerationFromText::setPathContents() { |
| 33 | - if(strcmp(client_type,DEVELOPER) == 0){ | 33 | + if(this->exec_mode == DEVELOPER){ |
| 34 | this->path_contents = PATH_DEVEL_CONTENTS; | 34 | this->path_contents = PATH_DEVEL_CONTENTS; |
| 35 | //this->path_uploads = PATH_DEVEL_UPLOADS; | 35 | //this->path_uploads = PATH_DEVEL_UPLOADS; |
| 36 | - }else if(strcmp(client_type, PRODUCTION) == 0){ | 36 | + }else if(this->exec_mode == PRODUCTION){ |
| 37 | ifstream conf_file(PATH_CONF_FILE, ifstream::binary); | 37 | ifstream conf_file(PATH_CONF_FILE, ifstream::binary); |
| 38 | parsingSuccessful = reader.parse(conf_file, root); | 38 | parsingSuccessful = reader.parse(conf_file, root); |
| 39 | if(!parsingSuccessful){ | 39 | if(!parsingSuccessful){ |
| @@ -45,7 +45,7 @@ void ServiceWindowGenerationFromText::setPathContents() { | @@ -45,7 +45,7 @@ void ServiceWindowGenerationFromText::setPathContents() { | ||
| 45 | strcpy(this->path_contents, attr.c_str()); | 45 | strcpy(this->path_contents, attr.c_str()); |
| 46 | //this->path_uploads = PATH_VBOX_UPLOADS; | 46 | //this->path_uploads = PATH_VBOX_UPLOADS; |
| 47 | }else{ | 47 | }else{ |
| 48 | - throw ServiceException("Invalid client!"); | 48 | + throw ServiceException("Invalid execution mode!"); |
| 49 | } | 49 | } |
| 50 | } | 50 | } |
| 51 | 51 |
| @@ -0,0 +1,241 @@ | @@ -0,0 +1,241 @@ | ||
| 1 | +#include "argParser.h" | ||
| 2 | + | ||
| 3 | +ArgParser::ArgParser(){} | ||
| 4 | + | ||
| 5 | +ArgParser::~ArgParser(){} | ||
| 6 | + | ||
| 7 | +void ArgParser::readArgs(char** argv, int argc) | ||
| 8 | +{ | ||
| 9 | + int opt; | ||
| 10 | + int long_index = 0; | ||
| 11 | + | ||
| 12 | + static struct option long_options[] = { | ||
| 13 | + {"audio", required_argument, NULL, 'A'}, | ||
| 14 | + {"subtitle", required_argument, NULL, 'S'}, | ||
| 15 | + {"text", required_argument, NULL, 'T'}, | ||
| 16 | + {"video", required_argument, NULL, 'V'}, | ||
| 17 | + {"language", required_argument, NULL, 'l'}, | ||
| 18 | + {"background", required_argument, NULL, 'b'}, | ||
| 19 | + {"resolution", required_argument, NULL, 'r'}, | ||
| 20 | + {"position", required_argument, NULL, 'p'}, | ||
| 21 | + {"mode", required_argument, NULL, 'm'}, | ||
| 22 | + {"id", required_argument, NULL, 'i'}, | ||
| 23 | + {"no-mixer", no_argument, NULL, 'x'}, | ||
| 24 | + {"help", no_argument, NULL, 'h'}, | ||
| 25 | + {0, 0, 0, 0 } | ||
| 26 | + }; | ||
| 27 | + | ||
| 28 | + while ((opt = getopt_long_only(argc, argv, "A:S:T:V:l:b:r:p:m:", long_options, &long_index))!= -1) | ||
| 29 | + { | ||
| 30 | + switch (opt) | ||
| 31 | + { | ||
| 32 | + case 'A': | ||
| 33 | + if(argc <= 5) | ||
| 34 | + returnErr("Insuficient arguments. Try again"); | ||
| 35 | + | ||
| 36 | + globalArgs.service = _REC_AUDIO; | ||
| 37 | + globalArgs.input = optarg; | ||
| 38 | + break; | ||
| 39 | + | ||
| 40 | + case 'S': | ||
| 41 | + if(argc <= 6 || (globalArgs.service == _REC_VIDEO && argc <= 9)) | ||
| 42 | + returnErr("Insuficient arguments. Try again"); | ||
| 43 | + | ||
| 44 | + if(globalArgs.service == _REC_VIDEO){ // ativa o serviço de vídeo e legendas | ||
| 45 | + globalArgs.service = _VIDEO_WITH_SRT; | ||
| 46 | + globalArgs.input_srt = optarg; | ||
| 47 | + }else{ | ||
| 48 | + globalArgs.service = _ONLY_SRT; | ||
| 49 | + globalArgs.input = optarg; | ||
| 50 | + } | ||
| 51 | + break; | ||
| 52 | + | ||
| 53 | + case 'T': | ||
| 54 | + if(argc <= 5) | ||
| 55 | + returnErr("Insuficient arguments. Try again"); | ||
| 56 | + | ||
| 57 | + globalArgs.service = _TEXT; | ||
| 58 | + globalArgs.input = optarg; | ||
| 59 | + break; | ||
| 60 | + | ||
| 61 | + case 'V': | ||
| 62 | + if(argc <= 7 || ((globalArgs.service == _ONLY_SRT && argc <= 9))) | ||
| 63 | + returnErr("Insuficient arguments. Try again"); | ||
| 64 | + | ||
| 65 | + if(globalArgs.service == _ONLY_SRT){ // ativa o serviço de vídeo e legendas | ||
| 66 | + globalArgs.service = _VIDEO_WITH_SRT; | ||
| 67 | + globalArgs.input_srt = globalArgs.input; | ||
| 68 | + }else if(globalArgs.mixer == _NO_MIXER) // desativa a mixagem | ||
| 69 | + globalArgs.service = _WITHOUT_MIXER; | ||
| 70 | + else | ||
| 71 | + globalArgs.service = _REC_VIDEO; | ||
| 72 | + globalArgs.input = optarg; | ||
| 73 | + break; | ||
| 74 | + | ||
| 75 | + case 'l': | ||
| 76 | + if (strcmp(optarg,"portugues") == 0) | ||
| 77 | + globalArgs.language = _PORTUGUESE; | ||
| 78 | + else if (strcmp(optarg,"libras") == 0) | ||
| 79 | + globalArgs.language = _GLOSA; | ||
| 80 | + else | ||
| 81 | + returnErr("--language"); | ||
| 82 | + break; | ||
| 83 | + | ||
| 84 | + case 'b': | ||
| 85 | + if (strcmp(optarg,"opaque") == 0) | ||
| 86 | + globalArgs.back = _OPAQUE; | ||
| 87 | + else if (strcmp(optarg,"transp") == 0) | ||
| 88 | + globalArgs.back = _TRANSPARENT; | ||
| 89 | + else | ||
| 90 | + returnErr("--background"); | ||
| 91 | + break; | ||
| 92 | + | ||
| 93 | + case 'r': | ||
| 94 | + if (strcmp(optarg,"small") == 0) | ||
| 95 | + globalArgs.size = _SMALL; | ||
| 96 | + else if (strcmp(optarg,"medium") == 0) | ||
| 97 | + globalArgs.size = _MEDIUM; | ||
| 98 | + else if (strcmp(optarg,"large") == 0) | ||
| 99 | + globalArgs.size = _LARGE; | ||
| 100 | + else | ||
| 101 | + returnErr("--resolution"); | ||
| 102 | + break; | ||
| 103 | + | ||
| 104 | + case 'p': | ||
| 105 | + if (strcmp(optarg,"top_left") == 0) | ||
| 106 | + globalArgs.position = _TOP_LEFT; | ||
| 107 | + else if (strcmp(optarg,"top_right") == 0) | ||
| 108 | + globalArgs.position = _TOP_RIGHT; | ||
| 109 | + else if (strcmp(optarg,"bottom_right") == 0) | ||
| 110 | + globalArgs.position = _BOTTOM_RIGHT; | ||
| 111 | + else if (strcmp(optarg,"bottom_left") == 0) | ||
| 112 | + globalArgs.position = _BOTTOM_LEFT; | ||
| 113 | + else | ||
| 114 | + returnErr("--position"); | ||
| 115 | + break; | ||
| 116 | + | ||
| 117 | + case 'm': | ||
| 118 | + if(strcmp(optarg,"prod") == 0) | ||
| 119 | + globalArgs.mode = _PROD; | ||
| 120 | + else if (strcmp(optarg,"devel") == 0) | ||
| 121 | + globalArgs.mode = _DEVEL; | ||
| 122 | + else | ||
| 123 | + returnErr("--mode"); | ||
| 124 | + break; | ||
| 125 | + | ||
| 126 | + case 'i': | ||
| 127 | + globalArgs.id = optarg; | ||
| 128 | + break; | ||
| 129 | + | ||
| 130 | + case 'x': | ||
| 131 | + if(globalArgs.service == _REC_VIDEO) // desativa a mixagem | ||
| 132 | + globalArgs.service = _WITHOUT_MIXER; | ||
| 133 | + else | ||
| 134 | + globalArgs.mixer = _NO_MIXER; | ||
| 135 | + break; | ||
| 136 | + | ||
| 137 | + case 'h': | ||
| 138 | + help(); | ||
| 139 | + break; | ||
| 140 | + case '?': | ||
| 141 | + /* o getopt já mostra o erro no terminal!*/ | ||
| 142 | + break; | ||
| 143 | + default: | ||
| 144 | + printf("\nUsage: %s [Service_option] filepath [Options] --id [name] --mode [devel,prod]\n", argv[0]); | ||
| 145 | + printf("\nTry --help for more informations."); | ||
| 146 | + throw lavidlib::RuntimeException(); | ||
| 147 | + } | ||
| 148 | + } | ||
| 149 | + | ||
| 150 | + if (argc < 2){ | ||
| 151 | + printf("Not enough arguments.\nTry --help.\n"); | ||
| 152 | + throw lavidlib::RuntimeException(); | ||
| 153 | + } | ||
| 154 | + | ||
| 155 | + /* Mostra os argumentos restantes depois das opções de linha de comando */ | ||
| 156 | + if (optind < argc) | ||
| 157 | + { | ||
| 158 | + printf("non-option ARGV-elements: "); | ||
| 159 | + while (optind < argc) | ||
| 160 | + printf("%s ", argv[optind++]); | ||
| 161 | + } | ||
| 162 | +} | ||
| 163 | + | ||
| 164 | +void ArgParser::help() | ||
| 165 | +{ | ||
| 166 | + std::cout << std::endl | ||
| 167 | + << "Usage Summary: vlibras [Service_option] filepath [Options] --id [name] --mode [devel,prod]" | ||
| 168 | + << "\n\nService_option:" | ||
| 169 | + << "\n\tVideo with Subtitles -V, --video [filePath] -S, --subtitle [filePath]" | ||
| 170 | + << "\n\tVideo Recognize -V, --video [filePath]" | ||
| 171 | + << "\n\tAudio Recognize -A, --audio [filepath]" | ||
| 172 | + << "\n\tText -T, --text [filePath]" | ||
| 173 | + << "\n\tSubtitles only -S, --subtitle [filePath]" | ||
| 174 | + << "\n\nOptions:" | ||
| 175 | + << "\n\t-l, --language [portugues,libras]" | ||
| 176 | + << "\n\t-b, --background [opaque,transp]" | ||
| 177 | + << "\n\t-r, --resolution [small,medium,large]" | ||
| 178 | + << "\n\t-p, --position [top_left,top_right,bottom_left,bottom_right]" | ||
| 179 | + << "\n\t-m, --mode [devel,prod]" | ||
| 180 | + << "\n\t--id [name] Relative to the unique ID on the Database." | ||
| 181 | + << "\n\t--no-mixer Disables mixing with the original video." | ||
| 182 | + << "\n\nSee man vlibras for detailed descriptions." | ||
| 183 | + << std::endl; | ||
| 184 | + throw lavidlib::RuntimeException(); //para nao iniciar o vlibras | ||
| 185 | +} | ||
| 186 | + | ||
| 187 | +void ArgParser::returnErr(string option) | ||
| 188 | +{ | ||
| 189 | + cout << "Option '" << option << "' contains an invalid argument." << endl; | ||
| 190 | + throw lavidlib::RuntimeException(); | ||
| 191 | +} | ||
| 192 | + | ||
| 193 | +int ArgParser::getService() | ||
| 194 | +{ | ||
| 195 | + return globalArgs.service; | ||
| 196 | +} | ||
| 197 | + | ||
| 198 | +int ArgParser::getLanguage() | ||
| 199 | +{ | ||
| 200 | + return globalArgs.language; | ||
| 201 | +} | ||
| 202 | + | ||
| 203 | +int ArgParser::getPosition() | ||
| 204 | +{ | ||
| 205 | + return globalArgs.position; | ||
| 206 | +} | ||
| 207 | + | ||
| 208 | +int ArgParser::getSize() | ||
| 209 | +{ | ||
| 210 | + return globalArgs.size; | ||
| 211 | +} | ||
| 212 | + | ||
| 213 | +int ArgParser::getBackground() | ||
| 214 | +{ | ||
| 215 | + return globalArgs.back; | ||
| 216 | +} | ||
| 217 | + | ||
| 218 | +int ArgParser::getMode() | ||
| 219 | +{ | ||
| 220 | + return globalArgs.mode; | ||
| 221 | +} | ||
| 222 | + | ||
| 223 | +int ArgParser::getOption() | ||
| 224 | +{ | ||
| 225 | + return globalArgs.mixer; | ||
| 226 | +} | ||
| 227 | + | ||
| 228 | +string ArgParser::getInput() | ||
| 229 | +{ | ||
| 230 | + return globalArgs.input; | ||
| 231 | +} | ||
| 232 | + | ||
| 233 | +string ArgParser::getInputSRT() | ||
| 234 | +{ | ||
| 235 | + return globalArgs.input_srt; | ||
| 236 | +} | ||
| 237 | + | ||
| 238 | +string ArgParser::getId() | ||
| 239 | +{ | ||
| 240 | + return globalArgs.id; | ||
| 241 | +} | ||
| 0 | \ No newline at end of file | 242 | \ No newline at end of file |
| @@ -0,0 +1,60 @@ | @@ -0,0 +1,60 @@ | ||
| 1 | +#ifndef ARG_PARSER_H | ||
| 2 | +#define ARG_PARSER_H | ||
| 3 | + | ||
| 4 | +#include <stdio.h> | ||
| 5 | +#include <string.h> | ||
| 6 | +#include <iostream> | ||
| 7 | +#include <stdlib.h> | ||
| 8 | +#include <unistd.h> | ||
| 9 | +#include <getopt.h> | ||
| 10 | +#include <lavidlib/base/RuntimeException.h> | ||
| 11 | + | ||
| 12 | +#define MAX_SIZE_PATH 256 | ||
| 13 | + | ||
| 14 | +using namespace std; | ||
| 15 | + | ||
| 16 | +class ArgParser { | ||
| 17 | +public: | ||
| 18 | + ArgParser(); | ||
| 19 | + ~ArgParser(); | ||
| 20 | + void readArgs(char** argv, int argc); | ||
| 21 | + | ||
| 22 | + int getService(); | ||
| 23 | + int getLanguage(); | ||
| 24 | + int getPosition(); | ||
| 25 | + int getSize(); | ||
| 26 | + int getBackground(); | ||
| 27 | + int getMode(); | ||
| 28 | + int getOption(); | ||
| 29 | + | ||
| 30 | + string getInput(); | ||
| 31 | + string getInputSRT(); | ||
| 32 | + string getId(); | ||
| 33 | + | ||
| 34 | +private: | ||
| 35 | + enum Services { _VIDEO_WITH_SRT = 1, _REC_VIDEO, _TEXT, _ONLY_SRT, _REC_AUDIO, _WITHOUT_MIXER }; | ||
| 36 | + enum Languages { _PORTUGUESE = 1, _GLOSA }; | ||
| 37 | + enum Positions { _TOP_LEFT = 1, _TOP_RIGHT, _BOTTOM_RIGHT, _BOTTOM_LEFT }; | ||
| 38 | + enum Sizes { _SMALL = 1, _MEDIUM, _LARGE }; | ||
| 39 | + enum Background { _OPAQUE, _TRANSPARENT }; | ||
| 40 | + enum Options { _NO_MIXER = 1 }; | ||
| 41 | + enum Mode { _DEVEL = 1 , _PROD }; | ||
| 42 | + | ||
| 43 | + struct globalArgs_t { | ||
| 44 | + Services service; | ||
| 45 | + Languages language; | ||
| 46 | + Positions position; | ||
| 47 | + Sizes size; | ||
| 48 | + Background back; | ||
| 49 | + Options mixer; | ||
| 50 | + Mode mode; | ||
| 51 | + string input; | ||
| 52 | + string input_srt; | ||
| 53 | + string id; | ||
| 54 | + }globalArgs; | ||
| 55 | + | ||
| 56 | + void help(); | ||
| 57 | + void returnErr(string option); | ||
| 58 | +}; | ||
| 59 | + | ||
| 60 | +#endif /* ARG_PARSER_H */ | ||
| 0 | \ No newline at end of file | 61 | \ No newline at end of file |