diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2010-11-14 16:49:18 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2010-11-14 16:49:18 +0800 |
commit | e88cbe85733780905c153e5407fef2697bf510fd (patch) | |
tree | 35e5da779af14594271cea93901b20142f2bb60a | |
parent | 2354adf5ba7397e9aa194729570a1c98d3325c07 (diff) |
ppstream: store meta data to on disk cache
-rw-r--r-- | totem/plugin/ppstream.py | 29 |
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): |