def get_all_tracks(self): tracks = [] for track in gpod.sw_get_playlist_tracks(self.podcasts_playlist): filename = gpod.itdb_filename_on_ipod(track) if filename is None: # This can happen if the episode is deleted on the device logger.info('Episode has no file: %s', track.title) self.remove_track_gpod(track) continue length = util.calculate_size(filename) timestamp = util.file_modification_timestamp(filename) modified = util.format_date(timestamp) try: released = gpod.itdb_time_mac_to_host(track.time_released) released = util.format_date(released) except ValueError, ve: # timestamp out of range for platform time_t (bug 418) logger.info('Cannot convert track time: %s', ve) released = 0 t = SyncTrack(track.title, length, modified, modified_sort=timestamp, libgpodtrack=track, playcount=track.playcount, released=released, podcast=track.artist) tracks.append(t)
def get_all_tracks(self): tracks = [] for track in gpod.sw_get_playlist_tracks(self.podcasts_playlist): filename = gpod.itdb_filename_on_ipod(track) length = util.calculate_size(filename) timestamp = util.file_modification_timestamp(filename) modified = util.format_date(timestamp) released = gpod.itdb_time_mac_to_host(track.time_released) released = util.format_date(released) t = SyncTrack(track.title, length, modified, modified_sort=timestamp, libgpodtrack=track, playcount=track.playcount, released=released, podcast=track.artist) tracks.append(t) return tracks
def get_all_tracks(self): tracks = [] if self._config.one_folder_per_podcast: files = glob.glob(os.path.join(self.destination, '*', '*')) else: files = glob.glob(os.path.join(self.destination, '*')) for filename in files: (title, extension) = os.path.splitext(os.path.basename(filename)) length = util.calculate_size(filename) timestamp = util.file_modification_timestamp(filename) modified = util.format_date(timestamp) if self._config.one_folder_per_podcast: podcast_name = os.path.basename(os.path.dirname(filename)) else: podcast_name = None t = SyncTrack(title, length, modified, modified_sort=timestamp, filename=filename, podcast=podcast_name) tracks.append(t) return tracks
def get_all_tracks(self): try: listing = self.__MTPDevice.get_tracklisting( callback=self.__callback) except Exception as exc: logger.error('unable to get file listing %s (%s)') tracks = [] for track in listing: title = track.title if not title or title == "": title = track.filename if len(title) > 50: title = title[0:49] + '...' artist = track.artist if artist and len(artist) > 50: artist = artist[0:49] + '...' length = track.filesize age_in_days = 0 date = self.__mtp_to_date(track.date) if not date: modified = track.date # not a valid mtp date. Display what mtp gave anyway modified_sort = -1 # no idea how to sort invalid date else: modified = util.format_date(date) modified_sort = date t = SyncTrack(title, length, modified, modified_sort=modified_sort, mtptrack=track, podcast=artist) tracks.append(t) return tracks
def get_all_tracks(self): try: listing = self.__MTPDevice.get_tracklisting(callback=self.__callback) except Exception as exc: logger.error('unable to get file listing %s (%s)') tracks = [] for track in listing: title = track.title if not title or title == "": title = track.filename if len(title) > 50: title = title[0:49] + '...' artist = track.artist if artist and len(artist) > 50: artist = artist[0:49] + '...' length = track.filesize age_in_days = 0 date = self.__mtp_to_date(track.date) if not date: modified = track.date # not a valid mtp date. Display what mtp gave anyway modified_sort = -1 # no idea how to sort invalid date else: modified = util.format_date(date) modified_sort = date t = SyncTrack(title, length, modified, modified_sort=modified_sort, mtptrack=track, podcast=artist) tracks.append(t) return tracks
def update(self, episode): heading = episode.title subheading = _('from %s') % (episode.channel.title) details = self.details_fmt % ( util.format_date(episode.published), util.format_filesize(episode.file_size, digits=1) if episode.file_size > 0 else "-", episode.get_play_info_string()) self.define_colors() hyperlinks = [(0, None)] self.text_buffer.set_text('') self.text_buffer.insert_with_tags_by_name( self.text_buffer.get_end_iter(), heading, 'heading') self.text_buffer.insert_at_cursor('\n') self.text_buffer.insert_with_tags_by_name( self.text_buffer.get_end_iter(), subheading, 'subheading') self.text_buffer.insert_at_cursor('\n') self.text_buffer.insert_with_tags_by_name( self.text_buffer.get_end_iter(), details, 'details') self.text_buffer.insert_at_cursor('\n\n') for target, text in util.extract_hyperlinked_text( episode.description_html or episode.description): hyperlinks.append((self.text_buffer.get_char_count(), target)) if target: self.text_buffer.insert_with_tags_by_name( self.text_buffer.get_end_iter(), text, 'hyperlink') else: self.text_buffer.insert(self.text_buffer.get_end_iter(), text) hyperlinks.append((self.text_buffer.get_char_count(), None)) self.hyperlinks = [ (start, end, url) for (start, url), (end, _) in zip(hyperlinks, hyperlinks[1:]) if url ] self.text_buffer.place_cursor(self.text_buffer.get_start_iter())
def update(self, episode): self.scrolled_window.get_vadjustment().set_value(0) self.define_colors() if episode.has_website_link(): self._base_uri = episode.link else: self._base_uri = episode.channel.url # for incomplete base URI (e.g. http://919.noagendanotes.com) baseURI = urlparse(self._base_uri) if baseURI.path == '': self._base_uri += '/' self._loaded = False stylesheet = self.get_stylesheet() if stylesheet: self.manager.add_style_sheet(stylesheet) heading = '<h3>%s</h3>' % html.escape(episode.title) subheading = _('from %s') % html.escape(episode.channel.title) details = '<small>%s</small>' % html.escape(self.details_fmt % { 'date': util.format_date(episode.published), 'size': util.format_filesize(episode.file_size, digits=1) if episode.file_size > 0 else "-", 'duration': episode.get_play_info_string()}) header_html = _('<div id="gpodder-title">\n%(heading)s\n<p>%(subheading)s</p>\n<p>%(details)s</p></div>\n') \ % dict(heading=heading, subheading=subheading, details=details) # uncomment to prevent background override in html shownotes # self.manager.remove_all_style_sheets () logger.debug("base uri: %s (chan:%s)", self._base_uri, episode.channel.url) self.html_view.load_html(header_html + episode.html_description(), self._base_uri) # uncomment to show web inspector # self.html_view.get_inspector().show() self.episode = episode
def add_sync_track(self, tracks, file, info, podcast_name): (title, extension) = os.path.splitext(info.get_name()) timestamp = info.get_modification_time() modified = util.format_date(timestamp.tv_sec) t = SyncTrack(title, info.get_size(), modified, modified_sort=timestamp, filename=file.get_uri(), podcast=podcast_name) tracks.append(t)
def cute_pubdate( self): try: timestamp=int(mktime_tz(parsedate_tz(self.pubDate))) except: timestamp=None result=util.format_date(timestamp) if result is None: return '(%s)' % _('unknown') else: return result
def get_all_tracks(self): tracks = [] for track in self.ipod.get_podcast_tracks(): filename = track.filename_on_ipod if filename is None: length = 0 modified = '' else: length = util.calculate_size(filename) timestamp = util.file_modification_timestamp(filename) modified = util.format_date(timestamp) t = SyncTrack(track.episode_title, length, modified, ipod_track=track, playcount=track.playcount, podcast=track.podcast_title) tracks.append(t) return tracks
def update(self, episode): self.scrolled_window.get_vadjustment().set_value(0) heading = episode.title subheading = _('from %s') % (episode.channel.title) details = self.details_fmt % { 'date': util.format_date(episode.published), 'size': util.format_filesize(episode.file_size, digits=1) if episode.file_size > 0 else "-", 'duration': episode.get_play_info_string()} self.define_colors() hyperlinks = [(0, None)] self.text_buffer.set_text('') if episode.link: hyperlinks.append((self.text_buffer.get_char_count(), episode.link)) self.text_buffer.insert_with_tags_by_name(self.text_buffer.get_end_iter(), heading, 'heading') if episode.link: hyperlinks.append((self.text_buffer.get_char_count(), None)) self.text_buffer.insert_at_cursor('\n') self.text_buffer.insert_with_tags_by_name(self.text_buffer.get_end_iter(), subheading, 'subheading') self.text_buffer.insert_at_cursor('\n') self.text_buffer.insert_with_tags_by_name(self.text_buffer.get_end_iter(), details, 'details') self.text_buffer.insert_at_cursor('\n\n') for target, text in util.extract_hyperlinked_text(episode.html_description()): hyperlinks.append((self.text_buffer.get_char_count(), target)) if target: self.text_buffer.insert_with_tags_by_name( self.text_buffer.get_end_iter(), text, 'hyperlink') else: self.text_buffer.insert( self.text_buffer.get_end_iter(), text) hyperlinks.append((self.text_buffer.get_char_count(), None)) self.hyperlinks = [(start, end, url) for (start, url), (end, _) in zip(hyperlinks, hyperlinks[1:]) if url] self.text_buffer.place_cursor(self.text_buffer.get_start_iter()) if self.populate_popup_id is not None: self.text_view.disconnect(self.populate_popup_id) self.populate_popup_id = self.text_view.connect('populate-popup', self.on_populate_popup) self.episode = episode
tracks = [] for track in listing: title = track.title if not title or title == "": title = track.filename if len(title) > 50: title = title[0:49] + '...' artist = track.artist if artist and len(artist) > 50: artist = artist[0:49] + '...' length = track.filesize age_in_days = 0 date = self.__mtp_to_date(track.date) if not date: modified = track.date # not a valid mtp date. Display what mtp gave anyway modified_sort = -1 # no idea how to sort invalid date else: modified = util.format_date(date) modified_sort = date t = SyncTrack(title, length, modified, modified_sort=modified_sort, mtptrack=track, podcast=artist) tracks.append(t) return tracks def get_free_space(self): if self.__MTPDevice is not None: return self.__MTPDevice.get_freespace() else:
tracks = [] for track in listing: title = track.title if not title or title=="": title=track.filename if len(title) > 50: title = title[0:49] + '...' artist = track.artist if artist and len(artist) > 50: artist = artist[0:49] + '...' length = track.filesize age_in_days = 0 date = self.__mtp_to_date(track.date) if not date: modified = track.date # not a valid mtp date. Display what mtp gave anyway modified_sort = -1 # no idea how to sort invalid date else: modified = util.format_date(date) modified_sort = date t = SyncTrack(title, length, modified, modified_sort=modified_sort, mtptrack=track, podcast=artist) tracks.append(t) return tracks def get_free_space(self): if self.__MTPDevice is not None: return self.__MTPDevice.get_freespace() else: return 0 class SyncCancelledException(Exception): pass class SyncFailedException(Exception): pass
def cute_pubdate(self): result = util.format_date(self.published) if result is None: return '(%s)' % _('unknown') else: return result
def cute_pubdate(self): result = util.format_date(self.published) if result is None: return "(%s)" % _("unknown") else: return result