Quicker saving of downloaded episodes
This temporarily disables updating the M3U files until we find a more efficient way updating them.
This commit is contained in:
parent
aa74b161e7
commit
1be902f2ea
|
@ -440,6 +440,15 @@ class Database(object):
|
|||
cur.close()
|
||||
self.lock.release()
|
||||
|
||||
def save_downloaded_episode(self, episode):
|
||||
assert episode.id is not None
|
||||
|
||||
cur = self.cursor(lock=True)
|
||||
cur.execute('UPDATE episodes SET state = ?, played = ?, length = ? WHERE id = ?', \
|
||||
(episode.state, episode.is_played, episode.length, episode.id))
|
||||
cur.close()
|
||||
self.lock.release()
|
||||
|
||||
def update_episode_state(self, episode):
|
||||
assert episode.id is not None
|
||||
|
||||
|
|
|
@ -720,10 +720,9 @@ class DownloadTask(object):
|
|||
|
||||
shutil.move(self.tempname, self.filename)
|
||||
|
||||
# Get the _real_ filesize once we actually have the file
|
||||
self.__episode.length = os.path.getsize(self.filename)
|
||||
self.__episode.channel.addDownloadedItem(self.__episode)
|
||||
|
||||
# Model- and database-related updates after a download has finished
|
||||
self.__episode.on_downloaded(self.filename)
|
||||
|
||||
# If a user command has been defined, execute the command setting some environment variables
|
||||
if len(self._config.cmd_download_complete) > 0:
|
||||
os.environ["GPODDER_EPISODE_URL"]=self.__episode.url or ''
|
||||
|
|
|
@ -526,13 +526,6 @@ class PodcastChannel(PodcastModelObject):
|
|||
|
||||
f.close()
|
||||
|
||||
def addDownloadedItem(self, item):
|
||||
log('addDownloadedItem(%s)', item.url)
|
||||
|
||||
if not item.was_downloaded():
|
||||
item.mark_downloaded(save=True)
|
||||
self.update_m3u_playlist()
|
||||
|
||||
def get_all_episodes(self):
|
||||
return self.db.load_episodes(self, factory=self.episode_factory)
|
||||
|
||||
|
@ -632,7 +625,6 @@ class PodcastChannel(PodcastModelObject):
|
|||
util.delete_file(filename)
|
||||
|
||||
episode.set_state(gpodder.STATE_DELETED)
|
||||
self.update_m3u_playlist()
|
||||
|
||||
|
||||
class PodcastEpisode(PodcastModelObject):
|
||||
|
@ -813,6 +805,13 @@ class PodcastEpisode(PodcastModelObject):
|
|||
self.state = gpodder.STATE_DOWNLOADED
|
||||
self.db.save_episode(self)
|
||||
|
||||
def on_downloaded(self, filename):
|
||||
self.state = gpodder.STATE_DOWNLOADED
|
||||
self.is_played = False
|
||||
self.length = os.path.getsize(filename)
|
||||
self.db.save_downloaded_episode(self)
|
||||
self.db.commit()
|
||||
|
||||
def set_state(self, state):
|
||||
self.state = state
|
||||
self.db.update_episode_state(self)
|
||||
|
@ -826,13 +825,6 @@ class PodcastEpisode(PodcastModelObject):
|
|||
self.is_locked = is_locked
|
||||
self.db.update_episode_state(self)
|
||||
|
||||
def mark_downloaded(self, save=False):
|
||||
self.state = gpodder.STATE_DOWNLOADED
|
||||
self.is_played = False
|
||||
if save:
|
||||
self.save()
|
||||
self.db.commit()
|
||||
|
||||
@property
|
||||
def title_markup(self):
|
||||
return '%s\n<small>%s</small>' % (xml.sax.saxutils.escape(self.title),
|
||||
|
|
Loading…
Reference in New Issue