1 from __future__ import with_statement # enable with
8 _moduleLogger = logging.getLogger(__name__)
14 class FileStorage(object):
16 def __init__(self, path="~/.SornPlayer/"):
18 _moduleLogger.info("init filestorage")
20 self.books_path = os.path.join(self.path, "books.json")
25 if not os.path.isdir(self.path):
26 os.makedirs(self.path)
29 with open(self.books_path, "r") as settingsFile:
30 settings = simplejson.load(settingsFile)
32 _moduleLogger.info("No settings")
35 _moduleLogger.info("Settings were corrupt")
39 self._books = settings["books"]
40 self.selected = settings["selected"]
42 _moduleLogger.info("Falling back to old settings format")
43 self._load_old_settings()
47 "selected": self.selected,
50 with open(self.books_path, "w") as settingsFile:
51 simplejson.dump(settings, settingsFile)
53 def get_selected(self):
54 """returns the currently selected book"""
57 def select_book(self, bookName):
58 """ Sets the book as the currently playing, and adds it to the
59 database if it is not already there"""
60 book_file = os.path.join(self.books_path, bookName)
61 if bookName not in self._books:
62 self._books[bookName] = {
67 self.selected = bookName
69 def set_time(self, chapter, position):
70 """ Sets the current time for the book that is currently selected"""
71 bookInfo = self._books[self.selected]
72 bookInfo["chapter"] = chapter
73 bookInfo["position"] = position
76 """Returns the current saved time for the current selected book"""
77 bookInfo = self._books[self.selected]
78 return bookInfo["chapter"], bookInfo["position"]
80 def _load_old_settings(self):
81 conf = os.path.join(self.path, "current")
85 self.selected = f.readline()
87 books_path = os.path.join(self.path, "books/")
88 for book in os.listdir(books_path):
89 book_file = os.path.join(books_path, book)
90 with open(book_file, 'r') as f:
91 chapter = int(f.readline())
92 position = int(f.readline())