99
1010import boto3
1111import lib .core as constances
12+ from lib .core .conditions import Condition
13+ from lib .core .conditions import CONDITION_EQ as EQ
1214from lib .core .data_handlers import ChainedAnnotationHandlers
1315from lib .core .data_handlers import DocumentTagHandler
1416from lib .core .data_handlers import LastActionHandler
@@ -494,14 +496,18 @@ def __init__(
494496 reporter : Reporter ,
495497 project : ProjectEntity ,
496498 folder : FolderEntity ,
499+ images : BaseManageableRepository ,
497500 item_names : Optional [List [str ]],
498- backend_service_provider : SuerannotateServiceProvider
501+ backend_service_provider : SuerannotateServiceProvider ,
502+ show_process : bool = True
499503 ):
500504 super ().__init__ (reporter )
501505 self ._project = project
502506 self ._folder = folder
507+ self ._images = images
503508 self ._item_names = item_names
504509 self ._client = backend_service_provider
510+ self ._show_process = show_process
505511
506512 def validate_item_names (self ):
507513 if self ._item_names :
@@ -512,27 +518,36 @@ def validate_item_names(self):
512518 f"Dropping duplicates. Found { len_unique_items } /{ len_items } unique items."
513519 )
514520 self ._item_names = item_names
521+ else :
522+ condition = (
523+ Condition ("team_id" , self ._project .team_id , EQ )
524+ & Condition ("project_id" , self ._project .uuid , EQ )
525+ & Condition ("folder_id" , self ._folder .uuid , EQ )
526+ )
527+
528+ self ._item_names = [item .name for item in self ._images .get_all (condition )]
515529
516530 def execute (self ):
517- items_count = len (self ._item_names )
518- self .reporter .log_info (
519- f"Getting { items_count } annotations from "
520- f"{ self ._project .name } { f'/{ self ._folder .name } ' if self ._folder else '' } ."
521- )
522- self .reporter .start_progress (items_count )
523- annotations = self ._client .get_annotations (
524- team_id = self ._project .team_id ,
525- project_id = self ._project .uuid ,
526- folder_id = self ._folder .uuid ,
527- items = self ._item_names ,
528- reporter = self .reporter
529- )
530- received_items_count = len (annotations )
531- if items_count > received_items_count :
532- self .reporter .log_warning (
533- f"Could not find annotations for { items_count - received_items_count } /{ items_count } items."
531+ if self .is_valid ():
532+ items_count = len (self ._item_names )
533+ self .reporter .log_info (
534+ f"Getting { items_count } annotations from "
535+ f"{ self ._project .name } { f'/{ self ._folder .name } ' if self ._folder else '' } ."
534536 )
535- self ._response .data = annotations
537+ self .reporter .start_progress (items_count , disable = not self ._show_process )
538+ annotations = self ._client .get_annotations (
539+ team_id = self ._project .team_id ,
540+ project_id = self ._project .uuid ,
541+ folder_id = self ._folder .uuid ,
542+ items = self ._item_names ,
543+ reporter = self .reporter
544+ )
545+ received_items_count = len (annotations )
546+ if items_count > received_items_count :
547+ self .reporter .log_warning (
548+ f"Could not find annotations for { items_count - received_items_count } /{ items_count } items."
549+ )
550+ self ._response .data = annotations
536551 return self ._response
537552
538553
@@ -542,13 +557,15 @@ def __init__(
542557 reporter : Reporter ,
543558 project : ProjectEntity ,
544559 folder : FolderEntity ,
560+ images : BaseManageableRepository ,
545561 video_name : str ,
546562 fps : int ,
547563 backend_service_provider : SuerannotateServiceProvider
548564 ):
549565 super ().__init__ (reporter )
550566 self ._project = project
551567 self ._folder = folder
568+ self ._images = images
552569 self ._video_name = video_name
553570 self ._fps = fps
554571 self ._client = backend_service_provider
@@ -558,8 +575,10 @@ def execute(self):
558575 reporter = self .reporter ,
559576 project = self ._project ,
560577 folder = self ._folder ,
578+ images = self ._images ,
561579 item_names = [self ._video_name ],
562- backend_service_provider = self ._client
580+ backend_service_provider = self ._client ,
581+ show_process = False
563582 ).execute ()
564583 generator = VideoFrameGenerator (response .data [0 ], fps = self ._fps )
565584 self .reporter .log_info (f"Getting annotations for { generator .frames_count } frames from { self ._video_name } ." )
0 commit comments