summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2010-11-14 16:49:18 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2010-11-14 16:49:18 +0800
commite88cbe85733780905c153e5407fef2697bf510fd (patch)
tree35e5da779af14594271cea93901b20142f2bb60a
parent2354adf5ba7397e9aa194729570a1c98d3325c07 (diff)
ppstream: store meta data to on disk cache
-rw-r--r--totem/plugin/ppstream.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/totem/plugin/ppstream.py b/totem/plugin/ppstream.py
index 57c7da8..46bf093 100644
--- a/totem/plugin/ppstream.py
+++ b/totem/plugin/ppstream.py
@@ -70,7 +70,8 @@ pps_cache_dir = os.path.expanduser ('~/.local/share/totem/plugin/ppstream')
pps_http_cache_dir = os.path.join (pps_cache_dir, "http")
pps_xmls_dir = os.path.join (pps_cache_dir, "xmls")
pps_images_dir = os.path.join (pps_cache_dir, "images")
-for p in [ pps_xmls_dir, pps_images_dir ]:
+pps_baike_dir = os.path.join (pps_cache_dir, "baike")
+for p in [ pps_xmls_dir, pps_images_dir, pps_baike_dir ]:
if not os.path.exists (p):
os.makedirs (p)
@@ -657,10 +658,34 @@ class PPStream (totem.Plugin):
model.set (it, 3, tip)
self.fetch_movie_poster(class_path, movie, it)
+ def load_movie_meta_data(self, res, movie):
+ digest = url_digest(res)
+ path = os.path.join(pps_baike_dir, digest)
+ if os.path.exists(path):
+ try:
+ meta_data = pickle.load(file(path, 'rb'))
+ except Exception, e:
+ print 'Failed to load saved meta data', movie, e
+ return {}
+
+ def save_movie_meta_data(self, res, movie):
+ if not movie.meta_data:
+ return
+ digest = url_digest(res)
+ path = os.path.join(pps_baike_dir, digest)
+ f = file(path, 'wb')
+ pickle.dump(movie.meta_data, f)
+ f.close()
+
def parse_movie_meta_data(self, res, class_path, movie, count):
print 'parsing movie meta data:', movie
cls = self.get_movie_class (class_path)
- movie.parseBKMetaData(res)
+ meta_data = self.load_movie_meta_data(res, movie)
+ if meta_data:
+ movie.updateMetaData()
+ else:
+ movie.parseBKMetaData(res)
+ self.save_movie_meta_data(res, movie)
#print 'meta data:', movie.meta_data
def on_movie_meta_data_parsed(self, dummy, class_path, movie, count):