7272 SearchMode ,
7373)
7474from src .core .library .alchemy .fields import _FieldID
75- from src .core .library .alchemy .library import LibraryStatus
75+ from src .core .library .alchemy .library import Entry , Library , LibraryStatus
7676from src .core .media_types import MediaCategories
7777from src .core .ts_core import TagStudioCore
7878from src .core .utils .refresh_dir import RefreshDirTracker
@@ -130,6 +130,7 @@ class QtDriver(DriverMixin, QObject):
130130 SIGTERM = Signal ()
131131
132132 preview_panel : PreviewPanel
133+ lib : Library
133134
134135 def __init__ (self , backend , args ):
135136 super ().__init__ ()
@@ -788,9 +789,9 @@ def run_macros(self, name: MacroID, grid_idx: list[int]):
788789
789790 def run_macro (self , name : MacroID , grid_idx : int ):
790791 """Run a specific Macro on an Entry given a Macro name."""
791- entry = self .frame_content [grid_idx ]
792- ful_path = self .lib .library_dir / entry .path
793- source = entry .path .parts [0 ]
792+ entry : Entry = self .frame_content [grid_idx ]
793+ full_path = self .lib .library_dir / entry .path
794+ source = "" if entry .path .parent == Path ( "." ) else entry . path . parts [0 ]. lower ()
794795
795796 logger .info (
796797 "running macro" ,
@@ -804,10 +805,10 @@ def run_macro(self, name: MacroID, grid_idx: int):
804805 for macro_id in MacroID :
805806 if macro_id == MacroID .AUTOFILL :
806807 continue
807- self .run_macro (macro_id , entry . id )
808+ self .run_macro (macro_id , grid_idx )
808809
809810 elif name == MacroID .SIDECAR :
810- parsed_items = TagStudioCore .get_gdl_sidecar (ful_path , source )
811+ parsed_items = TagStudioCore .get_gdl_sidecar (full_path , source )
811812 for field_id , value in parsed_items .items ():
812813 if isinstance (value , list ) and len (value ) > 0 and isinstance (value [0 ], str ):
813814 value = self .lib .tag_from_strings (value )
@@ -818,8 +819,9 @@ def run_macro(self, name: MacroID, grid_idx: int):
818819 )
819820
820821 elif name == MacroID .BUILD_URL :
821- url = TagStudioCore .build_url (entry .id , source )
822- self .lib .add_entry_field_type (entry .id , field_id = _FieldID .SOURCE , value = url )
822+ url = TagStudioCore .build_url (entry , source )
823+ if url is not None :
824+ self .lib .add_entry_field_type (entry .id , field_id = _FieldID .SOURCE , value = url )
823825 elif name == MacroID .MATCH :
824826 TagStudioCore .match_conditions (self .lib , entry .id )
825827 elif name == MacroID .CLEAN_URL :
0 commit comments