@@ -280,9 +280,9 @@ void GoProMaster::media_only(const std::string command, std::string target){
280280
281281}
282282
283- void GoProMaster::download_last_media (const std::string dir, bool put_finish ){
283+ void GoProMaster::download_last_media (const std::string ip, const DownloadMediaParameters params ){
284284 std::thread ([=](){
285- if (put_finish){
285+ if (params. put_finish ){
286286 downloading_last_media_flag = 2 ;
287287 }else {
288288 downloading_last_media_flag = 1 ;
@@ -292,55 +292,26 @@ void GoProMaster::download_last_media(const std::string dir, bool put_finish){
292292
293293 for (auto & s : cameras){
294294 if (!s->connected ) continue ;
295-
295+ if (ip. size () > 0 && s-> ip != ip) continue ;
296296 std::string filename = s->name + fs::path (s->last_media ).extension ().string ();
297297 if (filename.size () == 0 || s->name .size () == 0 ) {
298298 std::cerr << " [download_last_media] filename size is 0, we just skip..." << std::endl;
299299 continue ;
300300 }
301- bool islocal = s->server == " 127.0.0.1" ;
302-
303- json data = json::object ();
304- data[" key" ] = " media" ;
305- data[" value" ] = json::object ();
306- data[" value" ][" name" ] = " url" ;
307- data[" value" ][" item" ] = s->name ;
308- data[" value" ][" ip" ] = s->ip ;
309- data[" value" ][" local" ] = islocal;
310- data[" value" ][" dir" ] = dir;
311- data[" value" ][" filename" ] = filename;
312-
313- for (auto ss : servers){
314- if (s->server == ss->ip && ss->connected ){
315- ss->client .send (data.dump ());
316- downloading_last_media_total++;
317- break ;
301+ size_t filename_size = filename.size ();
302+ if (params.c_count > 0 ){
303+ std::string ccc = " " ;
304+ if (params.type == 1 ){
305+ filename.reserve ();
318306 }
319- }
320- }
321- if (downloading_last_media_total == 0 ){
322- downloading_last_media_flag = 0 ;
323- }
324- }).detach ();
325- }
326-
327- void GoProMaster::download_last_media (const std::string ip, const std::string dir, bool put_finish){
328- std::thread ([=](){
329- if (put_finish){
330- downloading_last_media_flag = 2 ;
331- }else {
332- downloading_last_media_flag = 1 ;
333- }
334- downloading_last_media_total = 0 ;
335- downloading_last_media_done = 0 ;
336-
337- for (auto & s : cameras){
338- if (!s->connected ) continue ;
339- if (s->ip != ip) continue ;
340- std::string filename = s->name + fs::path (s->last_media ).extension ().string ();
341- if (filename.size () == 0 || s->name .size () == 0 ) {
342- std::cerr << " [download_last_media] filename size is 0, we just skip..." << std::endl;
343- continue ;
307+ for (int32_t i = 0 ; i < params.c_count && i < filename_size; i++){
308+ ccc += filename.at (filename.size () - 1 );
309+ filename.pop_back ();
310+ }
311+ if (params.type == 2 ){
312+ ccc.reserve ();
313+ }
314+ filename = ccc;
344315 }
345316 bool islocal = s->server == " 127.0.0.1" ;
346317
@@ -351,7 +322,7 @@ void GoProMaster::download_last_media(const std::string ip, const std::string di
351322 data[" value" ][" item" ] = s->name ;
352323 data[" value" ][" ip" ] = s->ip ;
353324 data[" value" ][" local" ] = islocal;
354- data[" value" ][" dir" ] = dir;
325+ data[" value" ][" dir" ] = params. dir ;
355326 data[" value" ][" filename" ] = filename;
356327
357328 for (auto ss : servers){
0 commit comments