def update_progress(self, count, block_size, total_size):
     percent = int(self.current_item * 100 / self.len)
     item_percent = int(count * block_size * 100 / total_size)
     line1 = Addon.getLocalizedString(32302) % (self.current_item, self.len)
     line2 = Addon.getLocalizedString(32303) % (self.current_file, item_percent)
     line3 = Addon.getLocalizedString(32304) % self.sub_folder
     self.pDialog.update(percent, line1, line2, line3)
 def __init__(self, photos, download_path):
     self.len = len(photos)
     log("downloader.__init__ with %d items and path=%s" % (self.len, download_path))
     self.pDialog = xbmcgui.DialogProgress()
     self.pDialog.create(Addon.getAddonInfo("name"))
     s = Addon.getLocalizedString(32301)  # Gathering Data...
     self.pDialog.update(0, s)
     album_title = photos[0]["album_title"]
     self.sub_folder = re.sub("[^\w\- ]", "", album_title).replace(" ", "_")
     self.full_path = os.path.join(download_path, self.sub_folder)
     log('script.download_album using full_path="%s"' % self.full_path)
     self.__create_folder(self.full_path)
     for i, photo in enumerate(photos):
         self.current_item = i + 1
         url = photo["pic"]
         self.current_file = photo["pic"].split("/")[-1].split("?")[0]
         filename = os.path.join(self.full_path, self.current_file)
         log('downloader: Downloading "%s" to "%s"' % (url, filename))
         try:
             urllib.urlretrieve(url, filename, self.update_progress)
         except IOError, e:
             log('downloader: ERROR: "%s"' % str(e))
             break
         log("downloader: Done")
         if self.pDialog.iscanceled():
             log("downloader: Canceled")
             break
 def download_album(self):
     log('script.download_album started')
     download_path = Addon.getSetting('download_path')
     if not download_path:
         s = Addon.getLocalizedString(32300)  # Choose default download path
         new_path = xbmcgui.Dialog().browse(3, s, 'pictures')
         if not new_path:
             return
         else:
             download_path = new_path
             Addon.setSetting('download_path', download_path)
     log('script.download_album using download_path="%s"' % download_path)
     album_url = self.getProperty('album_url')
     items = self.ScraperManager.get_photos(album_url)
     downloader.Downloader(items, download_path)
     log('script.download_album finished')