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:
Thomas Perl 2010-04-26 21:41:50 +02:00
parent aa74b161e7
commit 1be902f2ea
3 changed files with 19 additions and 19 deletions

View File

@ -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

View File

@ -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 ''

View File

@ -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),