@@ -31,7 +31,7 @@ def __init__(self, classpath=None, java=None):
3131 else :
3232 self .classpath = os .path .join (os .path .dirname (__file__ ), 'java' , '*' )
3333
34- def decode (self , filenames , try_harder = False , possible_formats = None , pure_barcode = False , products_only = False ):
34+ def decode (self , filenames , try_harder = False , possible_formats = None , pure_barcode = False , products_only = False , multi = False ):
3535 possible_formats = (possible_formats ,) if isinstance (possible_formats , str ) else possible_formats
3636
3737 if isinstance (filenames , str ):
@@ -44,6 +44,9 @@ def decode(self, filenames, try_harder=False, possible_formats=None, pure_barcod
4444 cmd = [self .java , '-cp' , self .classpath , self .cls ] + file_uris
4545 if try_harder :
4646 cmd .append ('--try_harder' )
47+ if multi :
48+ cmd .append ('--multi' )
49+ one_file = False
4750 if pure_barcode :
4851 cmd .append ('--pure_barcode' )
4952 if products_only :
@@ -89,9 +92,13 @@ def decode(self, filenames, try_harder=False, possible_formats=None, pure_barcod
8992 else :
9093 # zxing (insanely) randomly reorders the output blocks, so we have to put them back in the
9194 # expected order, based on their URIs
92- d = {c .uri : c for c in codes }
93- return [d [f ] for f in file_uris ]
95+ return sorted (codes , key = lambda barcode : barcode and barcode .uri )
9496
97+ def decode_as_list (self , filenames , try_harder = False , possible_formats = None , pure_barcode = False , multi = False ):
98+ result = self .decode (filenames , try_harder , possible_formats , pure_barcode , multi )
99+ if isinstance (result , list ):
100+ return result
101+ return [result ]
95102
96103class CLROutputBlock (Enum ):
97104 UNKNOWN = 0
0 commit comments