X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fimdb%2Fimdb-plaintext-downloader.vala;h=8b95f36483316714d58f9f1e94aae2040d19ce13;hb=f7140bdccbf65b1d75f88379838ca646fdbcb862;hp=a97852745abfa40c8a0ab5db4fa7b2a2ec3e71e5;hpb=ec13e711f3c3797eb222cdf4d1788030efbf3400;p=cinaest diff --git a/src/imdb/imdb-plaintext-downloader.vala b/src/imdb/imdb-plaintext-downloader.vala index a978527..8b95f36 100644 --- a/src/imdb/imdb-plaintext-downloader.vala +++ b/src/imdb/imdb-plaintext-downloader.vala @@ -73,28 +73,63 @@ class IMDbDownloadServer : Object, IMDbDownloader { var genre_parser = new GenreLineParser (sqlite); var rating_parser = new RatingLineParser (sqlite); var aka_parser = new AkaLineParser (sqlite); + var plot_parser = new PlotLineParser (sqlite); - var downloader = new IMDbFtpDownloader (cancellable); - downloader.progress_changed.connect (on_progress_changed); + var downloader = new FtpDownloader (cancellable); + downloader.progress.connect (on_progress); + + var parser = new IMDbGzipParser (cancellable); + parser.progress.connect (on_progress); if (MOVIES in flags) { description_changed ("Downloading movie list ..."); - downloader.download (url + "movies.list.gz", movie_parser); + downloader.download (url + "movies.list.gz", Path.build_filename (cache_dir, "movies.list.gz")); } - percent_finished = 25; + percent_finished = 10; if (GENRES in flags) { description_changed ("Downloading genre data ..."); - downloader.download (url + "genres.list.gz", genre_parser); + downloader.download (url + "genres.list.gz", Path.build_filename (cache_dir, "genres.list.gz")); } - percent_finished = 50; + percent_finished = 20; if (RATINGS in flags) { description_changed ("Downloading rating data ..."); - downloader.download (url + "ratings.list.gz", rating_parser); + downloader.download (url + "ratings.list.gz", Path.build_filename (cache_dir, "ratings.list.gz")); } - percent_finished = 75; + percent_finished = 30; if (AKAS in flags) { description_changed ("Downloading alternative titles ..."); - downloader.download (url + "aka-titles.list.gz", aka_parser); + downloader.download (url + "aka-titles.list.gz", Path.build_filename (cache_dir, "aka-titles.list.gz")); + } + percent_finished = 40; + if (PLOTS in flags) { + description_changed ("Downloading plots ..."); + downloader.download (url + "plot.list.gz", Path.build_filename (cache_dir, "plot.list.gz")); + } + + percent_finished = 50; + if (MOVIES in flags) { + description_changed ("Parsing movie list ..."); + parser.parse (Path.build_filename (cache_dir, "movies.list.gz"), movie_parser); + } + percent_finished = 60; + if (GENRES in flags) { + description_changed ("Parsing genre data ..."); + parser.parse (Path.build_filename (cache_dir, "genres.list.gz"), genre_parser); + } + percent_finished = 70; + if (RATINGS in flags) { + description_changed ("Parsing rating data ..."); + parser.parse (Path.build_filename (cache_dir, "ratings.list.gz"), rating_parser); + } + percent_finished = 80; + if (AKAS in flags) { + description_changed ("Parsing alternative titles ..."); + parser.parse (Path.build_filename (cache_dir, "aka-titles.list.gz"), aka_parser); + } + percent_finished = 90; + if (PLOTS in flags) { + description_changed ("Parsing plots ..."); + parser.parse (Path.build_filename (cache_dir, "plot.list.gz"), plot_parser); } } catch (Error e2) { if (e2 is IOError.CANCELLED) @@ -122,8 +157,13 @@ class IMDbDownloadServer : Object, IMDbDownloader { return null; } - private void on_progress_changed (int percent) { - progress (percent_finished + percent / 4); + private void on_progress (int dltotal, int dlnow) { + stdout.printf ("%d / %d\r", dlnow, dltotal); + if (dltotal > 0) { + int p = percent_finished + 10*dlnow/dltotal; + if (p < 100) + progress (p); + } } private void timeout_quit () {