mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Device drivers: Allow looking for books in multiple root directories on the device
This commit is contained in:
parent
886d56675e
commit
974b33ca7a
@ -56,23 +56,18 @@ class USBMS(CLI, Device):
|
|||||||
return bl
|
return bl
|
||||||
|
|
||||||
prefix = self._card_a_prefix if oncard == 'carda' else self._card_b_prefix if oncard == 'cardb' else self._main_prefix
|
prefix = self._card_a_prefix if oncard == 'carda' else self._card_b_prefix if oncard == 'cardb' else self._main_prefix
|
||||||
ebook_dir = self.EBOOK_DIR_CARD_A if oncard == 'carda' else \
|
ebook_dirs = self.EBOOK_DIR_CARD_A if oncard == 'carda' else \
|
||||||
self.EBOOK_DIR_CARD_B if oncard == 'cardb' else \
|
self.EBOOK_DIR_CARD_B if oncard == 'cardb' else \
|
||||||
self.get_main_ebook_dir()
|
self.get_main_ebook_dir()
|
||||||
|
|
||||||
candidates = ebook_dir
|
if isinstance(ebook_dirs, basestring):
|
||||||
if isinstance(candidates, basestring):
|
ebook_dirs = [ebook_dirs]
|
||||||
candidates = [candidates]
|
for ebook_dir in ebook_dirs:
|
||||||
for x in candidates:
|
ebook_dir = os.path.join(prefix, *(ebook_dir.split('/')))
|
||||||
if os.path.exists(os.path.join(prefix, *(x.split('/')))):
|
if not os.path.exists(ebook_dir): continue
|
||||||
ebook_dir = x
|
|
||||||
break
|
|
||||||
if not isinstance(ebook_dir, basestring):
|
|
||||||
ebook_dir = ebook_dir[0]
|
|
||||||
|
|
||||||
# Get all books in the ebook_dir directory
|
# Get all books in the ebook_dir directory
|
||||||
if self.SUPPORTS_SUB_DIRS:
|
if self.SUPPORTS_SUB_DIRS:
|
||||||
for path, dirs, files in os.walk(os.path.join(prefix, ebook_dir)):
|
for path, dirs, files in os.walk(ebook_dir):
|
||||||
# Filter out anything that isn't in the list of supported ebook types
|
# Filter out anything that isn't in the list of supported ebook types
|
||||||
for book_type in self.FORMATS:
|
for book_type in self.FORMATS:
|
||||||
match = fnmatch.filter(files, '*.%s' % (book_type))
|
match = fnmatch.filter(files, '*.%s' % (book_type))
|
||||||
@ -85,13 +80,12 @@ class USBMS(CLI, Device):
|
|||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
path = os.path.join(prefix, ebook_dir)
|
paths = os.listdir(ebook_dir)
|
||||||
paths = os.listdir(path)
|
|
||||||
for i, filename in enumerate(paths):
|
for i, filename in enumerate(paths):
|
||||||
self.report_progress((i+1) / float(len(paths)), _('Getting list of books on device...'))
|
self.report_progress((i+1) / float(len(paths)), _('Getting list of books on device...'))
|
||||||
if path_to_ext(filename) in self.FORMATS:
|
if path_to_ext(filename) in self.FORMATS:
|
||||||
try:
|
try:
|
||||||
bl.append(self.__class__.book_from_path(os.path.join(path, filename)))
|
bl.append(self.__class__.book_from_path(os.path.join(ebook_dir, filename)))
|
||||||
except: # Probably a file name encoding error
|
except: # Probably a file name encoding error
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user