Model: Various cleanups/simplifications
This commit is contained in:
parent
16e7fde946
commit
f7313d98bb
|
@ -95,7 +95,7 @@ def find_partial_downloads(channels, start_progress_callback, progress_callback,
|
|||
|
||||
def get_expired_episodes(channels, config):
|
||||
for channel in channels:
|
||||
for index, episode in enumerate(channel.get_downloaded_episodes()):
|
||||
for index, episode in enumerate(channel.get_episodes(gpodder.STATE_DOWNLOADED)):
|
||||
# Never consider archived episodes as old
|
||||
if episode.archive:
|
||||
continue
|
||||
|
|
|
@ -831,7 +831,7 @@ class DownloadTask(object):
|
|||
if new_mimetype is not None:
|
||||
logger.info('Using content-disposition mimetype: %s',
|
||||
new_mimetype)
|
||||
self.__episode.set_mimetype(new_mimetype, commit=True)
|
||||
self.__episode.mime_type = new_mimetype
|
||||
|
||||
# Re-evaluate filename and tempname to take care of podcast renames
|
||||
# while downloads are running (which will change both file names)
|
||||
|
|
|
@ -2622,7 +2622,7 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
|
||||
episodes = []
|
||||
for channel in channels:
|
||||
for episode in channel.get_downloaded_episodes():
|
||||
for episode in channel.get_episodes(gpodder.STATE_DOWNLOADED):
|
||||
# Disallow deletion of locked episodes that still exist
|
||||
if not episode.archive or not episode.file_exists():
|
||||
episodes.append(episode)
|
||||
|
|
|
@ -596,12 +596,6 @@ class PodcastEpisode(PodcastModelObject):
|
|||
return os.path.join(util.sanitize_encoding(self.channel.save_dir),
|
||||
util.sanitize_encoding(self.download_filename))
|
||||
|
||||
def set_mimetype(self, mimetype, commit=False):
|
||||
"""Sets the mimetype for this episode"""
|
||||
self.mime_type = mimetype
|
||||
if commit:
|
||||
self.db.commit()
|
||||
|
||||
def extension(self, may_call_local_filename=True):
|
||||
filename, ext = util.filename_from_url(self.url)
|
||||
if may_call_local_filename:
|
||||
|
@ -689,16 +683,6 @@ class PodcastEpisode(PodcastModelObject):
|
|||
def sortdate(self):
|
||||
return str(datetime.datetime.fromtimestamp(self.published).strftime('%F'))
|
||||
|
||||
def calculate_filesize(self):
|
||||
filename = self.local_filename(create=False)
|
||||
if filename is None:
|
||||
return
|
||||
|
||||
try:
|
||||
self.file_size = os.path.getsize(filename)
|
||||
except:
|
||||
logger.error('Could not get file size: %s', filename, exc_info=True)
|
||||
|
||||
def is_finished(self):
|
||||
"""Return True if this episode is considered "finished playing"
|
||||
|
||||
|
@ -749,11 +733,11 @@ class PodcastChannel(PodcastModelObject):
|
|||
|
||||
feed_fetcher = gPodderFetcher()
|
||||
|
||||
def __init__(self, model):
|
||||
def __init__(self, model, id=None):
|
||||
self.parent = model
|
||||
self.children = None
|
||||
self.children = []
|
||||
|
||||
self.id = None
|
||||
self.id = id
|
||||
self.url = None
|
||||
self.title = ''
|
||||
self.link = ''
|
||||
|
@ -776,6 +760,10 @@ class PodcastChannel(PodcastModelObject):
|
|||
self._common_prefix = None
|
||||
self.download_strategy = PodcastChannel.STRATEGY_DEFAULT
|
||||
|
||||
if self.id:
|
||||
self.children = self.db.load_episodes(self, self.episode_factory)
|
||||
self._determine_common_prefix()
|
||||
|
||||
@property
|
||||
def model(self):
|
||||
return self.parent
|
||||
|
@ -809,7 +797,7 @@ class PodcastChannel(PodcastModelObject):
|
|||
"""
|
||||
known_files = set()
|
||||
|
||||
for episode in self.get_downloaded_episodes():
|
||||
for episode in self.get_episodes(gpodder.STATE_DOWNLOADED):
|
||||
if episode.was_downloaded():
|
||||
filename = episode.local_filename(create=False)
|
||||
if not os.path.exists(filename):
|
||||
|
@ -1205,11 +1193,6 @@ class PodcastChannel(PodcastModelObject):
|
|||
def authenticate_url(self, url):
|
||||
return util.url_add_authentication(url, self.auth_username, self.auth_password)
|
||||
|
||||
def _get_cover_url(self):
|
||||
return self.cover_url
|
||||
|
||||
image = property(_get_cover_url)
|
||||
|
||||
def rename(self, new_title):
|
||||
new_title = new_title.strip()
|
||||
if self.title == new_title:
|
||||
|
@ -1237,9 +1220,6 @@ class PodcastChannel(PodcastModelObject):
|
|||
self.title = new_title
|
||||
self.save()
|
||||
|
||||
def get_downloaded_episodes(self):
|
||||
return filter(lambda e: e.was_downloaded(), self.get_all_episodes())
|
||||
|
||||
def _determine_common_prefix(self):
|
||||
# We need at least 2 episodes for the prefix to be "common" ;)
|
||||
if len(self.children) < 2:
|
||||
|
@ -1255,12 +1235,11 @@ class PodcastChannel(PodcastModelObject):
|
|||
self._common_prefix = prefix
|
||||
|
||||
def get_all_episodes(self):
|
||||
if self.children is None:
|
||||
self.children = self.db.load_episodes(self, self.episode_factory)
|
||||
self._determine_common_prefix()
|
||||
|
||||
return self.children
|
||||
|
||||
def get_episodes(self, state):
|
||||
return filter(lambda e: e.state == state, self.get_all_episodes())
|
||||
|
||||
def find_unique_folder_name(self, download_folder):
|
||||
# Remove trailing dots to avoid errors on Windows (bug 600)
|
||||
# Also remove leading dots to avoid hidden folders on Linux
|
||||
|
@ -1310,7 +1289,7 @@ class PodcastChannel(PodcastModelObject):
|
|||
|
||||
def remove_downloaded(self):
|
||||
# Remove the download directory
|
||||
for episode in self.get_downloaded_episodes():
|
||||
for episode in self.get_episodes(gpodder.STATE_DOWNLOADED):
|
||||
filename = episode.local_filename(create=False, check_only=True)
|
||||
if filename is not None:
|
||||
gpodder.user_extensions.on_episode_delete(episode, filename)
|
||||
|
@ -1339,7 +1318,7 @@ class Model(object):
|
|||
|
||||
def get_podcasts(self):
|
||||
def podcast_factory(dct, db):
|
||||
return self.PodcastClass.create_from_dict(dct, self)
|
||||
return self.PodcastClass.create_from_dict(dct, self, dct['id'])
|
||||
|
||||
if self.children is None:
|
||||
self.children = self.db.load_podcasts(podcast_factory)
|
||||
|
|
Loading…
Reference in New Issue