Gentoo Archives: gentoo-commits

From: Mike Auty <ikelos@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] dev/ikelos:master commit in: media-video/griffith/, media-video/griffith/files/
Date: Fri, 06 May 2016 01:11:25
Message-Id: 1462497072.f31c2f4f2e19ccaf0d155ef0fc57f593e4175f1c.ikelos@gentoo
1 commit: f31c2f4f2e19ccaf0d155ef0fc57f593e4175f1c
2 Author: layman <layman <AT> localhost>
3 AuthorDate: Fri May 6 01:11:12 2016 +0000
4 Commit: Mike Auty <ikelos <AT> gentoo <DOT> org>
5 CommitDate: Fri May 6 01:11:12 2016 +0000
6 URL: https://gitweb.gentoo.org/dev/ikelos.git/commit/?id=f31c2f4f
7
8 Source git from a recent github (source not verified).
9
10 media-video/griffith/ChangeLog | 80 +
11 media-video/griffith/ChangeLog-2015 | 292 +
12 media-video/griffith/Manifest | 8 +
13 media-video/griffith/files/0.10-fix_lib_path.patch | 13 +
14 .../files/griffith-0.12.1-sqlalchemy-0.7.patch | 39 +
15 .../griffith/files/griffith-svn-latest.patch | 9709 ++++++++++++++++++++
16 media-video/griffith/griffith-0.13-r2.ebuild | 76 +
17 media-video/griffith/metadata.xml | 15 +
18 8 files changed, 10232 insertions(+)
19
20 diff --git a/media-video/griffith/ChangeLog b/media-video/griffith/ChangeLog
21 new file mode 100644
22 index 0000000..0525524
23 --- /dev/null
24 +++ b/media-video/griffith/ChangeLog
25 @@ -0,0 +1,80 @@
26 +# ChangeLog for media-video/griffith
27 +# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
28 +# (auto-generated from git log)
29 +
30 +*griffith-0.13-r1 (09 Aug 2015)
31 +*griffith-0.13 (09 Aug 2015)
32 +
33 + 09 Aug 2015; Robin H. Johnson <robbat2@g.o>
34 + +files/0.10-fix_lib_path.patch, +files/griffith-0.12.1-sqlalchemy-0.7.patch,
35 + +griffith-0.13.ebuild, +griffith-0.13-r1.ebuild, +metadata.xml:
36 + proj/gentoo: Initial commit
37 +
38 + This commit represents a new era for Gentoo:
39 + Storing the gentoo-x86 tree in Git, as converted from CVS.
40 +
41 + This commit is the start of the NEW history.
42 + Any historical data is intended to be grafted onto this point.
43 +
44 + Creation process:
45 + 1. Take final CVS checkout snapshot
46 + 2. Remove ALL ChangeLog* files
47 + 3. Transform all Manifests to thin
48 + 4. Remove empty Manifests
49 + 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
50 + 5.1. Do not touch files with -kb/-ko keyword flags.
51 +
52 + Signed-off-by: Robin H. Johnson <robbat2@g.o>
53 + X-Thanks: Alec Warner <antarus@g.o> - did the GSoC 2006 migration
54 + tests
55 + X-Thanks: Robin H. Johnson <robbat2@g.o> - infra guy, herding this
56 + project
57 + X-Thanks: Nguyen Thai Ngoc Duy <pclouds@g.o> - Former Gentoo
58 + developer, wrote Git features for the migration
59 + X-Thanks: Brian Harring <ferringb@g.o> - wrote much python to improve
60 + cvs2svn
61 + X-Thanks: Rich Freeman <rich0@g.o> - validation scripts
62 + X-Thanks: Patrick Lauer <patrick@g.o> - Gentoo dev, running new 2014
63 + work in migration
64 + X-Thanks: Michał Górny <mgorny@g.o> - scripts, QA, nagging
65 + X-Thanks: All of other Gentoo developers - many ideas and lots of paint on
66 + the bikeshed
67 +
68 + 24 Aug 2015; Justin Lecher <jlec@g.o> griffith-0.13.ebuild,
69 + griffith-0.13-r1.ebuild, metadata.xml:
70 + Use https by default
71 +
72 + Convert all URLs for sites supporting encrypted connections from http to
73 + https
74 +
75 + Signed-off-by: Justin Lecher <jlec@g.o>
76 +
77 + 24 Aug 2015; Justin Lecher <jlec@g.o> griffith-0.13.ebuild,
78 + griffith-0.13-r1.ebuild:
79 + Convert all URIs for launchpad.net from http to https
80 +
81 + Signed-off-by: Justin Lecher <jlec@g.o>
82 +
83 + 24 Aug 2015; Mike Gilbert <floppym@g.o> metadata.xml:
84 + Revert DOCTYPE SYSTEM https changes in metadata.xml
85 +
86 + repoman does not yet accept the https version.
87 + This partially reverts eaaface92ee81f30a6ac66fe7acbcc42c00dc450.
88 +
89 + Bug: https://bugs.gentoo.org/552720
90 +
91 + 10 Nov 2015; Justin Lecher <jlec@g.o> griffith-0.13.ebuild,
92 + griffith-0.13-r1.ebuild:
93 + Convert from virtual/python-imaging to plain dev-python/pillow
94 +
95 + Signed-off-by: Justin Lecher <jlec@g.o>
96 +
97 + 24 Jan 2016; Michał Górny <mgorny@g.o> metadata.xml:
98 + Replace all herds with appropriate projects (GLEP 67)
99 +
100 + Replace all uses of herd with appropriate project maintainers, or no
101 + maintainers in case of herds requested to be disbanded.
102 +
103 + 24 Jan 2016; Michał Górny <mgorny@g.o> metadata.xml:
104 + Set appropriate maintainer types in metadata.xml (GLEP 67)
105 +
106
107 diff --git a/media-video/griffith/ChangeLog-2015 b/media-video/griffith/ChangeLog-2015
108 new file mode 100644
109 index 0000000..591f976
110 --- /dev/null
111 +++ b/media-video/griffith/ChangeLog-2015
112 @@ -0,0 +1,292 @@
113 +# ChangeLog for media-video/griffith
114 +# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
115 +# $Header: /var/cvsroot/gentoo-x86/media-video/griffith/ChangeLog,v 1.69 2015/02/26 15:18:56 idella4 Exp $
116 +
117 +*griffith-0.13-r1 (26 Feb 2015)
118 +
119 + 26 Feb 2015; Ian Delaney <idella4@g.o> +griffith-0.13-r1.ebuild:
120 + revbump; convert -> python-single-r1 and upgrade EAPI, consent by maintainer
121 + hwoarang
122 +
123 + 14 Feb 2015; Markos Chandras <hwoarang@g.o> griffith-0.13.ebuild:
124 + Fix URL for artwork files
125 +
126 + 31 Jan 2015; Markos Chandras <hwoarang@g.o> -griffith-9999.ebuild,
127 + griffith-0.13.ebuild:
128 + Update HOMEPAGE and host artwork tarball ourselves. Drop 9999 ebuild since
129 + upstream is gone
130 +
131 + 04 Oct 2014; Markos Chandras <hwoarang@g.o> griffith-9999.ebuild:
132 + depend on libglade. Bug #295291
133 +
134 + 28 Dec 2013; Markos Chandras <hwoarang@g.o> griffith-9999.ebuild:
135 + Remove obsolete patch. Bug #496206
136 +
137 + 09 Jun 2013; Mike Gilbert <floppym@g.o> griffith-0.13.ebuild,
138 + griffith-9999.ebuild:
139 + Depend on virtual/python-imaging.
140 +
141 + 12 May 2013; Patrick Lauer <patrick@g.o> metadata.xml:
142 + Remove obsolete useflag from metadata.xml
143 +
144 + 17 Jan 2013; Michał Górny <mgorny@g.o> griffith-9999.ebuild:
145 + Ah, and the live ebuild.
146 +
147 + 17 Jan 2013; Michał Górny <mgorny@g.o> griffith-0.13.ebuild:
148 + Request built-in Python sqlite3 support rather than pysqlite package.
149 +
150 + 22 Jul 2012; Markos Chandras <hwoarang@g.o> -griffith-0.12.1.ebuild,
151 + griffith-0.13.ebuild:
152 + Stable on amd64 wrt bug #427240. Remove old ebuild
153 +
154 + 19 Jul 2012; Jeff Horelick <jdhore@g.o> griffith-0.13.ebuild:
155 + marked x86 per bug 427240
156 +
157 +*griffith-0.13 (22 Mar 2012)
158 +
159 + 22 Mar 2012; Markos Chandras <hwoarang@g.o> +griffith-0.13.ebuild,
160 + griffith-9999.ebuild:
161 + Version bump. Ebuild clean up. EAPI4
162 +
163 + 05 Aug 2011; Markos Chandras <hwoarang@g.o> griffith-9999.ebuild:
164 + Comply with EAPI3 standards
165 +
166 + 05 Aug 2011; Markos Chandras <hwoarang@g.o> griffith-0.12.1.ebuild,
167 + +files/griffith-0.12.1-sqlalchemy-0.7.patch, griffith-9999.ebuild:
168 + EAPI3, apply conditional patch for sqlalchemy-0.7.1. Add post_inst message
169 + about optional runtime dependencies. Bug #377789
170 +
171 + 04 Jun 2011; Pacho Ramos <pacho@g.o> griffith-0.12.1.ebuild,
172 + griffith-9999.ebuild:
173 + RDEPEND on splitted python ebuilds (bug #352935 with Markos Chandras
174 + approval).
175 +
176 + 17 May 2011; Markos Chandras <hwoarang@g.o> -griffith-0.11.ebuild,
177 + -griffith-0.12.ebuild:
178 + Remove old
179 +
180 + 24 Jan 2011; Christian Faulhammer <fauli@g.o>
181 + griffith-0.12.1.ebuild:
182 + stable x86, bug 351792
183 +
184 + 17 Jan 2011; Markos Chandras <hwoarang@g.o> griffith-0.12.1.ebuild:
185 + Stable on amd64 wrt bug #351792
186 +
187 +*griffith-0.12.1 (28 Oct 2010)
188 +
189 + 28 Oct 2010; Markos Chandras <hwoarang@g.o>
190 + +griffith-0.12.1.ebuild:
191 + Version bump. Bug 343003
192 +
193 + 23 Oct 2010; Markos Chandras <hwoarang@g.o> +griffith-9999.ebuild:
194 + Initial commit of live ebuild. Moved from my overlay
195 +
196 +*griffith-0.12 (10 Oct 2010)
197 +
198 + 10 Oct 2010; Markos Chandras <hwoarang@g.o> +griffith-0.12.ebuild:
199 + Version bump
200 +
201 + 21 Aug 2010; Markos Chandras <hwoarang@g.o>
202 + -files/0.9.6-moving_share_dir.patch, -files/0.9.7.1-fix_spellcheck.patch:
203 + Remove unused files
204 +
205 + 09 Jul 2010; Markos Chandras <hwoarang@g.o> -griffith-0.9.9.ebuild,
206 + -griffith-0.10-r1.ebuild:
207 + Remove old ebuilds
208 +
209 + 09 Jul 2010; Christian Faulhammer <fauli@g.o> griffith-0.11.ebuild:
210 + stable x86, bug 325637
211 +
212 + 26 Jun 2010; Christoph Mende <angelos@g.o> griffith-0.11.ebuild:
213 + Stable on amd64 wrt bug #325637
214 +
215 + 17 Jun 2010; Markos Chandras <hwoarang@g.o> griffith-0.11.ebuild:
216 + Fix python eclass usage wrt bug #321889
217 +
218 + 28 May 2010; Arfrever Frehtes Taifersar Arahesis <arfrever@g.o>
219 + griffith-0.9.9.ebuild, griffith-0.10-r1.ebuild, griffith-0.11.ebuild:
220 + Delete calls to deprecated python_version().
221 +
222 +*griffith-0.11 (11 Jan 2010)
223 +
224 + 11 Jan 2010; Markos Chandras <hwoarang@g.o> +griffith-0.11.ebuild:
225 + version bump. Fixes bug #300493
226 +
227 + 10 Jan 2010; Markus Meier <maekke@g.o> griffith-0.10-r1.ebuild:
228 + x86 stable, bug #298300
229 +
230 + 02 Jan 2010; Markos Chandras <hwoarang@g.o>
231 + griffith-0.10-r1.ebuild:
232 + Stable on amd64 wrt bug #298300
233 +
234 +*griffith-0.10-r1 (01 Dec 2009)
235 +
236 + 01 Dec 2009; <hwoarang@g.o> -griffith-0.9.10.ebuild,
237 + -griffith-0.10.ebuild, +griffith-0.10-r1.ebuild:
238 + Depend to libglade instead of glade ( bug #295291 ). Drop old ebuilds
239 +
240 +*griffith-0.10 (05 Oct 2009)
241 +
242 + 05 Oct 2009; Markos Chandras <hwoarang@g.o>
243 + -griffith-0.10_rc1.ebuild, +griffith-0.10.ebuild:
244 + Version bump to 0.10. Remove _rc release
245 +
246 +*griffith-0.10_rc1 (21 Jul 2009)
247 +
248 + 21 Jul 2009; Markos Chandras <hwoarang@g.o>
249 + -griffith-0.10_beta3.ebuild, +griffith-0.10_rc1.ebuild:
250 + Version bump to _rc1. Remove beta ebuild
251 +
252 +*griffith-0.10_beta3 (02 Jul 2009)
253 +
254 + 02 Jul 2009; Markos Chandras <hwoarang@g.o>
255 + +files/0.10-fix_lib_path.patch, +griffith-0.10_beta3.ebuild:
256 + Bump to 0.10_beta3.
257 +
258 + 02 Jul 2009; Markos Chandras <hwoarang@g.o> -griffith-0.9.5.ebuild,
259 + -griffith-0.9.6-r1.ebuild, -griffith-0.9.7.1.ebuild:
260 + Remove old ebuilds
261 +
262 + 02 Jul 2009; Markus Meier <maekke@g.o> griffith-0.9.9.ebuild:
263 + amd64 stable, bug #273203
264 +
265 + 12 Jun 2009; Markos Chandras <hwoarang@g.o> -griffith-9999.ebuild:
266 + Remove live ebuild. Moved to my dev overlay
267 +
268 + 11 Jun 2009; Christian Faulhammer <fauli@g.o>
269 + griffith-0.9.9.ebuild:
270 + stable x86, bug 273203
271 +
272 +*griffith-0.9.10 (08 Jun 2009)
273 +
274 + 08 Jun 2009; Markos Chandras <hwoarang@g.o> griffith-0.9.9.ebuild,
275 + +griffith-0.9.10.ebuild:
276 + Version bump, ebuild clean up
277 +
278 + 24 Feb 2009; Markos Chandras <hwoarang@g.o> griffith-9999:
279 + Dropping keywords from live ebuild
280 +
281 +*griffith-0.9.9 (24 Feb 2009)
282 +
283 + 24 Feb 2009; Markos Chandras <hwoarang@g.o> metadata.xml,
284 + +griffith-0.9.9.ebuild:
285 + Version bump ( bug #250767 ), changing maintainer
286 +
287 +*griffith-9999 (16 Aug 2008)
288 +*griffith-0.9.7.1 (16 Aug 2008)
289 +
290 + 16 Aug 2008; Tiziano Müller <dev-zero@g.o>
291 + +files/0.9.7.1-fix_spellcheck.patch, +griffith-0.9.7.1.ebuild,
292 + +griffith-9999.ebuild:
293 + Version bump. Added live ebuild for testing (no bundled sqlalchemy
294 + anymore).
295 +
296 + 17 Jul 2008; Alexis Ballier <aballier@g.o>
297 + griffith-0.9.6-r1.ebuild:
298 + keyword ~x86-fbsd, thanks to Davide Italiano <dav_it@g.o>, bug
299 + #231906
300 +
301 + 27 Jun 2008; Tiziano Müller <dev-zero@g.o>
302 + griffith-0.9.6-r1.ebuild:
303 + Added csv USE flag and dependency on dev-python/chardet
304 +
305 +*griffith-0.9.6-r1 (07 Jun 2008)
306 +
307 + 07 Jun 2008; Tiziano Müller <dev-zero@g.o>
308 + +files/0.9.6-moving_share_dir.patch, -griffith-0.9.6.ebuild,
309 + +griffith-0.9.6-r1.ebuild:
310 + Finally fixed bug #202484
311 +
312 +*griffith-0.9.6 (07 Jun 2008)
313 +
314 + 07 Jun 2008; Tiziano Müller <dev-zero@g.o> metadata.xml,
315 + +griffith-0.9.6.ebuild:
316 + Version bump (bug #210993): Currently installs a copy of SQLAlchemy-0.3,
317 + this will be fixed in 0.10.
318 +
319 + 29 May 2008; Ali Polatel <hawking@g.o> griffith-0.9.5.ebuild:
320 + python_mod_{cleanup,optimize} is ROOT aware.
321 +
322 + 04 May 2008; Samuli Suominen <drac@g.o> griffith-0.9.5.ebuild:
323 + Use berlios mirrors:// wrt #218657
324 +
325 + 25 Jan 2008; Krzysiek Pawlik <nelchael@g.o> -griffith-0.9.2.ebuild,
326 + -griffith-0.9.3.1.ebuild, griffith-0.9.5.ebuild:
327 + Depend on dev-python/pysqlite-2.3*, remove old versions.
328 +
329 + 16 Dec 2007; Samuli Suominen <drac@g.o> griffith-0.9.5.ebuild:
330 + amd64 stable wrt #202308
331 +
332 + 16 Dec 2007; Markus Meier <maekke@g.o> griffith-0.9.5.ebuild:
333 + x86 stable, bug #202308
334 +
335 + 14 Dec 2007; Krzysiek Pawlik <nelchael@g.o> griffith-0.9.5.ebuild:
336 + Fix bug #201648: require =dev-python/sqlalchemy-0.3*
337 +
338 + 27 Oct 2007; Krzysiek Pawlik <nelchael@g.o> griffith-0.9.2.ebuild,
339 + griffith-0.9.3.1.ebuild, griffith-0.9.5.ebuild:
340 + Fix variable quoting.
341 +
342 +*griffith-0.9.5 (27 Oct 2007)
343 +
344 + 27 Oct 2007; Krzysiek Pawlik <nelchael@g.o> +griffith-0.9.5.ebuild:
345 + Version bump.
346 +
347 + 27 Oct 2007; Krzysiek Pawlik <nelchael@g.o> griffith-0.9.2.ebuild,
348 + griffith-0.9.3.1.ebuild:
349 + Update homepage, see bug #196998.
350 +
351 +*griffith-0.9.3.1 (03 Jul 2007)
352 +
353 + 03 Jul 2007; Krzysiek Pawlik <nelchael@g.o> -griffith-0.9.3.ebuild,
354 + +griffith-0.9.3.1.ebuild:
355 + Version bump.
356 +
357 + 01 Jul 2007; Krzysiek Pawlik <nelchael@g.o> griffith-0.9.3.ebuild:
358 + Add dev-python/pyxml to RDEPEND, see bug #183895.
359 +
360 +*griffith-0.9.3 (01 Jul 2007)
361 +
362 + 01 Jul 2007; Krzysiek Pawlik <nelchael@g.o> +griffith-0.9.3.ebuild:
363 + Version bump.
364 +
365 + 01 Jul 2007; Piotr Jaroszyński <peper@g.o>
366 + +files/digest-griffith-0.9.2, Manifest:
367 + (QA) Add digests.
368 +
369 + 29 Jun 2007; Christian Faulhammer <opfer@g.o>
370 + griffith-0.9.2.ebuild:
371 + stable x86, bug 177157
372 +
373 + 24 Jun 2007; Christoph Mende <angelos@g.o> griffith-0.9.2.ebuild:
374 + Stable on amd64 wrt bug 177157
375 +
376 + 15 Jun 2007; Daniel Gryniewicz <dang@g.o> griffith-0.9.2.ebuild:
377 + Marked ~amd64 Oops, sqlalchemy not stable; fricken repoman
378 +
379 + 15 Jun 2007; Daniel Gryniewicz <dang@g.o> griffith-0.9.2.ebuild:
380 + Marked stable on amd64 for bug #177157
381 +
382 + 05 May 2007; Krzysiek Pawlik <nelchael@g.o> -griffith-0.6.2.ebuild:
383 + Remove old version.
384 +
385 +*griffith-0.9.2 (17 Mar 2007)
386 +
387 + 17 Mar 2007; Krzysiek Pawlik <nelchael@g.o>
388 + -griffith-0.9_rc1.ebuild, +griffith-0.9.2.ebuild:
389 + Version bump, see bug #169045.
390 +
391 + 02 Mar 2007; Simon Stelling <blubb@g.o> griffith-0.9_rc1.ebuild:
392 + add ~amd64; bug 168908
393 +
394 +*griffith-0.9_rc1 (29 Dec 2006)
395 +
396 + 29 Dec 2006; Tiziano Müller <dev-zero@g.o>
397 + +griffith-0.9_rc1.ebuild:
398 + Version bump
399 +
400 +*griffith-0.6.2 (27 Sep 2006)
401 +
402 + 27 Sep 2006; Krzysiek Pawlik <nelchael@g.o> +metadata.xml,
403 + +griffith-0.6.2.ebuild:
404 + Initial version, see bug #100003.
405
406 diff --git a/media-video/griffith/Manifest b/media-video/griffith/Manifest
407 new file mode 100644
408 index 0000000..891763f
409 --- /dev/null
410 +++ b/media-video/griffith/Manifest
411 @@ -0,0 +1,8 @@
412 +AUX 0.10-fix_lib_path.patch 667 SHA256 f9c5a58ac4552ddfe254cdb9e02ef3e91a5feb500c7afe92f9faed9cc02687f2 SHA512 9e85aa92627898a667b86ead4ae691c9d2562300f99da4c4efe57644a9c2bddef0648fce39290b50471cc22e49b4bd478979d3147dfda8a52e8bd55d2c1c6ee7 WHIRLPOOL 2d21cf60ec65001dc5606c4cae638d9102bf0ff576b258aff45246d631d94a900e19a508aff8fed9becb80b5f0708d94959f4473271d35e7fec73492b40e8560
413 +AUX griffith-0.12.1-sqlalchemy-0.7.patch 1505 SHA256 18989a678f44d4498e08c8c1a7cec41a3ce9bd245e93319878ff4dcefdaaa42c SHA512 43c703a77972731ca5a10bff0151ec53bf0f575e41d85b7bda7260cf0f51fa7972b4159fcca879672754945fadf27d4071fb93ca0c38391317192e0cda7a0637 WHIRLPOOL 7bda212851da410b6da08b4b006cfc55059ef6fe1992308c128acca00d87df8d043f82a8a9c5b53c7f0f5e59d24272e5b031a5c78df55766e6cd6bd72e11e989
414 +AUX griffith-svn-latest.patch 374854 SHA256 bfccf101d5258b2a321295c3758a58607cd1328b41e07f9d5e01d4789b13114c SHA512 558074473b243d453a968ac0338cba16f08fc96d28767edb1a4f8b3cc17429255b607372038923ea6245b1c07a9e806eeccd4258ca3c031b4ef0ec06461f3008 WHIRLPOOL d9c9db9f5d026facfa699419362ee4ae469f61421f7ddca07ca2c818c768135ac8786a34a204855cd47a89d584152b3eaa9671afb4a351cd10307ed19e202521
415 +DIST griffith-extra-artwork-0.9.4.tar.gz 124008 SHA256 96bc01a05ad54aad9fabcf411809c46c78b990fc7656ea004cebdfd8ea9894fd SHA512 09e912b4511c5c4a7b501d9a8f98223d20e58574e667cdb759e66f743cce14b45cce8bf0f9502ff2aacfc09e7a7b37966a887205a74a6e028b832703a65a2734 WHIRLPOOL 166dcf1bee1ef07452d00b7c87f487fea5417a0b6d156afd127f8723c6d2c44d2a0e4a5719ab5f85c662b7bbc30f0fadd8ba7873908cdf7ae85167b07a518e6b
416 +EBUILD griffith-0.13-r2.ebuild 2024 SHA256 cf580721ff4d6516dd00deda37a5cf53c0386f22292191da56ac00b19e21d202 SHA512 1853ccd50e0a771d63abfd44220becf4c9d30c06c8e06dcdbb9d1cd66e83f6e3819d5382f0ba9e450f2e145ce473e5d85217cd267ca173257f09121121a3fb71 WHIRLPOOL 8e35f4e6a94dc59fabe3f096c59fb5e2dbeb24f2d8d95348a4c751ba07f9ed035595ed9fa5a6deb137333fff54a2a5318e8eeff965bdddbddcd5d74814de1559
417 +MISC ChangeLog 3032 SHA256 ae8db1cd37e72e665ead210852d4cd7c525877487b55ae795ee23664cf9ab5cf SHA512 3833126c33efdd30b5ac3848d5e460a3bfbdb669ad4f6c7fc8269572ea6179b32c1a0b7bd757809fc1333cda2734ba4b9ce7aa3f445ef8043c521005969bb4aa WHIRLPOOL 5382d59070d38edfb47bad710d0d098a6e48d07d23c8ea2588b4ed4db2684a743dfae3a073d2b2223d52c7c5ffea820076c5a213429541812cf26be4b80fdba2
418 +MISC ChangeLog-2015 9835 SHA256 78a400b34b02b1b3dd875913a658719436a8babfe31978c55e5b59a45881f435 SHA512 f5702d13f2a1b96d3d82520a01b765648b2b78f01eed62ca5d963c1b546f47da0192a9379e77224ee517c6432224f7baba472072c000998bf6f0390dba266963 WHIRLPOOL 5115452e9824a3c69f58980f8a71ac83d42f7cff554b98ad10a1044d4a212edb047458ac6a81f522d50e4de3e4ac98589fd847758c4d55904047dcc3d6247ed2
419 +MISC metadata.xml 462 SHA256 6e2bf71ddd60d3db2ea72117a88617f654058b959fafcef23d771228da75e6ba SHA512 0aab82c7eaffc0269cb66bbdb5df6e98dad1259c50bfc5343839a7ec2c6b547d3f5d47053673dd8759d945083f2860790a7e2f2efb5f8b0f50be4e74beb1381e WHIRLPOOL e6e875629a9733ac0109bff47e87cdc20c4f270d96279efe1c8c705149dda98a3ada370bd18ec915b9b7a88078aa3e6a6d83b4a9f8eeef2a4268bff0f39f7246
420
421 diff --git a/media-video/griffith/files/0.10-fix_lib_path.patch b/media-video/griffith/files/0.10-fix_lib_path.patch
422 new file mode 100644
423 index 0000000..952448f
424 --- /dev/null
425 +++ b/media-video/griffith/files/0.10-fix_lib_path.patch
426 @@ -0,0 +1,13 @@
427 +Index: lib/initialize.py
428 +===================================================================
429 +--- lib.orig/initialize.py
430 ++++ lib/initialize.py
431 +@@ -73,7 +73,7 @@ def locations(self, home_dir):
432 + os.environ['LANG'] = lang
433 +
434 + elif os.name == 'posix':
435 +- locations['share'] = os.path.abspath(os.path.join(locations['lib'], '..'))
436 ++ locations['share'] = os.path.abspath(os.path.join(locations['lib'], '../../share/griffith/'))
437 + locations['glade'] = os.path.join(locations['share'], 'glade')
438 + locations['i18n'] = os.path.abspath(os.path.join(locations['share'], '..', 'locale'))
439 + if not os.path.isdir(locations['i18n']):
440
441 diff --git a/media-video/griffith/files/griffith-0.12.1-sqlalchemy-0.7.patch b/media-video/griffith/files/griffith-0.12.1-sqlalchemy-0.7.patch
442 new file mode 100644
443 index 0000000..d3e6a5b
444 --- /dev/null
445 +++ b/media-video/griffith/files/griffith-0.12.1-sqlalchemy-0.7.patch
446 @@ -0,0 +1,39 @@
447 +Index: griffith-0.12.1/lib/add.py
448 +===================================================================
449 +--- griffith-0.12.1.orig/lib/add.py
450 ++++ griffith-0.12.1/lib/add.py
451 +@@ -26,7 +26,7 @@ import logging
452 + import os
453 +
454 + import gtk
455 +-from sqlalchemy.exceptions import IntegrityError
456 ++from sqlalchemy.exc import IntegrityError
457 +
458 + import quick_filter
459 + import db
460 +Index: griffith-0.12.1/lib/db/tables.py
461 +===================================================================
462 +--- griffith-0.12.1.orig/lib/db/tables.py
463 ++++ griffith-0.12.1/lib/db/tables.py
464 +@@ -64,7 +64,7 @@ movies = Table('movies', metadata,
465 + Column('poster_md5', ForeignKey(posters.c.md5sum)),
466 + Column('loaned', Boolean, nullable=False, default=False),
467 + Column('seen', Boolean, nullable=False, default=False),
468 +- Column('rating', SmallInteger(2)),
469 ++ Column('rating', SmallInteger),
470 + Column('color', SmallInteger),
471 + Column('cond', SmallInteger), # MySQL will not accept name "condition"
472 + Column('layers', SmallInteger),
473 +Index: griffith-0.12.1/lib/sql.py
474 +===================================================================
475 +--- griffith-0.12.1.orig/lib/sql.py
476 ++++ griffith-0.12.1/lib/sql.py
477 +@@ -29,7 +29,7 @@ import logging
478 + import os.path
479 +
480 + from sqlalchemy import create_engine, or_, and_, not_, exists, asc, desc
481 +-from sqlalchemy.exceptions import OperationalError
482 ++from sqlalchemy.exc import OperationalError
483 + from sqlalchemy.orm import sessionmaker, scoped_session
484 + from sqlalchemy.sql.expression import Update, Delete
485 +
486
487 diff --git a/media-video/griffith/files/griffith-svn-latest.patch b/media-video/griffith/files/griffith-svn-latest.patch
488 new file mode 100644
489 index 0000000..8d0d1b3
490 --- /dev/null
491 +++ b/media-video/griffith/files/griffith-svn-latest.patch
492 @@ -0,0 +1,9709 @@
493 +diff --git a/.gitignore b/.gitignore
494 +new file mode 100644
495 +index 0000000..3af4e56
496 +--- /dev/null
497 ++++ b/.gitignore
498 +@@ -0,0 +1,62 @@
499 ++# Byte-compiled / optimized / DLL files
500 ++__pycache__/
501 ++*.py[cod]
502 ++
503 ++# C extensions
504 ++*.so
505 ++
506 ++# Distribution / packaging
507 ++.Python
508 ++env/
509 ++build/
510 ++develop-eggs/
511 ++dist/
512 ++downloads/
513 ++eggs/
514 ++.eggs/
515 ++lib64/
516 ++parts/
517 ++sdist/
518 ++var/
519 ++*.egg-info/
520 ++.installed.cfg
521 ++*.egg
522 ++
523 ++# PyInstaller
524 ++# Usually these files are written by a python script from a template
525 ++# before PyInstaller builds the exe, so as to inject date/other infos into it.
526 ++*.manifest
527 ++*.spec
528 ++
529 ++# Installer logs
530 ++pip-log.txt
531 ++pip-delete-this-directory.txt
532 ++
533 ++# Unit test / coverage reports
534 ++htmlcov/
535 ++.tox/
536 ++.coverage
537 ++.coverage.*
538 ++.cache
539 ++nosetests.xml
540 ++coverage.xml
541 ++*,cover
542 ++
543 ++# Translations
544 ++*.mo
545 ++*.pot
546 ++
547 ++# Django stuff:
548 ++*.log
549 ++
550 ++# Sphinx documentation
551 ++docs/_build/
552 ++
553 ++# PyBuilder
554 ++target/
555 ++
556 ++# temp files
557 ++*~
558 ++
559 ++# IDEs
560 ++.idea/
561 +diff --git a/AUTHORS b/AUTHORS
562 +index 22b0283..25c9c46 100644
563 +--- a/AUTHORS
564 ++++ b/AUTHORS
565 +@@ -32,3 +32,6 @@ dragonskulle <dragonskulle@×××××.com>:
566 +
567 + Ivo Nunes <netherblood@×××××.com>
568 + * Programmer
569 ++
570 ++Elan Ruusamäe <glen@×××××.ee>
571 ++* Tellico import plugin
572 +diff --git a/ChangeLog b/ChangeLog
573 +index e3f8490..df5d1c8 100644
574 +--- a/ChangeLog
575 ++++ b/ChangeLog
576 +@@ -1,10 +1,127 @@
577 +-# $Id: ChangeLog 1604 2011-12-18 20:46:19Z piotrek $ vim: ts=4
578 ++# $Id$ vim: ts=4
579 +
580 + Griffith ChangeLog
581 + ------------------
582 +-(c) 2005-2011 Vasco Nunes, Piotr Ożarowski
583 ++(c) 2005-2014 Vasco Nunes, Piotr Ożarowski
584 +
585 +
586 ++2014-03-13 Michael Jahn
587 ++ * [#1290146] imdb searches
588 ++ * [#1271874] "weitere Titel" werden in Originaltitel übernommen
589 ++
590 ++2013-12-16 Michael Jahn
591 ++ * better handling of temporary poster files
592 ++
593 ++2013-12-09 Michael Jahn
594 ++ * IMDb plugin updated
595 ++
596 ++2013-12-03 Michael Jahn
597 ++ * IMDb plugin updated
598 ++
599 ++2013-11-17 Michael Jahn
600 ++ * [#1251923] poster not loaded from CSFD
601 ++
602 ++2013-11-12 Michael Jahn
603 ++ * [#1250013] Allocine plugin do not populate the fields
604 ++
605 ++2013-10-17 Michael Jahn
606 ++ * IMDb plugin updated
607 ++ [#1235747] IMDB fields not populating
608 ++ [#1239178] IMDB fails to populate some fields
609 ++ [#1236093] IMDB failure starting around 25 Sept 2013
610 ++ [#1240477] IMDB not Downloading All Fields in 0.13 for Linux
611 ++
612 ++2013-10-04 Michael Jahn
613 ++ * FilmeAffinity movie plugin updated
614 ++ [#1210828] FilmAffinity
615 ++ [#1216572] [FilmAffinity plugin] doesn't show the list of movies
616 ++
617 ++2013-09-27 Michael Jahn
618 ++ * FilmeVonAZ movie plugin updated
619 ++
620 ++2013-06-26 Michael Jahn
621 ++ * [1194709] DVDEmpire plugin stopped returning results
622 ++
623 ++2013-06-24 Michael Jahn
624 ++ * [1174569] FilmAffinity plugin does not work since today
625 ++
626 ++2013-06-01 Michael Jahn
627 ++ * PDF export plugin updated
628 ++
629 ++2013-05-24 Michael Jahn
630 ++ * Allocine movie plugin updated
631 ++
632 ++2013-04-02 Michael Jahn
633 ++ * [1039068] Return the list of films sorted; added sorting by title for result lists
634 ++
635 ++2013-02-21 Michael Jahn
636 ++ * IMDb and Cinemovies movies plugin updated
637 ++
638 ++2013-01-30 Michael Jahn
639 ++ * FilmeVonAZ and OFDb movie plugins updated
640 ++
641 ++2013-01-28 Michael Jahn
642 ++ * Kino.de and Cineteka movie plugins updated
643 ++
644 ++2012-12-29 Michael Jahn
645 ++ * remove movie plugin FilmDb (site doesn't exists anymore)
646 ++
647 ++2012-12-16 Michael Jahn
648 ++ * fixed backup for databases other than sqlite
649 ++
650 ++2012-12-06 Michael Jahn
651 ++ * fixed IMDb plugins for direct search results
652 ++
653 ++2012-11-29 Michael Jahn
654 ++ * [1084608] IMDB does not work from November 28, 2012; fixed IMDb plugins
655 ++
656 ++2012-11-20 Michael Jahn
657 ++ * fixed Allocine plugin [663709]
658 ++
659 ++2012-08-30 Michael Jahn
660 ++ * [1043263] importing GriffithXML fails: posters are not added
661 ++
662 ++2012-08-29 Michael Jahn
663 ++ * [1037249] typo in tellico spelling
664 ++
665 ++2012-07-03 Michael Jahn
666 ++ * DVD Palace movie plugin updated
667 ++
668 ++2012-06-09 Michael Jahn
669 ++ * DVD Palace movie plugin updated
670 ++
671 ++2012-06-07 Michael Jahn
672 ++ * [#1010073] The MoviePosterDB seems to have quit working properly.
673 ++
674 ++2012-04-10 Vasco Nunes
675 ++ * [#669431] Spell checker doesn't work
676 ++
677 ++2012-04-02 Michael Jahn
678 ++ * fixed Allocine plugin (V3 API) (thanks to CinéphOli)
679 ++
680 ++2012-01-29 Michael Jahn
681 ++ * [#923416] Connection failed. (Amazon plugin)
682 ++ * [#913299] importing covers gives list index out of range
683 ++ * [#913283] importer: 'poster' overwritten by 'image'
684 ++
685 ++2012-01-10 Piotr Ożarowski
686 ++ * Filmweb movie plugin updated (thanks to mariusz2806)
687 ++
688 ++2012-01-08 Piotr Ożarowski
689 ++ * Tellico import plugin added (thanks to Elan Ruusamäe)
690 ++
691 ++2012-01-07 Ivo Nunes
692 ++ * Added a plugin for the portuguese website www.dvdpt.com
693 ++
694 ++2012-01-02 Michael Jahn
695 ++ * [#909513] code errors in import plugins
696 ++
697 ++2011-12-27 Michael Jahn
698 ++ * better error handling for PDF export plugin
699 ++
700 ++2011-12-26 Piotr Ożarowski
701 ++ * Restoring database from backup fixed
702 ++
703 + ---- 0.13 ----
704 +
705 + 2011-12-18 Piotr Ożarowski
706 +diff --git a/Makefile b/Makefile
707 +index 2b66db0..92e6182 100755
708 +--- a/Makefile
709 ++++ b/Makefile
710 +@@ -2,7 +2,7 @@
711 + #
712 + # (c) 2005-2009 Vasco Nunes, Piotr Ozarowski
713 + #
714 +-# $Id: Makefile 1372 2010-01-04 21:20:40Z piotrek $
715 ++# $Id$
716 +
717 + PACKAGE=griffith
718 + LANGUAGES=$(shell find i18n/ -maxdepth 1 -mindepth 1 -type d -not -name \.svn -printf "%f ")
719 +diff --git a/NEWS b/NEWS
720 +index b9bc78d..185fa3e 100644
721 +--- a/NEWS
722 ++++ b/NEWS
723 +@@ -2,7 +2,7 @@ Griffith 0.13
724 + =============
725 + * New movie plugins: AllRovi, IMDB-pt, Interfilmes
726 + * Most movie plugins updated,
727 +- - AniDB plugin requires lxml module now (new 4rd party dependency)
728 ++ - AniDB plugin requires lxml module now (new 3rd party dependency)
729 + * New extensions: Database Cleanup and Maintenance
730 + * MacOSX integration improved
731 + * Many bug fixes
732 +diff --git a/README b/README
733 +index ccd77cf..8b8b50f 100644
734 +--- a/README
735 ++++ b/README
736 +@@ -1,4 +1,4 @@
737 +-Griffith 0.12.1 README
738 ++Griffith 0.13.0 README
739 + ======================
740 +
741 + This document was last updated on Thu Jun 10 2009.
742 +diff --git a/docs/Makefile b/docs/Makefile
743 +index 699eef4..8bb7a3c 100644
744 +--- a/docs/Makefile
745 ++++ b/docs/Makefile
746 +@@ -1,4 +1,4 @@
747 +-# $Id: Makefile 638 2006-12-31 23:55:38Z piotrek $
748 ++# $Id$
749 + LANGUAGES = en pl pt
750 + DOC2MAN ?= docbook2x-man
751 +
752 +diff --git a/docs/en/Makefile b/docs/en/Makefile
753 +index ce9ba13..07cfd73 100644
754 +--- a/docs/en/Makefile
755 ++++ b/docs/en/Makefile
756 +@@ -1,4 +1,4 @@
757 +-# $Id: Makefile 686 2007-01-07 22:36:07Z piotrek $
758 ++# $Id$
759 + .PHONY: all man
760 + MANPAGES= griffith.1
761 +
762 +diff --git a/docs/pl/Makefile b/docs/pl/Makefile
763 +index 42b8e2c..8bfa015 100644
764 +--- a/docs/pl/Makefile
765 ++++ b/docs/pl/Makefile
766 +@@ -1,4 +1,4 @@
767 +-# $Id: Makefile 686 2007-01-07 22:36:07Z piotrek $
768 ++# $Id$
769 + .PHONY: all man
770 + MANPAGES= griffith.1
771 +
772 +diff --git a/docs/pt/Makefile b/docs/pt/Makefile
773 +index de15a55..dfc3b64 100644
774 +--- a/docs/pt/Makefile
775 ++++ b/docs/pt/Makefile
776 +@@ -1,4 +1,4 @@
777 +-# $Id: Makefile 686 2007-01-07 22:36:07Z piotrek $
778 ++# $Id$
779 + .PHONY: all man
780 + MANPAGES= griffith.1
781 +
782 +diff --git a/glade/exporthtml.glade.h b/glade/exporthtml.glade.h
783 +deleted file mode 100644
784 +index 6c9b770..0000000
785 +--- a/glade/exporthtml.glade.h
786 ++++ /dev/null
787 +@@ -1,27 +0,0 @@
788 +-char *s = N_("<b>Example</b>");
789 +-char *s = N_("<b>Export</b>");
790 +-char *s = N_("<b>Header</b>");
791 +-char *s = N_("<b>Sort by</b>");
792 +-char *s = N_("<b>Split into</b>");
793 +-char *s = N_("<b>Style</b>");
794 +-char *s = N_("<b>Template</b>");
795 +-char *s = N_("Author");
796 +-char *s = N_("Black and white");
797 +-char *s = N_("Choose style file");
798 +-char *s = N_("Convert images");
799 +-char *s = N_("Data");
800 +-char *s = N_("Description");
801 +-char *s = N_("Destination");
802 +-char *s = N_("E-mail");
803 +-char *s = N_("Export");
804 +-char *s = N_("Export data");
805 +-char *s = N_("Format");
806 +-char *s = N_("Maximal height");
807 +-char *s = N_("Maximal width");
808 +-char *s = N_("Posters");
809 +-char *s = N_("Reverse");
810 +-char *s = N_("Template");
811 +-char *s = N_("Use custom file");
812 +-char *s = N_("Version");
813 +-char *s = N_("entries per page");
814 +-char *s = N_("files");
815 +diff --git a/glade/griffith.glade.h b/glade/griffith.glade.h
816 +deleted file mode 100644
817 +index 03d617f..0000000
818 +--- a/glade/griffith.glade.h
819 ++++ /dev/null
820 +@@ -1,196 +0,0 @@
821 +-char *s = N_("0 means no limits");
822 +-char *s = N_("<b>Audio channels</b>");
823 +-char *s = N_("<b>Audio codecs</b>");
824 +-char *s = N_("<b>Audio</b>");
825 +-char *s = N_("<b>Collection</b>");
826 +-char *s = N_("<b>Collections</b>");
827 +-char *s = N_("<b>Defaults</b>");
828 +-char *s = N_("<b>E-mail reminder</b>");
829 +-char *s = N_("<b>Languages</b>");
830 +-char *s = N_("<b>Limits</b>");
831 +-char *s = N_("<b>Loan History</b>");
832 +-char *s = N_("<b>Loans</b>");
833 +-char *s = N_("<b>Media</b>");
834 +-char *s = N_("<b>Search for:</b>");
835 +-char *s = N_("<b>Search results</b>");
836 +-char *s = N_("<b>Select database to use</b>");
837 +-char *s = N_("<b>Show only the following columns</b>");
838 +-char *s = N_("<b>Sort by</b>");
839 +-char *s = N_("<b>Subtitle formats</b>");
840 +-char *s = N_("<b>Subtitles</b>");
841 +-char *s = N_("<b>Tags</b>");
842 +-char *s = N_("<b>Use spell checking on the following fields:</b>");
843 +-char *s = N_("<b>Video codecs</b>");
844 +-char *s = N_("<b>Volume</b>");
845 +-char *s = N_("<b>Volumes</b>");
846 +-char *s = N_("Add");
847 +-char *s = N_("Add a new movie");
848 +-char *s = N_("Add a new person");
849 +-char *s = N_("Add movie");
850 +-char *s = N_("Add movie and close");
851 +-char *s = N_("Adds new movie");
852 +-char *s = N_("All Movies");
853 +-char *s = N_("Barcode");
854 +-char *s = N_("Base font size");
855 +-char *s = N_("By Collection");
856 +-char *s = N_("Cameraman");
857 +-char *s = N_("Cast");
858 +-char *s = N_("Choose Image");
859 +-char *s = N_("Classification");
860 +-char *s = N_("Clear filter");
861 +-char *s = N_("Clone");
862 +-char *s = N_("Collection");
863 +-char *s = N_("Color");
864 +-char *s = N_("Condition");
865 +-char *s = N_("Country");
866 +-char *s = N_("Create backup");
867 +-char *s = N_("Created");
868 +-char *s = N_("Database");
869 +-char *s = N_("Delete a person");
870 +-char *s = N_("Details");
871 +-char *s = N_("Dictionaries");
872 +-char *s = N_("Director");
873 +-char *s = N_("Discs");
874 +-char *s = N_("E-mail");
875 +-char *s = N_("E-mail reminder");
876 +-char *s = N_("E_xport");
877 +-char *s = N_("Edit a person");
878 +-char *s = N_("Edit movie details");
879 +-char *s = N_("Extensions");
880 +-char *s = N_("Extensions toolbar");
881 +-char *s = N_("Favorite Movie Plugin");
882 +-char *s = N_("Fill empty fields only");
883 +-char *s = N_("Filter ");
884 +-char *s = N_("Filter movies");
885 +-char *s = N_("Font for reports");
886 +-char *s = N_("Forum");
887 +-char *s = N_("Found Results");
888 +-char *s = N_("Genre");
889 +-char *s = N_("Get from web");
890 +-char *s = N_("Get movie data from:");
891 +-char *s = N_("Homepage");
892 +-char *s = N_("Host");
893 +-char *s = N_("I_mport");
894 +-char *s = N_("Image");
895 +-char *s = N_("Include Front Image");
896 +-char *s = N_("Include movie number");
897 +-char *s = N_("Languages");
898 +-char *s = N_("Layers");
899 +-char *s = N_("Limit search results to");
900 +-char *s = N_("Load poster from disk");
901 +-char *s = N_("Loan");
902 +-char *s = N_("Loan Management");
903 +-char *s = N_("Loan movie");
904 +-char *s = N_("Loan to");
905 +-char *s = N_("Loaned Movies");
906 +-char *s = N_("Loans");
907 +-char *s = N_("Main list");
908 +-char *s = N_("Manage People");
909 +-char *s = N_("Media");
910 +-char *s = N_("Medium");
911 +-char *s = N_("Meter\n"
912 +- "Stars");
913 +-char *s = N_("Movie details");
914 +-char *s = N_("Movie information");
915 +-char *s = N_("Name");
916 +-char *s = N_("Needs authentication");
917 +-char *s = N_("New database");
918 +-char *s = N_("Not Seen Movies");
919 +-char *s = N_("Notes");
920 +-char *s = N_("Number");
921 +-char *s = N_("Official site");
922 +-char *s = N_("Open search window");
923 +-char *s = N_("Original Title");
924 +-char *s = N_("Original title");
925 +-char *s = N_("Other");
926 +-char *s = N_("PDF reader");
927 +-char *s = N_("Password");
928 +-char *s = N_("People");
929 +-char *s = N_("Phone");
930 +-char *s = N_("Please wait a moment...");
931 +-char *s = N_("Plot");
932 +-char *s = N_("Plugins");
933 +-char *s = N_("Port");
934 +-char *s = N_("Poster image");
935 +-char *s = N_("Poster viewer");
936 +-char *s = N_("Preferences");
937 +-char *s = N_("Print Cover");
938 +-char *s = N_("Print cover");
939 +-char *s = N_("Rating");
940 +-char *s = N_("Rating image");
941 +-char *s = N_("Region");
942 +-char *s = N_("Remove");
943 +-char *s = N_("Remove poster");
944 +-char *s = N_("Remove selected movie");
945 +-char *s = N_("Rename");
946 +-char *s = N_("Report bug");
947 +-char *s = N_("Resolution");
948 +-char *s = N_("Restore from backup");
949 +-char *s = N_("Return");
950 +-char *s = N_("Reverse");
951 +-char *s = N_("Runtime");
952 +-char *s = N_("SMTP port");
953 +-char *s = N_("SMTP server");
954 +-char *s = N_("Saved filters");
955 +-char *s = N_("Screenplay");
956 +-char *s = N_("Searching on the web");
957 +-char *s = N_("Seen it");
958 +-char *s = N_("Select all");
959 +-char *s = N_("Select database");
960 +-char *s = N_("Select first movie");
961 +-char *s = N_("Select last movie");
962 +-char *s = N_("Select next movie");
963 +-char *s = N_("Select previous movie");
964 +-char *s = N_("Sender E-mail address");
965 +-char *s = N_("Show other movies in this collection");
966 +-char *s = N_("Show other movies in this volume");
967 +-char *s = N_("Simple");
968 +-char *s = N_("Site");
969 +-char *s = N_("Size");
970 +-char *s = N_("Spell check the following language");
971 +-char *s = N_("Standard\n"
972 +- "Slim\n"
973 +- "Double Slim");
974 +-char *s = N_("Studio");
975 +-char *s = N_("Suggest an unseen movie");
976 +-char *s = N_("Tags");
977 +-char *s = N_("Technical information");
978 +-char *s = N_("This movie is part of...");
979 +-char *s = N_("Title");
980 +-char *s = N_("Toolbar");
981 +-char *s = N_("Trailer");
982 +-char *s = N_("Type");
983 +-char *s = N_("Type in the original film title, select source and choose <i>Get from web</i>. Griffith will try to fetch all the related information from the Web.");
984 +-char *s = N_("Updated");
985 +-char *s = N_("Use Spellchecker");
986 +-char *s = N_("Use TLS?");
987 +-char *s = N_("Username");
988 +-char *s = N_("Video codec");
989 +-char *s = N_("Visit movie web site");
990 +-char *s = N_("Visit the official web site");
991 +-char *s = N_("Volume");
992 +-char *s = N_("Watch the trailer");
993 +-char *s = N_("Year");
994 +-char *s = N_("_Edit");
995 +-char *s = N_("_File");
996 +-char *s = N_("_Help");
997 +-char *s = N_("_Loans");
998 +-char *s = N_("_Tools");
999 +-char *s = N_("_View");
1000 +-char *s = N_("add entered name to collections list");
1001 +-char *s = N_("add entered name to volumes list");
1002 +-char *s = N_("classification");
1003 +-char *s = N_("click here if movie was returned");
1004 +-char *s = N_("collection details");
1005 +-char *s = N_("loaned only");
1006 +-char *s = N_("loans movie or volume");
1007 +-char *s = N_("minutes");
1008 +-char *s = N_("movies");
1009 +-char *s = N_("none");
1010 +-char *s = N_("not loaned only");
1011 +-char *s = N_("remove selected collection");
1012 +-char *s = N_("remove selected volume");
1013 +-char *s = N_("seen only");
1014 +-char *s = N_("tags");
1015 +-char *s = N_("unseen only");
1016 +-char *s = N_("volume details");
1017 +diff --git a/glade/import.glade.h b/glade/import.glade.h
1018 +deleted file mode 100644
1019 +index cf41b79..0000000
1020 +--- a/glade/import.glade.h
1021 ++++ /dev/null
1022 +@@ -1,10 +0,0 @@
1023 +-char *s = N_("<b>Import only fields selected below</b>");
1024 +-char *s = N_("<b>Importing...</b>");
1025 +-char *s = N_("Author");
1026 +-char *s = N_("Description");
1027 +-char *s = N_("E-mail");
1028 +-char *s = N_("Fields");
1029 +-char *s = N_("Import window");
1030 +-char *s = N_("Plugin");
1031 +-char *s = N_("Source");
1032 +-char *s = N_("Version");
1033 +diff --git a/glade/importcsv.glade.h b/glade/importcsv.glade.h
1034 +deleted file mode 100644
1035 +index 78d94b5..0000000
1036 +--- a/glade/importcsv.glade.h
1037 ++++ /dev/null
1038 +@@ -1,102 +0,0 @@
1039 +-char *s = N_("<b>Some Hints</b>:\n"
1040 +- "\n"
1041 +- "On the next step you can assign your csv fields with the one in Griffith.\n"
1042 +- "One CSV-field can be assigned to multiple griffith-fields, i.e. if you have only one title.\n"
1043 +- "Your cast-list should be comma-seperated to break it apart in multiple lines.");
1044 +-char *s = N_("Assigned Fields (CSV > Griffith)");
1045 +-char *s = N_("CSV Fields");
1046 +-char *s = N_("CSV Import");
1047 +-char *s = N_("Delimiter");
1048 +-char *s = N_("Encoding");
1049 +-char *s = N_("Fields");
1050 +-char *s = N_("File-Options");
1051 +-char *s = N_("From Row");
1052 +-char *s = N_("Griffith Fields");
1053 +-char *s = N_("If your file has no column headers then you should import from row 0.");
1054 +-char *s = N_("Line terminator");
1055 +-char *s = N_("Quotechar");
1056 +-char *s = N_("ascii (English)\n"
1057 +- "big5 (Traditional Chinese)\n"
1058 +- "big5hkscs (Traditional Chinese)\n"
1059 +- "cp037 (English)\n"
1060 +- "cp424 (Hebrew)\n"
1061 +- "cp437 (English)\n"
1062 +- "cp500 (Western Europe)\n"
1063 +- "cp737 (Greek)\n"
1064 +- "cp775 (Baltic languages)\n"
1065 +- "cp850 (Western Europe)\n"
1066 +- "cp852 (Central and Eastern Europe)\n"
1067 +- "cp855 (Bulgarian, Byelorussian, Macedonian, Russian, Serbian)\n"
1068 +- "cp856 (Hebrew)\n"
1069 +- "cp857 (Turkish)\n"
1070 +- "cp860 (Portuguese)\n"
1071 +- "cp861 (Icelandic)\n"
1072 +- "cp862 (Hebrew)\n"
1073 +- "cp863 (Canadian)\n"
1074 +- "cp864 (Arabic)\n"
1075 +- "cp865 (Danish, Norwegian)\n"
1076 +- "cp866 (Russian)\n"
1077 +- "cp869 (Greek)\n"
1078 +- "cp874 (Thai)\n"
1079 +- "cp875 (Greek)\n"
1080 +- "cp932 (Japanese)\n"
1081 +- "cp949 (Korean)\n"
1082 +- "cp950 (Traditional Chinese)\n"
1083 +- "cp1006 (Urdu)\n"
1084 +- "cp1026 (Turkish)\n"
1085 +- "cp1140 (Western Europe)\n"
1086 +- "cp1250 (Central and Eastern Europe)\n"
1087 +- "cp1251 (Bulgarian, Byelorussian, Macedonian, Russian, Serbian)\n"
1088 +- "cp1252 (Western Europe)\n"
1089 +- "cp1253 (Greek)\n"
1090 +- "cp1254 (Turkish)\n"
1091 +- "cp1255 (Hebrew)\n"
1092 +- "cp1256 (Arabic)\n"
1093 +- "cp1257 (Baltic languages)\n"
1094 +- "cp1258 (Vietnamese)\n"
1095 +- "euc_jp (Japanese)\n"
1096 +- "euc_jis_2004 (Japanese)\n"
1097 +- "euc_jisx0213 (Japanese)\n"
1098 +- "euc_kr (Korean)\n"
1099 +- "gb2312 (Simplified Chinese)\n"
1100 +- "gbk (Unified Chinese)\n"
1101 +- "gb18030 (Unified Chinese)\n"
1102 +- "hz (Simplified Chinese)\n"
1103 +- "iso2022_jp (Japanese)\n"
1104 +- "iso2022_jp_1 (Japanese)\n"
1105 +- "iso2022_jp_2 (Japanese, Korean, Simplified Chinese, Western Europe, Greek)\n"
1106 +- "iso2022_jp_2004 (Japanese)\n"
1107 +- "iso2022_jp_3 (Japanese)\n"
1108 +- "iso2022_jp_ext (Japanese)\n"
1109 +- "iso2022_kr (Korean)\n"
1110 +- "latin_1 (West Europe)\n"
1111 +- "iso8859_2 (Central and Eastern Europe)\n"
1112 +- "iso8859_3 (Esperanto, Maltese)\n"
1113 +- "iso8859_4 (Baltic languagues)\n"
1114 +- "iso8859_5 (Bulgarian, Byelorussian, Macedonian, Russian, Serbian)\n"
1115 +- "iso8859_6 (Arabic)\n"
1116 +- "iso8859_7 (Greek)\n"
1117 +- "iso8859_8 (Hebrew)\n"
1118 +- "iso8859_9 (Turkish)\n"
1119 +- "iso8859_10 (Nordic languages)\n"
1120 +- "iso8859_13 (Baltic languages)\n"
1121 +- "iso8859_14 (Celtic languages)\n"
1122 +- "iso8859_15 (Western Europe)\n"
1123 +- "johab (Korean)\n"
1124 +- "koi8_r (Russian)\n"
1125 +- "koi8_u (Ukrainian)\n"
1126 +- "mac_cyrillic (Bulgarian, Byelorussian, Macedonian, Russian, Serbian)\n"
1127 +- "mac_greek (Greek)\n"
1128 +- "mac_iceland (Icelandic)\n"
1129 +- "mac_latin2 (Central and Eastern Europe)\n"
1130 +- "mac_roman (Western Europe)\n"
1131 +- "mac_turkish (Turkish)\n"
1132 +- "ptcp154 (Kazakh)\n"
1133 +- "shift_jis (Japanese)\n"
1134 +- "shift_jis_2004 (Japanese)\n"
1135 +- "shift_jisx0213 (Japanese)\n"
1136 +- "utf_16 (all languages)\n"
1137 +- "utf_16_be (all languages (BMP only))\n"
1138 +- "utf_16_le (all languages (BMP only))\n"
1139 +- "utf_7 (all languages)\n"
1140 +- "utf_8 (all languages)");
1141 +diff --git a/griffith b/griffith
1142 +index 1242e28..52955ff 100755
1143 +--- a/griffith
1144 ++++ b/griffith
1145 +@@ -1,7 +1,7 @@
1146 + #!/usr/bin/env python
1147 + # -*- coding: utf-8 -*-
1148 +
1149 +-__revision__ = '$Id: griffith 1600 2011-12-02 20:30:27Z mikej06 $'
1150 ++__revision__ = '$Id$'
1151 +
1152 + # Copyright © 2005-2010 Vasco Nunes, Piotr Ożarowski
1153 +
1154 +diff --git a/i18n/ar/LC_MESSAGES/griffith.mo b/i18n/ar/LC_MESSAGES/griffith.mo
1155 +deleted file mode 100644
1156 +index e0f71aa..0000000
1157 +Binary files a/i18n/ar/LC_MESSAGES/griffith.mo and /dev/null differ
1158 +diff --git a/i18n/bg/LC_MESSAGES/griffith.mo b/i18n/bg/LC_MESSAGES/griffith.mo
1159 +deleted file mode 100644
1160 +index 9967ec7..0000000
1161 +Binary files a/i18n/bg/LC_MESSAGES/griffith.mo and /dev/null differ
1162 +diff --git a/i18n/ca/LC_MESSAGES/griffith.mo b/i18n/ca/LC_MESSAGES/griffith.mo
1163 +deleted file mode 100644
1164 +index d7582de..0000000
1165 +Binary files a/i18n/ca/LC_MESSAGES/griffith.mo and /dev/null differ
1166 +diff --git a/i18n/cs/LC_MESSAGES/griffith.mo b/i18n/cs/LC_MESSAGES/griffith.mo
1167 +deleted file mode 100644
1168 +index 285225f..0000000
1169 +Binary files a/i18n/cs/LC_MESSAGES/griffith.mo and /dev/null differ
1170 +diff --git a/i18n/da/LC_MESSAGES/griffith.mo b/i18n/da/LC_MESSAGES/griffith.mo
1171 +deleted file mode 100644
1172 +index df35e48..0000000
1173 +Binary files a/i18n/da/LC_MESSAGES/griffith.mo and /dev/null differ
1174 +diff --git a/i18n/de/LC_MESSAGES/griffith.mo b/i18n/de/LC_MESSAGES/griffith.mo
1175 +deleted file mode 100644
1176 +index 1308fa4..0000000
1177 +Binary files a/i18n/de/LC_MESSAGES/griffith.mo and /dev/null differ
1178 +diff --git a/i18n/el/LC_MESSAGES/griffith.mo b/i18n/el/LC_MESSAGES/griffith.mo
1179 +deleted file mode 100644
1180 +index c0182ef..0000000
1181 +Binary files a/i18n/el/LC_MESSAGES/griffith.mo and /dev/null differ
1182 +diff --git a/i18n/en_GB/LC_MESSAGES/griffith.mo b/i18n/en_GB/LC_MESSAGES/griffith.mo
1183 +deleted file mode 100644
1184 +index 8b2408a..0000000
1185 +Binary files a/i18n/en_GB/LC_MESSAGES/griffith.mo and /dev/null differ
1186 +diff --git a/i18n/es/LC_MESSAGES/griffith.mo b/i18n/es/LC_MESSAGES/griffith.mo
1187 +deleted file mode 100644
1188 +index 8277702..0000000
1189 +Binary files a/i18n/es/LC_MESSAGES/griffith.mo and /dev/null differ
1190 +diff --git a/i18n/et/LC_MESSAGES/griffith.mo b/i18n/et/LC_MESSAGES/griffith.mo
1191 +deleted file mode 100644
1192 +index 8477844..0000000
1193 +Binary files a/i18n/et/LC_MESSAGES/griffith.mo and /dev/null differ
1194 +diff --git a/i18n/eu/LC_MESSAGES/griffith.mo b/i18n/eu/LC_MESSAGES/griffith.mo
1195 +deleted file mode 100644
1196 +index a071409..0000000
1197 +Binary files a/i18n/eu/LC_MESSAGES/griffith.mo and /dev/null differ
1198 +diff --git a/i18n/fa/LC_MESSAGES/griffith.mo b/i18n/fa/LC_MESSAGES/griffith.mo
1199 +deleted file mode 100644
1200 +index cf9d159..0000000
1201 +Binary files a/i18n/fa/LC_MESSAGES/griffith.mo and /dev/null differ
1202 +diff --git a/i18n/fi/LC_MESSAGES/griffith.mo b/i18n/fi/LC_MESSAGES/griffith.mo
1203 +deleted file mode 100644
1204 +index ea86b14..0000000
1205 +Binary files a/i18n/fi/LC_MESSAGES/griffith.mo and /dev/null differ
1206 +diff --git a/i18n/fr/LC_MESSAGES/griffith.mo b/i18n/fr/LC_MESSAGES/griffith.mo
1207 +deleted file mode 100644
1208 +index a040bdc..0000000
1209 +Binary files a/i18n/fr/LC_MESSAGES/griffith.mo and /dev/null differ
1210 +diff --git a/i18n/gl/LC_MESSAGES/griffith.mo b/i18n/gl/LC_MESSAGES/griffith.mo
1211 +deleted file mode 100644
1212 +index d758f19..0000000
1213 +Binary files a/i18n/gl/LC_MESSAGES/griffith.mo and /dev/null differ
1214 +diff --git a/i18n/hr/LC_MESSAGES/griffith.mo b/i18n/hr/LC_MESSAGES/griffith.mo
1215 +deleted file mode 100644
1216 +index 5e36c3a..0000000
1217 +Binary files a/i18n/hr/LC_MESSAGES/griffith.mo and /dev/null differ
1218 +diff --git a/i18n/hu/LC_MESSAGES/griffith.mo b/i18n/hu/LC_MESSAGES/griffith.mo
1219 +deleted file mode 100644
1220 +index 877848e..0000000
1221 +Binary files a/i18n/hu/LC_MESSAGES/griffith.mo and /dev/null differ
1222 +diff --git a/i18n/id/LC_MESSAGES/griffith.mo b/i18n/id/LC_MESSAGES/griffith.mo
1223 +deleted file mode 100644
1224 +index c459603..0000000
1225 +Binary files a/i18n/id/LC_MESSAGES/griffith.mo and /dev/null differ
1226 +diff --git a/i18n/it/LC_MESSAGES/griffith.mo b/i18n/it/LC_MESSAGES/griffith.mo
1227 +deleted file mode 100644
1228 +index 0c69f82..0000000
1229 +Binary files a/i18n/it/LC_MESSAGES/griffith.mo and /dev/null differ
1230 +diff --git a/i18n/ja/LC_MESSAGES/griffith.mo b/i18n/ja/LC_MESSAGES/griffith.mo
1231 +deleted file mode 100644
1232 +index c592f08..0000000
1233 +Binary files a/i18n/ja/LC_MESSAGES/griffith.mo and /dev/null differ
1234 +diff --git a/i18n/ko/LC_MESSAGES/griffith.mo b/i18n/ko/LC_MESSAGES/griffith.mo
1235 +deleted file mode 100644
1236 +index d03fa77..0000000
1237 +Binary files a/i18n/ko/LC_MESSAGES/griffith.mo and /dev/null differ
1238 +diff --git a/i18n/lv/LC_MESSAGES/griffith.mo b/i18n/lv/LC_MESSAGES/griffith.mo
1239 +deleted file mode 100644
1240 +index cea2de7..0000000
1241 +Binary files a/i18n/lv/LC_MESSAGES/griffith.mo and /dev/null differ
1242 +diff --git a/i18n/nb/LC_MESSAGES/griffith.mo b/i18n/nb/LC_MESSAGES/griffith.mo
1243 +deleted file mode 100644
1244 +index bacb307..0000000
1245 +Binary files a/i18n/nb/LC_MESSAGES/griffith.mo and /dev/null differ
1246 +diff --git a/i18n/nds/LC_MESSAGES/griffith.mo b/i18n/nds/LC_MESSAGES/griffith.mo
1247 +deleted file mode 100644
1248 +index b3e9ebb..0000000
1249 +Binary files a/i18n/nds/LC_MESSAGES/griffith.mo and /dev/null differ
1250 +diff --git a/i18n/nl/LC_MESSAGES/griffith.mo b/i18n/nl/LC_MESSAGES/griffith.mo
1251 +deleted file mode 100644
1252 +index ca03e6f..0000000
1253 +Binary files a/i18n/nl/LC_MESSAGES/griffith.mo and /dev/null differ
1254 +diff --git a/i18n/oc/LC_MESSAGES/griffith.mo b/i18n/oc/LC_MESSAGES/griffith.mo
1255 +deleted file mode 100644
1256 +index 9aeca5a..0000000
1257 +Binary files a/i18n/oc/LC_MESSAGES/griffith.mo and /dev/null differ
1258 +diff --git a/i18n/pl/LC_MESSAGES/griffith.mo b/i18n/pl/LC_MESSAGES/griffith.mo
1259 +deleted file mode 100644
1260 +index 1a066cc..0000000
1261 +Binary files a/i18n/pl/LC_MESSAGES/griffith.mo and /dev/null differ
1262 +diff --git a/i18n/ps/LC_MESSAGES/griffith.mo b/i18n/ps/LC_MESSAGES/griffith.mo
1263 +deleted file mode 100644
1264 +index 7a45882..0000000
1265 +Binary files a/i18n/ps/LC_MESSAGES/griffith.mo and /dev/null differ
1266 +diff --git a/i18n/pt/LC_MESSAGES/griffith.mo b/i18n/pt/LC_MESSAGES/griffith.mo
1267 +deleted file mode 100644
1268 +index 30467b8..0000000
1269 +Binary files a/i18n/pt/LC_MESSAGES/griffith.mo and /dev/null differ
1270 +diff --git a/i18n/pt_BR/LC_MESSAGES/griffith.mo b/i18n/pt_BR/LC_MESSAGES/griffith.mo
1271 +deleted file mode 100644
1272 +index 7950f6c..0000000
1273 +Binary files a/i18n/pt_BR/LC_MESSAGES/griffith.mo and /dev/null differ
1274 +diff --git a/i18n/ro/LC_MESSAGES/griffith.mo b/i18n/ro/LC_MESSAGES/griffith.mo
1275 +deleted file mode 100644
1276 +index f354f0b..0000000
1277 +Binary files a/i18n/ro/LC_MESSAGES/griffith.mo and /dev/null differ
1278 +diff --git a/i18n/ru/LC_MESSAGES/griffith.mo b/i18n/ru/LC_MESSAGES/griffith.mo
1279 +deleted file mode 100644
1280 +index 7655f60..0000000
1281 +Binary files a/i18n/ru/LC_MESSAGES/griffith.mo and /dev/null differ
1282 +diff --git a/i18n/sk/LC_MESSAGES/griffith.mo b/i18n/sk/LC_MESSAGES/griffith.mo
1283 +deleted file mode 100644
1284 +index c7e9ecb..0000000
1285 +Binary files a/i18n/sk/LC_MESSAGES/griffith.mo and /dev/null differ
1286 +diff --git a/i18n/sr/LC_MESSAGES/griffith.mo b/i18n/sr/LC_MESSAGES/griffith.mo
1287 +deleted file mode 100644
1288 +index b53df6e..0000000
1289 +Binary files a/i18n/sr/LC_MESSAGES/griffith.mo and /dev/null differ
1290 +diff --git a/i18n/sv/LC_MESSAGES/griffith.mo b/i18n/sv/LC_MESSAGES/griffith.mo
1291 +deleted file mode 100644
1292 +index e8f0c08..0000000
1293 +Binary files a/i18n/sv/LC_MESSAGES/griffith.mo and /dev/null differ
1294 +diff --git a/i18n/th/LC_MESSAGES/griffith.mo b/i18n/th/LC_MESSAGES/griffith.mo
1295 +deleted file mode 100644
1296 +index 105c803..0000000
1297 +Binary files a/i18n/th/LC_MESSAGES/griffith.mo and /dev/null differ
1298 +diff --git a/i18n/tr/LC_MESSAGES/griffith.mo b/i18n/tr/LC_MESSAGES/griffith.mo
1299 +deleted file mode 100644
1300 +index 284e41c..0000000
1301 +Binary files a/i18n/tr/LC_MESSAGES/griffith.mo and /dev/null differ
1302 +diff --git a/i18n/uk/LC_MESSAGES/griffith.mo b/i18n/uk/LC_MESSAGES/griffith.mo
1303 +deleted file mode 100644
1304 +index cadfd19..0000000
1305 +Binary files a/i18n/uk/LC_MESSAGES/griffith.mo and /dev/null differ
1306 +diff --git a/i18n/zh_CN/LC_MESSAGES/griffith.mo b/i18n/zh_CN/LC_MESSAGES/griffith.mo
1307 +deleted file mode 100644
1308 +index b4effb3..0000000
1309 +Binary files a/i18n/zh_CN/LC_MESSAGES/griffith.mo and /dev/null differ
1310 +diff --git a/lib/about.py b/lib/about.py
1311 +index 691bcf1..7cf3482 100644
1312 +--- a/lib/about.py
1313 ++++ b/lib/about.py
1314 +@@ -1,6 +1,6 @@
1315 + # -*- coding: UTF-8 -*-
1316 +
1317 +-__revision__ = '$Id: about.py 1519 2011-02-05 15:32:36Z iznogoud $'
1318 ++__revision__ = '$Id$'
1319 +
1320 + # Copyright (c) 2005-2011 Vasco Nunes, Piotr Ożarowski
1321 + #
1322 +diff --git a/lib/add.py b/lib/add.py
1323 +index 18ac196..54c1262 100644
1324 +--- a/lib/add.py
1325 ++++ b/lib/add.py
1326 +@@ -1,7 +1,7 @@
1327 + # -*- coding: UTF-8 -*-
1328 + # vim: fdm=marker
1329 +
1330 +-__revision__ = '$Id: add.py 1595 2011-10-02 19:25:14Z mikej06 $'
1331 ++__revision__ = '$Id$'
1332 +
1333 + # Copyright (c) 2005-2011 Vasco Nunes, Piotr Ożarowski
1334 + #
1335 +@@ -245,19 +245,23 @@ def show_websearch_results(self):
1336 + if total > 1:
1337 + self.widgets['results']['window'].show()
1338 + self.widgets['results']['window'].set_keep_above(True)
1339 ++ movieslist = []
1340 + row = None
1341 + key = 0
1342 +- self.treemodel_results.clear()
1343 + for row in self.search_movie.ids:
1344 + if (str(row) != ''):
1345 + if isinstance(self.search_movie.titles[key], unicode):
1346 + title = self.search_movie.titles[key]
1347 + else:
1348 + title = str(self.search_movie.titles[key]).decode(self.search_movie.encode)
1349 +- myiter = self.treemodel_results.insert_before(None, None)
1350 +- self.treemodel_results.set_value(myiter, 0, str(row))
1351 +- self.treemodel_results.set_value(myiter, 1, title)
1352 ++ movieslist.append((row, title))
1353 + key += 1
1354 ++ movieslist = sorted(movieslist, key=lambda titel: titel[1])
1355 ++ self.treemodel_results.clear()
1356 ++ for entry in movieslist:
1357 ++ myiter = self.treemodel_results.insert_before(None, None)
1358 ++ self.treemodel_results.set_value(myiter, 0, str(entry[0]))
1359 ++ self.treemodel_results.set_value(myiter, 1, entry[1])
1360 + self.widgets['results']['treeview'].show()
1361 + elif total == 1:
1362 + self.widgets['results']['treeview'].set_cursor(total-1)
1363 +@@ -301,7 +305,7 @@ def get_from_web(self):
1364 + self.search_movie.title = unicode(title, 'utf-8')
1365 + # check if internet connection is available
1366 + try:
1367 +- urllib2.urlopen(self.search_movie.url)
1368 ++ urllib2.urlopen("http://www.griffith.cc")
1369 + if self.search_movie.search_movies(self.widgets['add']['window']):
1370 + self.search_movie.get_searches()
1371 + if len(self.search_movie.ids) == 1 and o_title and title:
1372 +@@ -684,26 +688,31 @@ def add_movie_db(self, close):
1373 +
1374 + new_poster_md5 = None
1375 + if details['image']:
1376 +- tmp_image_path = details['image']
1377 ++ tmp_image_path = original_image_path = details['image']
1378 + if not os.path.isfile(tmp_image_path):
1379 + tmp_image_path = os.path.join(self.locations['temp'], "poster_%s.jpg" % details['image'])
1380 + if os.path.isfile(tmp_image_path):
1381 +- new_poster_md5 = gutils.md5sum(file(tmp_image_path, 'rb'))
1382 ++ file_object = file(tmp_image_path, 'rb')
1383 ++ try:
1384 ++ new_poster_md5 = gutils.md5sum(file_object)
1385 +
1386 +- if session.query(db.Poster).filter_by(md5sum=new_poster_md5).count() == 0:
1387 +- try:
1388 +- data = file(tmp_image_path, 'rb').read()
1389 +- except Exception, e:
1390 +- log.warning("cannot read poster data")
1391 ++ if session.query(db.Poster).filter_by(md5sum=new_poster_md5).count() == 0:
1392 ++ try:
1393 ++ file_object.seek(0, 0);
1394 ++ data = file_object.read()
1395 ++ except Exception, e:
1396 ++ log.warning("cannot read poster data")
1397 ++ else:
1398 ++ poster = db.Poster(md5sum=new_poster_md5, data=data)
1399 ++ del details["image"]
1400 ++ details["poster_md5"] = new_poster_md5
1401 ++ session.add(poster)
1402 + else:
1403 +- poster = db.Poster(md5sum=new_poster_md5, data=data)
1404 +- del details["image"]
1405 + details["poster_md5"] = new_poster_md5
1406 +- session.add(poster)
1407 +- else:
1408 +- details["poster_md5"] = new_poster_md5
1409 ++ finally:
1410 ++ file_object.close()
1411 + try:
1412 +- if not tmp_image_path == details['image']:
1413 ++ if not tmp_image_path == original_image_path:
1414 + os.remove(tmp_image_path)
1415 + except Exception, e:
1416 + log.warn("cannot remove temporary file %s", tmp_image_path)
1417 +diff --git a/lib/advfilter.py b/lib/advfilter.py
1418 +index 1449fb2..6cff56c 100644
1419 +--- a/lib/advfilter.py
1420 ++++ b/lib/advfilter.py
1421 +@@ -1,6 +1,6 @@
1422 + # -*- coding: UTF-8 -*-
1423 + # vim: fdm=marker et ts=4 sw=4
1424 +-__revision__ = '$Id: advfilter.py 1478 2010-11-23 20:25:16Z mikej06 $'
1425 ++__revision__ = '$Id$'
1426 +
1427 + # Copyright (c) 2008 Vasco Nunes, Piotr Ożarowski
1428 + #
1429 +diff --git a/lib/backup.py b/lib/backup.py
1430 +index c861c87..8b89c8d 100644
1431 +--- a/lib/backup.py
1432 ++++ b/lib/backup.py
1433 +@@ -1,6 +1,6 @@
1434 + # -*- coding: UTF-8 -*-
1435 +
1436 +-__revision__ = '$Id: backup.py 1539 2011-02-17 00:31:19Z iznogoud $'
1437 ++__revision__ = '$Id$'
1438 +
1439 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
1440 + #
1441 +@@ -85,10 +85,12 @@ def create(self):
1442 + file_path = os.path.join(self.locations['home'], db_file_name).encode('utf-8')
1443 + mzip.write(file_path, arcname=db_file_name)
1444 + else:
1445 ++ tmp_engine = None
1446 + try:
1447 + tmp_dir = mkdtemp()
1448 +- tmp_config = copy.deepcopy(self.config)
1449 +- tmp_config._file = os.path.join(tmp_dir, 'griffith.cfg')
1450 ++ tmp_config_file = os.path.join(tmp_dir, 'griffith.cfg')
1451 ++ self.config.save(tmp_config_file)
1452 ++ tmp_config = config.Config(file=tmp_config_file)
1453 + tmp_config.set('type', 'sqlite', section='database')
1454 + tmp_config.set('file', 'griffith.db', section='database')
1455 + tmp_config.set('name', 'griffith', section='database')
1456 +@@ -114,7 +116,8 @@ def create(self):
1457 + mzip.write(tmp_file, arcname='griffith.db')
1458 + finally:
1459 + # disposing the temporary db connection before rmtree and in finally block to avoid locked db file
1460 +- tmp_engine.dispose()
1461 ++ if tmp_engine:
1462 ++ tmp_engine.dispose()
1463 + rmtree(tmp_dir)
1464 + gutils.info(_("Backup has been created"), self.widgets['window'])
1465 +
1466 +@@ -200,7 +203,7 @@ def restore(self, merge=False):
1467 + * SQLite3 *.db file
1468 + """
1469 + # let user select a backup file
1470 +- filename = gutils.file_chooser(_("Restore Griffith backup"), \
1471 ++ filename, path = gutils.file_chooser(_("Restore Griffith backup"), \
1472 + action=gtk.FILE_CHOOSER_ACTION_OPEN, backup=True, \
1473 + buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
1474 + if not filename:
1475 +diff --git a/lib/config.py b/lib/config.py
1476 +index 6c95eb3..8db4b1b 100644
1477 +--- a/lib/config.py
1478 ++++ b/lib/config.py
1479 +@@ -1,6 +1,6 @@
1480 + # -*- coding: UTF-8 -*-
1481 +
1482 +-__revision__ = '$Id: config.py 1502 2011-01-19 15:52:19Z mikej06 $'
1483 ++__revision__ = '$Id$'
1484 +
1485 + # Copyright © 2005-2011 Vasco Nunes, Piotr Ożarowski
1486 + #
1487 +@@ -85,10 +85,12 @@ class Config(object):
1488 + d[i] = j
1489 + return d
1490 +
1491 +- def save(self):
1492 +- if not os.path.exists(os.path.split(self._file)[0]):
1493 +- os.makedirs(os.path.split(self._file)[0])
1494 +- self._cfg.write(open(self._file, 'w'))
1495 ++ def save(self, file = None):
1496 ++ if not file:
1497 ++ file = self._file
1498 ++ if not os.path.exists(os.path.split(file)[0]):
1499 ++ os.makedirs(os.path.split(file)[0])
1500 ++ self._cfg.write(open(file, 'w'))
1501 +
1502 + def load(self):
1503 + if os.path.isfile(self._file):
1504 +diff --git a/lib/cover.py b/lib/cover.py
1505 +index 7996a89..6dc6cc7 100644
1506 +--- a/lib/cover.py
1507 ++++ b/lib/cover.py
1508 +@@ -1,6 +1,6 @@
1509 + # -*- coding: UTF-8 -*-
1510 +
1511 +-__revision__ = '$Id: cover.py 1154 2009-02-08 23:20:39Z piotrek $'
1512 ++__revision__ = '$Id$'
1513 +
1514 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
1515 + #
1516 +diff --git a/lib/db/__init__.py b/lib/db/__init__.py
1517 +index bdfb131..e63bea9 100644
1518 +--- a/lib/db/__init__.py
1519 ++++ b/lib/db/__init__.py
1520 +@@ -1,6 +1,6 @@
1521 + # -*- coding: UTF-8 -*-
1522 + # vim: fdm=marker
1523 +-__revision__ = '$Id: __init__.py 1449 2010-09-29 21:03:04Z mikej06 $'
1524 ++__revision__ = '$Id$'
1525 + __version__ = 6 # XXX: database format version, remember to increase after changing data structures
1526 +
1527 + # Copyright © 2009 Piotr Ożarowski
1528 +diff --git a/lib/db/_movie.py b/lib/db/_movie.py
1529 +index 36f014d..42f5adf 100644
1530 +--- a/lib/db/_movie.py
1531 ++++ b/lib/db/_movie.py
1532 +@@ -1,5 +1,5 @@
1533 + # -*- coding: UTF-8 -*-
1534 +-__revision__ = '$Id: _movie.py 1556 2011-06-13 20:46:47Z mikej06 $'
1535 ++__revision__ = '$Id$'
1536 +
1537 + # Copyright © 2009-2011 Piotr Ożarowski
1538 + #
1539 +diff --git a/lib/db/_objects.py b/lib/db/_objects.py
1540 +index f162dd3..8a1e151 100644
1541 +--- a/lib/db/_objects.py
1542 ++++ b/lib/db/_objects.py
1543 +@@ -1,6 +1,6 @@
1544 + # -*- coding: UTF-8 -*-
1545 + # vim: fdm=marker
1546 +-__revision__ = '$Id: _objects.py 1556 2011-06-13 20:46:47Z mikej06 $'
1547 ++__revision__ = '$Id$'
1548 +
1549 + # Copyright © 2009-2011 Piotr Ożarowski
1550 + #
1551 +diff --git a/lib/db/tables.py b/lib/db/tables.py
1552 +index e36bd2a..5fa152f 100644
1553 +--- a/lib/db/tables.py
1554 ++++ b/lib/db/tables.py
1555 +@@ -1,6 +1,6 @@
1556 + # -*- coding: UTF-8 -*-
1557 + # vim: fdm=marker
1558 +-__revision__ = '$Id: tables.py 1538 2011-02-13 20:04:22Z piotrek $'
1559 ++__revision__ = '$Id$'
1560 +
1561 + # Copyright © 2009 Piotr Ożarowski
1562 + #
1563 +@@ -66,7 +66,7 @@ movies = Table('movies', metadata,
1564 + Column('seen', Boolean, nullable=False, default=False),
1565 + Column('rating', SmallInteger),
1566 + Column('color', SmallInteger),
1567 +- Column('cond', SmallInteger), # MySQL will not accept name "condition"
1568 ++ Column('cond', SmallInteger), # MySQL will not accept name "condition"
1569 + Column('layers', SmallInteger),
1570 + Column('region', SmallInteger),
1571 + Column('media_num', SmallInteger),
1572 +diff --git a/lib/db/validators.py b/lib/db/validators.py
1573 +index 9827ef5..d9ca35a 100644
1574 +--- a/lib/db/validators.py
1575 ++++ b/lib/db/validators.py
1576 +@@ -23,7 +23,13 @@ __revision__ = '$Id$'
1577 +
1578 + import logging
1579 +
1580 +-from sqlalchemy.orm.interfaces import AttributeExtension, InstrumentationManager
1581 ++from sqlalchemy.orm.interfaces import AttributeExtension
1582 ++try:
1583 ++ # sql alchemy 0.8 (and above)
1584 ++ from sqlalchemy.ext.instrumentation import InstrumentationManager
1585 ++except:
1586 ++ # sql alchemy 0.7
1587 ++ from sqlalchemy.orm.interfaces import InstrumentationManager
1588 + from sqlalchemy.orm import ColumnProperty
1589 + from sqlalchemy.types import String
1590 +
1591 +@@ -35,6 +41,7 @@ except:
1592 +
1593 + log = logging.getLogger('Griffith')
1594 +
1595 ++
1596 + class InstallValidatorListeners(InstrumentationManager):
1597 + def post_configure_attribute(self, class_, key, inst):
1598 + if use_pre_07:
1599 +@@ -78,9 +85,9 @@ class LengthValidator(AttributeExtension):
1600 + if value and len(value) > self.max_length:
1601 + # can be changed so that an exception is raised which can be shown in UI
1602 + # but at the moment an exception is silently lost, only written to console
1603 +- #raise ValidationError("Length %d exceeds allowed %d for %s" %
1604 ++ # raise ValidationError("Length %d exceeds allowed %d for %s" %
1605 + # (len(value), self.max_length, self.name))
1606 + log.warning("Length %d exceeds allowed %d for %s; truncating value" %
1607 +- (len(value), self.max_length, self.name))
1608 ++ (len(value), self.max_length, self.name))
1609 + return value[0:self.max_length]
1610 + return value
1611 +diff --git a/lib/dbupgrade.py b/lib/dbupgrade.py
1612 +index 8800fb9..b8f6977 100644
1613 +--- a/lib/dbupgrade.py
1614 ++++ b/lib/dbupgrade.py
1615 +@@ -1,7 +1,7 @@
1616 + # -*- coding: UTF-8 -*-
1617 + # vim: fdm=marker
1618 +
1619 +-__revision__ = '$Id: dbupgrade.py 1596 2011-10-04 18:41:03Z piotrek $'
1620 ++__revision__ = '$Id$'
1621 +
1622 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
1623 + #
1624 +diff --git a/lib/delete.py b/lib/delete.py
1625 +index ec7e307..f311f4a 100644
1626 +--- a/lib/delete.py
1627 ++++ b/lib/delete.py
1628 +@@ -1,6 +1,6 @@
1629 + # -*- coding: UTF-8 -*-
1630 +
1631 +-__revision__ = '$Id: delete.py 1536 2011-02-12 00:50:13Z iznogoud $'
1632 ++__revision__ = '$Id$'
1633 +
1634 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
1635 + #
1636 +diff --git a/lib/edit.py b/lib/edit.py
1637 +index 60bb70e..b1c387e 100644
1638 +--- a/lib/edit.py
1639 ++++ b/lib/edit.py
1640 +@@ -1,6 +1,6 @@
1641 + # -*- coding: UTF-8 -*-
1642 +
1643 +-__revision__ = '$Id: edit.py 1572 2011-08-23 18:47:22Z mikej06 $'
1644 ++__revision__ = '$Id$'
1645 +
1646 + # Copyright © 2005-2011 Vasco Nunes, Piotr Ożarowski
1647 +
1648 +@@ -37,18 +37,19 @@ def change_poster(self):
1649 + changes movie poster image to a custom one
1650 + showing a file chooser dialog to select it
1651 + """
1652 +- picture = self.widgets['movie']['picture']
1653 + number = int(self.selected[0])
1654 + if number is None:
1655 + gutils.error(_("You have no movies in your database"), self.widgets['window'])
1656 + return False
1657 + return change_poster_select_file(self, number)
1658 +
1659 ++
1660 + def update_image(self, number, filename):
1661 + imagedata = file(filename, 'rb').read()
1662 + return update_image_from_memory(self, number, imagedata)
1663 +
1664 +-def change_poster_select_file(self, number, handler = update_image):
1665 ++
1666 ++def change_poster_select_file(self, number, handler=update_image):
1667 + filename = gutils.file_chooser(_("Select image"),
1668 + action=gtk.FILE_CHOOSER_ACTION_OPEN,
1669 + buttons=(gtk.STOCK_CANCEL,
1670 +@@ -64,14 +65,15 @@ def change_poster_select_file(self, number, handler = update_image):
1671 + return handler(self, number, filename)
1672 + return False
1673 +
1674 ++
1675 + def update_image_from_memory(self, number, data):
1676 + session = self.db.Session()
1677 + try:
1678 + loader = gtk.gdk.PixbufLoader()
1679 + loader.write(data, len(data))
1680 + loader.close()
1681 +- self.widgets['movie']['picture'].set_from_pixbuf(\
1682 +- loader.get_pixbuf().scale_simple(100, 140, gtk.gdk.INTERP_BILINEAR))
1683 ++ self.widgets['movie']['picture'].set_from_pixbuf(
1684 ++ loader.get_pixbuf().scale_simple(100, 140, gtk.gdk.INTERP_BILINEAR))
1685 + except Exception, e:
1686 + log.error(str(e))
1687 + gutils.error(_("Image is not valid."), self.widgets['window'])
1688 +@@ -114,7 +116,8 @@ def update_image_from_memory(self, number, data):
1689 + self.update_statusbar(_("Image has been updated"))
1690 + return True
1691 +
1692 +-def delete_poster(self, movie_id = None):
1693 ++
1694 ++def delete_poster(self, movie_id=None):
1695 + if movie_id is None:
1696 + movie_id = self._movie_id
1697 + session = self.db.Session()
1698 +@@ -149,8 +152,9 @@ def delete_poster(self, movie_id = None):
1699 + return True
1700 + return False
1701 +
1702 ++
1703 + def update_tree_thumbnail(self, t_image_path):
1704 + self.Image.set_from_file(t_image_path)
1705 + pixbuf = self.Image.get_pixbuf()
1706 +- if self.selected_iter[0]:
1707 +- self.treemodel.set_value(self.selected_iter[0], 1, pixbuf)
1708 +\ No newline at end of file
1709 ++ if len(self.selected_iter) > 0 and self.selected_iter[0]:
1710 ++ self.treemodel.set_value(self.selected_iter[0], 1, pixbuf)
1711 +diff --git a/lib/gconsole.py b/lib/gconsole.py
1712 +index da94b92..ff32c32 100644
1713 +--- a/lib/gconsole.py
1714 ++++ b/lib/gconsole.py
1715 +@@ -1,6 +1,6 @@
1716 + # -*- coding: utf-8 -*-
1717 +
1718 +-__revision__ = '$Id: gconsole.py 1588 2011-09-14 19:14:08Z mikej06 $'
1719 ++__revision__ = '$Id$'
1720 +
1721 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
1722 +
1723 +diff --git a/lib/gdebug.py b/lib/gdebug.py
1724 +index 538b881..1d04b2a 100644
1725 +--- a/lib/gdebug.py
1726 ++++ b/lib/gdebug.py
1727 +@@ -1,6 +1,6 @@
1728 + # -*- coding: UTF-8 -*-
1729 +
1730 +-__revision__ = '$Id: gdebug.py 1326 2009-12-01 21:06:05Z mikej06 $'
1731 ++__revision__ = '$Id$'
1732 +
1733 + # Copyright (c) 2009 Vasco Nunes, Piotr Ożarowski
1734 + #
1735 +diff --git a/lib/gemail.py b/lib/gemail.py
1736 +index cc46779..fa32d9a 100644
1737 +--- a/lib/gemail.py
1738 ++++ b/lib/gemail.py
1739 +@@ -1,6 +1,6 @@
1740 + # -*- coding: UTF-8 -*-
1741 +
1742 +-__revision__ = '$Id: gemail.py 1481 2010-12-07 22:32:30Z piotrek $'
1743 ++__revision__ = '$Id$'
1744 +
1745 + # Copyright (c) 2005-2007 Vasco Nunes
1746 +
1747 +diff --git a/lib/gutils.py b/lib/gutils.py
1748 +index 1ec884f..019d568 100644
1749 +--- a/lib/gutils.py
1750 ++++ b/lib/gutils.py
1751 +@@ -1,6 +1,6 @@
1752 + # -*- coding: UTF-8 -*-
1753 +
1754 +-__revision__ = '$Id: gutils.py 1582 2011-09-04 21:08:14Z piotrek $'
1755 ++__revision__ = '$Id$'
1756 +
1757 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
1758 + #
1759 +diff --git a/lib/initialize.py b/lib/initialize.py
1760 +index 77750a8..bd6a861 100644
1761 +--- a/lib/initialize.py
1762 ++++ b/lib/initialize.py
1763 +@@ -1,6 +1,6 @@
1764 + # -*- coding: UTF-8 -*-
1765 +
1766 +-__revision__ = '$Id: initialize.py 1600 2011-12-02 20:30:27Z mikej06 $'
1767 ++__revision__ = '$Id$'
1768 +
1769 + # Copyright © 2005-2011 Vasco Nunes, Piotr Ożarowski
1770 + #
1771 +@@ -50,14 +50,11 @@ def locations(self, home_dir):
1772 + if defaultEnc is None:
1773 + defaultEnc = 'UTF-8'
1774 + locations = {}
1775 +- locations['exec'] = os.path.abspath(os.path.dirname(sys.argv[0])) # deprecated
1776 ++ locations['exec'] = os.path.abspath(os.path.dirname(sys.argv[0])) # deprecated
1777 + locations['lib'] = os.path.dirname(__file__)
1778 + locations['home'] = home_dir
1779 +
1780 +- if os.name == 'nt' or os.name.startswith('win'): # win32, win64
1781 +- import winshell
1782 +- from win32com.shell import shellcon, shell
1783 +-
1784 ++ if os.name == 'nt' or os.name.startswith('win'): # win32, win64
1785 + locations['movie_plugins'] = "%s\\lib\\plugins\\movie" % locations['exec']
1786 + locations['export_plugins'] = "%s\\lib\\plugins\\export" % locations['exec']
1787 + locations['images'] = "%s\\images" % locations['exec']
1788 +@@ -165,6 +162,7 @@ def toolbar(self):
1789 + self.widgets['extensions']['toolbar_hb'].show()
1790 + self.widgets['menu']['ext_toolbar'].set_active(True)
1791 +
1792 ++
1793 + def treeview(self):
1794 + import main_treeview
1795 + # set up the treeview to do multiple selection
1796 +@@ -174,7 +172,7 @@ def treeview(self):
1797 + tree.set_headers_visible(True)
1798 + tree.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
1799 + self.widgets['treeview'].get_selection().connect("changed", main_treeview.on_tree_selection, self)
1800 +-
1801 ++
1802 + # number column
1803 + renderer = gtk.CellRendererText()
1804 + self.number_column = gtk.TreeViewColumn(_('No.'), renderer, text=0)
1805 +@@ -280,6 +278,7 @@ def treeview(self):
1806 + self.updated_column.set_alignment(0.5)
1807 + self.updated_column.set_reorderable(True)
1808 + self.widgets['treeview'].append_column(self.updated_column)
1809 ++
1810 + # reflect saved column order and column sizes
1811 + columnorder = self.config.get('columnorder', None, section='mainlist')
1812 + if columnorder:
1813 +@@ -319,7 +318,7 @@ def treeview(self):
1814 + self.total = self.db.session.query(db.Movie).count()
1815 + self.widgets['treeview'].set_search_equal_func(search_func_treeview)
1816 + self.widgets['treeview'].show()
1817 +-
1818 ++
1819 + # adding some completion fields - TODO: move it to initialize
1820 + self.completion = gtk.EntryCompletion()
1821 + self.widgets['add']['o_title'].set_completion(self.completion)
1822 +@@ -331,14 +330,15 @@ def treeview(self):
1823 + self.completion_t.set_model(self.treemodel)
1824 + self.completion_t.set_text_column(4)
1825 +
1826 ++
1827 + def search_func_treeview(model, column, key, iter):
1828 +- return not (str(model.get_value(iter, 0)).startswith(key) or
1829 +- str(model.get_value(iter, 2)).lower().startswith(key.lower()) or
1830 ++ return not (str(model.get_value(iter, 0)).startswith(key) or
1831 ++ str(model.get_value(iter, 2)).lower().startswith(key.lower()) or
1832 + str(model.get_value(iter, 3)).lower().startswith(key.lower()))
1833 +
1834 +
1835 + def loans_treeview(self):
1836 +- self.loans_treemodel = gtk.TreeStore(str, str, str) # move to self.widgets
1837 ++ self.loans_treemodel = gtk.TreeStore(str, str, str) # move to self.widgets
1838 + self.widgets['movie']['loan_history'].set_model(self.loans_treemodel)
1839 + self.widgets['movie']['loan_history'].set_headers_visible(True)
1840 + # loan date
1841 +@@ -540,7 +540,7 @@ def import_plugins(self):
1842 + for i in fields_to_import:
1843 + j = j + 1
1844 + w['fields'][i] = gtk.CheckButton(self.field_names[i])
1845 +- w['fields'][i].set_active(True) # TODO: get from config
1846 ++ w['fields'][i].set_active(True) # TODO: get from config
1847 + if j <= k:
1848 + w['box_import_1'].add(w['fields'][i])
1849 + elif j <= 2 * k:
1850 +@@ -583,7 +583,6 @@ def extension(self, module, enabled):
1851 + def extension_preferences(self, module, enabled):
1852 + # preferences window
1853 + p_vbox = self.widgets['extensions']['preferences_vbox']
1854 +-
1855 + configwidgets = {}
1856 +
1857 + label = "%s v%s <i>(%s &lt;%s&gt;)</i>" % (module.name, module.version, module.author, module.email)
1858 +@@ -615,6 +614,9 @@ def extension_preferences(self, module, enabled):
1859 + w.insert_text(value)
1860 + # TODO: min, max
1861 + # elif type is int: # TODO
1862 ++ elif type_ is bool:
1863 ++ w = gtk.CheckButton()
1864 ++ w.set_active(bool(value))
1865 + elif isinstance(type_, (list, tuple, dict)):
1866 + model = gtk.TreeStore(str, str)
1867 + if isinstance(type_, dict):
1868 +@@ -665,7 +667,7 @@ def extensions(self):
1869 + if hasattr(self, 'extensions'):
1870 + for ext in self.extensions:
1871 + ext.clear()
1872 +- self.extensions = [] # deletes previous instances
1873 ++ self.extensions = [] # deletes previous instances
1874 +
1875 + for ext_name in plugins.extensions.by_name:
1876 + ext_module = plugins.extensions.by_name[ext_name]
1877 +@@ -730,7 +732,7 @@ def combos(self):
1878 + pos_to_activate = 0
1879 + selected_criteria = self.config.get('criteria', None, section='mainlist')
1880 + self.search_criteria_sorted = sorted((self.field_names[criteria], criteria) for criteria in self.search_criteria)
1881 +- self.search_criteria_sorted.insert( 0, ( _('Any'), 'any' ) )
1882 ++ self.search_criteria_sorted.insert(0, (_('Any'), 'any'))
1883 + for (criterianame, criteria) in self.search_criteria_sorted:
1884 + self.widgets['filter']['criteria'].insert_text(i, criterianame)
1885 + if selected_criteria == criterianame:
1886 +@@ -745,12 +747,12 @@ def combos(self):
1887 + self.widgets['preferences']['sortby'].insert_text(i, _('Last added'))
1888 + i += 1
1889 + self.widgets['preferences']['sortby'].set_wrap_width(3)
1890 +- self.widgets['preferences']['sortby'].set_active(0) # Number
1891 ++ self.widgets['preferences']['sortby'].set_active(0) # Number
1892 +
1893 +
1894 + def dictionaries(self):
1895 + """initializes data filled dynamically by users"""
1896 +- self.am_tags = {} # dictionary for tag CheckBoxes
1897 ++ self.am_tags = {} # dictionary for tag CheckBoxes
1898 + update_volume_combo_ids(self)
1899 + update_collection_combo_ids(self)
1900 + fill_volumes_combo(self)
1901 +@@ -765,7 +767,7 @@ def dictionaries(self):
1902 + vcodec_combos(self)
1903 + media_combos(self)
1904 + create_tag_vbox(self, widget=self.widgets['add']['tag_vbox'], tab=self.am_tags)
1905 +- self.sort_criteria = [ # "[]" because of index()
1906 ++ self.sort_criteria = [ # "[]" because of index()
1907 + 'number', 'o_title', 'title', 'director', 'year', 'runtime', 'country',
1908 + 'genre', 'studio', 'media_num', 'rating', 'classification', 'collection_id',
1909 + 'volume_id', 'cond', 'layers', 'region', 'movie_id']
1910 +@@ -851,9 +853,9 @@ def spellcheck(self):
1911 + spell_error = False
1912 + if self.posix and spell_support:
1913 + if self.config.get('gtkspell', False, section='spell') == True:
1914 +- if self.config.get('notes', True, section='spell') == True and self.config.get('lang', section='spell') != '':
1915 ++ if self.config.get('notes', True, section='spell') is True and self.config.get('lang', section='spell') != '':
1916 + try:
1917 +- self.notes_spell = gtkspell.Spell(self.widgets['add']['cast'], self.config.get('lang', section='spell'))
1918 ++ self.notes_spell = gtkspell.Spell(self.widgets['add']['notes'], self.config.get('lang', section='spell'))
1919 + except:
1920 + spell_error = True
1921 + if self.config.get('plot', True, section='spell') is True and self.config.get('lang', section='spell') != '':
1922 +@@ -921,7 +923,7 @@ def update_collection_combo_ids(self):
1923 +
1924 + def fill_volumes_combo(self, default=0):
1925 + _tmp = self.initialized
1926 +- self.initialized = False # don't refresh main treeview
1927 ++ self.initialized = False # don't refresh main treeview
1928 + self.widgets['add']['volume'].get_model().clear()
1929 + for i in self.volume_combo_ids:
1930 + vol_id = self.volume_combo_ids[i]
1931 +@@ -940,7 +942,7 @@ def fill_volumes_combo(self, default=0):
1932 +
1933 + def fill_collections_combo(self, default=0):
1934 + _tmp = self.initialized
1935 +- self.initialized = False # don't refresh main treeview
1936 ++ self.initialized = False # don't refresh main treeview
1937 + self.widgets['add']['collection'].get_model().clear()
1938 + self.widgets['filter']['collection'].get_model().clear()
1939 + for i in self.collection_combo_ids:
1940 +@@ -964,9 +966,9 @@ def fill_collections_combo(self, default=0):
1941 +
1942 + def fill_advfilter_combo(self):
1943 + _tmp = self.initialized
1944 +- self.initialized = False # don't refresh main treeview
1945 ++ self.initialized = False # don't refresh main treeview
1946 + self.widgets['filter']['advfilter'].get_model().clear()
1947 +- self.widgets['filter']['advfilter'].insert_text(0, '') # empty one
1948 ++ self.widgets['filter']['advfilter'].insert_text(0, '') # empty one
1949 + for i, item in enumerate(self.db.session.query(db.Filter.name).order_by(db.Filter.name).all()):
1950 + # add some white spaces to prevent scrollbar hides parts of the names
1951 + self.widgets['filter']['advfilter'].insert_text(i + 1, item.name + ' ')
1952 +@@ -977,7 +979,7 @@ def fill_advfilter_combo(self):
1953 +
1954 + def fill_preferences_tags_combo(self):
1955 + _tmp = self.initialized
1956 +- self.initialized = False # don't refresh main treeview
1957 ++ self.initialized = False # don't refresh main treeview
1958 + self.widgets['preferences']['tag_name'].get_model().clear()
1959 + self.tags_ids = {}
1960 + for i, tag in enumerate(self.db.session.query(db.Tag.name, db.Tag.tag_id).all()):
1961 +@@ -990,7 +992,7 @@ def fill_preferences_tags_combo(self):
1962 +
1963 + def fill_resolutions_combo(self, default=0):
1964 + _tmp = self.initialized
1965 +- self.initialized = False # don't refresh main treeview
1966 ++ self.initialized = False # don't refresh main treeview
1967 + self.widgets['add']['resolution'].get_model().clear()
1968 + #resolutions = [names[0] for names in db._movie.res_aliases.values()]
1969 + resolutions = [names[0] for (res, names) in db._movie.res_aliases.iteritems()]
1970 +@@ -1086,7 +1088,7 @@ def media_combos(self):
1971 + self.widgets['preferences']['media'].show_all()
1972 + if self.config.has_key('media', section='defaults'):
1973 + pos = gutils.findKey(self.config.get('media', section='defaults'), self.media_ids)
1974 +- if pos is not None:
1975 ++ if pos is not None:
1976 + self.widgets['preferences']['media'].set_active(int(pos))
1977 + else:
1978 + self.widgets['preferences']['media'].set_active(0)
1979 +@@ -1138,7 +1140,7 @@ def create_tag_vbox(self, widget, tab):
1980 +
1981 +
1982 + def remove_hbox(self, widget, tab):
1983 +- number = len(widget.get_children())-1 # last box number
1984 ++ number = len(widget.get_children()) - 1 # last box number
1985 + try:
1986 + tab.pop()
1987 + widget.remove(widget.get_children().pop())
1988 +diff --git a/lib/loan.py b/lib/loan.py
1989 +index c14d423..38210a7 100644
1990 +--- a/lib/loan.py
1991 ++++ b/lib/loan.py
1992 +@@ -1,6 +1,6 @@
1993 + # -*- coding: UTF-8 -*-
1994 +
1995 +-__revision__ = '$Id: loan.py 1522 2011-02-05 19:59:38Z iznogoud $'
1996 ++__revision__ = '$Id$'
1997 +
1998 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
1999 + #
2000 +diff --git a/lib/main_treeview.py b/lib/main_treeview.py
2001 +index 84ccd55..fe110ca 100644
2002 +--- a/lib/main_treeview.py
2003 ++++ b/lib/main_treeview.py
2004 +@@ -1,6 +1,6 @@
2005 + # -*- coding: UTF-8 -*-
2006 +
2007 +-__revision__ = '$Id: main_treeview.py 1572 2011-08-23 18:47:22Z mikej06 $'
2008 ++__revision__ = '$Id$'
2009 +
2010 + # Copyright (c) 2005-2011 Vasco Nunes, Piotr Ożarowski
2011 +
2012 +@@ -24,7 +24,6 @@ __revision__ = '$Id: main_treeview.py 1572 2011-08-23 18:47:22Z mikej06 $'
2013 + import logging
2014 + import os
2015 + import gtk
2016 +-from sqlalchemy import select, desc
2017 + from sqlalchemy.sql.expression import Select
2018 + import db
2019 + import gutils
2020 +@@ -32,12 +31,13 @@ import sql
2021 +
2022 + log = logging.getLogger("Griffith")
2023 +
2024 ++
2025 + def on_tree_selection(tree_selection, self):
2026 + counts = tree_selection.count_selected_rows()
2027 + treeview_selection_on_event(self, self.widgets['treeview'])
2028 + treemodel, selected = tree_selection.get_selected_rows()
2029 + self.selected_iter = [treemodel.get_iter(path) for path in selected]
2030 +-
2031 ++
2032 + if counts == 1:
2033 + # TODO: rewrite me
2034 + self.widgets['menu']['clone'].set_sensitive(True)
2035 +@@ -62,14 +62,17 @@ def on_tree_selection(tree_selection, self):
2036 + self.widgets['popups']['print_cover'].set_sensitive(False)
2037 + treeview_clicked(self)
2038 +
2039 ++
2040 + def foreach_treeview_selected(model, path, iter, selected):
2041 + selected.append(model.get_value(iter, 0))
2042 +
2043 +-def treeview_selection_on_event(self, treeview, iter = False):
2044 ++
2045 ++def treeview_selection_on_event(self, treeview, iter=False):
2046 + self.selected = []
2047 + treeview.get_selection().selected_foreach(foreach_treeview_selected, self.selected)
2048 + #return selected
2049 +
2050 ++
2051 + def treeview_clicked(self):
2052 + if self.initialized is False:
2053 + return False
2054 +@@ -89,7 +92,8 @@ def treeview_clicked(self):
2055 + else:
2056 + return False
2057 +
2058 +-def set_details(self, item=None):#{{{
2059 ++
2060 ++def set_details(self, item=None): # {{{
2061 + if item is None:
2062 + item = {}
2063 + if 'movie_id' in item and item['movie_id']:
2064 +@@ -127,7 +131,7 @@ def set_details(self, item=None):#{{{
2065 + w['resolution'].set_text(item['resolution'])
2066 + elif 'height' in item and item['height'] and 'width' in item and item['width']:
2067 + w['resolution'].set_text("%dx%d" % (item['width'], item['height']))
2068 +- else: # fallback to 'resolution'
2069 ++ else: # fallback to 'resolution'
2070 + w['resolution'].set_text(item['resolution'])
2071 + else:
2072 + w['resolution'].set_text('')
2073 +@@ -172,10 +176,10 @@ def set_details(self, item=None):#{{{
2074 + else:
2075 + log.info("Wrong value in 'region' field (movie_id=%s, region=%s)" % (item['movie_id'], item['region']))
2076 + w['region'].set_text('')
2077 +- self.widgets['tooltips'].set_tip(w['region'], self._regions[0]) # N/A
2078 ++ self.widgets['tooltips'].set_tip(w['region'], self._regions[0]) # N/A
2079 + else:
2080 + w['region'].set_text('')
2081 +- self.widgets['tooltips'].set_tip(w['region'], self._regions[0]) # N/A
2082 ++ self.widgets['tooltips'].set_tip(w['region'], self._regions[0]) # N/A
2083 + if 'layers' in item and item['layers']:
2084 + if str(item['layers']) in [str(i) for i in range(len(self._layers))]:
2085 + w['layers'].set_markup("<i>%s</i>" % self._layers[item['layers']])
2086 +@@ -303,7 +307,7 @@ def set_details(self, item=None):#{{{
2087 + self.loan_date = str(item.loan_details.date)
2088 + w['loan_info'].set_use_markup(False)
2089 + w['loan_info'].set_label(_("This movie has been loaned to %s on %s") % (self.person_name, self.loan_date[:10]))
2090 +- if 'loaned' in item and not item['loaned']: # "loaned" status can be changed above, so don't use "else:" in this line
2091 ++ if 'loaned' in item and not item['loaned']: # "loaned" status can be changed above, so don't use "else:" in this line
2092 + self.widgets['popups']['loan'].set_sensitive(True)
2093 + self.widgets['popups']['email'].set_sensitive(False)
2094 + self.widgets['popups']['return'].set_sensitive(False)
2095 +@@ -358,7 +362,7 @@ def set_details(self, item=None):#{{{
2096 + i.destroy()
2097 + if 'languages' in item and len(item['languages']) > 0:
2098 + for i in item['languages']:
2099 +- if i.type == 3: # subtitles
2100 ++ if i.type == 3: # subtitles
2101 + if i.subformat:
2102 + tmp = "%s - %s" % (i.language.name, i.subformat.name)
2103 + else:
2104 +@@ -390,21 +394,21 @@ def set_details(self, item=None):#{{{
2105 + tmp = ''
2106 + for tag in item['tags']:
2107 + tmp += "%s, " % tag.name
2108 +- tmp = tmp[:-2] # cut last comma
2109 ++ tmp = tmp[:-2] # cut last comma
2110 + w['tags'].set_text(tmp)
2111 + #}}}
2112 +
2113 +
2114 +-def populate(self, movies=None, where=None, qf=True):#{{{
2115 +- if self.initialized is False: # dont try to fill movie list if Griffith is not initialized yet
2116 ++def populate(self, movies=None, where=None, qf=True): # {{{
2117 ++ if self.initialized is False: # dont try to fill movie list if Griffith is not initialized yet
2118 + return False
2119 +
2120 +- if qf and movies is None or isinstance(movies, Select): # if ".execute().fetchall()" not invoked on movies yet
2121 +- if not where: # due to possible 'seen', 'loaned', 'collection_id' in where
2122 ++ if qf and movies is None or isinstance(movies, Select): # if ".execute().fetchall()" not invoked on movies yet
2123 ++ if not where: # due to possible 'seen', 'loaned', 'collection_id' in where
2124 + import advfilter
2125 +
2126 + # saved in advfilter
2127 +- name = self.widgets['filter']['advfilter'].get_active_text()[:-3].decode('utf-8') # :-3 due to additional ' ' in the name
2128 ++ name = self.widgets['filter']['advfilter'].get_active_text()[:-3].decode('utf-8') # :-3 due to additional ' ' in the name
2129 + if name:
2130 + cond = self.db.session.query(db.Filter).filter_by(name=name).first()
2131 + if not cond:
2132 +@@ -529,13 +533,15 @@ def populate(self, movies=None, where=None, qf=True):#{{{
2133 + self.count_statusbar()
2134 + #}}}
2135 +
2136 +-def addmovie(self, movie): #{{{
2137 ++
2138 ++def addmovie(self, movie): # {{{
2139 + myiter = self.treemodel.append(None)
2140 + setmovie(self, movie, myiter)
2141 + return myiter
2142 + #}}}
2143 +
2144 +-def setmovie(self, movie, iter, treemodel = None): #{{{
2145 ++
2146 ++def setmovie(self, movie, iter, treemodel=None): # {{{
2147 + if not treemodel:
2148 + treemodel = self.treemodel
2149 +
2150 +@@ -573,7 +579,8 @@ def setmovie(self, movie, iter, treemodel = None): #{{{
2151 + return iter
2152 + #}}}
2153 +
2154 +-def select(self, iter, ensurevisible = True): #{{{
2155 ++
2156 ++def select(self, iter, ensurevisible=True): # {{{
2157 + if iter:
2158 + self.widgets['treeview'].get_selection().select_iter(iter)
2159 + if ensurevisible:
2160 +diff --git a/lib/movie.py b/lib/movie.py
2161 +index 3489932..dbe41c7 100644
2162 +--- a/lib/movie.py
2163 ++++ b/lib/movie.py
2164 +@@ -1,6 +1,6 @@
2165 + # -*- coding: UTF-8 -*-
2166 +
2167 +-__revision__ = '$Id: movie.py 1585 2011-09-12 20:43:18Z mikej06 $'
2168 ++__revision__ = '$Id$'
2169 +
2170 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
2171 + #
2172 +@@ -24,7 +24,6 @@ __revision__ = '$Id: movie.py 1585 2011-09-12 20:43:18Z mikej06 $'
2173 + import logging
2174 + import os
2175 + import string
2176 +-import sys
2177 + import tempfile
2178 + import threading
2179 + import time
2180 +@@ -76,7 +75,7 @@ class Movie(object):
2181 + progress = None
2182 + useurllib2 = False
2183 +
2184 +- # functions that plugin should implement: {{{
2185 ++ # functions that plugin should implement
2186 + def initialize(self):
2187 + pass
2188 +
2189 +@@ -142,7 +141,6 @@ class Movie(object):
2190 +
2191 + def get_year(self):
2192 + pass
2193 +- #}}}
2194 +
2195 + def __getitem__(self, key):
2196 + return getattr(self, key)
2197 +@@ -228,7 +226,8 @@ class Movie(object):
2198 + dest = "%s.jpg" % tmp_dest
2199 + try:
2200 + self.progress.set_data(self.parent_window, _("Fetching poster"), _("Wait a moment"), False)
2201 +- retriever = Retriever(self.image_url, self.parent_window, self.progress, dest, useurllib2=self.useurllib2)
2202 ++ retriever = Retriever(self.image_url, self.parent_window, self.progress, dest,
2203 ++ useurllib2=self.useurllib2)
2204 + retriever.start()
2205 + while retriever.isAlive():
2206 + self.progress.pulse()
2207 +@@ -293,13 +292,6 @@ class Movie(object):
2208 + self[i] = gutils.clean(self[i])
2209 + if not isinstance(self[i], unicode):
2210 + self[i] = gutils.gdecode(self[i], self.encode)
2211 +-
2212 +- if 'o_title' in self.fields_to_fetch and self.o_title is not None:
2213 +- if self.o_title[:4] == u'The ':
2214 +- self.o_title = self.o_title[4:] + u', The'
2215 +- if 'title' in self.fields_to_fetch and self.title is not None:
2216 +- if self.title[:4] == u'The ':
2217 +- self.title = self.title[4:] + u', The'
2218 + except:
2219 + log.exception('')
2220 + finally:
2221 +@@ -321,10 +313,14 @@ class SearchMovie(object):
2222 + remove_accents = True
2223 + progress = None
2224 + useurllib2 = False
2225 ++ usepostrequest = False
2226 +
2227 + def __init__(self):
2228 + pass
2229 +
2230 ++ def search(self, parent_window):
2231 ++ pass
2232 ++
2233 + def search_movies(self, parent_window):
2234 + try:
2235 + #
2236 +@@ -348,13 +344,19 @@ class SearchMovie(object):
2237 + self.url = self.url % self.title
2238 + self.url = string.replace(self.url, ' ', '%20')
2239 + else:
2240 +- self.url = string.replace(self.url + self.title, ' ', '%20')
2241 ++ if not self.usepostrequest:
2242 ++ self.url = string.replace(self.url + self.title, ' ', '%20')
2243 + try:
2244 + url = self.url.encode(self.encode)
2245 + except UnicodeEncodeError:
2246 + url = self.url.encode('utf-8')
2247 + self.progress.set_data(parent_window, _("Searching"), _("Wait a moment"), True)
2248 +- retriever = Retriever(url, parent_window, self.progress, destination, useurllib2=self.useurllib2)
2249 ++ if self.usepostrequest:
2250 ++ postdata = self.get_postdata()
2251 ++ retriever = Retriever(url, parent_window, self.progress, destination, useurllib2=self.useurllib2,
2252 ++ postdata=postdata)
2253 ++ else:
2254 ++ retriever = Retriever(url, parent_window, self.progress, destination, useurllib2=self.useurllib2)
2255 + retriever.start()
2256 + while retriever.isAlive():
2257 + self.progress.pulse()
2258 +@@ -389,12 +391,16 @@ class SearchMovie(object):
2259 + finally:
2260 + urlcleanup()
2261 + return True
2262 ++
2263 ++ def get_postdata(self):
2264 ++ # sample, depends on target site
2265 ++ return {}
2266 +
2267 +
2268 + class Retriever(threading.Thread):
2269 +
2270 +- def __init__(self, URL, parent_window, progress, destination=None, useurllib2=False):
2271 +- self.URL = URL
2272 ++ def __init__(self, url, parent_window, progress, destination=None, useurllib2=False, postdata=None):
2273 ++ self.URL = url
2274 + self.html = None
2275 + self.exception = None
2276 + self.destination = destination
2277 +@@ -402,14 +408,23 @@ class Retriever(threading.Thread):
2278 + self.progress = progress
2279 + self._stopevent = threading.Event()
2280 + self._sleepperiod = 1.0
2281 ++ self.postdata = postdata
2282 + threading.Thread.__init__(self, name="Retriever")
2283 +
2284 + def run(self):
2285 + try:
2286 + if self.useurllib2:
2287 +- self.html = urlretrieve2(self.URL, self.destination, self.hook)
2288 ++ if self.postdata:
2289 ++ encodedpostdata = urlencode(self.postdata)
2290 ++ self.html = urlretrieve2(self.URL, self.destination, self.hook, encodedpostdata)
2291 ++ else:
2292 ++ self.html = urlretrieve2(self.URL, self.destination, self.hook)
2293 + else:
2294 +- self.html = urlretrieve(self.URL, self.destination, self.hook)
2295 ++ if self.postdata:
2296 ++ encodedpostdata = urlencode(self.postdata)
2297 ++ self.html = urlretrieve(self.URL, self.destination, self.hook, encodedpostdata)
2298 ++ else:
2299 ++ self.html = urlretrieve(self.URL, self.destination, self.hook)
2300 + if self.progress.status:
2301 + self.html = []
2302 + except Exception, e:
2303 +@@ -417,16 +432,17 @@ class Retriever(threading.Thread):
2304 + self.exception = e
2305 +
2306 + def hook(self, count, blockSize, totalSize):
2307 +- if totalSize == -1:
2308 +- pass
2309 +- else:
2310 +- try:
2311 +- downloaded_percentage = min((count * blockSize * 100) / totalSize, 100)
2312 +- except:
2313 +- downloaded_percentage = 100
2314 +- if count != 0:
2315 +- downloaded_kbyte = int(count * blockSize / 1024.0)
2316 +- filesize_kbyte = int(totalSize / 1024.0)
2317 ++ # if totalSize == -1:
2318 ++ # pass
2319 ++ # else:
2320 ++ # try:
2321 ++ # downloaded_percentage = min((count * blockSize * 100) / totalSize, 100)
2322 ++ # except:
2323 ++ # downloaded_percentage = 100
2324 ++ # if count != 0:
2325 ++ # downloaded_kbyte = int(count * blockSize / 1024.0)
2326 ++ # filesize_kbyte = int(totalSize / 1024.0)
2327 ++ pass
2328 +
2329 + #
2330 + # use own derived URLopener class because we need to set a correct User-Agent
2331 +@@ -447,7 +463,7 @@ def urlretrieve(url, filename=None, reporthook=None, data=None):
2332 + def urlretrieve2(url, filename=None, reporthook=None, data=None):
2333 + global _tempfilecleanup
2334 + headers = {
2335 +- 'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7',
2336 ++ 'User-Agent': 'Dalvik/1.2.0 (Linux; U; Android 2.2.2; Huawei U8800-51 Build/HWU8800B635)',
2337 + 'Cache-Control': 'no-cache',
2338 + 'Pragma': 'no-cache',
2339 + 'Accept-Encoding': 'gzip'}
2340 +@@ -540,7 +556,6 @@ class Progress:
2341 + self.dialog.hide()
2342 +
2343 + def set_data(self, parent_window, title, message, showit):
2344 +- #self.dialog.set_parent(parent_window)
2345 + self.dialog.set_title(title)
2346 + self.label.set_markup(message)
2347 + if showit is True:
2348 +diff --git a/lib/people.py b/lib/people.py
2349 +index 8545058..4978fb7 100644
2350 +--- a/lib/people.py
2351 ++++ b/lib/people.py
2352 +@@ -1,6 +1,6 @@
2353 + # -*- coding: UTF-8 -*-
2354 +
2355 +-__revision__ = '$Id: people.py 1388 2010-01-06 21:02:22Z piotrek $'
2356 ++__revision__ = '$Id$'
2357 +
2358 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
2359 + #
2360 +diff --git a/lib/plugins/export/PluginExportCSV.py b/lib/plugins/export/PluginExportCSV.py
2361 +index 9dc4ee6..a81778d 100644
2362 +--- a/lib/plugins/export/PluginExportCSV.py
2363 ++++ b/lib/plugins/export/PluginExportCSV.py
2364 +@@ -1,6 +1,6 @@
2365 + # -*- coding: UTF-8 -*-
2366 +
2367 +-__revision__ = '$Id: PluginExportCSV.py 1533 2011-02-08 21:04:38Z iznogoud $'
2368 ++__revision__ = '$Id$'
2369 +
2370 + # Copyright (c) 2005-2007 Vasco Nunes
2371 + #
2372 +diff --git a/lib/plugins/export/PluginExportHTML.py b/lib/plugins/export/PluginExportHTML.py
2373 +index 0df219c..4bedf2b 100644
2374 +--- a/lib/plugins/export/PluginExportHTML.py
2375 ++++ b/lib/plugins/export/PluginExportHTML.py
2376 +@@ -1,7 +1,7 @@
2377 + # -*- coding: UTF-8 -*-
2378 + # vim: fdm=marker
2379 +
2380 +-__revision__ = '$Id: PluginExportHTML.py 1509 2011-02-01 21:56:04Z mikej06 $'
2381 ++__revision__ = '$Id$'
2382 +
2383 + # Copyright (c) 2005-2009 Piotr Ożarowski
2384 + #
2385 +diff --git a/lib/plugins/export/PluginExportPDF.py b/lib/plugins/export/PluginExportPDF.py
2386 +index d4ad547..3e707fd 100644
2387 +--- a/lib/plugins/export/PluginExportPDF.py
2388 ++++ b/lib/plugins/export/PluginExportPDF.py
2389 +@@ -1,8 +1,8 @@
2390 + # -*- coding: UTF-8 -*-
2391 +
2392 +-__revision__ = '$Id: PluginExportPDF.py 1533 2011-02-08 21:04:38Z iznogoud $'
2393 ++__revision__ = '$Id$'
2394 +
2395 +-# Copyright (c) 2005-2010 Vasco Nunes
2396 ++# Copyright (c) 2005-2013 Vasco Nunes
2397 + #
2398 + # This program is free software; you can redistribute it and/or modify
2399 + # it under the terms of the GNU General Public License as published by
2400 +@@ -42,20 +42,34 @@ import db
2401 + import gutils
2402 + import version
2403 + from plugins.export import Base
2404 ++import logging
2405 ++
2406 ++log = logging.getLogger("Griffith")
2407 +
2408 + class ExportPlugin(Base):
2409 + name = "PDF"
2410 + description = _("PDF export plugin")
2411 + author = "Vasco Nunes"
2412 + email = "<vasco.m.nunes@×××××.com>"
2413 +- version = "0.6"
2414 ++ version = "0.7"
2415 +
2416 +- fields_to_export = ('number', 'o_title', 'title', 'director', 'genre', 'cast', 'plot', 'runtime', 'year', 'notes', 'poster_md5')
2417 ++ fields_to_export = ('number', 'o_title', 'title', 'director', 'genre', 'cast', 'plot', 'runtime', 'year', 'notes', 'poster_md5', 'width', 'height', 'volumes.name', 'collections.name')
2418 +
2419 + def initialize(self):
2420 + self.fontName = ''
2421 + return True
2422 +
2423 ++ def _get_resolution(self, movie):
2424 ++ if not movie.movies_width or not movie.movies_height:
2425 ++ return ''
2426 ++ from db._movie import res_aliases
2427 ++ resolution = (movie.movies_width, movie.movies_height)
2428 ++ if resolution in res_aliases:
2429 ++ return res_aliases[resolution][0]
2430 ++ else:
2431 ++ res_string = "%dx%d" % resolution
2432 ++ return res_string
2433 ++
2434 + def run(self):
2435 + """exports a simple movie list to a pdf file"""
2436 +
2437 +@@ -79,124 +93,142 @@ class ExportPlugin(Base):
2438 + overwrite = False
2439 +
2440 + if overwrite == True or overwrite is None:
2441 +- # filename encoding
2442 +- defaultLang, defaultEnc = getdefaultlocale()
2443 +- if defaultEnc is None:
2444 +- defaultEnc = 'UTF-8'
2445 +- c = SimpleDocTemplate(pdffilename.encode(defaultEnc), \
2446 +- author = 'Griffith', \
2447 +- title = _('List of films').encode('utf-8'), \
2448 +- subject = _('List of films').encode('utf-8'))
2449 +- # data encoding
2450 +- #if defaultEncoding == 'WinAnsiEncoding':
2451 +- # defaultEnc = 'cp1252'
2452 +- #else:
2453 +- defaultEnc = 'utf-8'
2454 ++ try:
2455 ++ # filename encoding
2456 ++ defaultLang, defaultEnc = getdefaultlocale()
2457 ++ if defaultEnc is None:
2458 ++ defaultEnc = 'UTF-8'
2459 ++ c = SimpleDocTemplate(pdffilename.encode(defaultEnc), \
2460 ++ author = 'Griffith', \
2461 ++ title = _('List of films').encode('utf-8'), \
2462 ++ subject = _('List of films').encode('utf-8'), \
2463 ++ allowSplitting = False)
2464 ++ # data encoding
2465 ++ #if defaultEncoding == 'WinAnsiEncoding':
2466 ++ # defaultEnc = 'cp1252'
2467 ++ #else:
2468 ++ defaultEnc = 'utf-8'
2469 +
2470 +- pdf_elements = self.config.get('pdf_elements', 'image,director,genre,cast').split(',')
2471 ++ pdf_elements = self.config.get('pdf_elements', 'image,director,genre,cast').split(',')
2472 +
2473 +- self.create_styles()
2474 +- style = self.styles["Normal"]
2475 +- Story = [Spacer(1,2*inch)]
2476 ++ self.create_styles()
2477 ++ style = self.styles["Normal"]
2478 ++ Story = [Spacer(1,2*inch)]
2479 +
2480 +- # select sort column - FIXME
2481 +- sort_column_name = self.config.get('sortby', 'number', section='mainlist')
2482 +- sort_reverse = self.config.get('sortby_reverse', False, section='mainlist')
2483 +- do_grouping = True
2484 +- for i in sort_column_name.split(','):
2485 +- if i != 'title' and i != 'o_title':
2486 +- do_grouping = False
2487 ++ # select sort column - FIXME
2488 ++ sort_column_name = self.config.get('sortby', 'number', section='mainlist')
2489 ++ sort_reverse = self.config.get('sortby_reverse', False, section='mainlist')
2490 ++ do_grouping = True
2491 ++ for i in sort_column_name.split(','):
2492 ++ if i != 'title' and i != 'o_title':
2493 ++ do_grouping = False
2494 +
2495 +- # build the query
2496 +- query = self.get_query()
2497 +- movies = query.execute().fetchall()
2498 ++ # build the query
2499 ++ query = self.get_query()
2500 ++ movies = query.execute().fetchall()
2501 +
2502 +- # define some custom stylesheetfont
2503 +- total = len(movies)
2504 +- p = Paragraph(saxutils.escape((_("List of films")).encode('utf-8')), self.styles["Heading1"] )
2505 +- Story.append(p)
2506 +- Story.append(Paragraph(" ",style))
2507 +- p = Paragraph(saxutils.escape((_("Total Movies: %s") % str(total)).encode('utf-8')), self.styles["Heading3"])
2508 +- Story.append(p)
2509 +- Story.append(Paragraph(" ",style))
2510 +- # output movies
2511 +- first_letter = ''
2512 +- for movie in movies:
2513 +- number = movie.number
2514 +- if movie.o_title:
2515 +- original_title = movie.o_title.encode(defaultEnc)
2516 +- else:
2517 +- original_title = ''
2518 +- if movie.title:
2519 +- title = movie.title.encode(defaultEnc)
2520 +- else:
2521 +- title = ''
2522 +- grouping_title = movie.title
2523 +- if grouping_title is None:
2524 +- grouping_title = u'None'
2525 +- if movie.director:
2526 +- director = ' - ' + movie.director.encode(defaultEnc)
2527 +- else:
2528 +- director = ""
2529 +- # group by first letter
2530 +- # use movie.title/grouping_title for grouping because of encoding problems !!!
2531 +- if do_grouping and grouping_title[0] != first_letter:
2532 +- if grouping_title[0] in '0123456789':
2533 +- # Group Numbers
2534 +- if first_letter != '0-9':
2535 +- first_letter = '0-9'
2536 ++ # define some custom stylesheetfont
2537 ++ total = len(movies)
2538 ++ p = Paragraph(saxutils.escape((_("List of films")).encode('utf-8')), self.styles["Heading1"] )
2539 ++ Story.append(p)
2540 ++ Story.append(Paragraph(" ",style))
2541 ++ p = Paragraph(saxutils.escape((_("Total Movies: %s") % str(total)).encode('utf-8')), self.styles["Heading3"])
2542 ++ Story.append(p)
2543 ++ Story.append(Paragraph(" ",style))
2544 ++ # output movies
2545 ++ first_letter = ''
2546 ++ for movie in movies:
2547 ++ number = movie.movies_number
2548 ++ if movie.movies_o_title:
2549 ++ original_title = movie.movies_o_title.encode(defaultEnc)
2550 ++ else:
2551 ++ original_title = ''
2552 ++ if movie.movies_title:
2553 ++ title = movie.movies_title.encode(defaultEnc)
2554 ++ else:
2555 ++ title = ''
2556 ++ grouping_title = movie.movies_title
2557 ++ if grouping_title is None:
2558 ++ grouping_title = u'None'
2559 ++ if movie.movies_director:
2560 ++ director = ' - ' + movie.movies_director.encode(defaultEnc)
2561 ++ else:
2562 ++ director = ""
2563 ++ # group by first letter
2564 ++ # use movie.title/grouping_title for grouping because of encoding problems !!!
2565 ++ if do_grouping and grouping_title[0] != first_letter:
2566 ++ if grouping_title[0] in '0123456789':
2567 ++ # Group Numbers
2568 ++ if first_letter != '0-9':
2569 ++ first_letter = '0-9'
2570 ++ paragraph_text = saxutils.escape(first_letter)
2571 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Heading2'])
2572 ++ Story.append(p)
2573 ++ else:
2574 ++ first_letter = grouping_title[0]
2575 + paragraph_text = saxutils.escape(first_letter)
2576 + p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Heading2'])
2577 + Story.append(p)
2578 +- else:
2579 +- first_letter = grouping_title[0]
2580 +- paragraph_text = saxutils.escape(first_letter)
2581 +- p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Heading2'])
2582 +- Story.append(p)
2583 +- # add movie title
2584 +- paragraph_text = '<b>'+ saxutils.escape(title) + '</b>' + \
2585 +- saxutils.escape(' (' + original_title + ') | ' + str(number))
2586 +- p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Heading3'])
2587 +- if 'image' in pdf_elements:
2588 +- image_filename = None
2589 +- if movie.poster_md5:
2590 +- image_filename = gutils.get_image_fname(movie.poster_md5, self.db, 'm')
2591 +- if image_filename:
2592 +- p = ParagraphAndImage(p, Image(image_filename, width = 30, height = 40), side = 'left')
2593 +- # wrap call needed because of a bug in reportlab flowables.py - ParagraphAndImage::split(self,availWidth, availHeight)
2594 +- # AttributeError: ParagraphAndImage instance has no attribute 'wI'
2595 +- p.wrap(30, 40)
2596 +- Story.append(p)
2597 +- if 'year' in pdf_elements and movie.year:
2598 +- paragraph_text = '<b>' + _('Year') + ': </b>' + saxutils.escape(str(movie.year))
2599 +- p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2600 +- Story.append(p)
2601 +- if 'runtime' in pdf_elements and movie.runtime:
2602 +- paragraph_text = '<b>' + _('Runtime') + ': </b>' + saxutils.escape(str(movie.runtime))
2603 +- p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2604 +- Story.append(p)
2605 +- if 'genre' in pdf_elements and movie.genre:
2606 +- paragraph_text = '<b>' + _('Genre') + ': </b>' + saxutils.escape(movie.genre.encode(defaultEnc))
2607 +- p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2608 +- Story.append(p)
2609 +- if 'director' in pdf_elements and movie.director:
2610 +- paragraph_text = '<i><b>' + _('Director') + ': </b>' + saxutils.escape(movie.director.encode(defaultEnc)) + '</i>'
2611 +- p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2612 ++ # add movie title
2613 ++ paragraph_text = '<b>'+ saxutils.escape(title) + '</b>' + \
2614 ++ saxutils.escape(' (' + original_title + ') | ' + str(number))
2615 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Heading3'])
2616 ++ if 'image' in pdf_elements:
2617 ++ image_filename = None
2618 ++ if movie.movies_poster_md5:
2619 ++ image_filename = gutils.get_image_fname(movie.movies_poster_md5, self.db, 'm')
2620 ++ if image_filename:
2621 ++ p = ParagraphAndImage(p, Image(image_filename, width = 30, height = 40), side = 'left')
2622 ++ # wrap call needed because of a bug in reportlab flowables.py - ParagraphAndImage::split(self,availWidth, availHeight)
2623 ++ # AttributeError: ParagraphAndImage instance has no attribute 'wI'
2624 ++ p.wrap(30, 40)
2625 + Story.append(p)
2626 +- if 'cast' in pdf_elements and movie.cast:
2627 +- paragraph_text = '<i><b>' + _('Cast') + ': </b>' + saxutils.escape('; '.join(movie.cast.encode(defaultEnc).split("\n")[0:2])) + '</i>'
2628 +- p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2629 +- Story.append(p)
2630 +- if 'plot' in pdf_elements and movie.plot:
2631 +- paragraph_text = '<i><b>' + _('Plot') + ': </b>' + saxutils.escape(movie.plot.encode(defaultEnc)) + '</i>'
2632 +- p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2633 +- Story.append(p)
2634 +- if 'notes' in pdf_elements and movie.notes:
2635 +- paragraph_text = '<i><b>' + _('Notes') + ': </b>' + saxutils.escape(movie.notes.encode(defaultEnc)) + '</i>'
2636 +- p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2637 +- Story.append(p)
2638 +- c.build(Story, onFirstPage=self.page_template, onLaterPages=self.page_template)
2639 +- gutils.info(_('PDF has been created.'), self.parent_window)
2640 ++ if 'year' in pdf_elements and movie.movies_year:
2641 ++ paragraph_text = '<b>' + _('Year') + ': </b>' + saxutils.escape(str(movie.movies_year))
2642 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2643 ++ Story.append(p)
2644 ++ if 'runtime' in pdf_elements and movie.movies_runtime:
2645 ++ paragraph_text = '<b>' + _('Runtime') + ': </b>' + saxutils.escape(str(movie.movies_runtime))
2646 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2647 ++ Story.append(p)
2648 ++ if 'genre' in pdf_elements and movie.movies_genre:
2649 ++ paragraph_text = '<b>' + _('Genre') + ': </b>' + saxutils.escape(movie.movies_genre.encode(defaultEnc))
2650 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2651 ++ Story.append(p)
2652 ++ if 'director' in pdf_elements and movie.movies_director:
2653 ++ paragraph_text = '<i><b>' + _('Director') + ': </b>' + saxutils.escape(movie.movies_director.encode(defaultEnc)) + '</i>'
2654 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2655 ++ Story.append(p)
2656 ++ if 'cast' in pdf_elements and movie.movies_cast:
2657 ++ paragraph_text = '<i><b>' + _('Cast') + ': </b>' + saxutils.escape('; '.join(movie.movies_cast.encode(defaultEnc).split("\n")[0:2])) + '</i>'
2658 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2659 ++ Story.append(p)
2660 ++ if 'plot' in pdf_elements and movie.movies_plot:
2661 ++ paragraph_text = '<i><b>' + _('Plot') + ': </b>' + saxutils.escape(movie.movies_plot.encode(defaultEnc)) + '</i>'
2662 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2663 ++ Story.append(p)
2664 ++ if 'notes' in pdf_elements and movie.movies_notes:
2665 ++ paragraph_text = '<i><b>' + _('Notes') + ': </b>' + saxutils.escape(movie.movies_notes.encode(defaultEnc)) + '</i>'
2666 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2667 ++ Story.append(p)
2668 ++ resolution = self._get_resolution(movie)
2669 ++ if resolution:
2670 ++ paragraph_text = '<i><b>' + _('Resolution') + ': </b>' + saxutils.escape(resolution.encode(defaultEnc)) + '</i>'
2671 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2672 ++ Story.append(p)
2673 ++ if movie.volumes_name:
2674 ++ paragraph_text = '<i><b>' + _('Volume') + ': </b>' + saxutils.escape(movie.volumes_name.encode(defaultEnc)) + '</i>'
2675 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2676 ++ Story.append(p)
2677 ++ if movie.collections_name:
2678 ++ paragraph_text = '<i><b>' + _('Collection') + ': </b>' + saxutils.escape(movie.collections_name.encode(defaultEnc)) + '</i>'
2679 ++ p = Paragraph(paragraph_text.decode(defaultEnc), self.styles['Normal'])
2680 ++ Story.append(p)
2681 ++ c.build(Story, onFirstPage=self.page_template, onLaterPages=self.page_template)
2682 ++ gutils.info(_('PDF has been created.'), self.parent_window)
2683 ++ except Exception, e:
2684 ++ log.exception('')
2685 ++ gutils.error(str(e))
2686 +
2687 + def create_styles(self):
2688 + self.styles = getSampleStyleSheet()
2689 +@@ -206,18 +238,23 @@ class ExportPlugin(Base):
2690 + fontfilename = self.config.get('font', '')
2691 + (fontfilenamebase, fontfilenameextension) = os.path.splitext(fontfilename)
2692 +
2693 +- pdfmetrics.registerFont(TTFont(self.fontName, fontfilename))
2694 +- addMapping(self.fontName, 0, 0, self.fontName)
2695 +- # build font family if available to support <b> and <i>
2696 +- if os.path.isfile(fontfilenamebase + 'bd' + fontfilenameextension):
2697 +- pdfmetrics.registerFont(TTFont(self.fontName + '-bold', fontfilenamebase + 'bd' + fontfilenameextension))
2698 +- addMapping(self.fontName, 1, 0, self.fontName + '-bold')
2699 +- if os.path.isfile(fontfilenamebase + 'bi' + fontfilenameextension):
2700 +- pdfmetrics.registerFont(TTFont(self.fontName + '-bolditalic', fontfilenamebase + 'bi' + fontfilenameextension))
2701 +- addMapping(self.fontName, 1, 1, self.fontName + '-bolditalic')
2702 +- if os.path.isfile(fontfilenamebase + 'i' + fontfilenameextension):
2703 +- pdfmetrics.registerFont(TTFont(self.fontName + '-italic', fontfilenamebase + 'i' + fontfilenameextension))
2704 +- addMapping(self.fontName, 0, 1, self.fontName + '-italic')
2705 ++ try:
2706 ++ pdfmetrics.registerFont(TTFont(self.fontName, fontfilename))
2707 ++ except:
2708 ++ log.exception('')
2709 ++ self.fontName = "Helvetica"
2710 ++ else:
2711 ++ addMapping(self.fontName, 0, 0, self.fontName)
2712 ++ # build font family if available to support <b> and <i>
2713 ++ if os.path.isfile(fontfilenamebase + 'bd' + fontfilenameextension):
2714 ++ pdfmetrics.registerFont(TTFont(self.fontName + '-bold', fontfilenamebase + 'bd' + fontfilenameextension))
2715 ++ addMapping(self.fontName, 1, 0, self.fontName + '-bold')
2716 ++ if os.path.isfile(fontfilenamebase + 'bi' + fontfilenameextension):
2717 ++ pdfmetrics.registerFont(TTFont(self.fontName + '-bolditalic', fontfilenamebase + 'bi' + fontfilenameextension))
2718 ++ addMapping(self.fontName, 1, 1, self.fontName + '-bolditalic')
2719 ++ if os.path.isfile(fontfilenamebase + 'i' + fontfilenameextension):
2720 ++ pdfmetrics.registerFont(TTFont(self.fontName + '-italic', fontfilenamebase + 'i' + fontfilenameextension))
2721 ++ addMapping(self.fontName, 0, 1, self.fontName + '-italic')
2722 + else:
2723 + self.fontName = "Helvetica"
2724 +
2725 +diff --git a/lib/plugins/export/PluginExportXML.py b/lib/plugins/export/PluginExportXML.py
2726 +index 5a92473..c645cf8 100644
2727 +--- a/lib/plugins/export/PluginExportXML.py
2728 ++++ b/lib/plugins/export/PluginExportXML.py
2729 +@@ -1,6 +1,6 @@
2730 + # -*- coding: UTF-8 -*-
2731 +
2732 +-__revision__ = '$Id: PluginExportXML.py 1533 2011-02-08 21:04:38Z iznogoud $'
2733 ++__revision__ = '$Id$'
2734 +
2735 + # Copyright (c) 2005-2007 Vasco Nunes, Piotr Ożarowski
2736 + #
2737 +diff --git a/lib/plugins/export/PluginExportiPod.py b/lib/plugins/export/PluginExportiPod.py
2738 +index 73179bf..2e1f175 100644
2739 +--- a/lib/plugins/export/PluginExportiPod.py
2740 ++++ b/lib/plugins/export/PluginExportiPod.py
2741 +@@ -1,6 +1,6 @@
2742 + # -*- coding: UTF-8 -*-
2743 +
2744 +-__revision__ = '$Id: PluginExportiPod.py 1533 2011-02-08 21:04:38Z iznogoud $'
2745 ++__revision__ = '$Id$'
2746 +
2747 + # Copyright (c) 2005-2011 Vasco Nunes
2748 + #
2749 +diff --git a/lib/plugins/export/__init__.py b/lib/plugins/export/__init__.py
2750 +index 15ce315..957f527 100644
2751 +--- a/lib/plugins/export/__init__.py
2752 ++++ b/lib/plugins/export/__init__.py
2753 +@@ -1,6 +1,6 @@
2754 + # -*- coding: UTF-8 -*-
2755 +
2756 +-__revision__ = '$Id: __init__.py 1533 2011-02-08 21:04:38Z iznogoud $'
2757 ++__revision__ = '$Id$'
2758 +
2759 + # Copyright (c) 2008-2009 Piotr Ożarowski
2760 + #
2761 +diff --git a/lib/plugins/extensions/__init__.py b/lib/plugins/extensions/__init__.py
2762 +index 576378b..8b17a29 100644
2763 +--- a/lib/plugins/extensions/__init__.py
2764 ++++ b/lib/plugins/extensions/__init__.py
2765 +@@ -1,6 +1,6 @@
2766 + # -*- coding: UTF-8 -*-
2767 +
2768 +-__revision__ = '$Id: __init__.py 1444 2010-08-29 17:52:31Z piotrek $'
2769 ++__revision__ = '$Id$'
2770 +
2771 + # Copyright © 2009 Piotr Ożarowski
2772 + #
2773 +diff --git a/lib/plugins/extensions/ge_amazon.py b/lib/plugins/extensions/ge_amazon.py
2774 +index a12dcc0..ef98df6 100644
2775 +--- a/lib/plugins/extensions/ge_amazon.py
2776 ++++ b/lib/plugins/extensions/ge_amazon.py
2777 +@@ -1,6 +1,6 @@
2778 + # -*- coding: UTF-8 -*-
2779 +
2780 +-__revision__ = '$Id: ge_amazon.py 1568 2011-08-10 20:08:12Z mikej06 $'
2781 ++__revision__ = '$Id$'
2782 +
2783 + # Copyright © 2009 Piotr Ożarowski
2784 + #
2785 +diff --git a/lib/plugins/extensions/ge_mark_seen.py b/lib/plugins/extensions/ge_mark_seen.py
2786 +index 8385022..30ccb43 100644
2787 +--- a/lib/plugins/extensions/ge_mark_seen.py
2788 ++++ b/lib/plugins/extensions/ge_mark_seen.py
2789 +@@ -1,6 +1,6 @@
2790 + # -*- coding: UTF-8 -*-
2791 +
2792 +-__revision__ = '$Id: ge_mark_seen.py 1568 2011-08-10 20:08:12Z mikej06 $'
2793 ++__revision__ = '$Id$'
2794 +
2795 + # Copyright © 2009 Piotr Ożarowski
2796 + #
2797 +diff --git a/lib/plugins/extensions/ge_movieposterdb.py b/lib/plugins/extensions/ge_movieposterdb.py
2798 +index 27053c7..d7e3e07 100644
2799 +--- a/lib/plugins/extensions/ge_movieposterdb.py
2800 ++++ b/lib/plugins/extensions/ge_movieposterdb.py
2801 +@@ -1,6 +1,6 @@
2802 + # -*- coding: UTF-8 -*-
2803 +
2804 +-__revision__ = '$Id: ge_movieposterdb.py 1568 2011-08-10 20:08:12Z mikej06 $'
2805 ++__revision__ = '$Id$'
2806 +
2807 + # Copyright © 2010 Michael Jahn
2808 + #
2809 +@@ -77,23 +77,23 @@ class GriffithExtension(Base):
2810 + if movie.year:
2811 + url = self.baseurltitleyear % (o_title, movie.year)
2812 + data = self._get(url, self.widgets['window'])
2813 +- if data:
2814 ++ if data and data.find('movie/0000000') < 0:
2815 + largeurl = gutils.trim(data, 'src=\\"', '\\"').replace('/t_', '/l_')
2816 + if not data or not largeurl:
2817 + url = self.baseurltitle % o_title
2818 + data = self._get(url, self.widgets['window'])
2819 +- if data:
2820 ++ if data and data.find('movie/0000000') < 0:
2821 + largeurl = gutils.trim(data, 'src=\\"', '\\"').replace('/t_', '/l_')
2822 + if not data or not largeurl and title and title != o_title:
2823 + if movie.year:
2824 + url = self.baseurltitleyear % (title, movie.year)
2825 + data = self._get(url, self.widgets['window'])
2826 +- if data:
2827 ++ if data and data.find('movie/0000000') < 0:
2828 + largeurl = gutils.trim(data, 'src=\\"', '\\"').replace('/t_', '/l_')
2829 + if not data or not largeurl:
2830 + url = self.baseurltitle % title
2831 + data = self._get(url, self.widgets['window'])
2832 +- if data:
2833 ++ if data and data.find('movie/0000000') < 0:
2834 + largeurl = gutils.trim(data, 'src=\\"', '\\"').replace('/t_', '/l_')
2835 + except:
2836 + log.exception('')
2837 +diff --git a/lib/plugins/extensions/ge_player.py b/lib/plugins/extensions/ge_player.py
2838 +index 2f1644d..81553c1 100644
2839 +--- a/lib/plugins/extensions/ge_player.py
2840 ++++ b/lib/plugins/extensions/ge_player.py
2841 +@@ -1,6 +1,6 @@
2842 + # -*- coding: UTF-8 -*-
2843 +
2844 +-__revision__ = '$Id: ge_player.py 1568 2011-08-10 20:08:12Z mikej06 $'
2845 ++__revision__ = '$Id$'
2846 +
2847 + # Copyright © 2009 Piotr Ożarowski
2848 + #
2849 +diff --git a/lib/plugins/extensions/ge_remover.py b/lib/plugins/extensions/ge_remover.py
2850 +index 8674b24..aa6aae3 100644
2851 +--- a/lib/plugins/extensions/ge_remover.py
2852 ++++ b/lib/plugins/extensions/ge_remover.py
2853 +@@ -1,6 +1,6 @@
2854 + # -*- coding: UTF-8 -*-
2855 +
2856 +-__revision__ = '$Id: ge_remover.py 1576 2011-08-23 20:20:12Z mikej06 $'
2857 ++__revision__ = '$Id$'
2858 +
2859 + # Copyright © 2009 Piotr Ożarowski
2860 + #
2861 +diff --git a/lib/plugins/imp/AMC.py b/lib/plugins/imp/AMC.py
2862 +index 3a7e7de..0c72de9 100644
2863 +--- a/lib/plugins/imp/AMC.py
2864 ++++ b/lib/plugins/imp/AMC.py
2865 +@@ -1,6 +1,6 @@
2866 + # -*- coding: utf-8 -*-
2867 +
2868 +-__revision__ = '$Id: AMC.py 1605 2011-12-18 22:35:25Z piotrek $'
2869 ++__revision__ = '$Id$'
2870 +
2871 + # Copyright (c) 2009
2872 +
2873 +diff --git a/lib/plugins/imp/AllMyMovies.py b/lib/plugins/imp/AllMyMovies.py
2874 +index e7be119..35e3c03 100644
2875 +--- a/lib/plugins/imp/AllMyMovies.py
2876 ++++ b/lib/plugins/imp/AllMyMovies.py
2877 +@@ -1,6 +1,6 @@
2878 + # -*- coding: utf-8 -*-
2879 +
2880 +-__revision__ = '$Id: AllMyMovies.py 1605 2011-12-18 22:35:25Z piotrek $'
2881 ++__revision__ = '$Id$'
2882 +
2883 + # Copyright (c) 2009
2884 +
2885 +diff --git a/lib/plugins/imp/BESTheMovieLibrary.py b/lib/plugins/imp/BESTheMovieLibrary.py
2886 +index b6c0fd6..28d43d4 100644
2887 +--- a/lib/plugins/imp/BESTheMovieLibrary.py
2888 ++++ b/lib/plugins/imp/BESTheMovieLibrary.py
2889 +@@ -1,6 +1,6 @@
2890 + # -*- coding: utf-8 -*-
2891 +
2892 +-__revision__ = '$Id: BESTheMovieLibrary.py 1605 2011-12-18 22:35:25Z piotrek $'
2893 ++__revision__ = '$Id$'
2894 +
2895 + # Copyright (c) 2009
2896 +
2897 +diff --git a/lib/plugins/imp/CSV.py b/lib/plugins/imp/CSV.py
2898 +index 6fab0a1..8c0017a 100644
2899 +--- a/lib/plugins/imp/CSV.py
2900 ++++ b/lib/plugins/imp/CSV.py
2901 +@@ -1,6 +1,6 @@
2902 + # -*- coding: UTF-8 -*-
2903 +
2904 +-__revision__ = '$Id: CSV.py 1549 2011-05-18 12:36:46Z mikej06 $'
2905 ++__revision__ = '$Id$'
2906 +
2907 + ###########################################################################
2908 + # Copyright (C) 2006-2007 by Jessica Katharina Parth
2909 +@@ -14,8 +14,6 @@ from plugins.imp import ImportPlugin as IP
2910 + import gtk
2911 + import gtk.glade
2912 + import os
2913 +-import pygtk
2914 +-import sys
2915 + import gutils
2916 + import string
2917 + import re
2918 +@@ -281,7 +279,7 @@ class ImportPlugin(IP):
2919 + # quotechar
2920 + quotechar = self.gtk.get_widget('e_quotechar').get_text()
2921 + if quotechar == '':
2922 +- quotechar == '"'
2923 ++ quotechar = '"'
2924 + # lineterminator
2925 + active = self.gtk.get_widget('e_lineterminator').get_active()
2926 + # default for none selected and the same for linux and macintosh
2927 +@@ -292,7 +290,8 @@ class ImportPlugin(IP):
2928 +
2929 + # open file
2930 + try:
2931 +- self.data = csv.reader(codecs.open(self.__source_name, 'r', encoding), dialect = 'excel', quotechar = quotechar, delimiter = delimiter, lineterminator = lineterminator)
2932 ++ self.data = csv.reader(codecs.open(self.__source_name, 'r', encoding), dialect='excel',
2933 ++ quotechar=quotechar, delimiter=delimiter, lineterminator=lineterminator)
2934 +
2935 + # get the first line in csv file for the field names
2936 + self.csv_header = self.data.next()
2937 +diff --git a/lib/plugins/imp/DVDProfiler.py b/lib/plugins/imp/DVDProfiler.py
2938 +index 20f790a..c842dd1 100644
2939 +--- a/lib/plugins/imp/DVDProfiler.py
2940 ++++ b/lib/plugins/imp/DVDProfiler.py
2941 +@@ -1,6 +1,6 @@
2942 + # -*- coding: utf-8 -*-
2943 +
2944 +-__revision__ = '$Id: DVDProfiler.py 1605 2011-12-18 22:35:25Z piotrek $'
2945 ++__revision__ = '$Id$'
2946 +
2947 + # Copyright (c) 2009
2948 +
2949 +@@ -205,11 +205,11 @@ class ImportPlugin(IP):
2950 + details['screenplay'] = details['screenplay'] + lastName + ', '
2951 + elif firstName:
2952 + details['screenplay'] = details['screenplay'] + firstName + ', '
2953 +- if len(details['director']) > 2:
2954 ++ if len(details['director']) > 1:
2955 + details['director'] = details['director'][:-2]
2956 +- if len(details['cameraman']) > 2:
2957 ++ if len(details['cameraman']) > 1:
2958 + details['cameraman'] = details['cameraman'][:-2]
2959 +- if len(details['screenplay']) > 2:
2960 ++ if len(details['screenplay']) > 1:
2961 + details['screenplay'] = details['screenplay'][:-2]
2962 + elif node.nodeName == 'Actors':
2963 + details['cast'] = ''
2964 +@@ -260,7 +260,7 @@ class ImportPlugin(IP):
2965 + for genreElement in genreElements:
2966 + if len(genreElement.childNodes) > 0:
2967 + details['genre'] = details['genre'] + genreElement.childNodes[0].data.strip() + ', '
2968 +- if details['genre'] > 2:
2969 ++ if len(details['genre']) > 1:
2970 + details['genre'] = details['genre'][:-2]
2971 + elif node.nodeName == 'Studios':
2972 + details['studio'] = ''
2973 +@@ -268,7 +268,7 @@ class ImportPlugin(IP):
2974 + for studioElement in studioElements:
2975 + if len(studioElement.childNodes) > 0:
2976 + details['studio'] = details['studio'] + studioElement.childNodes[0].data.strip() + ', '
2977 +- if details['studio'] > 2:
2978 ++ if len(details['studio']) > 1:
2979 + details['studio'] = details['studio'][:-2]
2980 + elif node.nodeName == 'Regions':
2981 + regionElements = node.getElementsByTagName('Region')
2982 +diff --git a/lib/plugins/imp/FoxMovieManager.py b/lib/plugins/imp/FoxMovieManager.py
2983 +index fc9050b..2a53d7f 100644
2984 +--- a/lib/plugins/imp/FoxMovieManager.py
2985 ++++ b/lib/plugins/imp/FoxMovieManager.py
2986 +@@ -1,6 +1,6 @@
2987 + # -*- coding: utf-8 -*-
2988 +
2989 +-__revision__ = '$Id: FoxMovieManager.py 1605 2011-12-18 22:35:25Z piotrek $'
2990 ++__revision__ = '$Id$'
2991 +
2992 + # Copyright (c) 2009
2993 +
2994 +diff --git a/lib/plugins/imp/GCstar.py b/lib/plugins/imp/GCstar.py
2995 +index 4168e58..e536c7b 100644
2996 +--- a/lib/plugins/imp/GCstar.py
2997 ++++ b/lib/plugins/imp/GCstar.py
2998 +@@ -1,6 +1,6 @@
2999 + # -*- coding: utf-8 -*-
3000 +
3001 +-__revision__ = '$Id: GCstar.py 1605 2011-12-18 22:35:25Z piotrek $'
3002 ++__revision__ = '$Id$'
3003 +
3004 + # Copyright (c) 2009
3005 +
3006 +diff --git a/lib/plugins/imp/GriffithXML.py b/lib/plugins/imp/GriffithXML.py
3007 +index 61ce829..af3075a 100644
3008 +--- a/lib/plugins/imp/GriffithXML.py
3009 ++++ b/lib/plugins/imp/GriffithXML.py
3010 +@@ -1,6 +1,6 @@
3011 + # -*- coding: utf-8 -*-
3012 +
3013 +-__revision__ = '$Id: GriffithXML.py 1605 2011-12-18 22:35:25Z piotrek $'
3014 ++__revision__ = '$Id$'
3015 +
3016 + # Copyright (c) 2010
3017 +
3018 +diff --git a/lib/plugins/imp/MovieTrack.py b/lib/plugins/imp/MovieTrack.py
3019 +index bbf1e03..d54bc9d 100644
3020 +--- a/lib/plugins/imp/MovieTrack.py
3021 ++++ b/lib/plugins/imp/MovieTrack.py
3022 +@@ -1,6 +1,6 @@
3023 + # -*- coding: utf-8 -*-
3024 +
3025 +-__revision__ = '$Id: MovieTrack.py 1605 2011-12-18 22:35:25Z piotrek $'
3026 ++__revision__ = '$Id$'
3027 +
3028 + # Copyright (c) 2009
3029 +
3030 +diff --git a/lib/plugins/imp/MyDVDs.py b/lib/plugins/imp/MyDVDs.py
3031 +index e2a90e5..34cfc66 100644
3032 +--- a/lib/plugins/imp/MyDVDs.py
3033 ++++ b/lib/plugins/imp/MyDVDs.py
3034 +@@ -1,6 +1,6 @@
3035 + # -*- coding: utf-8 -*-
3036 +
3037 +-__revision__ = '$Id: MyDVDs.py 1605 2011-12-18 22:35:25Z piotrek $'
3038 ++__revision__ = '$Id$'
3039 +
3040 + # Copyright (c) 2009
3041 +
3042 +diff --git a/lib/plugins/imp/PersonalVideoDatabase.py b/lib/plugins/imp/PersonalVideoDatabase.py
3043 +index 86f6c97..f9e38a9 100644
3044 +--- a/lib/plugins/imp/PersonalVideoDatabase.py
3045 ++++ b/lib/plugins/imp/PersonalVideoDatabase.py
3046 +@@ -1,6 +1,6 @@
3047 + # -*- coding: utf-8 -*-
3048 +
3049 +-__revision__ = '$Id: PersonalVideoDatabase.py 1605 2011-12-18 22:35:25Z piotrek $'
3050 ++__revision__ = '$Id$'
3051 +
3052 + # Copyright (c) 2009
3053 +
3054 +diff --git a/lib/plugins/imp/Tellico.py b/lib/plugins/imp/Tellico.py
3055 +new file mode 100644
3056 +index 0000000..d12414d
3057 +--- /dev/null
3058 ++++ b/lib/plugins/imp/Tellico.py
3059 +@@ -0,0 +1,244 @@
3060 ++# -*- coding: utf-8 -*-
3061 ++
3062 ++__revision__ = '$Id: $'
3063 ++
3064 ++# Copyright (c) 2011, 2012
3065 ++
3066 ++# This program is free software; you can redistribute it and/or modify
3067 ++# it under the terms of the GNU General Public License as published by
3068 ++# the Free Software Foundation; either version 2 of the License, or
3069 ++# (at your option) any later version.
3070 ++#
3071 ++# This program is distributed in the hope that it will be useful,
3072 ++# but WITHOUT ANY WARRANTY; without even the implied warranty of
3073 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3074 ++# GNU Library General Public License for more details.
3075 ++#
3076 ++# You should have received a copy of the GNU General Public License
3077 ++# along with this program; if not, write to the Free Software
3078 ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
3079 ++
3080 ++# You may use and distribute this software under the terms of the
3081 ++# GNU General Public License, version 2 or later
3082 ++
3083 ++from plugins.imp import ImportPlugin as IP
3084 ++import os
3085 ++import gutils
3086 ++import string
3087 ++from xml.dom import minidom, Node
3088 ++import zipfile
3089 ++from shutil import rmtree
3090 ++from tempfile import mkdtemp
3091 ++
3092 ++import logging
3093 ++log = logging.getLogger("Griffith")
3094 ++
3095 ++
3096 ++class ImportPlugin(IP):
3097 ++ description = 'Tellico'
3098 ++ author = 'Elan Ruusamäe'
3099 ++ email = 'glen@×××××.ee'
3100 ++ version = '1.1'
3101 ++ file_filters = '*.[tT][cC]'
3102 ++ mime_types = None
3103 ++
3104 ++ fileversion = None
3105 ++ filedom = None
3106 ++ items = None
3107 ++ itemindex = 0
3108 ++ zipdir = None
3109 ++
3110 ++ def initialize(self):
3111 ++ if not IP.initialize(self):
3112 ++ return False
3113 ++ self.edit = False
3114 ++ return True
3115 ++
3116 ++ def set_source(self, name):
3117 ++ IP.set_source(self, name)
3118 ++ self.filename = name
3119 ++ self.fileversion = self.read_fileversion()
3120 ++ if self.fileversion == None:
3121 ++ gutils.error(_('The format of the file is not supported.'))
3122 ++ return False
3123 ++ return True
3124 ++
3125 ++ def count_movies(self):
3126 ++ """Returns number of movies in file which is about to be imported"""
3127 ++ count = 0
3128 ++ if self.filedom:
3129 ++ try:
3130 ++ collectionElement = self.filedom.getElementsByTagName('collection')[0]
3131 ++ for element in collectionElement.childNodes:
3132 ++ if element.nodeType == Node.ELEMENT_NODE and element.nodeName == 'entry':
3133 ++ count = count + 1
3134 ++ log.info('Tellico Import: %s movies for import' % count)
3135 ++ except:
3136 ++ log.exception('')
3137 ++ else:
3138 ++ log.error('Tellico Import: No filedom object.')
3139 ++ return count
3140 ++
3141 ++ def get_movie_details(self):
3142 ++ """Returns dictionary with movie details"""
3143 ++ if not self.filedom:
3144 ++ log.error('Tellico Import: filedom not open')
3145 ++ return None
3146 ++
3147 ++ if not self.items:
3148 ++ collectionElement = self.filedom.getElementsByTagName('collection')[0]
3149 ++ self.items = collectionElement.childNodes
3150 ++ self.itemindex = 0
3151 ++ if not self.items or len(self.items) < 1:
3152 ++ return None
3153 ++ if len(self.items) <= self.itemindex:
3154 ++ return None
3155 ++ item = self.items[self.itemindex]
3156 ++ while not (item.nodeType == Node.ELEMENT_NODE and item.nodeName == 'entry') and len(self.items) > self.itemindex + 1:
3157 ++ self.itemindex = self.itemindex + 1
3158 ++ item = self.items[self.itemindex]
3159 ++ if len(self.items) <= self.itemindex:
3160 ++ return None
3161 ++ if not len(item.childNodes):
3162 ++ return None
3163 ++
3164 ++ details = {}
3165 ++ try:
3166 ++ details['number'] = item.getAttribute('id')
3167 ++ for node in item.childNodes:
3168 ++ if node.nodeType == Node.ELEMENT_NODE and len(node.childNodes) > 0:
3169 ++ if node.nodeName == 'color':
3170 ++ value = node.childNodes[0].data.strip()
3171 ++ if value == 'Color':
3172 ++ details['color'] = 1
3173 ++ elif value == 'Black & White':
3174 ++ details['color'] = 2
3175 ++ elif node.nodeName == 'region':
3176 ++ details['region'] = node.childNodes[0].data.strip()
3177 ++ elif node.nodeName == 'running-time':
3178 ++ details['runtime'] = node.childNodes[0].data.strip()
3179 ++ try:
3180 ++ details['runtime'] = int(details['runtime'])
3181 ++ except:
3182 ++ details['runtime'] = 0
3183 ++ elif node.nodeName == 'year':
3184 ++ details['year'] = node.childNodes[0].data.strip()
3185 ++ elif node.nodeName == 'orig-title':
3186 ++ details['o_title'] = node.childNodes[0].data.strip()
3187 ++ elif node.nodeName == 'title':
3188 ++ details['title'] = node.childNodes[0].data.strip()
3189 ++ elif node.nodeName == 'directors':
3190 ++ details['director'] = self._joinXmlNodes(node.getElementsByTagName('director'))
3191 ++ elif node.nodeName == 'writers':
3192 ++ details['screenplay'] = self._joinXmlNodes(node.getElementsByTagName('writer'))
3193 ++ elif node.nodeName == 'o_site':
3194 ++ details['o_site'] = node.childNodes[0].data.strip()
3195 ++ elif node.nodeName == 'url':
3196 ++ details['site'] = node.childNodes[0].data.strip()
3197 ++ elif node.nodeName == 'nationalitys':
3198 ++ details['country'] = self._joinXmlNodes(node.getElementsByTagName('nationality'))
3199 ++ elif node.nodeName == 'genres':
3200 ++ details['genre'] = self._joinXmlNodes(node.getElementsByTagName('genre'))
3201 ++ elif node.nodeName == 'certification':
3202 ++ details['classification'] = node.childNodes[0].data.strip()
3203 ++ elif node.nodeName == 'casts':
3204 ++ details['cast'] = self._joinCastNodes(node.getElementsByTagName('cast'), separator = "\n")
3205 ++ elif node.nodeName == 'plot':
3206 ++ details['plot'] = node.childNodes[0].data.strip()
3207 ++ elif node.nodeName == 'comments':
3208 ++ details['notes'] = node.childNodes[0].data.strip()
3209 ++ elif node.nodeName == 'cover':
3210 ++ imgfile = node.childNodes[0].data.strip()
3211 ++ # use 'image' field, 'poster' field is buggy, bug #913283
3212 ++ # https://bugs.launchpad.net/griffith/+bug/913283
3213 ++ details['image'] = os.path.join(self.zipdir, 'images', imgfile)
3214 ++ except EOFError:
3215 ++ details = None
3216 ++ except Exception, e:
3217 ++ log.exception('')
3218 ++ details = None
3219 ++
3220 ++ self.itemindex = self.itemindex + 1
3221 ++ return details
3222 ++
3223 ++ def clear(self):
3224 ++ """clear plugin before next source file"""
3225 ++ IP.clear(self)
3226 ++ if self.filedom:
3227 ++ rmtree(self.zipdir)
3228 ++ self.zipdir = None
3229 ++ self.filedom.unlink()
3230 ++ self.filedom = None
3231 ++ self.fileversion = None
3232 ++ self.items = None
3233 ++ self.itemindex = 0
3234 ++
3235 ++ def destroy(self):
3236 ++ """close all resources"""
3237 ++ IP.destroy(self)
3238 ++
3239 ++ def read_fileversion(self):
3240 ++ version = None
3241 ++ try:
3242 ++ self.zipdir = self._extractZip(self.filename)
3243 ++ self.filedom = minidom.parse(os.path.join(self.zipdir, 'tellico.xml'))
3244 ++ rootElement = self.filedom.getElementsByTagName('tellico')[0]
3245 ++ version = rootElement.getAttribute('syntaxVersion')
3246 ++ except Exception, e:
3247 ++ log.error(str(e))
3248 ++ if self.filedom:
3249 ++ self.filedom.unlink()
3250 ++ self.filedom = None
3251 ++ log.info('Tellico: Found file version %s' % version)
3252 ++ return version
3253 ++
3254 ++ def _extractZip(self, filename):
3255 ++ zf = zipfile.ZipFile(filename, 'r')
3256 ++ tmpdir = mkdtemp(prefix = 'griffit2tellico')
3257 ++ zf.extractall(path = tmpdir)
3258 ++ return tmpdir
3259 ++
3260 ++ def _joinXmlNodes(self, elements, separator = ', '):
3261 ++ ret = ''
3262 ++ for element in elements:
3263 ++ if len(element.childNodes) > 0:
3264 ++ ret = ret + element.childNodes[0].data.strip() + separator
3265 ++
3266 ++ # chop off last separator
3267 ++ if len(elements) > 0:
3268 ++ ret = ret[:-len(separator)]
3269 ++ return ret
3270 ++
3271 ++ # join nodes for cast
3272 ++ def _joinCastNodes(self, elements, separator = ', '):
3273 ++ """
3274 ++ we assume that this format:
3275 ++ <cast>
3276 ++ <column>Actor/Actress</column>
3277 ++ <column>Role</column>
3278 ++ </cast>
3279 ++
3280 ++ ideally the columns likely came from header, which may differ:
3281 ++ <field flags="3" title="Cast" category="Cast" format="2" type="8" name="cast" description="...">
3282 ++ <prop name="column1" >Actor/Actress</prop>
3283 ++ <prop name="column2" >Role</prop>
3284 ++ <prop name="columns" >2</prop>
3285 ++ </field>
3286 ++ """
3287 ++
3288 ++ ret = ''
3289 ++ for element in elements:
3290 ++ actor = None
3291 ++ columns = element.getElementsByTagName('column')
3292 ++ actor = columns[0].childNodes[0].data.strip()
3293 ++ if len(columns) > 1 and len(columns[1].childNodes) > 0:
3294 ++ actor = actor + _(' as ') + columns[1].childNodes[0].data.strip()
3295 ++
3296 ++ if actor:
3297 ++ ret = ret + actor + separator
3298 ++
3299 ++ # chop off last separator
3300 ++ if len(elements) > 0:
3301 ++ ret = ret[:-len(separator)]
3302 ++
3303 ++ return ret
3304 +diff --git a/lib/plugins/imp/TheMovieLibrary.py b/lib/plugins/imp/TheMovieLibrary.py
3305 +index 9e4b1ef..f631f12 100644
3306 +--- a/lib/plugins/imp/TheMovieLibrary.py
3307 ++++ b/lib/plugins/imp/TheMovieLibrary.py
3308 +@@ -1,6 +1,6 @@
3309 + # -*- coding: utf-8 -*-
3310 +
3311 +-__revision__ = '$Id: TheMovieLibrary.py 1605 2011-12-18 22:35:25Z piotrek $'
3312 ++__revision__ = '$Id$'
3313 +
3314 + # Copyright (c) 2009
3315 +
3316 +diff --git a/lib/plugins/imp/WintoolzFilmdatenbank.py b/lib/plugins/imp/WintoolzFilmdatenbank.py
3317 +index baa29f6..db93487 100644
3318 +--- a/lib/plugins/imp/WintoolzFilmdatenbank.py
3319 ++++ b/lib/plugins/imp/WintoolzFilmdatenbank.py
3320 +@@ -1,6 +1,6 @@
3321 + # -*- coding: utf-8 -*-
3322 +
3323 +-__revision__ = '$Id: WintoolzFilmdatenbank.py 1605 2011-12-18 22:35:25Z piotrek $'
3324 ++__revision__ = '$Id$'
3325 +
3326 + # Copyright (c) 2009
3327 +
3328 +diff --git a/lib/plugins/imp/__init__.py b/lib/plugins/imp/__init__.py
3329 +index ccdce0b..28d538c 100644
3330 +--- a/lib/plugins/imp/__init__.py
3331 ++++ b/lib/plugins/imp/__init__.py
3332 +@@ -1,6 +1,6 @@
3333 + # -*- coding: UTF-8 -*-
3334 +
3335 +-__revision__ = '$Id: __init__.py 1497 2011-01-16 13:09:52Z mikej06 $'
3336 ++__revision__ = '$Id$'
3337 +
3338 + # Copyright (c) 2006-2011 Piotr Ożarowski
3339 + #
3340 +@@ -181,14 +181,11 @@ class ImportPlugin(object):
3341 + tags = details.pop('tags')
3342 + else:
3343 + tags = None
3344 ++ poster = None
3345 + if 'poster' in details:
3346 + poster = details.pop('poster')
3347 +- else:
3348 +- poster = None
3349 +- if 'image' in details:
3350 ++ elif 'image' in details:
3351 + poster = details.pop('image')
3352 +- else:
3353 +- poster = None
3354 + try:
3355 + # optional: do mapping of lookup data
3356 + if not self.foreignkeymaps:
3357 +@@ -229,6 +226,7 @@ class ImportPlugin(object):
3358 + db.tables.movie_tag.insert(bind=self.db.session.bind).execute({'movie_id': movie.lastrowid, 'tag_id': tag_id})
3359 + except:
3360 + pass
3361 ++ self.db.session.commit()
3362 + # adding poster
3363 + if poster:
3364 + if len(poster) > 4:
3365 +diff --git a/lib/plugins/imp/eXtremeMovieManager.py b/lib/plugins/imp/eXtremeMovieManager.py
3366 +index 5ab1e54..4dd31d6 100644
3367 +--- a/lib/plugins/imp/eXtremeMovieManager.py
3368 ++++ b/lib/plugins/imp/eXtremeMovieManager.py
3369 +@@ -1,6 +1,6 @@
3370 + # -*- coding: utf-8 -*-
3371 +
3372 +-__revision__ = '$Id: eXtremeMovieManager.py 1605 2011-12-18 22:35:25Z piotrek $'
3373 ++__revision__ = '$Id$'
3374 +
3375 + # Copyright (c) 2009
3376 +
3377 +diff --git a/lib/plugins/movie/PluginMovie7arte.py b/lib/plugins/movie/PluginMovie7arte.py
3378 +index 853ed5c..55a728c 100644
3379 +--- a/lib/plugins/movie/PluginMovie7arte.py
3380 ++++ b/lib/plugins/movie/PluginMovie7arte.py
3381 +@@ -1,6 +1,6 @@
3382 + # -*- coding: UTF-8 -*-
3383 +
3384 +-__revision__ = '$Id: PluginMovie7arte.py 1138 2009-01-31 21:48:43Z mikej06 $'
3385 ++__revision__ = '$Id$'
3386 +
3387 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ozarowski
3388 + #
3389 +diff --git a/lib/plugins/movie/PluginMovieAllRovi.py b/lib/plugins/movie/PluginMovieAllRovi.py
3390 +index 0e02ba8..dddba72 100644
3391 +--- a/lib/plugins/movie/PluginMovieAllRovi.py
3392 ++++ b/lib/plugins/movie/PluginMovieAllRovi.py
3393 +@@ -1,6 +1,6 @@
3394 + # -*- coding: UTF-8 -*-
3395 +
3396 +-__revision__ = '$Id: PluginMovieAllRovi.py 1605 2011-12-18 22:35:25Z piotrek $'
3397 ++__revision__ = '$Id$'
3398 +
3399 + # Copyright (c) 2009-2011
3400 + #
3401 +@@ -151,7 +151,7 @@ class SearchPluginTest(SearchPlugin):
3402 + # dict { movie_id -> [ expected result count for original url, expected result count for translated url ] }
3403 + #
3404 + test_configuration = {
3405 +- 'Rocky' : [ 57, 57 ],
3406 ++ 'Rocky' : [ 100, 100 ],
3407 + }
3408 +
3409 + class PluginTest:
3410 +@@ -195,7 +195,7 @@ Talia Shire',
3411 + 'country' : 'USA',
3412 + 'genre' : 'Drama',
3413 + 'classification' : False,
3414 +- 'studio' : 'Columbia Pictures, MGM, Revolution Studios, Chartoff Winkler Productions',
3415 ++ 'studio' : 'Chartoff Winkler Productions, Columbia Pictures, MGM, Revolution Studios',
3416 + 'o_site' : False,
3417 + 'site' : 'http://www.allrovi.com/movies/movie/rocky-balboa-v337682',
3418 + 'trailer' : False,
3419 +diff --git a/lib/plugins/movie/PluginMovieAllocine.py b/lib/plugins/movie/PluginMovieAllocine.py
3420 +index 7a8c078..601bbab 100644
3421 +--- a/lib/plugins/movie/PluginMovieAllocine.py
3422 ++++ b/lib/plugins/movie/PluginMovieAllocine.py
3423 +@@ -1,8 +1,8 @@
3424 + # -*- coding: UTF-8 -*-
3425 +
3426 +-__revision__ = '$Id: PluginMovieIMDB.py 176 2006-02-01 12:07:26Z iznogoud $'
3427 ++__revision__ = '$Id$'
3428 +
3429 +-# Copyright (c) 2005-2011 Vasco Nunes, Piotr Ozarowski
3430 ++# Copyright (c) 2005-2012 Vasco Nunes, Piotr Ozarowski
3431 + #
3432 + # This program is free software; you can redistribute it and/or modify
3433 + # it under the terms of the GNU General Public License as published by
3434 +@@ -21,6 +21,11 @@ __revision__ = '$Id: PluginMovieIMDB.py 176 2006-02-01 12:07:26Z iznogoud $'
3435 + # You may use and distribute this software under the terms of the
3436 + # GNU General Public License, version 2 or later
3437 +
3438 ++from datetime import date
3439 ++import hashlib
3440 ++import base64
3441 ++import string
3442 ++import urllib
3443 + import movie
3444 + try:
3445 + import simplejson as json
3446 +@@ -35,15 +40,25 @@ plugin_url = "www.allocine.fr"
3447 + plugin_language = _("French")
3448 + plugin_author = "Pierre-Luc Levy, Michael Jahn (JSON api)"
3449 + plugin_author_email = ""
3450 +-plugin_version = "1.0"
3451 ++plugin_version = "1.2"
3452 +
3453 +
3454 + class Plugin(movie.Movie):
3455 + def __init__(self, id):
3456 + self.movie_id = id
3457 +- self.url = "http://api.allocine.fr/xml/movie?partner=3&json=1&profile=large&code=%s" % str(self.movie_id)
3458 ++ self.query = "partner=100043982026&format=json&profile=large&code=%s" % str(self.movie_id)
3459 ++ self.url = "http://api.allocine.fr/rest/v3/movie?"
3460 + self.encode = 'utf-8'
3461 +-
3462 ++ self.useurllib2 = True
3463 ++
3464 ++ def open_page(self, parent_window=None, url=None):
3465 ++ query = self.query + '&sed=' + date.today().strftime("%Y%m%d")
3466 ++ to_signature = '29d185d98c984a359e6e6f26a0474269' + query
3467 ++ signature = urllib.quote_plus(base64.b64encode(hashlib.sha1(to_signature).digest()))
3468 ++ url = self.url + query + '&sig=' + signature
3469 ++ self.page = movie.Movie.open_page(self, parent_window, url)
3470 ++ return self.page
3471 ++
3472 + def initialize(self):
3473 + self.movie = json.JSONDecoder().decode(self.page)['movie']
3474 +
3475 +@@ -101,14 +116,14 @@ class Plugin(movie.Movie):
3476 + if 'code' in activity:
3477 + if activity['code'] == 8001:
3478 + if 'role' in cast:
3479 +- self.cast = self.cast + cast['person']['$'] + _(' as ') + cast['role'] + '\n'
3480 ++ self.cast = self.cast + cast['person']['name'] + _(' as ') + cast['role'] + '\n'
3481 + else:
3482 +- self.cast = self.cast + cast['person']['$'] + '\n'
3483 ++ self.cast = self.cast + cast['person']['name'] + '\n'
3484 +
3485 + def get_classification(self):
3486 + self.classification = ""
3487 + if 'movieCertificate' in self.movie:
3488 +- self.classification = self.movie['movieCertificate']['$']
3489 ++ self.classification = self.movie['movieCertificate']['certificate']['$']
3490 +
3491 + def get_studio(self):
3492 + self.studio = ""
3493 +@@ -159,7 +174,7 @@ class Plugin(movie.Movie):
3494 + activity = cast['activity']
3495 + if 'code' in activity:
3496 + if activity['code'] == code:
3497 +- result = result + cast['person']['$'] + ', '
3498 ++ result = result + cast['person']['name'] + ', '
3499 + if result:
3500 + result = result[:-2]
3501 + return result
3502 +@@ -168,12 +183,22 @@ class Plugin(movie.Movie):
3503 + class SearchPlugin(movie.SearchMovie):
3504 +
3505 + def __init__(self):
3506 +- self.original_url_search = "http://api.allocine.fr/xml/search?partner=3&json=1&count=100&profile=small&q="
3507 +- self.translated_url_search = "http://api.allocine.fr/xml/search?partner=3&json=1&count=100&profile=small&q="
3508 ++ self.search_query = "partner=100043982026&format=json&q=%s&filter=movie&count=100&page=1&profile=small"
3509 ++ self.search_url = "http://api.allocine.fr/rest/v3/search?"
3510 ++
3511 ++ self.original_url_search = "http://api.allocine.fr/rest/v3/search?partner=YW5kcm9pZC12M3M&count=100&profile=small&format=json&filter=movie&q="
3512 ++ self.translated_url_search = "http://api.allocine.fr/rest/v3/search?partner=YW5kcm9pZC12M3M&count=100&profile=small&format=json&filter=movie&q="
3513 + self.encode = 'utf-8'
3514 + self.remove_accents = True
3515 ++ self.useurllib2 = True
3516 +
3517 + def search(self, parent_window):
3518 ++ query = string.replace(self.search_query % self.title, ' ', '%20')
3519 ++ query = query + '&sed=' + date.today().strftime("%Y%m%d")
3520 ++ to_signature = '29d185d98c984a359e6e6f26a0474269' + query
3521 ++ signature = urllib.quote_plus(base64.b64encode(hashlib.sha1(to_signature).digest()))
3522 ++ self.title = self.search_url + query + '&sig=' + signature
3523 ++ self.url = ''
3524 + if not self.open_search(parent_window):
3525 + return None
3526 + return self.page
3527 +@@ -198,6 +223,7 @@ class SearchPlugin(movie.SearchMovie):
3528 + log.exception('')
3529 + except:
3530 + log.exception('')
3531 ++ log.error(self.page)
3532 +
3533 +
3534 + #
3535 +@@ -258,7 +284,7 @@ Francis Leplay' + _(' as ') + 'l\'agent immobilier',
3536 + 'o_title' : u'Terminator, The',
3537 + 'director' : u'James Cameron',
3538 + 'plot' : True,
3539 +- 'cast' : u'Arnold Schwarzenegger' + _(' as ') + 'le Terminator\n\
3540 ++ 'cast' : u'Arnold Schwarzenegger' + _(' as ') + 'Le Terminator\n\
3541 + Michael Biehn' + _(' as ') + 'Kyle Reese\n\
3542 + Linda Hamilton' + _(' as ') + 'Sarah Connor\n\
3543 + Lance Henriksen' + _(' as ') + 'l\'inspecteur Vukovich\n\
3544 +@@ -268,7 +294,7 @@ Rick Rossovich' + _(' as ') + 'Matt Buchanan\n\
3545 + Earl Boen' + _(' as ') + 'le Dr Peter Silberman\n\
3546 + Dick Miller' + _(' as ') + 'le marchand d\'armes\n\
3547 + Shawn Schepps' + _(' as ') + 'Nancy\n\
3548 +-Bill Paxton' + _(' as ') + 'le chef des punks\n\
3549 ++Bill Paxton' + _(' as ') + 'Le chef des punks\n\
3550 + Brian Thompson' + _(' as ') + 'un punk\n\
3551 + Marianne Muellerleile' + _(' as ') + 'la \'mauvaise\' Sarah Connor\n\
3552 + Franco Columbu' + _(' as ') + 'le Terminator infiltrant le bunker dans le futur\n\
3553 +@@ -306,7 +332,7 @@ Chino \'Fats\' Williams' + _(' as ') + 'Truck Driver',
3554 + 'notes' : False,
3555 + 'runtime' : 108,
3556 + 'image' : True,
3557 +- 'rating' : 8,
3558 ++ 'rating' : 7,
3559 + 'cameraman' : u'Adam Greenberg',
3560 + 'screenplay' : u'James Cameron, Gale Anne Hurd, Harlan Ellison, William Wisher',
3561 + 'barcode' : False
3562 +diff --git a/lib/plugins/movie/PluginMovieAmazon.py b/lib/plugins/movie/PluginMovieAmazon.py
3563 +index f853dc6..4382a31 100644
3564 +--- a/lib/plugins/movie/PluginMovieAmazon.py
3565 ++++ b/lib/plugins/movie/PluginMovieAmazon.py
3566 +@@ -2,7 +2,7 @@
3567 +
3568 + __revision__ = '$Id$'
3569 +
3570 +-# Copyright (c) 2006-2009
3571 ++# Copyright (c) 2006-2012
3572 + #
3573 + # This program is free software; you can redistribute it and/or modify
3574 + # it under the terms of the GNU General Public License as published by
3575 +@@ -125,7 +125,9 @@ class Plugin(movie.Movie):
3576 + if hasattr(self.page.EditorialReviews, 'EditorialReview'):
3577 + if isSequenceType(self.page.EditorialReviews.EditorialReview):
3578 + for review in self.page.EditorialReviews.EditorialReview:
3579 +- if string.find(review.Source, 'Amazon') > -1:
3580 ++ if hasattr(review, 'Source') and \
3581 ++ hasattr(review, 'Content') and \
3582 ++ string.find(review.Source, 'Amazon') > -1:
3583 + self.plot = review.Content
3584 + else:
3585 + if hasattr(self.page.EditorialReviews.EditorialReview, 'Source') and \
3586 +@@ -398,8 +400,8 @@ class SearchPluginTest(SearchPlugin):
3587 + # dict { movie_id -> [ expected result count for original url, expected result count for translated url ] }
3588 + #
3589 + test_configuration = {
3590 +- 'Rocky Balboa' : [ 22, 22 ],
3591 +- 'Arahan' : [ 9, 9 ],
3592 ++ 'Rocky Balboa' : [ 23, 23 ],
3593 ++ 'Arahan' : [ 10, 10 ],
3594 + 'Glück' : [ 100, 100 ]
3595 + }
3596 +
3597 +@@ -428,11 +430,11 @@ Burt Young',
3598 + 'o_site' : False,
3599 + 'site' : 'http://www.amazon.de/dp/B000TIQMMI',
3600 + 'trailer' : False,
3601 +- 'year' : 2006,
3602 ++ 'year' : 2007,
3603 + 'notes' : 'EAN: 4045167004504',
3604 + 'runtime' : 97,
3605 + 'image' : True,
3606 +- 'rating' : 8,
3607 ++ 'rating' : False,
3608 + 'barcode' : '4045167004504'
3609 + },
3610 + 'B0009NSASM' : {
3611 +@@ -450,11 +452,11 @@ Charles Gérard',
3612 + 'o_site' : False,
3613 + 'site' : 'http://www.amazon.de/dp/B0009NSASM',
3614 + 'trailer' : False,
3615 +- 'year' : 1973,
3616 ++ 'year' : 2008,
3617 + 'notes' : 'EAN: 7321921998843',
3618 + 'runtime' : 110,
3619 + 'image' : True,
3620 +- 'rating' : 10,
3621 ++ 'rating' : False,
3622 + 'barcode' : '7321921998843'
3623 + },
3624 + 'B000BSNOD6' : {
3625 +@@ -475,7 +477,7 @@ Ahn Sung-kee',
3626 + 'notes' : 'EAN: 4013549871105',
3627 + 'runtime' : 108,
3628 + 'image' : True,
3629 +- 'rating' : 8,
3630 ++ 'rating' : False,
3631 + 'barcode' : '4013549871105'
3632 + }
3633 + }
3634 +diff --git a/lib/plugins/movie/PluginMovieAniDB.py b/lib/plugins/movie/PluginMovieAniDB.py
3635 +index e38066d..31a9249 100644
3636 +--- a/lib/plugins/movie/PluginMovieAniDB.py
3637 ++++ b/lib/plugins/movie/PluginMovieAniDB.py
3638 +@@ -1,6 +1,6 @@
3639 + # -*- coding: utf-8 -*-
3640 +
3641 +-__revision__ = '$Id: PluginMovieAniDB.py 1594 2011-09-22 21:00:44Z mikej06 $'
3642 ++__revision__ = '$Id$'
3643 +
3644 + # Copyright © 2005-2011 Piotr Ożarowski
3645 + #
3646 +@@ -256,7 +256,7 @@ class PluginTest:
3647 + [Seras Victoria] voiced by Orikasa Fumiko\n\
3648 + [Incognito] voiced by Yamazaki Takumi',
3649 + 'country' : False,
3650 +- 'genre' : 'Law and Order, Alternative Present, Horror, Vampires, Gunfights, Action, Contemporary Fantasy, United Kingdom, Earth, Europe, Special Squads, Cops, Manga, Seinen, Violence, Fantasy, Present',
3651 ++ 'genre' : 'Law and Order, Alternative Present, Horror, Vampires, Gunfights, Action, Contemporary Fantasy, United Kingdom, Earth, Europe, Special Squads, Cops, Manga, Seinen, Violence, Fantasy, Present, London, Zombies',
3652 + 'classification' : False,
3653 + 'studio' : False,
3654 + 'o_site' : 'http://www.gonzo.co.jp/works/0102.html',
3655 +@@ -266,7 +266,7 @@ class PluginTest:
3656 + 'notes' : True,
3657 + 'runtime' : 0,
3658 + 'image' : True,
3659 +- 'rating' : 8,
3660 ++ 'rating' : 6,
3661 + 'cameraman' : False,
3662 + 'screenplay' : False
3663 + },
3664 +diff --git a/lib/plugins/movie/PluginMovieCSFD.py b/lib/plugins/movie/PluginMovieCSFD.py
3665 +index 922af1a..24ce575 100644
3666 +--- a/lib/plugins/movie/PluginMovieCSFD.py
3667 ++++ b/lib/plugins/movie/PluginMovieCSFD.py
3668 +@@ -41,9 +41,9 @@ class Plugin(movie.Movie):
3669 + self.url = "http://www.csfd.cz" + str(id)
3670 +
3671 + def get_image(self):
3672 +- self.image_url = re.search(r"content=\"http://img.csfd.cz/posters/([^\"]*)\"", self.page)
3673 ++ self.image_url = re.search(r"content=\"http://img.csfd.cz/files/images/film/posters/([^\"]*)\"", self.page)
3674 + if self.image_url:
3675 +- self.image_url = "http://img.csfd.cz/posters/" + gutils.strip_tags(self.image_url.group(1))
3676 ++ self.image_url = "http://img.csfd.cz/files/images/film/posters/" + gutils.strip_tags(self.image_url.group(1))
3677 + else:
3678 + self.image_url = ""
3679 +
3680 +@@ -130,7 +130,7 @@ class Plugin(movie.Movie):
3681 + a = re.sub("\n", "", a)
3682 + a = re.sub("<BR>", "", a)
3683 + try:
3684 +- self.plot = re.search(r'ka"([^<]*)', a).group(0)[6:]
3685 ++ self.plot = gutils.after(re.search(r'ka"([^<]*)', a).group(0), '>')
3686 + except:
3687 + self.plot = ""
3688 +
3689 +@@ -178,6 +178,18 @@ class Plugin(movie.Movie):
3690 + def get_classification(self):
3691 + self.classification = ""
3692 +
3693 ++ def get_screenplay(self):
3694 ++ self.screenplay = ''
3695 ++ tmp = gutils.trim(self.page, '>Scénář:<', '</div>')
3696 ++ if tmp:
3697 ++ tmp = string.split(tmp, "href=")
3698 ++ for item in tmp:
3699 ++ item = gutils.clean(gutils.trim(item, '>', '<'))
3700 ++ if item:
3701 ++ self.screenplay = self.screenplay + item + ', '
3702 ++ if self.screenplay:
3703 ++ self.screenplay = self.screenplay[:-2]
3704 ++
3705 +
3706 + class SearchPlugin(movie.SearchMovie):
3707 + def __init__(self):
3708 +@@ -214,7 +226,7 @@ class SearchPluginTest(SearchPlugin):
3709 + #
3710 + test_configuration = {
3711 + 'Cliffhanger' : [ 1, 1 ],
3712 +- 'Rocky' : [ 38, 38 ]
3713 ++ 'Rocky' : [ 41, 41 ]
3714 + }
3715 +
3716 +
3717 +@@ -245,10 +257,10 @@ Mike Tyson\n\
3718 + Michael Ahl\n\
3719 + Dean Maur',
3720 + 'country' : 'USA',
3721 +- 'genre' : 'Sportovní / Drama',
3722 ++ 'genre' : 'Sportovní / Drama / Akční / Romantický',
3723 + 'classification' : False,
3724 + 'studio' : False,
3725 +- 'o_site' : 'http://www.mgm.com/view/movie/1667/Rocky-Balboa/',
3726 ++ 'o_site' : False,
3727 + 'site' : 'http://www.imdb.com/title/tt0479143/',
3728 + 'trailer' : 'http://www.csfd.cz/film/221900-rocky-balboa/videa',
3729 + 'year' : 2006,
3730 +@@ -275,11 +287,13 @@ Craig Fairbrass\n\
3731 + Gregory Scott Cummins\n\
3732 + Max Perlich\n\
3733 + Paul Winfield\n\
3734 ++Ralph Waite\n\
3735 + Zach Grenier\n\
3736 + Don S. Davis\n\
3737 + Bruce McGill\n\
3738 + Jeff Blynn\n\
3739 +-John Fin',
3740 ++John Finn\n\
3741 ++Rosemary Dunsmor',
3742 + 'country' : 'USA / Itálie / Francie',
3743 + 'genre' : 'Akční / Dobrodružný / Thriller',
3744 + 'classification' : False,
3745 +diff --git a/lib/plugins/movie/PluginMovieCineMovies.py b/lib/plugins/movie/PluginMovieCineMovies.py
3746 +index 959e76e..33ee5ff 100644
3747 +--- a/lib/plugins/movie/PluginMovieCineMovies.py
3748 ++++ b/lib/plugins/movie/PluginMovieCineMovies.py
3749 +@@ -1,6 +1,6 @@
3750 + # -*- coding: UTF-8 -*-
3751 +
3752 +-__revision__ = '$Id: PluginMovieCineMovies.py 1577 2011-08-30 21:13:26Z mikej06 $'
3753 ++__revision__ = '$Id$'
3754 +
3755 + # Copyright (c) 2005-2011 Vasco Nunes, Piotr Ożarowski
3756 + #
3757 +@@ -30,66 +30,64 @@ plugin_url = "www.cinemovies.fr"
3758 + plugin_language = _("French")
3759 + plugin_author = "Vasco Nunes"
3760 + plugin_author_email = "<vasco.m.nunes@×××××.com>"
3761 +-plugin_version = "0.4"
3762 ++plugin_version = "0.5"
3763 +
3764 + class Plugin(movie.Movie):
3765 + def __init__(self, id):
3766 +- self.encode = 'iso-8859-1'
3767 ++ self.encode = 'utf-8'
3768 + self.movie_id = id
3769 +- self.url = "http://www.cinemovies.fr/fiche_film.php?IDfilm=" + str(self.movie_id)
3770 +-
3771 +- def initialize(self):
3772 +- self.page_cast = self.open_page(self.parent_window, url = 'http://www.cinemovies.fr/fiche_cast.php?IDfilm='+ str(self.movie_id))
3773 ++ self.url = "http://www.cinemovies.fr/film/" + str(self.movie_id)
3774 ++ print self.url
3775 +
3776 + def get_image(self):
3777 +- self.image_url = gutils.trim(self.page, '<link rel="image_src" href="', '">')
3778 ++ self.image_url = gutils.trim(gutils.trim(self.page, 'property="og:image"', '>'), '"', '"')
3779 +
3780 + def get_o_title(self):
3781 +- self.o_title = gutils.trim(self.page, 'Titre original :', '</tr>')
3782 ++ self.o_title = gutils.trim(self.page, 'Titre original :', '</span>')
3783 +
3784 + def get_title(self):
3785 +- self.title = gutils.trim(self.page, '<h1 class="h1artist" property="v:name">', '</h1>')
3786 ++ self.title = gutils.trim(gutils.trim(self.page, 'property="og:title"', '>'), '"', '"')
3787 +
3788 + def get_director(self):
3789 +- self.director = gutils.clean(gutils.trim(self.page_cast, u'Réalisé par</h2> :', '<div id="cast_film">'))
3790 ++ self.director = gutils.clean(gutils.trim(self.page, u'Réalisé par', '</span>'))
3791 + self.director = re.sub('[\n|\t]+', ', ', self.director)
3792 +
3793 + def get_plot(self):
3794 +- self.plot = gutils.trim(gutils.after(self.page, '>L\'histoire<'), '<div id="story_fiche" property="v:summary">', '</div>')
3795 ++ self.plot = gutils.after(gutils.trim(self.page, 'class="synopsis"', '</div>'), '>')
3796 +
3797 + def get_year(self):
3798 +- self.year = gutils.trim(self.page, 'Date(s) de Sortie(s)', '</a>')
3799 +- if len(self.year) > 4:
3800 +- self.year = self.year[len(self.year) - 4:len(self.year)]
3801 ++ self.year = gutils.trim(gutils.trim(self.page, 'Date de sortie :', '</span>'), 'content="', '-')
3802 +
3803 + def get_runtime(self):
3804 +- self.runtime = gutils.clean(gutils.trim(self.page, u'>Durée :', '</tr>'))
3805 ++ self.runtime = gutils.clean(gutils.trim(self.page, u'Durée : ', '</span>'))
3806 + if self.runtime:
3807 +- if self.runtime.find('h') > 0:
3808 +- self.runtime = str (int(gutils.before(self.runtime,'h'))*60 + int(gutils.after(self.runtime,'h')))
3809 ++ if self.runtime.find('H') > 0:
3810 ++ self.runtime = str (int(gutils.before(self.runtime,'H'))*60 + int(gutils.after(self.runtime,'H')))
3811 + else:
3812 + self.runtime = gutils.before(self.runtime,' mn')
3813 +
3814 + def get_genre(self):
3815 +- self.genre = gutils.trim(self.page, 'Genre :', '</tr>')
3816 ++ self.genre = gutils.trim(self.page, 'Genre :', '</span>')
3817 + self.genre = re.sub('[,][^,]*$', '', self.genre)
3818 + self.genre = self.genre.replace(',', ', ')
3819 +
3820 + def get_cast(self):
3821 +- self.cast = gutils.trim(self.page_cast, u'Comédiens</h2> :', '<div id="cast_film">')
3822 +- self.cast = self.cast.replace('\n', '')
3823 +- self.cast = self.cast.replace('</tr>', '\n')
3824 +- self.cast = re.sub('</a></h5>', _(' as '), self.cast)
3825 +- self.cast = gutils.clean(self.cast)
3826 +- self.cast = re.sub(_(' as ') + '[ \t]*(\n|$)', '\n', self.cast)
3827 +- self.cast = re.sub('[ \t]*\n[ \t]+', '\n', self.cast)
3828 ++ self.cast = ''
3829 ++ tmp = self.page.split('itemprop="actor"')
3830 ++ for element in tmp[1:]:
3831 ++ actor = gutils.trim(element, '>', '</span>')
3832 ++ role = gutils.after(gutils.trim(element, u'Rôle', '</span>'), ': ')
3833 ++ if role:
3834 ++ self.cast = self.cast + actor + _(' as ') + role + '\n'
3835 ++ else:
3836 ++ self.cast = self.cast + actor + '\n'
3837 +
3838 + def get_classification(self):
3839 + # not available on this site
3840 + self.classification = ''
3841 +
3842 + def get_studio(self):
3843 +- self.studio = string.strip(gutils.trim(self.page, 'Distributeur :', '</tr>'))
3844 ++ self.studio = string.strip(gutils.trim(self.page, 'Distributeur :', '</span>'))
3845 +
3846 + def get_o_site(self):
3847 + self.o_site = gutils.after(gutils.after(gutils.trim(self.page, '>Site(s) Officiel(s)<', '</a'), '<a '), '>')
3848 +@@ -108,35 +106,33 @@ class Plugin(movie.Movie):
3849 + self.rating = gutils.clean(gutils.trim(self.page, '<div class=number3>', '</div>'))
3850 +
3851 + def get_screenplay(self):
3852 +- self.screenplay = gutils.clean(gutils.trim(self.page_cast, u'Scénario de</h2> :', '<div id="cast_film">'))
3853 ++ self.screenplay = gutils.clean(gutils.trim(self.page, u'Scénario de</h2> :', '<div id="cast_film">'))
3854 + self.screenplay = re.sub('[\n|\t]+', ', ', self.screenplay)
3855 +
3856 +
3857 + class SearchPlugin(movie.SearchMovie):
3858 + def __init__(self):
3859 +- self.encode = 'iso-8859-1'
3860 +- self.original_url_search = "http://www.cinemovies.fr/resultat_recherche.php?typsearch=11&cherche="
3861 +- self.translated_url_search = "http://www.cinemovies.fr/resultat_recherche.php?typsearch=11&cherche="
3862 ++ self.encode = 'utf-8'
3863 ++ self.original_url_search = 'http://www.cinemovies.fr/rechercher/?e=m&page=1&q='
3864 ++ self.translated_url_search = 'http://www.cinemovies.fr/rechercher/?e=m&page=1&q='
3865 +
3866 + def search(self,parent_window):
3867 + if not self.open_search(parent_window):
3868 + return None
3869 +- self.sub_search()
3870 + return self.page
3871 +
3872 +- def sub_search(self):
3873 +- self.page = gutils.trim(self.page, '<div class=searchban>Les film', '<div class=spaceblank>')
3874 +-
3875 + def get_searches(self):
3876 +- elements = string.split(self.page, '<tr')
3877 ++ elements = string.split(self.page, '"><a href="http://www.cinemovies.fr/film/')
3878 + self.number_results = elements[-1]
3879 +
3880 + if (elements[0]<>''):
3881 + for element in elements:
3882 +- self.ids.append(gutils.trim(element, 'IDfilm=', '"'))
3883 +- title = gutils.convert_entities(gutils.strip_tags(gutils.after(gutils.trim(element, 'IDfilm=', '</a>'), '>')))
3884 +- year = gutils.after(gutils.trim(element, '<td valign="bottom"', '</td>'), '>')
3885 +- self.titles.append(title + ' (' + year + ')')
3886 ++ id = gutils.before(element, '"')
3887 ++ title = gutils.clean(gutils.trim(element, '>', '<'))
3888 ++ if id and title:
3889 ++ self.ids.append(id)
3890 ++ year = gutils.trim(element, '">Sortie le', '<')
3891 ++ self.titles.append(title + ' (' + year + ')')
3892 + else:
3893 + self.number_results = 0
3894 +
3895 +@@ -149,7 +145,7 @@ class SearchPluginTest(SearchPlugin):
3896 + # dict { movie_id -> [ expected result count for original url, expected result count for translated url ] }
3897 + #
3898 + test_configuration = {
3899 +- 'Rocky Balboa' : [ 2, 2 ],
3900 ++ 'Rocky Balboa' : [ 4, 4 ],
3901 + }
3902 +
3903 + class PluginTest:
3904 +@@ -161,7 +157,7 @@ class PluginTest:
3905 + # * or the expected value
3906 + #
3907 + test_configuration = {
3908 +- '6065' : {
3909 ++ 'rocky-balboa_e54849' : {
3910 + 'title' : 'Rocky Balboa',
3911 + 'o_title' : 'Rocky VI',
3912 + 'director' : 'Sylvester Stallone',
3913 +@@ -186,7 +182,7 @@ Lahmard J. Tate' + _(' as ') + 'X-Cell',
3914 + 'classification' : False,
3915 + 'studio' : 'Twentieth Century Fox France',
3916 + 'o_site' : 'http://www.sonypictures.com/movies/rocky/',
3917 +- 'site' : 'http://www.cinemovies.fr/fiche_film.php?IDfilm=6065',
3918 ++ 'site' : 'http://www.cinemovies.fr/film/rocky-balboa_e54849',
3919 + 'trailer' : 'http://www.cinemovies.fr/fiche_multimedia.php?IDfilm=6065',
3920 + 'year' : 2007,
3921 + 'notes' : False,
3922 +diff --git a/lib/plugins/movie/PluginMovieCinematografo.py b/lib/plugins/movie/PluginMovieCinematografo.py
3923 +index e17a526..3464102 100644
3924 +--- a/lib/plugins/movie/PluginMovieCinematografo.py
3925 ++++ b/lib/plugins/movie/PluginMovieCinematografo.py
3926 +@@ -1,6 +1,6 @@
3927 + # -*- coding: UTF-8 -*-
3928 +
3929 +-__revision__ = '$Id: PluginMovieCinematografo.py 1410 2010-03-27 21:11:21Z mikej06 $'
3930 ++__revision__ = '$Id$'
3931 +
3932 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
3933 + #
3934 +diff --git a/lib/plugins/movie/PluginMovieCineteka.py b/lib/plugins/movie/PluginMovieCineteka.py
3935 +index 2804408..bdf772c 100644
3936 +--- a/lib/plugins/movie/PluginMovieCineteka.py
3937 ++++ b/lib/plugins/movie/PluginMovieCineteka.py
3938 +@@ -134,7 +134,7 @@ class Plugin(movie.Movie):
3939 + class SearchPlugin(movie.SearchMovie):
3940 + """A movie search object"""
3941 + def __init__(self):
3942 +- self.original_url_search = "http://www.cineteka.com/index.php?op=MovieSearch&s="
3943 ++ self.original_url_search = "http://www.cineteka.com/index.php?op=MovieSearch&perfil_display=0&ordby=3&s="
3944 + self.translated_url_search = self.original_url_search
3945 + self.encode = 'iso-8859-1'
3946 +
3947 +@@ -142,7 +142,7 @@ class SearchPlugin(movie.SearchMovie):
3948 + """Perform the web search"""
3949 + if not self.open_search(parent_window):
3950 + return None
3951 +- self.page = gutils.trim(self.page, 'tulo(s): ', '<div class="menuright">')
3952 ++ self.page = gutils.after(self.page, '"Resultados Ordenados por:"')
3953 + return self.page
3954 +
3955 + def get_searches(self):
3956 +diff --git a/lib/plugins/movie/PluginMovieDVDEmpire.py b/lib/plugins/movie/PluginMovieDVDEmpire.py
3957 +index a1eaba9..e61cbac 100644
3958 +--- a/lib/plugins/movie/PluginMovieDVDEmpire.py
3959 ++++ b/lib/plugins/movie/PluginMovieDVDEmpire.py
3960 +@@ -1,6 +1,6 @@
3961 + # -*- coding: UTF-8 -*-
3962 +
3963 +-__revision__ = '$Id: PluginMovieDVDEmpire.py 1327 2009-12-08 20:38:46Z mikej06 $'
3964 ++__revision__ = '$Id$'
3965 +
3966 + # Copyright (c) 2007-2009
3967 + #
3968 +@@ -24,6 +24,7 @@ __revision__ = '$Id: PluginMovieDVDEmpire.py 1327 2009-12-08 20:38:46Z mikej06 $
3969 + import gutils
3970 + import movie
3971 + import re
3972 ++import string
3973 +
3974 + plugin_name = "DVD Empire"
3975 + plugin_description = "International Retailer of DVD Movies"
3976 +@@ -31,57 +32,68 @@ plugin_url = "www.dvdempire.com"
3977 + plugin_language = _("English")
3978 + plugin_author = "Michael Jahn"
3979 + plugin_author_email = "<mikej06@×××××××.com>"
3980 +-plugin_version = "1.1"
3981 ++plugin_version = "1.2"
3982 +
3983 + class Plugin(movie.Movie):
3984 + def __init__(self, id):
3985 + self.encode = 'iso-8859-1'
3986 + self.movie_id = id
3987 +- self.url = "http://www.dvdempire.com/Exec/v4_item.asp?item_id=" + str(self.movie_id)
3988 ++ self.url = "http://www.dvdempire.com" + str(self.movie_id)
3989 +
3990 + def get_image(self):
3991 +- tmp_page = gutils.trim(self.page, '<td align="center" valign="top" class="fontsmall">', '</td>')
3992 +- self.image_url = gutils.trim(tmp_page, '<img src=\'', '\' ')
3993 ++ tmp_page = gutils.trim(self.page, 'id="Boxcover"', '</div>')
3994 ++ self.image_url = gutils.trim(tmp_page, 'href="', '"')
3995 +
3996 + def get_o_title(self):
3997 +- self.o_title = gutils.strip_tags(gutils.trim(self.page,'<td class="fontxlarge" valign="top" align="left">', '<nobr>'))
3998 ++ self.o_title = gutils.strip_tags(gutils.trim(self.page, '<title>', '('))
3999 +
4000 + def get_title(self):
4001 +- self.title = gutils.strip_tags(gutils.trim(self.page,'<td class="fontxlarge" valign="top" align="left">', '<nobr>'))
4002 ++ self.title = gutils.strip_tags(gutils.trim(self.page, '<title>', '('))
4003 +
4004 + def get_director(self):
4005 +- self.director = gutils.strip_tags(gutils.trim(self.page,">Directors:","</a>"))
4006 ++ self.director = gutils.trim(self.page, '<h3>Director</h3>', '</div>')
4007 ++ self.director = self.director.replace('</li><li', '</li>, <li')
4008 + self.director = self.director.replace('&nbsp;', '')
4009 + self.director = self.director.replace('&#149;', '')
4010 +
4011 + def get_plot(self):
4012 +- self.plot = gutils.strip_tags(gutils.trim(self.page, '<td width="100%" valign="top" class="fontsmall3">', '</td>'))
4013 ++ self.plot = gutils.strip_tags(gutils.trim(self.page, 'Synopsis</h2>', '</div>'))
4014 + self.plot = self.plot.replace(u'\x93', '"')
4015 + self.plot = self.plot.replace(u'\x84', '"')
4016 +
4017 + def get_year(self):
4018 +- self.year = gutils.strip_tags(gutils.trim(self.page, '>Production Year:', '<br />'))
4019 ++ self.year = gutils.strip_tags(gutils.after(gutils.trim(self.page, 'Production Year', '<br'), '>'))
4020 +
4021 + def get_runtime(self):
4022 +- self.runtime = gutils.strip_tags(gutils.trim(self.page, '>Length:', '<br />'))
4023 ++ self.runtime = ''
4024 ++ tmp = gutils.strip_tags(gutils.trim(self.page, 'Length', '<br'))
4025 ++ #1 hrs. 59 mins.
4026 ++ try:
4027 ++ self.runtime = int(gutils.before(tmp, 'hrs')) * 60 + int(gutils.trim(tmp, '.', 'mins'))
4028 ++ except:
4029 ++ self.runtime = ''
4030 +
4031 + def get_genre(self):
4032 +- self.genre = gutils.strip_tags(gutils.trim(self.page, '>Genre</b>:', '</tr>'))
4033 ++ tmp = gutils.strip_tags(gutils.trim(self.page, '<h2>Categories</h2>', '</p>'))
4034 ++ tmp = tmp.replace('\r\n', '')
4035 ++ self.genre = re.sub('[ \t]+', ' ', tmp)
4036 +
4037 + def get_cast(self):
4038 +- self.cast = gutils.trim(self.page, '>Actors:', '</td><td')
4039 ++ self.cast = gutils.trim(self.page, '<h3>Cast</h3>', '</div>')
4040 + self.cast = self.cast.replace('<br>', '\n')
4041 + self.cast = self.cast.replace('<br />', '\n')
4042 + self.cast = self.cast.replace('&nbsp;', '')
4043 + self.cast = self.cast.replace('&#8226;', '')
4044 + self.cast = self.cast.replace('&#149;', '')
4045 ++ self.cast = self.cast.replace('</li><li', '</li>\n<li')
4046 ++ self.cast = self.cast.replace('</li><!-- non-headliners --><li', '</li>\n<li')
4047 + self.cast = gutils.strip_tags(self.cast)
4048 +
4049 + def get_classification(self):
4050 +- self.classification = gutils.strip_tags(gutils.trim(self.page, '>Rating:', '<br />'))
4051 ++ self.classification = gutils.strip_tags(gutils.trim(self.page, 'Rating</strong>', '<br'))
4052 +
4053 + def get_studio(self):
4054 +- self.studio = gutils.strip_tags(gutils.trim(self.page, '>Studio:', '<br />'))
4055 ++ self.studio = gutils.strip_tags(gutils.trim(self.page, 'Studio</strong>', '<br'))
4056 +
4057 + def get_o_site(self):
4058 + self.o_site = ""
4059 +@@ -96,7 +108,7 @@ class Plugin(movie.Movie):
4060 + self.country = ""
4061 +
4062 + def get_rating(self):
4063 +- self.rating = gutils.clean(gutils.trim(self.page, '>Overall Rating:', ' out of'))
4064 ++ self.rating = gutils.clean(gutils.trim(self.page, 'Overall Rating:', ' out of'))
4065 + try:
4066 + tmp_float = float(self.rating)
4067 + tmp_float = round(2 * tmp_float, 0)
4068 +@@ -106,90 +118,65 @@ class Plugin(movie.Movie):
4069 +
4070 + def get_notes(self):
4071 + self.notes = ''
4072 +- tmp_page = gutils.trim(self.page, 'Features:', '<b>')
4073 ++ tmp_page = gutils.trim(self.page, '<h3>Features</h3>', '</p>')
4074 + tmp_page = tmp_page.replace('<br>', '\n')
4075 + tmp_page = tmp_page.replace('<br />', '\n')
4076 + tmp_page = gutils.strip_tags(tmp_page)
4077 + if tmp_page <> '':
4078 +- tmp_page = re.sub('[\r\n]+', '\n', tmp_page)
4079 +- self.notes = self.notes + '\nFeatures:' + tmp_page + '\n'
4080 +- tmp_page = gutils.trim(self.page, 'Video:', '<b>')
4081 ++ self.notes = self.notes + 'Features:\n' + tmp_page + '\n\n'
4082 ++ tmp_page = gutils.trim(self.page, 'Video</strong>', '<strong>')
4083 ++ tmp_page = tmp_page.replace('\r\n', '')
4084 ++ tmp_page = re.sub('[ \t]+', ' ', tmp_page)
4085 + tmp_page = tmp_page.replace('<br>', '\n')
4086 + tmp_page = tmp_page.replace('<br />', '\n')
4087 + tmp_page = gutils.strip_tags(tmp_page)
4088 + if tmp_page <> '':
4089 +- tmp_page = re.sub('[\r\n]+', '\n', tmp_page)
4090 +- self.notes = self.notes + '\nVideo:' + tmp_page + '\n'
4091 +- tmp_page = gutils.trim(self.page, 'Audio:', '<b>')
4092 ++ self.notes = self.notes + 'Video:' + tmp_page
4093 ++ tmp_page = gutils.trim(self.page, 'Audio</strong>', '</div>')
4094 ++ tmp_page = tmp_page.replace('\r\n', '')
4095 ++ tmp_page = re.sub('[ \t]+', ' ', tmp_page)
4096 + tmp_page = tmp_page.replace('<br>', '\n')
4097 + tmp_page = tmp_page.replace('<br />', '\n')
4098 + tmp_page = tmp_page.replace('(more info)', '\n')
4099 + tmp_page = gutils.strip_tags(tmp_page)
4100 + if tmp_page <> '':
4101 +- tmp_page = re.sub('[\r\n]+', '\n', tmp_page)
4102 +- self.notes = self.notes + '\nAudio:' + tmp_page
4103 +- tmp_page = gutils.trim(self.page, 'Subtitles:', '<b>')
4104 +- tmp_page = gutils.strip_tags(tmp_page)
4105 +- if tmp_page <> '':
4106 +- tmp_page = re.sub('[\r\n]+', '\n', tmp_page)
4107 +- self.notes = self.notes + '\nSubtitles:\n' + tmp_page + '\n'
4108 ++ self.notes = self.notes + 'Audio:' + tmp_page
4109 +
4110 + def get_screenplay(self):
4111 +- self.screenplay = gutils.strip_tags(gutils.trim(self.page, '>Writers:', '</a>'))
4112 ++ self.screenplay = gutils.strip_tags(gutils.trim(self.page, 'Writers</strong>', '<br'))
4113 + self.screenplay = self.screenplay.replace('&nbsp;', '')
4114 + self.screenplay = self.screenplay.replace('&#149;', '')
4115 +
4116 + def get_barcode(self):
4117 +- self.barcode = gutils.trim(self.page, '<b>UPC Code:</b>', '<')
4118 ++ self.barcode = gutils.trim(self.page, 'UPC Code</strong>', '<br')
4119 ++
4120 +
4121 + class SearchPlugin(movie.SearchMovie):
4122 + def __init__(self):
4123 +- self.original_url_search = "http://www.dvdempire.com/Exec/v1_search_all.asp?&site_media_id=0&pp=&search_refined=32&used=0&string="
4124 +- self.translated_url_search = "http://www.dvdempire.com/Exec/v1_search_all.asp?&site_media_id=0&pp=&search_refined=32&used=0&string="
4125 ++ self.original_url_search = "http://www.dvdempire.com/allsearch/search?pageSize=100&q="
4126 ++ self.translated_url_search = "http://www.dvdempire.com/allsearch/search?pageSize=100&q="
4127 + self.encode = 'iso-8859-1'
4128 +
4129 + def search(self,parent_window):
4130 + if not self.open_search(parent_window):
4131 + return None
4132 +- # short the content
4133 +- tmp_page = gutils.trim(self.page,'<select name="sort"', 'Click Here to make a Suggestion</a>')
4134 +- #
4135 +- # try to get all result pages (not so nice, but it works)
4136 +- #
4137 +- tmp_pagecount = gutils.trim(self.page, '<div id="Search_Container" name="Search_Container">', '</table>')
4138 +- tmp_pagecountintuse = 1
4139 +- elements = tmp_pagecount.split("&page=")
4140 +- for element in elements:
4141 +- try:
4142 +- tmp_pagecountint = int(gutils.before(element, '\''))
4143 +- except:
4144 +- tmp_pagecountint = 0
4145 +- if tmp_pagecountint > tmp_pagecountintuse:
4146 +- tmp_pagecountintuse = tmp_pagecountint
4147 +- tmp_pagecountintcurrent = 1
4148 +- while tmp_pagecountintuse > tmp_pagecountintcurrent and tmp_pagecountintuse < 4:
4149 +- tmp_pagecountintcurrent = tmp_pagecountintcurrent + 1
4150 +- self.url = "http://www.dvdempire.com/Exec/v1_search_all.asp?&site_media_id=0&pp=&search_refined=32&used=0&page=" + str(tmp_pagecountintcurrent) + "&string="
4151 +- self.open_search(parent_window)
4152 +- if self.open_search(parent_window):
4153 +- tmp_page2 = gutils.trim(self.page,'<select name="sort"', 'Click Here to make a Suggestion</a>')
4154 +- tmp_page = tmp_page + tmp_page2
4155 +-
4156 +- self.page = tmp_page
4157 + return self.page
4158 +
4159 + def get_searches(self):
4160 +- split_pattern = re.compile('<a[\t ]+href=["\']/Exec/v4_item[.]asp[?](?:userid=[-0-9]+[&]amp;)*item_id=([0-9]+)\'')
4161 ++ split_pattern = re.compile('class="title"')
4162 + elements = split_pattern.split(self.page)
4163 +- for index in range(1, len(elements), 2):
4164 +- title_element = elements[index + 1]
4165 +- tmp_title = gutils.strip_tags(gutils.trim(title_element, '>', '</a>'))
4166 ++ for index in range(1, len(elements), 1):
4167 ++ title_element = elements[index]
4168 ++ tmp_title = gutils.clean(gutils.strip_tags(gutils.trim(title_element, '>', '</a>')))
4169 ++ tmp_title = string.replace(tmp_title, '&nbsp;', ' ')
4170 ++ tmp_title = string.replace(tmp_title, '&amp;', '&')
4171 ++ tmp_title = string.replace(tmp_title, '&quot;', '"')
4172 + if tmp_title <> '':
4173 +- self.ids.append(elements[index])
4174 +- type = re.search('<b>Blu-ray</b>', title_element)
4175 ++ self.ids.append(gutils.trim(elements[index], 'href="', '"'))
4176 ++ type = re.search('>Blu-ray</span>', title_element)
4177 + if type:
4178 + tmp_title = tmp_title + ' (Blu-ray)'
4179 +- type = re.search('<b>DVD-Video</b>', title_element)
4180 ++ type = re.search('>DVD-Video</span>', title_element)
4181 + if type:
4182 + tmp_title = tmp_title + ' (DVD)'
4183 + self.titles.append(tmp_title)
4184 +@@ -203,7 +190,7 @@ class SearchPluginTest(SearchPlugin):
4185 + # dict { movie_id -> [ expected result count for original url, expected result count for translated url ] }
4186 + #
4187 + test_configuration = {
4188 +- 'Rocky Balboa' : [ 2, 2 ],
4189 ++ 'Rocky Balboa' : [ 30, 30 ],
4190 + }
4191 +
4192 + class PluginTest:
4193 +@@ -215,45 +202,45 @@ class PluginTest:
4194 + # * or the expected value
4195 + #
4196 + test_configuration = {
4197 +- '1300280' : {
4198 +- 'title' : 'Rocky Balboa',
4199 +- 'o_title' : 'Rocky Balboa',
4200 +- 'director' : 'Sylvester Stallone',
4201 ++ '/1402424/meet-the-spartans-unrated-pit-of-death-edition-blu-ray.html' : {
4202 ++ 'title' : 'Meet The Spartans: Unrated Pit Of Death Edition',
4203 ++ 'o_title' : 'Meet The Spartans: Unrated Pit Of Death Edition',
4204 ++ 'director' : 'Jason Friedberg, Aaron Seltzer',
4205 + 'plot' : True,
4206 +- 'cast' : 'Sylvester Stallone\n\
4207 +-Burt Young\n\
4208 +-Geraldine Hughes\n\
4209 +-Milo Ventimiglia\n\
4210 +-Antonio Tarver',
4211 ++ 'cast' : 'Carmen Electra\n\
4212 ++Sean Maguire\n\
4213 ++Ken Davitian',
4214 + 'country' : False,
4215 +- 'genre' : 'Sports, Boxing, Drama',
4216 +- 'classification' : 'PG',
4217 +- 'studio' : 'Sony Pictures Home Entertainment',
4218 ++ 'genre' : 'Blu-ray, Comedy, Movies, Spoofs & Parodies',
4219 ++ 'classification' : 'NR',
4220 ++ 'studio' : '20th Century Fox',
4221 + 'o_site' : False,
4222 +- 'site' : 'http://www.dvdempire.com/Exec/v4_item.asp?item_id=1300280',
4223 ++ 'site' : 'http://www.dvdempire.com/1402424/meet-the-spartans-unrated-pit-of-death-edition-blu-ray.html',
4224 + 'trailer' : False,
4225 +- 'year' : 2006,
4226 ++ 'year' : 2008,
4227 + 'notes' : 'Features:\n\
4228 +-Deleted Scenes & Alternate Ending\n\
4229 +-Boxing\'s Bloopers\n\
4230 +-Skill Vs. Will: The Making of Rocky Balboa\n\
4231 +-Reality in the Ring: Filming Rocky\'s Final Fight\n\
4232 +-Virtual Champion: Creating the Computer Fight\n\
4233 +-Audio Commentary with Sylvester Stallone\n\
4234 ++Audio Commentary By Cast And Crew\n\
4235 ++Prepare For Thrusting Featurette\n\
4236 ++Tour The Set With Ike Barinholtz Featurette\n\
4237 ++Gag Reel\n\
4238 ++Know Your Spartans Pop Culture Trivia Game\n\
4239 ++Celebrity Kickoff Game\n\
4240 ++Super Pit-Of-Death Ultimate Tactical Battle Challange Game\n\
4241 ++Meet The Spartans: The Music\n\
4242 ++Trivial Track\n\
4243 ++Theatrical Trailers\n\
4244 + \n\
4245 + Video:\n\
4246 +-Widescreen 1.85:1 Color (Anamorphic) \n\
4247 +-\n\
4248 +-Audio: \n\
4249 +-ENGLISH: Dolby Digital 5.1 [CC]\n\
4250 +-FRENCH: Dolby Digital 5.1\n\
4251 ++ Widescreen 1.85:1 Color \n\
4252 + \n\
4253 +-Subtitles:\n\
4254 +-English, Spanish, French',
4255 +- 'runtime' : 102,
4256 ++Audio:\n\
4257 ++ French Dolby Digital Surround \n\
4258 ++ Spanish Dolby Digital Surround \n\
4259 ++ English DTS-HD MA 5.1',
4260 ++ 'runtime' : 87,
4261 + 'image' : True,
4262 +- 'rating' : 9,
4263 +- 'screenplay' : 'Sylvester Stallone',
4264 +- 'barcode' : '043396161900'
4265 ++ 'rating' : 5,
4266 ++ 'screenplay' : False,
4267 ++ 'barcode' : '024543522614'
4268 + },
4269 + }
4270 +diff --git a/lib/plugins/movie/PluginMovieDVDPalace.py b/lib/plugins/movie/PluginMovieDVDPalace.py
4271 +index 04c4327..25007db 100644
4272 +--- a/lib/plugins/movie/PluginMovieDVDPalace.py
4273 ++++ b/lib/plugins/movie/PluginMovieDVDPalace.py
4274 +@@ -1,8 +1,8 @@
4275 + # -*- coding: UTF-8 -*-
4276 +
4277 +-__revision__ = '$Id: PluginMovieDVDPalace.py 1409 2010-03-12 21:22:28Z mikej06 $'
4278 ++__revision__ = '$Id$'
4279 +
4280 +-# Copyright (c) 2006-2009
4281 ++# Copyright (c) 2006-2012
4282 + #
4283 + # This program is free software; you can redistribute it and/or modify
4284 + # it under the terms of the GNU General Public License as published by
4285 +@@ -32,14 +32,14 @@ plugin_url = "www.dvd-palace.de"
4286 + plugin_language = _("German")
4287 + plugin_author = "Michael Jahn"
4288 + plugin_author_email = "<mikej06@×××××××.com>"
4289 +-plugin_version = "1.2"
4290 ++plugin_version = "1.3"
4291 +
4292 + class Plugin(movie.Movie):
4293 +
4294 + def __init__(self, id):
4295 + self.encode = 'iso-8859-1'
4296 + self.movie_id = id
4297 +- self.url = 'http://www.dvd-palace.de/dvd-datenbank/' + self.movie_id
4298 ++ self.url = 'http://www.dvd-palace.de/datenbank/medien/' + self.movie_id
4299 +
4300 + def get_image(self):
4301 + self.image_url = gutils.trim(self.page, 'src="/showcover.php?', '"')
4302 +@@ -85,7 +85,9 @@ class Plugin(movie.Movie):
4303 + self.classification = string.replace(gutils.trim(self.page, 'Altersfreigabe (FSK)', '</TR>'), '&nbsp;', '')
4304 +
4305 + def get_studio(self):
4306 +- self.studio = string.replace(string.replace(gutils.trim(self.page, 'Label', '</td>'), '&nbsp;', ''), ':', '')
4307 ++ self.studio = string.replace(string.replace(gutils.trim(self.page, 'Label</b>', '</td>'), '&nbsp;', ''), ':', '')
4308 ++ if not self.studio:
4309 ++ self.studio = string.replace(string.replace(gutils.trim(self.page, 'Vertrieb</b>', '</td>'), '&nbsp;', ''), ':', '')
4310 +
4311 + def get_o_site(self):
4312 + self.o_site = ""
4313 +@@ -132,14 +134,34 @@ class Plugin(movie.Movie):
4314 + if (tmp_notes != ""):
4315 + self.notes = self.notes + "Untertitel:" + tmp_notes + "\n\n"
4316 +
4317 ++ def get_barcode(self):
4318 ++ self.barcode = gutils.trim(self.page, 'EAN', '</b>')
4319 ++
4320 ++
4321 + class SearchPlugin(movie.SearchMovie):
4322 +
4323 ++ translations = (
4324 ++ ('ü', 'ue'),
4325 ++ ('ä', 'ae'),
4326 ++ ('ö', 'oe'),
4327 ++ ('Ü', 'UE'),
4328 ++ ('Ä', 'AE'),
4329 ++ ('Ö', 'OE'),
4330 ++ ('ß', 'ss')
4331 ++ )
4332 ++
4333 + def __init__(self):
4334 + self.original_url_search = "http://www.dvd-palace.de/dvddatabase/dbsearch.php?action=1&suchbegriff="
4335 + self.translated_url_search = "http://www.dvd-palace.de/dvddatabase/dbsearch.php?action=1&suchbegriff="
4336 + self.encode='iso-8859-1'
4337 ++ self.remove_accents = False
4338 +
4339 + def search(self,parent_window):
4340 ++ # replace some standard german umlauts
4341 ++ for from_str, to_str in self.translations:
4342 ++ self.title = self.title.replace(from_str, to_str)
4343 ++ # AFTER that remove accents
4344 ++ self.title = gutils.remove_accents(str(self.title))
4345 + if not self.open_search(parent_window):
4346 + return None
4347 + tmp_pagemovie = self.page
4348 +@@ -161,16 +183,17 @@ class SearchPlugin(movie.SearchMovie):
4349 + return self.page
4350 +
4351 + def get_searches(self):
4352 +- elements = re.split('&nbsp;<a title="[^"]+" href="(/dvd-datenbank/|/datenbank/blu-ray/)', self.page)
4353 ++ elements = re.split('&nbsp;<a title="[^"]+" href="(/datenbank/medien/dvd/|/datenbank/medien/blu-ray/)', self.page)
4354 + elements[0] = None
4355 + for index in range(1, len(elements), 2):
4356 + element = elements[index + 1]
4357 +- if elements[index] == '/datenbank/blu-ray/':
4358 +- medium = 'Blu-Ray'
4359 +- else:
4360 +- medium = 'DVD'
4361 + if element <> None:
4362 +- self.ids.append(gutils.before(element,'"'))
4363 ++ if elements[index] == '/datenbank/medien/blu-ray/':
4364 ++ medium = 'Blu-Ray'
4365 ++ self.ids.append('blu-ray/' + gutils.before(element,'"'))
4366 ++ else:
4367 ++ medium = 'DVD'
4368 ++ self.ids.append('dvd/' + gutils.before(element,'"'))
4369 + self.titles.append(
4370 + gutils.trim(element, '>', '</a>') +
4371 + gutils.clean(
4372 +diff --git a/lib/plugins/movie/PluginMovieDVDpt.py b/lib/plugins/movie/PluginMovieDVDpt.py
4373 +new file mode 100755
4374 +index 0000000..fac942f
4375 +--- /dev/null
4376 ++++ b/lib/plugins/movie/PluginMovieDVDpt.py
4377 +@@ -0,0 +1,143 @@
4378 ++# -*- coding: UTF-8 -*-
4379 ++
4380 ++__revision__ = '$Id: PluginMovieDVDpt.py 1138 2009-01-31 21:48:43Z mikej06 $'
4381 ++
4382 ++# Copyright (c) 2005-2009 Vasco Nunes, Piotr Ozarowski
4383 ++#
4384 ++# This program is free software; you can redistribute it and/or modify
4385 ++# it under the terms of the GNU General Public License as published by
4386 ++# the Free Software Foundation; either version 2 of the License, or
4387 ++# (at your option) any later version.
4388 ++#
4389 ++# This program is distributed in the hope that it will be useful,
4390 ++# but WITHOUT ANY WARRANTY; without even the implied warranty of
4391 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4392 ++# GNU Library General Public License for more details.
4393 ++#
4394 ++# You should have received a copy of the GNU General Public License
4395 ++# along with this program; if not, write to the Free Software
4396 ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
4397 ++
4398 ++# You may use and distribute this software under the terms of the
4399 ++# GNU General Public License, version 2 or later
4400 ++
4401 ++import gutils
4402 ++import movie
4403 ++import string
4404 ++
4405 ++plugin_name = "DVDpt"
4406 ++plugin_description = ""
4407 ++plugin_url = "dvdpt.com"
4408 ++plugin_language = _("Portuguese")
4409 ++plugin_author = "Ivo Nunes"
4410 ++plugin_author_email = "<netherblood@×××××.com>"
4411 ++plugin_version = "0.1"
4412 ++
4413 ++class Plugin(movie.Movie):
4414 ++ """A movie plugin object"""
4415 ++ def __init__(self, id):
4416 ++ self.encode='iso-8859-1'
4417 ++ self.movie_id = id
4418 ++ self.url = "http://www.dvdpt.com/" + str(self.movie_id) + ".php"
4419 ++
4420 ++ def get_image(self):
4421 ++ """Finds the film's poster image"""
4422 ++ self.image_url = "http://www.dvdpt.com/" + str(self.movie_id) + ".jpg"
4423 ++
4424 ++ def get_o_title(self):
4425 ++ """Finds the film's original title"""
4426 ++ self.o_title = string.capwords(gutils.trim(self.page, '<font face=arial size=-1><b>"', '"'))
4427 ++
4428 ++ def get_title(self):
4429 ++ """Finds the film's local title.
4430 ++ Probably the original title translation"""
4431 ++ self.title = string.capwords(gutils.trim(self.page, "<title>", "</title>"))
4432 ++
4433 ++ def get_director(self):
4434 ++ """Finds the film's director"""
4435 ++ self.director = gutils.trim(self.page, "<b>REALIZADOR</b></font>\n<br />\n<font face=arial size=-1>", "\n<br /><br />")
4436 ++ self.director = gutils.strip_tags(self.director)
4437 ++
4438 ++ def get_plot(self):
4439 ++ """Finds the film's plot"""
4440 ++ self.plot = gutils.trim(self.page, '<center>\n<b>"', '"</b><br />')
4441 ++
4442 ++ def get_year(self):
4443 ++ """Finds the film's year"""
4444 ++ self.year = gutils.trim(self.page, '" (', ' -')
4445 ++
4446 ++ def get_runtime(self):
4447 ++ """Finds the film's running time"""
4448 ++ self.runtime = gutils.trim(self.page, " - ", "m)")
4449 ++ #self.runtime = gutils.after(self.runtime, "-1>")
4450 ++
4451 ++ def get_genre(self):
4452 ++ """Finds the film's genre"""
4453 ++ self.genre = ""
4454 ++
4455 ++ def get_cast(self):
4456 ++ self.cast = gutils.trim(self.page, "<b>INTÉRPRETES</b></font>\n<br />\n<font face=arial size=-1>", "\n</div>")
4457 ++
4458 ++ def get_classification(self):
4459 ++ """Find the film's classification"""
4460 ++ self.classification = ""
4461 ++
4462 ++ def get_studio(self):
4463 ++ """Find the studio"""
4464 ++ self.studio = gutils.trim(self.page, "<font color=red face=arial size=-1><b>ESTÚDIO</b></font> \n<br />\n<font face=arial size=-1>", "<br />")
4465 ++
4466 ++ def get_o_site(self):
4467 ++ """Find the film's oficial site"""
4468 ++ self.o_site = ""
4469 ++
4470 ++ def get_site(self):
4471 ++ """Find the film's imdb details page"""
4472 ++ self.site = ""
4473 ++
4474 ++ def get_trailer(self):
4475 ++ """Find the film's trailer page or location"""
4476 ++ self.trailer = ""
4477 ++
4478 ++ def get_country(self):
4479 ++ """Find the film's country"""
4480 ++ self.country = ""
4481 ++
4482 ++ def get_rating(self):
4483 ++ """Find the film's rating. From 0 to 10.
4484 ++ Convert if needed when assigning."""
4485 ++ self.rating = ""
4486 ++
4487 ++class SearchPlugin(movie.SearchMovie):
4488 ++ """A movie search object"""
4489 ++ def __init__(self):
4490 ++ self.original_url_search = "http://search.freefind.com/find.html?id=58910933&pageid=r&mode=all&n=0&query="
4491 ++ self.translated_url_search = "http://search.freefind.com/find.html?id=58910933&pageid=r&mode=all&n=0&query="
4492 ++ self.encode = 'utf-8'
4493 ++
4494 ++ def search(self, parent_window):
4495 ++ """Perform the web search"""
4496 ++ if not self.open_search(parent_window):
4497 ++ return None
4498 ++ self.sub_search()
4499 ++ return self.page
4500 ++
4501 ++ def sub_search(self):
4502 ++ """Isolating just a portion (with the data we want) of the results"""
4503 ++ self.page = gutils.trim(self.page, \
4504 ++ "<!-- search results copyright FreeFind.com. All rights reserved. Results may not be re-used, meta searched, or searched robotically -->", "<table class=search-nav-form-table>")
4505 ++
4506 ++ def get_searches(self):
4507 ++ """Try to find both id and film title for each search result"""
4508 ++ elements = string.split(self.page, "<br>")
4509 ++ self.number_results = elements[-1]
4510 ++
4511 ++ if (len(elements[0])):
4512 ++ for element in elements:
4513 ++ self.ids.append(gutils.trim(element, '<a href="http://www.dvdpt.com/', '.php" >'))
4514 ++ title = gutils.trim(element, '.php" >', '</a>')
4515 ++ title = title.replace("<b>", "")
4516 ++ title = title.replace("</b>", "")
4517 ++ self.titles.append(title)
4518 ++ else:
4519 ++ self.number_results = 0
4520 ++
4521 +diff --git a/lib/plugins/movie/PluginMovieE-Pipoca.py b/lib/plugins/movie/PluginMovieE-Pipoca.py
4522 +index a3dbd62..c885d54 100644
4523 +--- a/lib/plugins/movie/PluginMovieE-Pipoca.py
4524 ++++ b/lib/plugins/movie/PluginMovieE-Pipoca.py
4525 +@@ -1,6 +1,6 @@
4526 + # -*- coding: UTF-8 -*-
4527 +
4528 +-__revision__ = '$Id: PluginMovieE-Pipoca.py 1548 2011-05-18 11:36:17Z mikej06 $'
4529 ++__revision__ = '$Id$'
4530 +
4531 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
4532 + #
4533 +@@ -242,7 +242,7 @@ Paul Dion Monte' + _(' as ') + 'Amigo de Robert\n\
4534 + Kevin King Templeton' + _(' as ') + 'Amigo de Robert\n\
4535 + Robert Michael Kelly' + _(' as ') + 'Senhor Tomilson\n\
4536 + Rick Buchborn' + _(' as ') + 'Fã de Rocky\n\
4537 +-Nick Baker' + _(' as ') + 'Bartender do pub irlandês\n\
4538 ++Nick Baker (1)' + _(' as ') + 'Bartender do pub irlandês\n\
4539 + Don Sherman' + _(' as ') + 'Andy\n\
4540 + Stu Nahan' + _(' as ') + 'Comentarista da luta pelo computador\n\
4541 + Gary Compton' + _(' as ') + 'Segurança\n\
4542 +diff --git a/lib/plugins/movie/PluginMovieFDb.py b/lib/plugins/movie/PluginMovieFDb.py
4543 +index 65cc032..83f2acd 100644
4544 +--- a/lib/plugins/movie/PluginMovieFDb.py
4545 ++++ b/lib/plugins/movie/PluginMovieFDb.py
4546 +@@ -1,6 +1,6 @@
4547 + # -*- coding: utf-8 -*-
4548 +
4549 +-__revision__ = '$Id: PluginMovieFDb.py 1385 2010-01-06 19:47:44Z kura666 $'
4550 ++__revision__ = '$Id$'
4551 +
4552 + # Copyright (c) 2006-2007 Piotr Ozarowski
4553 + #
4554 +diff --git a/lib/plugins/movie/PluginMovieFilmAffinity.py b/lib/plugins/movie/PluginMovieFilmAffinity.py
4555 +index 92f4f5d..2b90de5 100644
4556 +--- a/lib/plugins/movie/PluginMovieFilmAffinity.py
4557 ++++ b/lib/plugins/movie/PluginMovieFilmAffinity.py
4558 +@@ -31,7 +31,7 @@ plugin_url = 'www.filmaffinity.com'
4559 + plugin_language = _('Spanish')
4560 + plugin_author = 'Pedro D. Sánchez'
4561 + plugin_author_email = '<pedrodav@×××××.com>'
4562 +-plugin_version = '0.6'
4563 ++plugin_version = '0.7'
4564 +
4565 + class Plugin(movie.Movie):
4566 + def __init__(self, id):
4567 +@@ -51,43 +51,41 @@ class Plugin(movie.Movie):
4568 + self.image_url = 'http://' + gutils.before(self.page[tmp.start():], '"')
4569 +
4570 + def get_o_title(self):
4571 +- self.o_title = gutils.trim(self.page, u'<th>T&Iacute;TULO ORIGINAL</th>', '</strong></td>')
4572 +- self.o_title = gutils.after(self.o_title, '<strong>')
4573 ++ self.o_title = gutils.trim(self.page, u'<dt>T&iacute;tulo original</dt>', '</dd>')
4574 + self.o_title = re.sub('[ ]+', ' ', self.o_title)
4575 + self.o_title = re.sub('([(]Serie de TV[)]|[(]TV[)]|[(]TV Series[)])', '', self.o_title)
4576 +
4577 + def get_title(self):
4578 +- self.title = gutils.trim(self.page, 'www.filmaffinity.com/images/movie.gif" border="0"> ', '</span>')
4579 ++ self.title = gutils.after(gutils.trim(self.page, 'id="main-title"', '</a>'), '>')
4580 + self.title = re.sub('[ ]+', ' ', self.title)
4581 + self.title = re.sub('([(]Serie de TV[)]|[(]TV[)]|[(]TV Series[)])', '', self.title)
4582 +
4583 + def get_director(self):
4584 +- self.director = gutils.trim(self.page,'<th>DIRECTOR</th>', '</td>')
4585 ++ self.director = gutils.trim(self.page,'<dt>Director</dt>', '</dd>')
4586 +
4587 + def get_plot(self):
4588 +- self.plot = gutils.trim(self.page, '<th>SINOPSIS</th>', '</td>')
4589 ++ self.plot = gutils.trim(self.page, '<dt>Sinopsis</dt>', '</dd>')
4590 + self.plot = string.replace(self.plot, ' (FILMAFFINITY)', '')
4591 + self.plot = string.replace(self.plot, '(FILMAFFINITY)', '')
4592 +
4593 + def get_year(self):
4594 +- self.year = gutils.trim(self.page, '<th>A&Ntilde;O</th>', '</td>')
4595 ++ self.year = gutils.trim(self.page, '<dt>A&ntilde;o</dt>', '</dd>')
4596 + self.year = gutils.clean(self.year)
4597 +
4598 + def get_runtime(self):
4599 +- self.runtime = gutils.trim(self.page, '<th>DURACI&Oacute;N</th>', ' min.')
4600 +- self.runtime = gutils.after(self.runtime[-10:], '<td>')
4601 ++ self.runtime = gutils.trim(self.page, '<dt>Duraci&oacute;n</dt>', 'min.')
4602 ++ self.runtime = gutils.clean(self.runtime)
4603 +
4604 + def get_genre(self):
4605 + self.genre = ''
4606 +- tmp = gutils.trim(self.page, '<th>G&Eacute;NERO</th>', '</tr>')
4607 +- tmp = gutils.after(tmp, '<td>')
4608 ++ tmp = gutils.trim(self.page, '<dt>G&eacute;nero</dt>', '</dd>')
4609 + if tmp:
4610 + self.genre = gutils.clean(string.replace(tmp, ' | ', '. '))
4611 + self.genre = re.sub('[.][ \t]+', '. ', self.genre)
4612 +
4613 + def get_cast(self):
4614 + self.cast = ''
4615 +- self.cast = gutils.trim(self.page, '<th>REPARTO</th>', '</td>')
4616 ++ self.cast = gutils.trim(self.page, '<dt>Reparto</dt>', '</dd>')
4617 + self.cast = re.sub('</a>,[ ]*', '\n', self.cast)
4618 + self.cast = string.strip(gutils.strip_tags(self.cast))
4619 + self.cast = re.sub('[ ]+', ' ', self.cast)
4620 +@@ -97,11 +95,10 @@ class Plugin(movie.Movie):
4621 + self.classification = ''
4622 +
4623 + def get_studio(self):
4624 +- self.studio = gutils.trim(self.page, '<th>PRODUCTORA</th>', '</td>')
4625 +- self.studio = gutils.after(self.studio, '<td>')
4626 ++ self.studio = gutils.trim(self.page, '<dt>Productora</dt>', '</dd>')
4627 +
4628 + def get_o_site(self):
4629 +- self.o_site = gutils.trim(self.page, '<th>WEB OFICIAL</th>', '</a>')
4630 ++ self.o_site = gutils.trim(self.page, '<dt>Web Oficial</dt>', '</a>')
4631 + self.o_site = gutils.after(self.o_site, '">')
4632 +
4633 + def get_site(self):
4634 +@@ -111,23 +108,19 @@ class Plugin(movie.Movie):
4635 + self.trailer = ''
4636 +
4637 + def get_country(self):
4638 +- self.country = gutils.trim(self.page, '<b>PA&Iacute;S</th>', '</td>')
4639 +- tmp = gutils.trim(self.country, 'alt="', '"')
4640 +- if tmp == '':
4641 +- self.country = gutils.trim(self.country, 'title="', '"')
4642 +- else:
4643 +- self.country = tmp
4644 ++ self.country = gutils.trim(self.page, '<dt>Pa&iacute;s</dt>', '</dd>')
4645 +
4646 + def get_rating(self):
4647 +- self.rating = gutils.trim(self.page, '<div style="margin: 4px 0; color:#990000; font-size:22px; font-weight: bold;">', '</div>')
4648 ++ self.rating = gutils.after(gutils.trim(self.page, 'id="movie-rat-avg"', '</div>'), '>')
4649 + if self.rating:
4650 + self.rating = str(round(float(gutils.clean(string.replace(self.rating, ',', '.')))))
4651 +
4652 + def get_cameraman(self):
4653 +- self.cameraman = gutils.trim(self.page, '<th>FOTOGRAF&Iacute;A</th>','</td>')
4654 ++ self.cameraman = gutils.trim(self.page, '<dt>Fotograf&iacute;a</dt>','</dd>')
4655 +
4656 + def get_screenplay(self):
4657 +- self.screenplay = gutils.trim(self.page, '<th>GUI&Oacute;N</th>', '</td>')
4658 ++ self.screenplay = gutils.trim(self.page, '<dt>Gui&oacute;n</dt>', '</dd>')
4659 ++
4660 +
4661 + class SearchPlugin(movie.SearchMovie):
4662 +
4663 +@@ -143,17 +136,17 @@ class SearchPlugin(movie.SearchMovie):
4664 + self.sub_search(parent_window)
4665 + if self.page <> '':
4666 + return self.page
4667 +- auxPage = gutils.trim(auxPage, u'<b>TU CRÍTICA</b></div>', '</a>')
4668 +- self.page = gutils.trim(auxPage, 'movie_id=', '">')
4669 ++ auxPage = gutils.trim(auxPage, 'id="main-title"', '</a>')
4670 ++ self.page = gutils.trim(auxPage, 'es/film', '.html')
4671 + return self.page
4672 +
4673 + def sub_search(self, parent_window):
4674 +- moviepage = gutils.trim(self.page, u'Resultados por título</span>', '<div id="bpanel">')
4675 ++ moviepage = gutils.trim(self.page, u'Resultados por título</h1>', '<div id="bpanel">')
4676 + nextpage = self.get_nextpage_url()
4677 + while nextpage:
4678 + self.url = nextpage
4679 + self.open_search(parent_window)
4680 +- moviepage = moviepage + gutils.trim(self.page, u'Resultados por título</span>', '<div id="bpanel">')
4681 ++ moviepage = moviepage + gutils.trim(self.page, u'Resultados por título</h1>', '<div id="bpanel">')
4682 + nextpage = self.get_nextpage_url()
4683 + self.page = moviepage
4684 +
4685 +@@ -173,18 +166,13 @@ class SearchPlugin(movie.SearchMovie):
4686 + self.ids.append(self.page)
4687 + self.titles.append(self.url)
4688 + else: # multiple matches
4689 +- elements = string.split(self.page, '</a></b>')
4690 +-
4691 +- if (elements[0]<>''):
4692 +- for index in range(0, len(elements) - 1, 1):
4693 +- element = elements[index]
4694 +- nextelement = elements[index + 1]
4695 +- id = gutils.trim(element, '<b><a href="/es/film', '.html')
4696 +- if id:
4697 +- self.ids.append(id)
4698 +- title = gutils.clean(gutils.after(element, '<b><a href="/es/film')).replace("\n", "")
4699 +- title = gutils.strip_tags(gutils.convert_entities(gutils.after(title, '>'))) + ' ' + string.strip(gutils.before(nextelement, '<'))
4700 +- self.titles.append(title)
4701 ++ elements = string.split(self.page, 'class="mc-title"')
4702 ++ for element in elements[1:]:
4703 ++ id = gutils.trim(element, 'href="/es/film', '.html')
4704 ++ title = gutils.clean(gutils.trim(element, '>', '</div>'))
4705 ++ if id:
4706 ++ self.ids.append(id)
4707 ++ self.titles.append(title)
4708 +
4709 + #
4710 + # Plugin Test
4711 +@@ -195,8 +183,8 @@ class SearchPluginTest(SearchPlugin):
4712 + # dict { movie_id -> [ expected result count for original url, expected result count for translated url ] }
4713 + #
4714 + test_configuration = {
4715 +- 'Rocky' : [ 17, 17 ],
4716 +- 'Darkness' : [59, 59 ]
4717 ++ 'Rocky' : [ 18, 18 ],
4718 ++ 'Darkness' : [74, 74 ]
4719 + }
4720 +
4721 + class PluginTest:
4722 +@@ -220,7 +208,6 @@ Geraldine Hughes\n\
4723 + Milo Ventimiglia\n\
4724 + Tony Burton\n\
4725 + James Francis Kelly III\n\
4726 +-Talia Shire\n\
4727 + Angela Boyd\n\
4728 + A.J. Benza\n\
4729 + Mike Tyson',
4730 +diff --git a/lib/plugins/movie/PluginMovieFilmDb.py b/lib/plugins/movie/PluginMovieFilmDb.py
4731 +deleted file mode 100644
4732 +index 4c1a4d1..0000000
4733 +--- a/lib/plugins/movie/PluginMovieFilmDb.py
4734 ++++ /dev/null
4735 +@@ -1,322 +0,0 @@
4736 +-# -*- coding: UTF-8 -*-
4737 +-
4738 +-__revision__ = '$Id: PluginMovieFilmDb.py 1577 2011-08-30 21:13:26Z mikej06 $'
4739 +-
4740 +-# Copyright (c) 2007-2009 Michael Jahn
4741 +-#
4742 +-# This program is free software; you can redistribute it and/or modify
4743 +-# it under the terms of the GNU General Public License as published by
4744 +-# the Free Software Foundation; either version 2 of the License, or
4745 +-# (at your option) any later version.
4746 +-#
4747 +-# This program is distributed in the hope that it will be useful,
4748 +-# but WITHOUT ANY WARRANTY; without even the implied warranty of
4749 +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4750 +-# GNU Library General Public License for more details.
4751 +-#
4752 +-# You should have received a copy of the GNU General Public License
4753 +-# along with this program; if not, write to the Free Software
4754 +-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
4755 +-
4756 +-# You may use and distribute this software under the terms of the
4757 +-# GNU General Public License, version 2 or later
4758 +-
4759 +-import gutils
4760 +-import movie
4761 +-import string, re
4762 +-
4763 +-plugin_name = 'FilmDb.de'
4764 +-plugin_description = 'FILMDB.DE'
4765 +-plugin_url = 'www.filmdb.de'
4766 +-plugin_language = _('German')
4767 +-plugin_author = 'Michael Jahn'
4768 +-plugin_author_email = '<mikej06@×××××××.com>'
4769 +-plugin_version = '1.1'
4770 +-
4771 +-class Plugin(movie.Movie):
4772 +- def __init__(self, id):
4773 +- self.encode = 'iso-8859-1'
4774 +- self.movie_id = id
4775 +- self.url = "http://www.filmdb.de/filmanzeige.php?alle=1&filmid=" + self.movie_id
4776 +-
4777 +- def get_image(self):
4778 +- tmp = gutils.regextrim(self.page, 'plakat.php[?]', '["\']')
4779 +- if tmp:
4780 +- page_image = self.open_page(url='http://www.filmdb.de/plakat.php?' + tmp)
4781 +- tmp = gutils.regextrim(self.page, 'bilder.filmdb.de', '["\']')
4782 +- if tmp:
4783 +- self.image_url = 'http://bilder.filmdb.de' + tmp
4784 +-
4785 +- def get_o_title(self):
4786 +- self.o_title = gutils.trim(self.page, '<h1>', '</h1>')
4787 +-
4788 +- def get_title(self):
4789 +- self.title = gutils.trim(self.page, '<h1>', '</h1>')
4790 +-
4791 +- def get_director(self):
4792 +- self.director = ''
4793 +- elements = re.split('regisseursuche.php?', self.page)
4794 +- elements[0] = ''
4795 +- listelement = ''
4796 +- for element in elements:
4797 +- if element <> '':
4798 +- self.director = self.director + listelement + gutils.trim(element, '>', '</a>')
4799 +- listelement = ', '
4800 +-
4801 +- def get_plot(self):
4802 +- self.plot = gutils.trim(self.page, 'noshade style=\'color:#FFCCCC;\'>', '<')
4803 +- if self.plot == '':
4804 +- self.plot = gutils.trim(self.page, 'noshade style=\'color:#FFCCCC;\'>', '"')
4805 +- self.plot = self.plot.replace('\t', '')
4806 +- self.plot = self.plot.replace('\n', '')
4807 +- self.plot = self.plot.replace(u'\x93', '"')
4808 +- self.plot = self.plot.replace(u'\x84', '"')
4809 +-
4810 +- def get_year(self):
4811 +- elements = string.split(self.page, 'landjahrsuche.php')
4812 +- if len(elements) > 1:
4813 +- self.year = gutils.trim(elements[2], '>', '</a>')
4814 +- else:
4815 +- self.year = ''
4816 +-
4817 +- def get_runtime(self):
4818 +- self.runtime = ""
4819 +- tmp = gutils.trim(self.page, 'L&auml;nge: ', '<')
4820 +- if tmp <> '':
4821 +- elements = string.split(tmp, ':')
4822 +- try:
4823 +- hours = int(elements[0])
4824 +- mins = int(elements[1])
4825 +- self.runtime = str(hours * 60 + mins)
4826 +- except:
4827 +- self.runtime = ""
4828 +-
4829 +- def get_genre(self):
4830 +- self.genre = gutils.after(gutils.trim(self.page, 'genresuche.php', '</a>'), '>')
4831 +-
4832 +- def get_cast(self):
4833 +- self.cast = ""
4834 +- tmp = gutils.trim(self.page, 'function schauspiel()', '}')
4835 +- if tmp == '':
4836 +- tmp = self.page
4837 +- elements = string.split(tmp, 'schauspielersuche.php')
4838 +- elements[0] = ''
4839 +- for element in elements:
4840 +- if element <> '':
4841 +- self.cast = self.cast + gutils.clean(gutils.trim(element, '>', '</a>')) + '\n'
4842 +-
4843 +- def get_classification(self):
4844 +- self.classification = ""
4845 +-
4846 +- def get_studio(self):
4847 +- self.studio = ""
4848 +-
4849 +- def get_o_site(self):
4850 +- self.o_site = ""
4851 +-
4852 +- def get_site(self):
4853 +- self.site = "http://www.filmdb.de/filmanzeige.php?filmid=" + self.movie_id
4854 +-
4855 +- def get_trailer(self):
4856 +- self.trailer = ""
4857 +-
4858 +- def get_country(self):
4859 +- elements = string.split(self.page, 'landjahrsuche.php')
4860 +- if len (elements) > 1:
4861 +- self.country = gutils.trim(elements[1], '>', '</a>') + '\n'
4862 +-
4863 +- def get_rating(self):
4864 +- self.rating = gutils.trim(self.page, 'Unsere User haben diesen Film mit ', ' bewertet.')
4865 +- self.rating = self.rating.replace('%', '')
4866 +- self.rating = gutils.strip_tags(self.rating)
4867 +- elements = self.rating.split('.')
4868 +- try:
4869 +- tmprating = int(elements[0])
4870 +- self.rating = str(tmprating / 10)
4871 +- except:
4872 +- self.rating = '0'
4873 +-
4874 +- def get_notes(self):
4875 +- self.notes = ''
4876 +-
4877 +-class SearchPlugin(movie.SearchMovie):
4878 +-
4879 +- def __init__(self):
4880 +- self.original_url_search = "http://www.filmdb.de/globalsuche.php?name="
4881 +- self.translated_url_search = "http://www.filmdb.de/globalsuche.php?name="
4882 +- self.encode = 'iso-8859-1'
4883 +- self.remove_accents = False
4884 +-
4885 +- def search(self,parent_window):
4886 +- if not self.open_search(parent_window):
4887 +- return None
4888 +- self.page = gutils.convert_entities(self.page)
4889 +- return self.page
4890 +-
4891 +- def get_searches(self):
4892 +- elements = re.split('(?:href=["]*filmanzeige[.]php[?]filmid=)', self.page)
4893 +- elements[0] = ''
4894 +- for element in elements:
4895 +- if element <> '':
4896 +- idmatch = re.search('([>]|["])', element)
4897 +- if idmatch:
4898 +- self.ids.append(element[:idmatch.end() - 1])
4899 +- # I don't know what <wbr> means but it breaks the result list
4900 +- element = string.replace(element, '<wbr>', '')
4901 +- element = string.replace(element, '<wbr />', '')
4902 +- # line breaks sometimes within the title
4903 +- element = string.replace(element, '<wbr>', '')
4904 +- element = string.replace(element, '<wbr />', '')
4905 +- self.titles.append(string.replace(gutils.trim(element, '>', '<') + ' (' +
4906 +- gutils.trim(gutils.after(element, '<td>'), '<td>', '</td>') + ', ' +
4907 +- gutils.trim(gutils.after(element, '</a>'), '<td>', '</td>') + ')', '\n', ' - '))
4908 +-
4909 +-#
4910 +-# Plugin Test
4911 +-#
4912 +-class SearchPluginTest(SearchPlugin):
4913 +- #
4914 +- # Configuration for automated tests:
4915 +- # dict { movie_id -> [ expected result count for original url, expected result count for translated url ] }
4916 +- #
4917 +- test_configuration = {
4918 +- 'Rocky Balboa' : [ 1, 1 ],
4919 +- 'Arahan' : [ 1, 1 ],
4920 +- 'Märchen' : [ 24, 24 ]
4921 +- }
4922 +-
4923 +-class PluginTest:
4924 +- #
4925 +- # Configuration for automated tests:
4926 +- # dict { movie_id -> dict { arribute -> value } }
4927 +- #
4928 +- # value: * True/False if attribute only should be tested for any value
4929 +- # * or the expected value
4930 +- #
4931 +- test_configuration = {
4932 +- 'Rocky%20Balboa' : {
4933 +- 'title' : 'Rocky Balboa',
4934 +- 'o_title' : 'Rocky Balboa',
4935 +- 'director' : 'Sylvester Stallone',
4936 +- 'plot' : True,
4937 +- 'cast' : 'Dolph Lundgren\n\
4938 +-Mike Tyson\n\
4939 +-Sylvester Stallone\n\
4940 +-Carl Weathers\n\
4941 +-Burt Young\n\
4942 +-Milo Ventimiglia\n\
4943 +-Talia Shire\n\
4944 +-Burgess Meredith\n\
4945 +-Tony Burton\n\
4946 +-Mr. T\n\
4947 +-Frank Stallone\n\
4948 +-Geraldine Hughes\n\
4949 +-Lahmard J. Tate\n\
4950 +-Michael Buffer\n\
4951 +-Don Sherman\n\
4952 +-Tobias Segal\n\
4953 +-Gunnar Peterson\n\
4954 +-LeRoy Neiman\n\
4955 +-Yahya\n\
4956 +-Henry G. Sanders\n\
4957 +-Stu Nahan\n\
4958 +-Jody Giambelluca\n\
4959 +-Ricky Cavazos\n\
4960 +-Rick Buchborn\n\
4961 +-Joe Cortez\n\
4962 +-Skip Bayless\n\
4963 +-Barney Fitzpatrick\n\
4964 +-Fran Pultro\n\
4965 +-Angela Boyd\n\
4966 +-Robert Michael Kelly\n\
4967 +-Ana Gerena\n\
4968 +-Tim Carr\n\
4969 +-Jim Lampley\n\
4970 +-Charles Johnson\n\
4971 +-Carter Mitchell\n\
4972 +-Dana Jacobson\n\
4973 +-Matt Frack\n\
4974 +-A.J. Benza\n\
4975 +-Antonio Tarver\n\
4976 +-Max Kellerman\n\
4977 +-Marc Ratner\n\
4978 +-Jack Lazzarado\n\
4979 +-Maureen Schilling\n\
4980 +-Larry Merchant\n\
4981 +-Bernard Fernández\n\
4982 +-Louis Giansante\n\
4983 +-Nick Baker\n\
4984 +-James Binns\n\
4985 +-Brian Kenny\n\
4986 +-Anthony Lato Jr.\n\
4987 +-Paul Dion Monte\n\
4988 +-Woody Paige\n\
4989 +-Kevin King Templeton\n\
4990 +-Gary Compton\n\
4991 +-Lou DiBella\n\
4992 +-Jay Crawford\n\
4993 +-Pedro Lovell\n\
4994 +-Johnnie Hobbs Jr.\n\
4995 +-Vinod Kumar\n\
4996 +-Bert Randolph Sugar\n\
4997 +-James Francis Kelly III',
4998 +- 'country' : 'USA',
4999 +- 'genre' : 'Drama',
5000 +- 'classification' : False,
5001 +- 'studio' : False,
5002 +- 'o_site' : False,
5003 +- 'site' : 'http://www.filmdb.de/filmanzeige.php?filmid=Rocky%20Balboa',
5004 +- 'trailer' : False,
5005 +- 'year' : 2006,
5006 +- 'notes' : False,
5007 +- 'runtime' : 102,
5008 +- 'image' : True,
5009 +- 'rating' : False
5010 +- },
5011 +- 'Tatort%20-<wbr%20%2F>%20M%26auml%3Brchenwald' : {
5012 +- 'title' : 'Tatort - Märchenwald',
5013 +- 'o_title' : 'Tatort - Märchenwald',
5014 +- 'director' : 'Christiane Balthasar',
5015 +- 'plot' : True,
5016 +- 'cast' : 'Hannes Jaenicke\n\
5017 +-Maria Furtwängler\n\
5018 +-Charly Hübner\n\
5019 +-Ingo Naujoks\n\
5020 +-Michael Wittenborn',
5021 +- 'country' : 'D',
5022 +- 'genre' : False,
5023 +- 'classification' : False,
5024 +- 'studio' : False,
5025 +- 'o_site' : False,
5026 +- 'site' : 'http://www.filmdb.de/filmanzeige.php?filmid=Tatort%20-%20M%26auml%3Brchenwald',
5027 +- 'trailer' : False,
5028 +- 'year' : 2004,
5029 +- 'notes' : False,
5030 +- 'runtime' : 90,
5031 +- 'image' : True,
5032 +- 'rating' : False
5033 +- },
5034 +- 'Arahan' : {
5035 +- 'title' : 'Arahan',
5036 +- 'o_title' : 'Arahan',
5037 +- 'director' : 'Ryoo Seung-Wan',
5038 +- 'plot' : True,
5039 +- 'cast' : 'So-yi Yoon\n\
5040 +-Ahn Sung-ki\n\
5041 +-Doo-hong Jung\n\
5042 +-Ryu Seung-beom\n\
5043 +-Yun Ju-Sang',
5044 +- 'country' : 'RK',
5045 +- 'genre' : 'Actionkomödie',
5046 +- 'classification' : False,
5047 +- 'studio' : False,
5048 +- 'o_site' : False,
5049 +- 'site' : 'http://www.filmdb.de/filmanzeige.php?filmid=Arahan',
5050 +- 'trailer' : False,
5051 +- 'year' : 2004,
5052 +- 'notes' : False,
5053 +- 'runtime' : 109,
5054 +- 'image' : False,
5055 +- 'rating' : False
5056 +- }
5057 +- }
5058 +diff --git a/lib/plugins/movie/PluginMovieFilmeVonAZ.py b/lib/plugins/movie/PluginMovieFilmeVonAZ.py
5059 +index 6fd40c8..e801e15 100644
5060 +--- a/lib/plugins/movie/PluginMovieFilmeVonAZ.py
5061 ++++ b/lib/plugins/movie/PluginMovieFilmeVonAZ.py
5062 +@@ -1,8 +1,8 @@
5063 + # -*- coding: UTF-8 -*-
5064 +
5065 +-__revision__ = '$Id: PluginMovieFilmeVonAZ.py 1437 2010-07-18 11:37:02Z mikej06 $'
5066 ++__revision__ = '$Id$'
5067 +
5068 +-# Copyright (c) 2006-2010 Michael Jahn
5069 ++# Copyright (c) 2006-2013 Michael Jahn
5070 + #
5071 + # This program is free software; you can redistribute it and/or modify
5072 + # it under the terms of the GNU General Public License as published by
5073 +@@ -32,7 +32,7 @@ plugin_url = "www.zweitausendeins.de"
5074 + plugin_language = _("German")
5075 + plugin_author = "Michael Jahn"
5076 + plugin_author_email = "<mikej06@×××××××.com>"
5077 +-plugin_version = "1.4"
5078 ++plugin_version = "1.6"
5079 +
5080 + class Plugin(movie.Movie):
5081 + def __init__(self, id):
5082 +@@ -40,64 +40,50 @@ class Plugin(movie.Movie):
5083 + self.movie_id = id
5084 + self.url = 'http://www.zweitausendeins.de/filmlexikon/?sucheNach=titel&wert=' + str(self.movie_id)
5085 +
5086 +- def initialize(self):
5087 +- url = 'http://www.zweitausendeins.de/getimage/?imageNo=0&movieNo=' + str(self.movie_id)
5088 +- self.imagelinks = self.open_page(self.parent_window, url=url)
5089 +-
5090 + def get_image(self):
5091 +- if string.find(self.imagelinks, '|') > 0:
5092 +- self.image_url = gutils.before(self.imagelinks, '|')
5093 ++ self.image_url = ''
5094 ++ url = url = gutils.trim(gutils.trim(self.page, 'class="film-image"', '>'), 'http://', ')')
5095 ++ if url:
5096 ++ self.image_url = 'http://' + url
5097 +
5098 + def get_o_title(self):
5099 +- self.o_title = gutils.clean(gutils.after(
5100 +- gutils.regextrim(self.page, 'class="text_ergebniss_faz_3"', '[ \t]+[(]Originaltitel[)]'), '</a>'))
5101 +- p1 = string.rfind(self.o_title, ',')
5102 +- if p1 > 0:
5103 +- self.o_title = self.o_title[p1 + 1:]
5104 +- self.o_title = string.capwords(self.o_title)
5105 +- if self.o_title == '':
5106 +- self.o_title = gutils.after(gutils.trim(self.page, 'class="text_ergebniss_faz_3"', '</a>'), '>')
5107 ++ self.o_title = string.capwords(gutils.clean(gutils.regextrim(self.page, '<b>Originaltitel:', '(</p>|<b>)')))
5108 ++ if not self.o_title:
5109 ++ self.o_title = gutils.after(gutils.trim(self.page, 'class=\'film-titel\'', '</h1>'), '>')
5110 +
5111 + def get_title(self):
5112 +- self.title = gutils.after(gutils.trim(self.page, 'class="text_ergebniss_faz_3"', '</a>'), '>')
5113 ++ self.title = gutils.after(gutils.trim(self.page, 'class=\'film-titel\'', '</h1>'), '>')
5114 +
5115 + def get_director(self):
5116 +- self.director = gutils.after(gutils.trim(self.page, '(Regie)', '</span>'), '>')
5117 +- self.director = re.sub(',[ ]*$', '', self.director)
5118 ++ self.director = gutils.trim(self.page, '<b>Regie:', '</p>')
5119 +
5120 + def get_plot(self):
5121 +- self.plot = gutils.after(gutils.trim(self.page, 'Inhalt des Films:', '</td>'), '</div>')
5122 ++ self.plot = gutils.after(gutils.trim(self.page, 'class=\'film-text\'', '</p>'), '>')
5123 +
5124 + def get_year(self):
5125 +- self.year = gutils.after(gutils.trim(self.page, 'sucheNach=produktionsjahr', '</a>'), '>')
5126 ++ self.year = gutils.after(gutils.trim(self.page, '<b>Produktionsjahr:', '<br/>'), '>')
5127 +
5128 + def get_runtime(self):
5129 +- self.runtime = gutils.trim(self.page, 'L&auml;nge: ', ' Minuten')
5130 ++ self.runtime = gutils.trim(self.page, '<b>Länge:', '<br/>')
5131 +
5132 + def get_genre(self):
5133 +- elements = string.split(self.page, 'sucheNach=genre')
5134 +- if (elements[0]<>''):
5135 +- elements[0] = ''
5136 +- self.delimiter = ''
5137 ++ self.genre = gutils.after(gutils.trim(self.page, 'class=\'film-angaben\'', '</p>'), '>')
5138 ++ if ':' in self.genre:
5139 + self.genre = ''
5140 +- for element in elements:
5141 +- if (element <> ''):
5142 +- self.genre += self.delimiter + gutils.trim(element, '>', '</a>')
5143 +- self.delimiter = ", "
5144 +
5145 + def get_cast(self):
5146 +- self.cast = gutils.regextrim(self.page, '[(]Darsteller[)]', '(</td>|<br><span[^>]+>)')
5147 ++ self.cast = gutils.trim(self.page, '<b>Darsteller:', '</p>')
5148 + self.cast = gutils.clean(self.cast)
5149 +- self.cast = self.cast.replace(' als ', _(' as '))
5150 +- self.cast = re.sub('( \t|\t|\r|\n)', '', self.cast)
5151 +- self.cast = self.cast.replace(',', '\n')
5152 ++ self.cast = self.cast.replace(' (', _(' as '))
5153 ++ self.cast = self.cast.replace('), ', '\n')
5154 ++ self.cast = self.cast.replace(')', '')
5155 +
5156 + def get_classification(self):
5157 +- self.classification = gutils.regextrim(self.page, 'FSK:[ ]+', '[,;]')
5158 ++ self.classification = gutils.regextrim(self.page, '<b>FSK:[ ]*', '(<br/>|[,;])')
5159 +
5160 + def get_studio(self):
5161 +- self.studio = gutils.after(gutils.trim(self.page, 'sucheNach=produktionsfirma', '</span>'), '>')
5162 +- self.studio = string.replace(self.studio, '/', ',')
5163 ++ self.studio = gutils.after(gutils.trim(self.page, '<b>Produktionsfirma:', '<br/>'), '>')
5164 ++ self.studio = string.replace(self.studio, '/', ', ')
5165 + self.studio = re.sub(',[ ]*$', '', self.studio)
5166 +
5167 + def get_o_site(self):
5168 +@@ -110,64 +96,64 @@ class Plugin(movie.Movie):
5169 + self.trailer = ''
5170 +
5171 + def get_country(self):
5172 +- self.country = gutils.after(gutils.trim(self.page, 'sucheNach=produktionsland', '</span>'), '>')
5173 ++ self.country = gutils.after(gutils.trim(self.page, '<b>Produktionsland:', '<br/>'), '>')
5174 + self.country = re.sub(',[ ]*$', '', self.country)
5175 +- self.country = string.replace(self.country, '/', ',')
5176 ++ self.country = string.replace(self.country, '/', ', ')
5177 +
5178 + def get_rating(self):
5179 + self.rating = 0
5180 +
5181 + def get_screenplay(self):
5182 +- self.screenplay = gutils.trim(self.page, '(Drehbuch)', '</span>')
5183 ++ self.screenplay = gutils.trim(self.page, '<b>Drehbuch:', '</p>')
5184 + self.screenplay = re.sub(',[ ]*$', '', self.screenplay)
5185 +
5186 + def get_cameraman(self):
5187 +- self.cameraman = gutils.trim(self.page, '(Kamera)', '</span>')
5188 ++ self.cameraman = gutils.trim(self.page, '<b>Kamera:', '</p>')
5189 + self.cameraman = re.sub(',[ ]*$', '', self.cameraman)
5190 +
5191 + class SearchPlugin(movie.SearchMovie):
5192 + def __init__(self):
5193 +- self.original_url_search = "http://www.zweitausendeins.de/filmlexikon/?sucheNach=Titel&wert="
5194 +- self.translated_url_search = "http://www.zweitausendeins.de/filmlexikon/?sucheNach=Titel&wert="
5195 ++ self.original_url_search = "http://www.zweitausendeins.de/filmlexikon/"
5196 ++ self.translated_url_search = "http://www.zweitausendeins.de/filmlexikon/"
5197 + self.encode = 'utf-8'
5198 ++ self.useurllib2 = True
5199 ++ self.usepostrequest = True
5200 +
5201 + def search(self,parent_window):
5202 + if not self.open_search(parent_window):
5203 + return None
5204 + # used for looking for subpages
5205 +- tmp_page = gutils.trim(self.page, '<span class="trefferliste">', '</span>')
5206 ++ tmp_page = gutils.trim(self.page, '<li>Treffer', '</div>')
5207 + elements = string.split(tmp_page, 'cp=')
5208 + # first results
5209 +- tmp_page = gutils.after(gutils.trim(self.page, 'Alle Treffer aus der Kategorie', '<span class="trefferliste">'), "Titel:")
5210 ++ tmp_page = gutils.trim(self.page, '<ul class=\'film-liste\'>', '</ul>')
5211 + # look for subpages
5212 + for element in elements:
5213 +- element = gutils.before(element, '"')
5214 ++ element = gutils.before(element, '\'')
5215 + try:
5216 + tmp_element = int(element)
5217 + except:
5218 + tmp_element = 1
5219 + if tmp_element != 1:
5220 +- self.url = 'http://www.zweitausendeins.de/filmlexikon/?sucheNach=Titel&cp=' + str(tmp_element) + "&wert="
5221 ++ self.url = 'http://www.zweitausendeins.de/filmlexikon/?sucheNach=filmtitel&cp=' + str(tmp_element) + "&wert="
5222 + if self.open_search(parent_window):
5223 +- tmp_page2 = gutils.trim(self.page, 'Alle Treffer aus der Kategorie', '<span class="trefferliste">')
5224 ++ tmp_page2 = gutils.trim(self.page, '<ul class=\'film-liste\'>', '</ul>')
5225 + tmp_page = tmp_page + tmp_page2
5226 + self.page = tmp_page
5227 +
5228 + return self.page
5229 +
5230 + def get_searches(self):
5231 +- elements = string.split(self.page, '<div class="text_ergebniss_faz_3"')
5232 ++ elements = string.split(self.page, '<h2 class=\'film-titel\'>')
5233 + i = 1
5234 + while i < len(elements):
5235 + element = elements[i]
5236 + i = i + 1
5237 +- self.ids.append(gutils.trim(element, 'filmlexikon/?wert=', '&'))
5238 +- self.titles.append(string.strip(gutils.clean(
5239 +- gutils.trim(element, '>', '</a>') + ' (' +
5240 +- string.capwords(gutils.trim(element, '</a>', '(Originaltitel)')) + ', ' +
5241 +- gutils.after(gutils.trim(element, 'sucheNach=produktionsland', '</a>'), '>') + ', ' +
5242 +- gutils.after(gutils.trim(element, 'sucheNach=produktionsjahr', '</a>'), '>') +
5243 +- ')')))
5244 ++ self.ids.append(gutils.trim(element, 'wert=', '\''))
5245 ++ self.titles.append(gutils.trim(element, '>', '</a>'))
5246 ++
5247 ++ def get_postdata(self):
5248 ++ return {'sucheNach' : 'filmtitel', 'wert' : self.title }
5249 +
5250 + #
5251 + # Plugin Test
5252 +@@ -178,9 +164,9 @@ class SearchPluginTest(SearchPlugin):
5253 + # dict { movie_id -> [ expected result count for original url, expected result count for translated url ] }
5254 + #
5255 + test_configuration = {
5256 +- 'Rocky' : [ 15, 15 ],
5257 ++ 'Rocky' : [ 17, 17 ],
5258 + 'Arahan' : [ 1, 1 ],
5259 +- 'Ein glückliches Jahr' : [ 0, 0 ]
5260 ++ 'Ein glückliches Jahr' : [ 1, 1 ]
5261 + }
5262 +
5263 + class PluginTest:
5264 +@@ -197,13 +183,13 @@ class PluginTest:
5265 + 'o_title' : 'Rocky Balboa',
5266 + 'director' : 'Sylvester Stallone',
5267 + 'plot' : True,
5268 +- 'cast' : 'A.J. Benza' + _(' as ') + 'L.C.\n\
5269 +-Milo Ventimiglia' + _(' as ') + 'Rocky jr.\n\
5270 ++ 'cast' : 'Sylvester Stallone' + _(' as ') + 'Rocky Balboa\n\
5271 ++Burt Young' + _(' as ') + 'Paulie\n\
5272 + Antonio Tarver' + _(' as ') + 'Mason \'The Line\' Dixon\n\
5273 + Geraldine Hughes' + _(' as ') + 'Marie\n\
5274 +-Sylvester Stallone' + _(' as ') + 'Rocky Balboa\n\
5275 +-Burt Young' + _(' as ') + 'Paulie\n\
5276 +-Tony Burton' + _(' as ') + 'Duke',
5277 ++Milo Ventimiglia' + _(' as ') + 'Rocky jr.\n\
5278 ++Tony Burton' + _(' as ') + 'Duke\n\
5279 ++A.J. Benza' + _(' as ') + 'L.C.',
5280 + 'country' : 'USA',
5281 + 'genre' : 'Boxerfilm',
5282 + 'classification' : 'ab 12',
5283 +@@ -217,25 +203,25 @@ Tony Burton' + _(' as ') + 'Duke',
5284 + 'image' : True,
5285 + 'rating' : False,
5286 + 'screenplay' : 'Sylvester Stallone',
5287 +- 'cameraman' : 'J. Clark Mathis',
5288 ++ 'cameraman' : 'Clark Mathis',
5289 + },
5290 + '26956' : {
5291 + 'title' : 'Bürgschaft für ein Jahr',
5292 + 'o_title' : 'Bürgschaft für ein Jahr',
5293 + 'director' : 'Herrmann Zschoche',
5294 + 'plot' : True,
5295 +- 'cast' : 'Heide Kipp' + _(' as ') + 'Frau Braun\n\
5296 +-Jan Spitzer' + _(' as ') + 'Werner Horn\n\
5297 ++ 'cast' : 'Katrin Saß' + _(' as ') + 'Nina\n\
5298 + Monika Lennartz' + _(' as ') + 'Irmgard Behrend\n\
5299 +-Katrin Saß' + _(' as ') + 'Nina\n\
5300 +-Ursula Werner' + _(' as ') + 'Frau Müller\n\
5301 +-Christian Steyer' + _(' as ') + 'Heiner Menk\n\
5302 + Jaecki Schwarz' + _(' as ') + 'Peter Müller\n\
5303 +-Barbara Dittus' + _(' as ') + 'Heimleiterin',
5304 ++Christian Steyer' + _(' as ') + 'Heiner Menk\n\
5305 ++Jan Spitzer' + _(' as ') + 'Werner Horn\n\
5306 ++Heide Kipp' + _(' as ') + 'Frau Braun\n\
5307 ++Barbara Dittus' + _(' as ') + 'Heimleiterin\n\
5308 ++Ursula Werner' + _(' as ') + 'Frau Müller',
5309 + 'country' : 'DDR',
5310 + 'genre' : 'Arbeiterfilm, Frauenfilm, Literaturverfilmung',
5311 + 'classification' : 'ab 6',
5312 +- 'studio' : 'DEFA, Gruppe "Berlin"',
5313 ++ 'studio' : 'DEFA, Gruppe Berlin""',
5314 + 'o_site' : False,
5315 + 'site' : 'http://www.zweitausendeins.de/filmlexikon/?sucheNach=titel&wert=26956',
5316 + 'trailer' : False,
5317 +@@ -254,9 +240,9 @@ Barbara Dittus' + _(' as ') + 'Heimleiterin',
5318 + 'plot' : True,
5319 + 'cast' : 'Ryu Seung-beom' + _(' as ') + 'Sang-hwan\n\
5320 + Yoon So-yi' + _(' as ') + 'Wi-jin\n\
5321 +-Yun Ju-sang' + _(' as ') + 'Mu-woon\n\
5322 + Ahn Sung-kee' + _(' as ') + 'Ja-woon\n\
5323 +-Jung Doo-hong' + _(' as ') + 'Heukwoon',
5324 ++Jung Doo-hong' + _(' as ') + 'Heukwoon\n\
5325 ++Yun Ju-sang' + _(' as ') + 'Mu-woon',
5326 + 'country' : 'Südkorea',
5327 + 'genre' : False,
5328 + 'classification' : 'ab 16',
5329 +@@ -269,7 +255,7 @@ Jung Doo-hong' + _(' as ') + 'Heukwoon',
5330 + 'runtime' : 108,
5331 + 'image' : False,
5332 + 'rating' : False,
5333 +- 'screenplay' : 'Ryoo Seung-wan',
5334 ++ 'screenplay' : 'Eun Ji-hie, Ryoo Seung-wan, Yu Seon-dong',
5335 + 'cameraman' : 'Lee Jun-gyu',
5336 + }
5337 + }
5338 +diff --git a/lib/plugins/movie/PluginMovieFilmtipset.py b/lib/plugins/movie/PluginMovieFilmtipset.py
5339 +index e090df5..7e7587e 100644
5340 +--- a/lib/plugins/movie/PluginMovieFilmtipset.py
5341 ++++ b/lib/plugins/movie/PluginMovieFilmtipset.py
5342 +@@ -70,7 +70,7 @@ class Plugin(movie.Movie):
5343 + def get_genre(self):
5344 + self.genre = string.strip(gutils.trim(self.page, 'Nyckelord:', '</tr>'))
5345 + if self.genre == '':
5346 +- self.genre = string.strip(gutils.trim(self.page, 'Genre:', '</tr>'))
5347 ++ self.genre = string.strip(gutils.trim(self.page, 'Genre:</h2>', '</tr>'))
5348 +
5349 + def get_cast(self):
5350 + self.cast = gutils.regextrim(self.page, 'Sk&aring;despelare[^:]*[:]', '</tr>')
5351 +diff --git a/lib/plugins/movie/PluginMovieFilmweb.py b/lib/plugins/movie/PluginMovieFilmweb.py
5352 +index bf82697..d2c1951 100644
5353 +--- a/lib/plugins/movie/PluginMovieFilmweb.py
5354 ++++ b/lib/plugins/movie/PluginMovieFilmweb.py
5355 +@@ -1,8 +1,8 @@
5356 + # -*- coding: utf-8 -*-
5357 +
5358 +-__revision__ = '$Id: PluginMovieFilmweb.py 1602 2011-12-18 19:11:55Z piotrek $'
5359 ++__revision__ = '$Id$'
5360 +
5361 +-# Copyright (c) 2005-2011 Piotr Ożarowski
5362 ++# Copyright (c) 2005-2012 Piotr Ożarowski
5363 + #
5364 + # This program is free software; you can redistribute it and/or modify
5365 + # it under the terms of the GNU General Public License as published by
5366 +@@ -27,12 +27,12 @@ import movie
5367 + plugin_name = 'Filmweb'
5368 + plugin_description = 'Web pełen filmów'
5369 + plugin_url = 'filmweb.pl'
5370 +-plugin_url_other = 'm.filmweb.pl'
5371 ++plugin_url_other = 'filmweb.pl'
5372 + plugin_server = '193.200.227.13'
5373 + plugin_language = _('Polish')
5374 + plugin_author = 'Piotr Ożarowski, Bartosz Kurczewski, Mariusz Szczepanek'
5375 + plugin_author_email = '<mariusz2806@×××××.com>'
5376 +-plugin_version = '1.28'
5377 ++plugin_version = '1.29'
5378 +
5379 +
5380 + class Plugin(movie.Movie):
5381 +@@ -50,11 +50,14 @@ class Plugin(movie.Movie):
5382 +
5383 + def get_o_title(self):
5384 + self.url = self.url.replace(plugin_server, plugin_url)
5385 +- self.o_title = gutils.trim(self.page, '<title>', '</title>')
5386 +- if self.o_title.find('/') > -1:
5387 +- self.o_title = gutils.trim(self.o_title, '/', '(')
5388 +- if self.o_title.find('(') > -1:
5389 +- self.o_title = gutils.before(self.o_title, '(')
5390 ++ self.o_title = gutils.trim(self.page, '<h2 class=origTitle>', '</h2>')
5391 ++ self.o_title = gutils.after(self.o_title, '</span>')
5392 ++ if self.o_title == '':
5393 ++ self.o_title = gutils.trim(self.page, '<title>', '</title>')
5394 ++ if self.o_title.find('(') > -1:
5395 ++ self.o_title = gutils.before(self.o_title, '(')
5396 ++ if self.o_title.find('/') > -1:
5397 ++ self.o_title = gutils.before(self.o_title, '/')
5398 +
5399 + def get_title(self):
5400 + self.url = self.url.replace(plugin_server, plugin_url)
5401 +@@ -68,20 +71,12 @@ class Plugin(movie.Movie):
5402 + self.director = gutils.trim(self.page, "reżyseria:", '</tr>')
5403 + self.director = gutils.after(self.director, '</th>')
5404 + self.director = self.director.replace("(więcej...)", '')
5405 +- self.director = self.director.replace(' ', '\t')
5406 +- self.director = self.director.replace("\t ", '')
5407 +- self.director = self.director.replace("\t", '')
5408 +- self.director = self.director.replace(',', ', ')
5409 + self.director = gutils.strip_tags(self.director)
5410 +
5411 + def get_screenplay(self):
5412 + self.screenplay = gutils.trim(self.page, "scenariusz:", '</tr>')
5413 + self.screenplay = gutils.after(self.screenplay, '</th>')
5414 + self.screenplay = self.screenplay.replace("(więcej...)", '')
5415 +- self.screenplay = self.screenplay.replace(' ', '\t')
5416 +- self.screenplay = self.screenplay.replace("\t ", '')
5417 +- self.screenplay = self.screenplay.replace("\t", '')
5418 +- self.screenplay = self.screenplay.replace(',', ', ')
5419 + self.screenplay = gutils.strip_tags(self.screenplay)
5420 +
5421 + def get_plot(self):
5422 +@@ -114,26 +109,16 @@ class Plugin(movie.Movie):
5423 +
5424 + def get_genre(self):
5425 + self.genre = gutils.trim(self.page, "gatunek:", '</tr>')
5426 +- self.genre = self.genre.replace("\t", '')
5427 +- self.genre = self.genre.replace("\n", '')
5428 +- self.genre = self.genre.replace(' ', '')
5429 +- self.genre = self.genre.replace(',', ', ')
5430 +
5431 + def get_cast(self):
5432 + self.cast = gutils.trim(self.page, '<div class="castListWrapper cl">', '<div class="additional-info comBox">')
5433 +- url = gutils.after(self.cast, '</ul>')
5434 +- url = gutils.trim(url, 'href="', '"')
5435 + self.cast = gutils.before(self.cast, '</ul>')
5436 +- self.cast = self.cast.replace(chr(13), '')
5437 +- self.cast = self.cast.replace(chr(10), '')
5438 +- self.cast = self.cast.replace(" ", '\t')
5439 +- self.cast = self.cast.replace("\t ", '')
5440 +- self.cast = self.cast.replace('\t', '')
5441 +- self.cast = self.cast.replace(" (", '(')
5442 +- self.cast = self.cast.replace('(', " (")
5443 ++ self.cast = self.cast.replace('</span> ', '')
5444 + self.cast = self.cast.replace('<div>', _(" as "))
5445 + self.cast = self.cast.replace('</li>', "\n")
5446 +- self.cast = self.cast.replace('</span> ', '')
5447 ++ self.cast = gutils.strip_tags(self.cast)
5448 ++ self.cast = self.cast.replace(' ', '')
5449 ++ self.cast = self.cast.replace(' ', ' ')
5450 +
5451 + def get_classification(self):
5452 + self.classification = ''
5453 +@@ -151,11 +136,7 @@ class Plugin(movie.Movie):
5454 + self.trailer = ''
5455 +
5456 + def get_country(self):
5457 +- self.country = gutils.trim(self.page, '<dt>kraj', '</dd>')
5458 +- self.country = self.country.replace(' ', '')
5459 +- self.country = self.country.replace("e:", '')
5460 +- self.country = self.country.replace(":", '')
5461 +- self.country = self.country.replace("\t", '')
5462 ++ self.country = gutils.trim(self.page, 'produkcja:', '</tr>')
5463 +
5464 + def get_rating(self):
5465 + self.rating = gutils.trim(self.page, '<div class=rates>', '</div>')
5466 +diff --git a/lib/plugins/movie/PluginMovieHKMDB.py b/lib/plugins/movie/PluginMovieHKMDB.py
5467 +index 798bf3f..4ea5060 100644
5468 +--- a/lib/plugins/movie/PluginMovieHKMDB.py
5469 ++++ b/lib/plugins/movie/PluginMovieHKMDB.py
5470 +@@ -1,6 +1,6 @@
5471 + # -*- coding: UTF-8 -*-
5472 +
5473 +-__revision__ = '$Id: PluginMovieHKMDB.py 1605 2011-12-18 22:35:25Z piotrek $'
5474 ++__revision__ = '$Id$'
5475 +
5476 + # Copyright (c) 2010 Michael Jahn
5477 + #
5478 +@@ -183,25 +183,26 @@ class PluginTest:
5479 + 'director' : 'Ting Chung (1)',
5480 + 'plot' : False,
5481 + 'cast' : 'John Liu Chung-Liang' + _(' as ') + 'Ma Tien Lang\n\
5482 +-Phillip Ko Fei' + _(' as ') + 'Fang Kang and his brother\n\
5483 + Stephen Tung Wai\n\
5484 ++Tong Bo-Wan' + _(' as ') + 'Ma\'s wife\n\
5485 + Suen Yuet\n\
5486 +-Wong Chi-Sang' + _(' as ') + 'Henchman\n\
5487 ++Phillip Ko Fei' + _(' as ') + 'Fang Kang and his brother\n\
5488 + Ga Hoi\n\
5489 +-Tong Bo-Wan' + _(' as ') + 'Ma\'s wife\n\
5490 ++Wong Kwok-Fai (2)' + _(' as ') + 'Fei Hu\n\
5491 + Peng Kong' + _(' as ') + 'Fei Lung\n\
5492 + Wong Hoi (3)\n\
5493 +-Chen Chin-Hai' + _(' as ') + 'extra\n\
5494 +-Mau Ging-Shun' + _(' as ') + 'extra\n\
5495 +-Wong Kwok-Fai (2)\n\
5496 +-Peter Chang\n\
5497 +-Cheung Chung-Kwai\n\
5498 +-Lui Wan-Biu' + _(' as ') + 'extra\n\
5499 +-Hung Ji-Yue\n\
5500 ++Wong Chi-Sang' + _(' as ') + 'Henchman\n\
5501 + Ho Szu-Yuan\n\
5502 ++Hung Ji-Yue\n\
5503 ++San Bao\n\
5504 ++Cheung Chung-Kwai (1)\n\
5505 ++Peter Chang Chi-Long\n\
5506 + Mark Lung Goon-Mo\n\
5507 +-Chan Jan (1)' + _(' as ') + 'extra\n\
5508 +-Fan Fung-San' + _(' as ') + 'extra',
5509 ++Fan Fung-San' + _(' as ') + '[Extra]\n\
5510 ++Chan Jan (1)' + _(' as ') + '[Extra]\n\
5511 ++Chen Chin-Hai' + _(' as ') + '[Extra]\n\
5512 ++Mau Ging-Shun' + _(' as ') + '[Extra]\n\
5513 ++Lui Wan-Biu' + _(' as ') + '[Extra]',
5514 + 'country' : 'Taiwan',
5515 + 'genre' : 'Martial Arts',
5516 + 'classification' : False,
5517 +diff --git a/lib/plugins/movie/PluginMovieIMDB-de.py b/lib/plugins/movie/PluginMovieIMDB-de.py
5518 +index ef8338d..7a3e92a 100644
5519 +--- a/lib/plugins/movie/PluginMovieIMDB-de.py
5520 ++++ b/lib/plugins/movie/PluginMovieIMDB-de.py
5521 +@@ -1,8 +1,8 @@
5522 + # -*- coding: UTF-8 -*-
5523 +
5524 +-__revision__ = '$Id: PluginMovieIMDB-de.py 1577 2011-08-30 21:13:26Z mikej06 $'
5525 ++__revision__ = '$Id$'
5526 +
5527 +-# Copyright (c) 2007-2011 Michael Jahn
5528 ++# Copyright (c) 2007-2012 Michael Jahn
5529 + #
5530 + # This program is free software; you can redistribute it and/or modify
5531 + # it under the terms of the GNU General Public License as published by
5532 +@@ -30,7 +30,7 @@ plugin_url = 'www.imdb.de'
5533 + plugin_language = _('German')
5534 + plugin_author = 'Michael Jahn'
5535 + plugin_author_email = 'mikej06@×××××××.com'
5536 +-plugin_version = '1.8'
5537 ++plugin_version = '1.9'
5538 +
5539 + class Plugin(movie.Movie):
5540 + def __init__(self, id):
5541 +@@ -247,42 +247,35 @@ class Plugin(movie.Movie):
5542 + return data
5543 +
5544 + class SearchPlugin(movie.SearchMovie):
5545 +- PATTERN = re.compile(r"""<a href=['"]/title/tt([0-9]+)/["'](.*?)</tr>""", re.IGNORECASE)
5546 +- PATTERN_POWERSEARCH = re.compile(r"""Here are the [0-9]+ matching titles""")
5547 ++ PATTERN = re.compile(r"""<a href=['"]/title/tt([0-9]+)/[^>]+[>](.*?)</td>""")
5548 ++ PATTERN_DIRECT = re.compile(r"""value="/title/tt([0-9]+)""")
5549 +
5550 + def __init__(self):
5551 +- self.original_url_search = 'http://www.imdb.de/find?more=tt&q='
5552 +- self.translated_url_search = 'http://www.imdb.de/find?more=tt&q='
5553 ++ self.original_url_search = 'http://www.imdb.de/find?s=tt&q='
5554 ++ self.translated_url_search = 'http://www.imdb.de/find?s=tt&q='
5555 + self.encode = 'utf8'
5556 + self.remove_accents = False
5557 +
5558 + def search(self,parent_window):
5559 + if not self.open_search(parent_window):
5560 + return None
5561 +- tmp = gutils.trim(self.page, ' angezeigt)', ' Treffergenauigkeit')
5562 +- if tmp == '':
5563 +- if self.PATTERN_POWERSEARCH.search(self.page) is None:
5564 +- self.page = ''
5565 +- else:
5566 +- self.page = tmp
5567 +- # correction of all &#xxx entities
5568 +- self.page = self.page.decode('iso8859-1')
5569 +- self.page = gutils.convert_entities(self.page)
5570 +- #self.page = self.page.encode(self.encode)
5571 + return self.page
5572 +-
5573 ++
5574 + def get_searches(self):
5575 +- elements = string.split(self.page, '<tr>')
5576 +- if len(elements) < 2:
5577 +- elements = string.split(self.page, '<TR>')
5578 +-
5579 ++ elements = string.split(self.page, '<tr')
5580 + if len(elements):
5581 + for element in elements[1:]:
5582 + match = self.PATTERN.findall(element)
5583 +- for entry in match:
5584 +- tmp = re.sub('^[0-9]+[.]', '', gutils.clean(gutils.after(entry[1], '>')))
5585 +- self.ids.append(entry[0])
5586 ++ if len(match) > 1:
5587 ++ tmp = re.sub('^[0-9]+[.]', '', gutils.clean(match[1][1]))
5588 ++ self.ids.append(match[1][0])
5589 + self.titles.append(tmp)
5590 ++ if len(self.ids) < 2:
5591 ++ # try to find a direct result
5592 ++ match = self.PATTERN_DIRECT.findall(self.page)
5593 ++ if len(match) > 0:
5594 ++ self.ids.append(match[0])
5595 ++
5596 +
5597 + #
5598 + # Plugin Test
5599 +@@ -293,8 +286,8 @@ class SearchPluginTest(SearchPlugin):
5600 + # dict { movie_id -> [ expected result count for original url, expected result count for translated url ] }
5601 + #
5602 + test_configuration = {
5603 +- 'Rocky Balboa' : [ 25, 25 ],
5604 +- 'Ein glückliches Jahr' : [ 47, 47 ]
5605 ++ 'Rocky Balboa' : [ 10, 10 ],
5606 ++ 'Ein glückliches Jahr' : [ 3, 3 ]
5607 + }
5608 +
5609 + class PluginTest:
5610 +@@ -377,6 +370,7 @@ Tim Brooks' + _(' as ') + 'Boxing Spectator (nicht im Abspann)\n\
5611 + D.T. Carney' + _(' as ') + 'High Roller (nicht im Abspann)\n\
5612 + Ricky Cavazos' + _(' as ') + 'Boxing Spectator (nicht im Abspann)\n\
5613 + Rennie Cowan' + _(' as ') + 'Boxing Spectator (nicht im Abspann)\n\
5614 ++Kevin Deon' + _(' as ') + 'Jeno (nicht im Abspann)\n\
5615 + Deon Derrico' + _(' as ') + 'High Roller at Limo (nicht im Abspann)\n\
5616 + Jacob \'Stitch\' Duran' + _(' as ') + 'Dixon\'s Trainer (nicht im Abspann)\n\
5617 + Simon P. Edwards' + _(' as ') + 'Crowd Member (nicht im Abspann)\n\
5618 +@@ -390,6 +384,7 @@ Dolph Lundgren' + _(' as ') + 'Captain Ivan Drago (Archivmaterial) (nicht im Abs
5619 + Dean Mauro' + _(' as ') + 'Sports Journalist (nicht im Abspann) (unbestätigt)\n\
5620 + Burgess Meredith' + _(' as ') + 'Mickey Goldmill (Archivmaterial) (nicht im Abspann)\n\
5621 + Dan Montero' + _(' as ') + 'Boxing Spectator (nicht im Abspann)\n\
5622 ++Babs Moran' + _(' as ') + 'Obnoxious Fan (nicht im Abspann)\n\
5623 + Keith Moyer' + _(' as ') + 'Bargast (nicht im Abspann)\n\
5624 + Mr. T' + _(' as ') + 'Clubber Lang (Archivmaterial) (nicht im Abspann)\n\
5625 + Carol Anne Mueller' + _(' as ') + 'Restaurant Patron (nicht im Abspann)\n\
5626 +@@ -400,8 +395,8 @@ Frank Traynor' + _(' as ') + 'Rechtsanwalt (nicht im Abspann)\n\
5627 + Ryan Tygh' + _(' as ') + 'Ring Photographer (nicht im Abspann)\n\
5628 + Kimberly Villanova' + _(' as ') + 'Businesswoman (nicht im Abspann)',
5629 + 'country' : 'USA',
5630 +- 'genre' : 'Action | Drama | Romanze | Sport',
5631 +- 'classification' : False,
5632 ++ 'genre' : 'Drama | Sport',
5633 ++ 'classification' : '12',
5634 + 'studio' : 'Metro-Goldwyn-Mayer (MGM) (presents) (copyright owner), Columbia Pictures (presents) (copyright owner), Revolution Studios (presents) (copyright owner), Rogue Marble',
5635 + 'o_site' : False,
5636 + 'site' : 'http://www.imdb.de/title/tt0479143',
5637 +@@ -443,7 +438,7 @@ Georges Staquet\n\
5638 + Jacques Villedieu\n\
5639 + Harry Walter übrige Besetzung in alphabetischer Reihenfolge:\n\
5640 + Anouk Aimée' + _(' as ') + 'Une femme (Archivmaterial) (nicht im Abspann)\n\
5641 +-Elie Chouraqui' + _(' as ') + ' (nicht im Abspann)\n\
5642 ++Élie Chouraqui' + _(' as ') + ' (nicht im Abspann)\n\
5643 + Rémy Julienne' + _(' as ') + 'Chauffeur de taxi (nicht im Abspann)\n\
5644 + Jean-Louis Trintignant' + _(' as ') + 'Un homme (Archivmaterial) (nicht im Abspann)',
5645 + 'country' : 'Frankreich | Italien',
5646 +diff --git a/lib/plugins/movie/PluginMovieIMDB-es.py b/lib/plugins/movie/PluginMovieIMDB-es.py
5647 +index 72f8978..084be9b 100644
5648 +--- a/lib/plugins/movie/PluginMovieIMDB-es.py
5649 ++++ b/lib/plugins/movie/PluginMovieIMDB-es.py
5650 +@@ -26,18 +26,20 @@ import movie
5651 + import string
5652 + import re
5653 +
5654 +-plugin_name = 'IMDb-es'
5655 +-plugin_description = 'Internet Movie Database Spanish'
5656 +-plugin_url = 'www.imdb.es'
5657 +-plugin_language = _('Spanish')
5658 +-plugin_author = 'Pedro D. Sánchez'
5659 ++plugin_name = 'IMDb-es'
5660 ++plugin_description = 'Internet Movie Database Spanish'
5661 ++plugin_url = 'www.imdb.es'
5662 ++plugin_language = _('Spanish')
5663 ++plugin_author = 'Pedro D. Sánchez'
5664 + plugin_author_email = '<pedrodav@×××××.com>'
5665 +-plugin_version = '0.3'
5666 ++plugin_version = '0.4'
5667 ++
5668 +
5669 + class Plugin(movie.Movie):
5670 +- def __init__(self, id):
5671 +- self.encode='iso-8859-15'
5672 +- self.movie_id = id
5673 ++
5674 ++ def __init__(self, movie_id):
5675 ++ self.encode = 'iso-8859-15'
5676 ++ self.movie_id = movie_id
5677 + self.url = "http://www.imdb.es/title/tt%s" % str(self.movie_id)
5678 +
5679 + def initialize(self):
5680 +@@ -207,37 +209,34 @@ class Plugin(movie.Movie):
5681 + return data
5682 +
5683 + class SearchPlugin(movie.SearchMovie):
5684 +- PATTERN = re.compile(r"""<a href=['"]/title/tt([0-9]+)/["'](.*?)</tr>""", re.IGNORECASE)
5685 ++ PATTERN = re.compile(r"""<a href=['"]/title/tt([0-9]+)/[^>]+[>](.*?)</td>""")
5686 ++ PATTERN_DIRECT = re.compile(r"""value="/title/tt([0-9]+)""")
5687 +
5688 + def __init__(self):
5689 +- self.original_url_search = 'http://www.imdb.es/find?more=tt;q='
5690 +- self.translated_url_search = 'http://www.imdb.es/find?more=tt;q='
5691 +- self.encode = 'iso-8859-15'
5692 ++ self.original_url_search = 'http://www.imdb.es/find?s=tt&q='
5693 ++ self.translated_url_search = 'http://www.imdb.es/find?s=tt&q='
5694 ++ self.encode = 'utf8'
5695 +
5696 + def search(self,parent_window):
5697 + if not self.open_search(parent_window):
5698 + return None
5699 +- self.sub_search()
5700 + return self.page
5701 +
5702 +- def sub_search(self):
5703 +- self.page = gutils.regextrim(self.page, ' resultado[s]*[)]', 'Sugerencias Para Mejorar Sus Resultados');
5704 +- self.page = self.page.decode('iso-8859-15')
5705 +- # correction of all &#xxx entities
5706 +- self.page = gutils.convert_entities(self.page)
5707 +-
5708 + def get_searches(self):
5709 +- elements = string.split(self.page, '<tr>')
5710 +- if len(elements) < 2:
5711 +- elements = string.split(self.page, '<TR>')
5712 +-
5713 ++ elements = string.split(self.page, '<tr')
5714 + if len(elements):
5715 + for element in elements[1:]:
5716 + match = self.PATTERN.findall(element)
5717 +- for entry in match:
5718 +- tmp = re.sub('^[0-9]+[.]', '', gutils.clean(gutils.after(entry[1], '>')))
5719 +- self.ids.append(entry[0])
5720 ++ if len(match) > 1:
5721 ++ tmp = re.sub('^[0-9]+[.]', '', gutils.clean(match[1][1]))
5722 ++ self.ids.append(match[1][0])
5723 + self.titles.append(tmp)
5724 ++ if len(self.ids) < 2:
5725 ++ # try to find a direct result
5726 ++ match = self.PATTERN_DIRECT.findall(self.page)
5727 ++ if len(match) > 0:
5728 ++ self.ids.append(match[0])
5729 ++
5730 +
5731 + #
5732 + # Plugin Test
5733 +@@ -248,7 +247,7 @@ class SearchPluginTest(SearchPlugin):
5734 + # dict { movie_id -> [ expected result count for original url, expected result count for translated url ] }
5735 + #
5736 + test_configuration = {
5737 +- 'Rocky Balboa' : [ 25, 25 ]
5738 ++ 'Rocky Balboa' : [ 10, 10 ]
5739 + }
5740 +
5741 + class PluginTest:
5742 +@@ -265,97 +264,9 @@ class PluginTest:
5743 + 'o_title' : 'Rocky Balboa',
5744 + 'director' : 'Sylvester Stallone',
5745 + 'plot' : True,
5746 +- 'cast' : 'Sylvester Stallone' + _(' as ') + 'Rocky Balboa\n\
5747 +-Burt Young' + _(' as ') + 'Paulie\n\
5748 +-Antonio Tarver' + _(' as ') + 'Mason \'The Line\' Dixon\n\
5749 +-Geraldine Hughes' + _(' as ') + 'Marie\n\
5750 +-Milo Ventimiglia' + _(' as ') + 'Robert Balboa Jr.\n\
5751 +-Tony Burton' + _(' as ') + 'Duke\n\
5752 +-A.J. Benza' + _(' as ') + 'L.C.\n\
5753 +-James Francis Kelly III' + _(' as ') + 'Steps\n\
5754 +-Talia Shire' + _(' as ') + 'Adrian (tomas de archivo)\n\
5755 +-Lou DiBella' + _(' as ') + u'Él Mismo\n\
5756 +-Mike Tyson' + _(' as ') + u'Él Mismo\n\
5757 +-Henry G. Sanders' + _(' as ') + 'Martin\n\
5758 +-Pedro Lovell' + _(' as ') + 'Spider Rico\n\
5759 +-Ana Gerena' + _(' as ') + 'Isabel\n\
5760 +-Angela Boyd' + _(' as ') + 'Angie\n\
5761 +-Louis Giansante' + _(' as ') + 'Bar Thug\n\
5762 +-Maureen Schilling' + _(' as ') + 'Lucky\'s Bartender\n\
5763 +-Lahmard J. Tate' + _(' as ') + 'X-Cell (como Lahmard Tate)\n\
5764 +-Woody Paige' + _(' as ') + 'ESPN Commentator (como Woodrow W. Paige)\n\
5765 +-Skip Bayless' + _(' as ') + 'ESPN Commentator\n\
5766 +-Jay Crawford' + _(' as ') + 'ESPN Commentator\n\
5767 +-Brian Kenny' + _(' as ') + 'ESPN Host\n\
5768 +-Dana Jacobson' + _(' as ') + 'ESPN Host\n\
5769 +-Charles Johnson' + _(' as ') + 'ESPN Host (como Chuck Johnson)\n\
5770 +-James Binns' + _(' as ') + 'Commissioner (como James J. Binns)\n\
5771 +-Johnnie Hobbs Jr.' + _(' as ') + 'Commissioner\n\
5772 +-Barney Fitzpatrick' + _(' as ') + 'Commissioner\n\
5773 +-Jim Lampley' + _(' as ') + 'HBO Commentator\n\
5774 +-Larry Merchant' + _(' as ') + 'HBO Commentator\n\
5775 +-Max Kellerman' + _(' as ') + 'HBO Commentator\n\
5776 +-LeRoy Neiman' + _(' as ') + u'Él Mismo\n\
5777 +-Bert Randolph Sugar' + _(' as ') + u'Ring Magazine Reporter\n\
5778 +-Bernard Fernández' + _(' as ') + 'Boxing Association of America Writer (como Bernard Fernandez)\n\
5779 +-Gunnar Peterson' + _(' as ') + 'Weightlifting Trainer\n\
5780 +-Yahya' + _(' as ') + 'Dixon\'s Opponent\n\
5781 +-Marc Ratner' + _(' as ') + 'Weigh-In Official\n\
5782 +-Anthony Lato Jr.' + _(' as ') + 'Rocky\'s Inspector\n\
5783 +-Jack Lazzarado' + _(' as ') + 'Dixon\'s Inspector\n\
5784 +-Michael Buffer' + _(' as ') + 'Ring Announcer\n\
5785 +-Joe Cortez' + _(' as ') + u'Árbitro\n\
5786 +-Carter Mitchell' + _(' as ') + 'Shamrock Foreman\n\
5787 +-Vinod Kumar' + _(' as ') + 'Ravi\n\
5788 +-Fran Pultro' + _(' as ') + 'Father at Restaurant\n\
5789 +-Frank Stallone' + _(' as ') + 'Dinner Patron (como Frank Stallone Jr.)\n\
5790 +-Jody Giambelluca' + _(' as ') + 'Dinner Patron\n\
5791 +-Tobias Segal' + _(' as ') + 'Robert\'s Friend\n\
5792 +-Tim Carr' + _(' as ') + 'Robert\'s Friend\n\
5793 +-Matt Frack' + _(' as ') + 'Robert\'s Friend #3\n\
5794 +-Paul Dion Monte' + _(' as ') + 'Robert\'s Friend\n\
5795 +-Kevin King Templeton' + _(' as ') + 'Robert\'s Friend (como Kevin King-Templeton)\n\
5796 +-Robert Michael Kelly' + _(' as ') + 'Mr. Tomilson\n\
5797 +-Rick Buchborn' + _(' as ') + 'Rocky Fan\n\
5798 +-Nick Baker' + _(' as ') + 'Irish Pub Bartender\n\
5799 +-Don Sherman' + _(' as ') + 'Andy\n\
5800 +-Stu Nahan' + _(' as ') + 'Computer Fight Commentator (voz)\n\
5801 +-Gary Compton' + _(' as ') + u'Oficial de Seguridad listado alfabético del resto del reparto:\n\
5802 +-Vale Anoai' + _(' as ') + 'Shopper in Italian Market\n\
5803 +-Sikander Malik' + _(' as ') + 'Boxer\n\
5804 +-Michael Ahl' + _(' as ') + 'Restaurant Patron (sin acreditar)\n\
5805 +-Andrew Aninsman' + _(' as ') + 'Promoter (sin acreditar)\n\
5806 +-Ben Bachelder' + _(' as ') + 'The Arm (sin acreditar)\n\
5807 +-Lacy Bevis' + _(' as ') + 'Boxing Spectator (sin acreditar)\n\
5808 +-Tim Brooks' + _(' as ') + 'Boxing Spectator (sin acreditar)\n\
5809 +-D.T. Carney' + _(' as ') + 'High Roller (sin acreditar)\n\
5810 +-Ricky Cavazos' + _(' as ') + 'Boxing Spectator (sin acreditar)\n\
5811 +-Rennie Cowan' + _(' as ') + 'Boxing Spectator (sin acreditar)\n\
5812 +-Deon Derrico' + _(' as ') + 'High Roller at Limo (sin acreditar)\n\
5813 +-Jacob \'Stitch\' Duran' + _(' as ') + 'Dixon\'s Trainer (sin acreditar)\n\
5814 +-Simon P. Edwards' + _(' as ') + 'Crowd Member (sin acreditar)\n\
5815 +-Ruben Fischman' + _(' as ') + 'High-Roller in Las Vegas (sin acreditar)\n\
5816 +-David Gere' + _(' as ') + 'Patron at Adrian\'s (sin acreditar)\n\
5817 +-Noah Jacobs' + _(' as ') + 'Boxing Fan (sin acreditar)\n\
5818 +-Mark J. Kilbane' + _(' as ') + 'Businessman (sin acreditar)\n\
5819 +-Zach Klinefelter' + _(' as ') + 'Boxing Spectator (sin acreditar)\n\
5820 +-David Kneeream' + _(' as ') + 'Adrian\'s Patron (sin acreditar)\n\
5821 +-Dolph Lundgren' + _(' as ') + 'Captain Ivan Drago (tomas de archivo) (sin acreditar)\n\
5822 +-Dean Mauro' + _(' as ') + 'Sports Journalist (sin acreditar) (sin confirmar)\n\
5823 +-Burgess Meredith' + _(' as ') + 'Mickey Goldmill (tomas de archivo) (sin acreditar)\n\
5824 +-Dan Montero' + _(' as ') + 'Boxing Spectator (sin acreditar)\n\
5825 +-Keith Moyer' + _(' as ') + 'Administrador del Bar (sin acreditar)\n\
5826 +-Mr. T' + _(' as ') + 'Clubber Lang (tomas de archivo) (sin acreditar)\n\
5827 +-Carol Anne Mueller' + _(' as ') + 'Restaurant Patron (sin acreditar)\n\
5828 +-Jacqueline Olivia' + _(' as ') + 'Chica (sin acreditar)\n\
5829 +-Brian H. Scott' + _(' as ') + 'Ringside Cop #1 (sin acreditar)\n\
5830 +-Keyon Smith' + _(' as ') + 'Boxing Spectator (sin acreditar)\n\
5831 +-Frank Traynor' + _(' as ') + 'Abogado (sin acreditar)\n\
5832 +-Ryan Tygh' + _(' as ') + 'Ring Photographer (sin acreditar)\n\
5833 +-Kimberly Villanova' + _(' as ') + 'Businesswoman (sin acreditar)',
5834 + 'country' : 'Estados Unidos',
5835 +- 'genre' : u'Acción | Drama | Romance | Deporte',
5836 +- 'classification' : u'Estados Unidos:PG | Singapur:PG | Finlandia:K-11 | Reino Unido:12A | Canadá:G (British Columbia) | Australia:M | Irlanda:PG | Hong Kong:IIA | México:A | Noruega:11 | Suiza:12 (canton of Geneva) | Suiza:12 (canton of Vaud) | Brasil:12 | Argentina:Atp | Malasia:U | Filipinas:PG-13 (MTRCB) | Portugal:M/12 | Corea del Sur:12 | Suecia:11 | Nueva Zelanda:M',
5837 ++ 'genre' : u'Drama | Deporte',
5838 ++ 'classification' : u'Estados Unidos:PG | Singapur:PG | Finlandia:K-11 | Reino Unido:12A | Canadá:G (British Columbia) | Australia:M | Irlanda:PG | Hong Kong:IIA | México:A | Noruega:11 | Suiza:12 (canton of Vaud) | Suiza:12 (canton of Geneva) | Brasil:12 | Argentina:Atp | Malasia:U | Filipinas:PG-13 (MTRCB) | Portugal:M/12 | Corea del Sur:12 | Suecia:11 | Nueva Zelanda:M | Italia:T | Alemania:12 | Francia:U',
5839 + 'studio' : 'Metro-Goldwyn-Mayer (MGM) (presents) (copyright owner), Columbia Pictures (presents) (copyright owner), Revolution Studios (presents) (copyright owner), Rogue Marble',
5840 + 'o_site' : False,
5841 + 'site' : 'http://www.imdb.es/title/tt0479143',
5842 +diff --git a/lib/plugins/movie/PluginMovieIMDB-it.py b/lib/plugins/movie/PluginMovieIMDB-it.py
5843 +index 0df9d3b..fec1fd7 100644
5844 +--- a/lib/plugins/movie/PluginMovieIMDB-it.py
5845 ++++ b/lib/plugins/movie/PluginMovieIMDB-it.py
5846 +@@ -31,14 +31,14 @@ plugin_url = 'italian.imdb.com'
5847 + plugin_language = _('Italian')
5848 + plugin_author = 'Enrico Carlesso, Filippo Valsorda'
5849 + plugin_author_email = 'enrico@×××××××××.org, filosottile.wiki -at- gmail com'
5850 +-plugin_version = '0.2'
5851 ++plugin_version = '0.3'
5852 +
5853 + class Plugin(movie.Movie):
5854 + def __init__(self, id):
5855 + self.encode = 'iso8859-1'
5856 + self.movie_id = id
5857 + self.url = "http://www.imdb.it/title/tt%s" % self.movie_id
5858 +- self.o_url = "http://www.imdb.com/title/tt%s" % self.movie_id
5859 ++ self.o_url = "http://www.imdb.com/title/tt%s" % self.movie_id
5860 +
5861 + def initialize(self):
5862 + self.cast_page = self.open_page(url=self.url + '/fullcredits')
5863 +@@ -107,13 +107,13 @@ class Plugin(movie.Movie):
5864 + self.studio = gutils.trim(self.page, '<h5>Compagnia:</h5>', '</a>')
5865 +
5866 + def get_o_site(self):
5867 +- self.o_site = "http://italian.imdb.com/title/tt%s/officialsites" % self.movie_id
5868 ++ self.o_site = "http://www.imdb.it/title/tt%s/officialsites" % self.movie_id
5869 +
5870 + def get_site(self):
5871 +- self.site = "http://italian.imdb.com/title/tt%s" % self.movie_id
5872 ++ self.site = "http://www.imdb.it/title/tt%s" % self.movie_id
5873 +
5874 + def get_trailer(self):
5875 +- self.trailer = "http://italian.imdb.com/title/tt%s/trailers" % self.movie_id
5876 ++ self.trailer = "http://www.imdb.it/title/tt%s/trailers" % self.movie_id
5877 +
5878 + def get_country(self):
5879 + self.country = gutils.trim(self.page, '<h5>Nazionalit&#xE0;:</h5>', '</div>')
5880 +@@ -181,50 +181,30 @@ class Plugin(movie.Movie):
5881 + return data
5882 +
5883 + class SearchPlugin(movie.SearchMovie):
5884 +- PATTERN = re.compile(r"""<A HREF=['"]/title/tt([0-9]+)/["']>(.*?)</LI>""")
5885 +- PATTERN2 = re.compile(r"""<a href=['"]/title/tt([0-9]+)/["'](.*?)</tr>""")
5886 ++ PATTERN = re.compile(r"""<a href=['"]/title/tt([0-9]+)/[^>]+[>](.*?)</td>""")
5887 ++ PATTERN_DIRECT = re.compile(r"""value="/title/tt([0-9]+)""")
5888 +
5889 + def __init__(self):
5890 +- self.original_url_search = 'http://italian.imdb.com/find?s=tt;q='
5891 +- self.translated_url_search = 'http://italian.imdb.com/find?s=tt;q='
5892 +- self.encode = 'iso8859-1'
5893 ++ self.original_url_search = 'http://www.imdb.it/find?s=tt&q='
5894 ++ self.translated_url_search = 'http://www.imdb.it/find?s=tt&q='
5895 ++ self.encode = 'utf8'
5896 +
5897 +- def search(self, parent_window):
5898 ++ def search(self,parent_window):
5899 + if not self.open_search(parent_window):
5900 + return None
5901 +- tmp_page = gutils.trim(self.page, 'Titoli popolari', '</table>')
5902 +- if not tmp_page:
5903 +- has_results = re.match('[(]Visualizza [1-9][0-7]* risultat[io]*[)]', self.page)
5904 +- if not has_results:
5905 +- # nothing or one result found, try another url which looks deeper in the imdb database
5906 +- # example: Adventures of Falcon -> one result, jumps directly to the movie page
5907 +- # which isn't supported by this plugin
5908 +- self.url = 'http://italian.imdb.com/find?more=tt;q='
5909 +- if not self.open_search(parent_window):
5910 +- return None
5911 +- self.page = gutils.trim(self.page, '(Visualizza', '>Suggerimenti per migliorare i tuoi risultati<')
5912 +- else:
5913 +- self.page = tmp_page
5914 +- self.page = self.page.decode('iso-8859-1')
5915 +- # correction of all &#xxx entities
5916 +- self.page = gutils.convert_entities(self.page)
5917 + return self.page
5918 +
5919 + def get_searches(self):
5920 +- elements = re.split('<LI>', self.page)
5921 +- if len(elements) < 2:
5922 +- elements = string.split(self.page, '<tr>')
5923 +- if len(elements):
5924 +- for element in elements[1:]:
5925 +- match = self.PATTERN2.findall(element)
5926 +- if len(match):
5927 +- tmp = re.sub('^[0-9]+[.]', '', gutils.clean(gutils.after(match[0][1], '>')))
5928 +- self.ids.append(match[0][0])
5929 +- self.titles.append(tmp)
5930 +- else:
5931 ++ elements = string.split(self.page, '<tr')
5932 ++ if len(elements):
5933 + for element in elements[1:]:
5934 + match = self.PATTERN.findall(element)
5935 +- if len(match):
5936 +- tmp = gutils.clean(match[0][1])
5937 +- self.ids.append(match[0][0])
5938 ++ if len(match) > 1:
5939 ++ tmp = re.sub('^[0-9]+[.]', '', gutils.clean(match[1][1]))
5940 ++ self.ids.append(match[1][0])
5941 + self.titles.append(tmp)
5942 ++ if len(self.ids) < 2:
5943 ++ # try to find a direct result
5944 ++ match = self.PATTERN_DIRECT.findall(self.page)
5945 ++ if len(match) > 0:
5946 ++ self.ids.append(match[0])
5947 +diff --git a/lib/plugins/movie/PluginMovieIMDB-pt.py b/lib/plugins/movie/PluginMovieIMDB-pt.py
5948 +index de3cf7f..c86c33f 100644
5949 +--- a/lib/plugins/movie/PluginMovieIMDB-pt.py
5950 ++++ b/lib/plugins/movie/PluginMovieIMDB-pt.py
5951 +@@ -39,14 +39,14 @@ class Plugin(movie.Movie):
5952 + def __init__(self, id):
5953 + self.encode ='iso-8859-1'
5954 + self.movie_id = id
5955 +- self.url = "http://www.imdb.pt/title/" + str(self.movie_id)
5956 ++ self.url = "http://www.imdb.pt/title/tt" + str(self.movie_id)
5957 +
5958 + def initialize(self):
5959 + self.page = gutils.convert_entities(self.page)
5960 +- self.cast_page = self.open_page(url=self.url + '/fullcredits')
5961 +- self.cast_page = gutils.convert_entities(self.cast_page)
5962 +- self.plot_page = self.open_page(url=self.url + '/plotsummary')
5963 +- self.plot_page = gutils.convert_entities(self.plot_page)
5964 ++ self.cast_page = self.open_page(url=self.url + '/fullcredits')
5965 ++ self.cast_page = gutils.convert_entities(self.cast_page)
5966 ++ self.plot_page = self.open_page(url=self.url + '/plotsummary')
5967 ++ self.plot_page = gutils.convert_entities(self.plot_page)
5968 +
5969 + def get_image(self):
5970 + self.image_url = gutils.trim(self.page, u'src="http://ia.media-imdb.com/images/', u'.jpg" /></a>')
5971 +@@ -65,8 +65,8 @@ class Plugin(movie.Movie):
5972 + self.director = gutils.strip_tags(self.director)
5973 +
5974 + def get_plot(self):
5975 +- self.plot = gutils.trim(self.plot_page, u'<div id="swiki.2.1">', u'</div>')
5976 +- self.plot = gutils.strip_tags(self.plot)
5977 ++ self.plot = gutils.trim(self.plot_page, u'<div id="swiki.2.1">', u'</div>')
5978 ++ self.plot = gutils.strip_tags(self.plot)
5979 + self.plot = self.plot.encode(self.encode)
5980 +
5981 + def get_year(self):
5982 +@@ -103,8 +103,8 @@ class Plugin(movie.Movie):
5983 +
5984 + def get_studio(self):
5985 + self.studio = gutils.trim(self.page, u'<h5>Companhia :</h5><div class="info-content">', u'Exibir mais</a>')
5986 +- self.studio = gutils.strip_tags(self.studio)
5987 +- self.studio = self.studio.encode(self.encode)
5988 ++ self.studio = gutils.strip_tags(self.studio)
5989 ++ self.studio = self.studio.encode(self.encode)
5990 +
5991 + def get_o_site(self):
5992 + self.o_site = ""
5993 +@@ -125,11 +125,12 @@ class Plugin(movie.Movie):
5994 +
5995 + def get_rating(self):
5996 + self.rating = gutils.trim(self.page, u'<div class="starbar-meta">', '/10')
5997 +- self.rating = gutils.strip_tags(self.rating)
5998 +- self.rating = string.replace(self.rating, ",", ".")
5999 +- self.rating = float(self.rating)
6000 +- self.rating = round(self.rating)
6001 +-
6002 ++ self.rating = gutils.strip_tags(self.rating)
6003 ++ self.rating = string.replace(self.rating, ",", ".")
6004 ++ if self.rating:
6005 ++ self.rating = float(self.rating)
6006 ++ self.rating = round(self.rating)
6007 ++
6008 + def get_screenplay(self):
6009 + self.screenplay = ''
6010 + parts = re.split('<a href=', gutils.trim(self.cast_page, u'>Créditos como roteirista<', '</table>'))
6011 +@@ -143,10 +144,10 @@ class Plugin(movie.Movie):
6012 + self.screenplay = self.screenplay + screenplay + ', '
6013 + if len(self.screenplay) > 2:
6014 + self.screenplay = self.screenplay[0:len(self.screenplay) - 2]
6015 +-
6016 ++
6017 + def get_cameraman(self):
6018 + self.cameraman = string.replace('<' + gutils.trim(self.cast_page, u'>Direção de Fotografia de<', '</table>'), u'(diretor de fotografia) ', '')
6019 +-
6020 ++
6021 + def __before_more(self, data):
6022 + for element in [u'>Exibir mais<', '>Full summary<', '>Full synopsis<']:
6023 + tmp = string.find(data, element)
6024 +@@ -155,32 +156,26 @@ class Plugin(movie.Movie):
6025 + return data
6026 +
6027 + class SearchPlugin(movie.SearchMovie):
6028 ++ PATTERN = re.compile(r"""<a href=['"]/title/tt([0-9]+)/[^>]+[>](.*?)</td>""")
6029 ++
6030 + def __init__(self):
6031 +- self.original_url_search = 'http://www.imdb.pt/find?s=all&q='
6032 +- self.translated_url_search = 'http://www.imdb.pt/find?s=all&q='
6033 +- self.encode = 'iso-8859-1'
6034 ++ self.original_url_search = 'http://www.imdb.pt/find?s=tt&q='
6035 ++ self.translated_url_search = 'http://www.imdb.pt/find?s=tt&q='
6036 ++ self.encode = 'utf8'
6037 +
6038 + def search(self, parent_window):
6039 + """Perform the web search"""
6040 + if not self.open_search(parent_window):
6041 + return None
6042 +- self.sub_search()
6043 + return self.page
6044 +
6045 +- def sub_search(self):
6046 +- """Isolating just a portion (with the data we want) of the results"""
6047 +- self.page = gutils.trim(self.page, \
6048 +- "Resultado)<table>", "<p><b>Nomes (Coincid")
6049 +-
6050 + def get_searches(self):
6051 + """Try to find both id and film title for each search result"""
6052 +- elements = string.split(self.page, 'height="6"><br><a href="')
6053 +- self.number_results = elements[-1]
6054 +-
6055 +- if (len(elements[0])):
6056 +- for element in elements:
6057 +- self.ids.append(gutils.trim(element, "title/", '/" onclick="'))
6058 +- self.titles.append(gutils.convert_entities \
6059 +- (gutils.trim(element, """/';">""", "</a> ")))
6060 +- else:
6061 +- self.number_results = 0
6062 +\ No newline at end of file
6063 ++ elements = string.split(self.page, '<tr')
6064 ++ if len(elements):
6065 ++ for element in elements[1:]:
6066 ++ match = self.PATTERN.findall(element)
6067 ++ if len(match) > 1:
6068 ++ tmp = re.sub('^[0-9]+[.]', '', gutils.clean(match[1][1]))
6069 ++ self.ids.append(match[1][0])
6070 ++ self.titles.append(tmp)
6071 +\ No newline at end of file
6072 +diff --git a/lib/plugins/movie/PluginMovieIMDB.py b/lib/plugins/movie/PluginMovieIMDB.py
6073 +index ed49591..3832528 100644
6074 +--- a/lib/plugins/movie/PluginMovieIMDB.py
6075 ++++ b/lib/plugins/movie/PluginMovieIMDB.py
6076 +@@ -1,8 +1,8 @@
6077 + # -*- coding: UTF-8 -*-
6078 +
6079 +-__revision__ = '$Id: PluginMovieIMDB.py 1605 2011-12-18 22:35:25Z piotrek $'
6080 ++__revision__ = '$Id$'
6081 +
6082 +-# Copyright (c) 2005-2011 Vasco Nunes, Piotr Ożarowski
6083 ++# Copyright (c) 2005-2013 Vasco Nunes, Piotr Ożarowski
6084 + #
6085 + # This program is free software; you can redistribute it and/or modify
6086 + # it under the terms of the GNU General Public License as published by
6087 +@@ -21,22 +21,26 @@ __revision__ = '$Id: PluginMovieIMDB.py 1605 2011-12-18 22:35:25Z piotrek $'
6088 + # You may use and distribute this software under the terms of the
6089 + # GNU General Public License, version 2 or later
6090 +
6091 +-import gutils, movie
6092 +-import string, re
6093 ++import gutils
6094 ++import movie
6095 ++import string
6096 ++import re
6097 +
6098 +-plugin_name = 'IMDb'
6099 +-plugin_description = 'Internet Movie Database'
6100 +-plugin_url = 'www.imdb.com'
6101 +-plugin_language = _('English')
6102 +-plugin_author = 'Vasco Nunes, Piotr Ożarowski'
6103 ++plugin_name = 'IMDb'
6104 ++plugin_description = 'Internet Movie Database'
6105 ++plugin_url = 'www.imdb.com'
6106 ++plugin_language = _('English')
6107 ++plugin_author = 'Vasco Nunes, Piotr Ożarowski'
6108 + plugin_author_email = 'griffith@××××××××.cc'
6109 +-plugin_version = '1.12'
6110 ++plugin_version = '1.15'
6111 ++
6112 +
6113 + class Plugin(movie.Movie):
6114 +- def __init__(self, id):
6115 +- self.encode = 'iso8859-1'
6116 +- self.movie_id = id
6117 +- self.url = "http://imdb.com/title/tt%s" % self.movie_id
6118 ++
6119 ++ def __init__(self, movie_id):
6120 ++ self.encode = 'utf-8'
6121 ++ self.movie_id = movie_id
6122 ++ self.url = "http://imdb.com/title/tt%s" % self.movie_id
6123 +
6124 + def initialize(self):
6125 + self.cast_page = self.open_page(url=self.url + '/fullcredits')
6126 +@@ -49,11 +53,12 @@ class Plugin(movie.Movie):
6127 + self.image_url = gutils.trim(tmp, 'src="', '"')
6128 +
6129 + def get_o_title(self):
6130 +- self.o_title = gutils.regextrim(self.page, 'class="title-extra">', '<')
6131 ++ self.o_title = gutils.regextrim(self.page, 'class="title-extra"[^>]*>', '<')
6132 + if not self.o_title:
6133 + self.o_title = gutils.regextrim(self.page, '<h1>', '([ ]|[&][#][0-9]+[;])<span')
6134 + if not self.o_title:
6135 + self.o_title = re.sub(' [(].*', '', gutils.trim(self.page, '<title>', '</title>'))
6136 ++ self.o_title = re.sub('"', '', self.o_title)
6137 +
6138 + def get_title(self): # same as get_o_title()
6139 + self.title = gutils.regextrim(self.page, '<h1>', '([ ]|[&][#][0-9]+[;])<span')
6140 +@@ -62,46 +67,55 @@ class Plugin(movie.Movie):
6141 +
6142 + def get_director(self):
6143 + self.director = ''
6144 +- parts = re.split('<a href=', gutils.trim(self.cast_page, '>Directed by<', '</table>'))
6145 ++ parts = re.split('<a href=', gutils.trim(self.cast_page, '>Directed by', '</table>'))
6146 + if len(parts) > 1:
6147 + for part in parts[1:]:
6148 +- director = gutils.trim(part, '>', '<')
6149 ++ director = string.strip(string.replace(gutils.trim(part, '>', '<'), '\n', ''))
6150 + self.director = self.director + director + ', '
6151 + self.director = self.director[0:len(self.director) - 2]
6152 +
6153 + def get_plot(self):
6154 +- self.plot = gutils.regextrim(self.page, '<h5>Plot:</h5>', '(</div>|<a href.*)')
6155 +- self.plot = self.__before_more(self.plot)
6156 ++ self.plot = gutils.regextrim(self.page, 'itemprop="description"', '<')
6157 ++ self.plot = gutils.after(self.plot, '>')
6158 + elements = string.split(self.plot_page, '<p class="plotpar">')
6159 ++ if len(elements) < 2:
6160 ++ elements = re.split('<li class="(?:odd|even)">', self.plot_page)
6161 + if len(elements) > 1:
6162 + self.plot = self.plot + '\n\n'
6163 + elements[0] = ''
6164 +- for element in elements:
6165 +- if element <> '':
6166 +- self.plot = self.plot + gutils.strip_tags(gutils.before(element, '</a>')) + '\n\n'
6167 ++ for element in elements[1:]:
6168 ++ if element != '':
6169 ++ self.plot += gutils.strip_tags(gutils.before(element, '</a>')) + '\n\n'
6170 +
6171 + def get_year(self):
6172 + self.year = gutils.trim(self.page, '<a href="/year/', '</a>')
6173 +- self.year = gutils.after(self.year, '">')
6174 ++ self.year = gutils.after(self.year, '>')
6175 ++ if not self.year:
6176 ++ tmp = gutils.trim(self.page, '<title>', '</title>')
6177 ++ tmp = re.search('([0-9]{4})[)]', tmp)
6178 ++ if tmp:
6179 ++ self.year = tmp.group(0)
6180 +
6181 + def get_runtime(self):
6182 + self.runtime = gutils.regextrim(self.page, 'Runtime:<[^>]+>', ' min')
6183 +
6184 + def get_genre(self):
6185 +- self.genre = gutils.regextrim(self.page, 'Genre[s]*:<[^>]+>', '</div>')
6186 ++ self.genre = string.replace(gutils.regextrim(self.page, 'Genre[s]*:<[^>]+>', '</div>'), '\n', '')
6187 + self.genre = self.__before_more(self.genre)
6188 +
6189 + def get_cast(self):
6190 + self.cast = ''
6191 +- self.cast = gutils.trim(self.cast_page, '<table class="cast">', '</table>')
6192 ++ self.cast = gutils.trim(self.cast_page, '<table class="cast_list">', '</table>')
6193 + if self.cast == '':
6194 + self.cast = gutils.trim(self.page, '<table class="cast">', '</table>')
6195 + self.cast = string.replace(self.cast, ' ... ', _(' as '))
6196 + self.cast = string.replace(self.cast, '...', _(' as '))
6197 +- self.cast = string.replace(self.cast, '</tr><tr>', "\n")
6198 +- self.cast = re.sub('</tr>[ \t]*<tr[ \t]*class="even">', "\n", self.cast)
6199 +- self.cast = re.sub('</tr>[ \t]*<tr[ \t]*class="odd">', "\n", self.cast)
6200 ++ self.cast = string.replace(self.cast, "\n", '')
6201 ++ self.cast = string.replace(self.cast, '</tr>', "\n")
6202 + self.cast = self.__before_more(self.cast)
6203 ++ self.cast = gutils.clean(self.cast)
6204 ++ self.cast = re.sub('[ \t]+', ' ', self.cast)
6205 ++ self.cast = re.sub(' \n ', '\n', self.cast)
6206 +
6207 + def get_classification(self):
6208 + self.classification = gutils.trim(self.page, '(<a href="/mpaa">MPAA</a>)', '</div>')
6209 +@@ -109,14 +123,15 @@ class Plugin(movie.Movie):
6210 +
6211 + def get_studio(self):
6212 + self.studio = ''
6213 +- tmp = gutils.regextrim(self.comp_page, 'Production Companies<[^>]+', '</ul>')
6214 ++ tmp = gutils.regextrim(self.comp_page, 'name="production"', '</ul>')
6215 + tmp = string.split(tmp, 'href="')
6216 +- for entry in tmp:
6217 +- entry = gutils.trim(entry, '>', '<')
6218 +- if entry:
6219 +- self.studio = self.studio + entry + ', '
6220 +- if self.studio:
6221 +- self.studio = self.studio[:-2]
6222 ++ if len(tmp) > 1:
6223 ++ for entry in tmp[1:]:
6224 ++ entry = string.strip(string.replace(gutils.trim(entry, '>', '<'), '\n', ''))
6225 ++ if entry:
6226 ++ self.studio = self.studio + entry + ', '
6227 ++ if self.studio:
6228 ++ self.studio = self.studio[:-2]
6229 +
6230 + def get_o_site(self):
6231 + self.o_site = ''
6232 +@@ -129,7 +144,7 @@ class Plugin(movie.Movie):
6233 +
6234 + def get_country(self):
6235 + self.country = '<' + gutils.trim(self.page, 'Country:<', '</div>')
6236 +- self.country = re.sub('[\n]+', '', self.country)
6237 ++ self.country = re.sub('[ ]+', ' ', re.sub('[\n]+', '', self.country))
6238 +
6239 + def get_rating(self):
6240 + pattern = re.compile('>([0-9]([.][0-9])*)(<[^>]+>)+[/](<[^>]+>)[0-9][0-9]<')
6241 +@@ -139,7 +154,7 @@ class Plugin(movie.Movie):
6242 + if self.rating:
6243 + try:
6244 + self.rating = round(float(self.rating), 0)
6245 +- except Exception, e:
6246 ++ except Exception:
6247 + self.rating = 0
6248 + else:
6249 + self.rating = 0
6250 +@@ -161,32 +176,29 @@ class Plugin(movie.Movie):
6251 + sound = re.sub('[\n]+', '', sound)
6252 + sound = re.sub('[ ]+', ' ', sound)
6253 + sound = sound.strip()
6254 +- tagline = gutils.regextrim(self.tagl_page, 'Taglines for', 'Related Links')
6255 +- index = string.rfind(tagline, '</div>')
6256 +- if index > -1:
6257 +- taglines = string.split(tagline[index:], '<hr')
6258 +- tagline = ''
6259 +- for entry in taglines:
6260 +- entry = gutils.clean(gutils.after(entry, '>'))
6261 ++ tagline = gutils.regextrim(self.tagl_page, '>Taglines', '>See also')
6262 ++ taglines = re.split('<div[^>]+class="soda[^>]*>', tagline)
6263 ++ tagline = ''
6264 ++ if len(taglines) > 1:
6265 ++ for entry in taglines[1:]:
6266 ++ entry = gutils.clean(gutils.before(entry, '</div>'))
6267 + if entry:
6268 + tagline = tagline + entry + '\n'
6269 +- else:
6270 +- tagline = ''
6271 +- if len(language)>0:
6272 +- self.notes = "%s: %s\n" %(_('Language'), language)
6273 +- if len(sound)>0:
6274 +- self.notes += "%s: %s\n" %(gutils.strip_tags(_('<b>Audio</b>')), sound)
6275 +- if len(color)>0:
6276 +- self.notes += "%s: %s\n" %(_('Color'), color)
6277 +- if len(tagline)>0:
6278 +- self.notes += "%s: %s\n" %('Tagline', tagline)
6279 ++ if len(language) > 0:
6280 ++ self.notes = "%s: %s\n" % (_('Language'), language)
6281 ++ if len(sound) > 0:
6282 ++ self.notes += "%s: %s\n" % (gutils.strip_tags(_('<b>Audio</b>')), sound)
6283 ++ if len(color) > 0:
6284 ++ self.notes += "%s: %s\n" % (_('Color'), color)
6285 ++ if len(tagline) > 0:
6286 ++ self.notes += "%s: %s\n" % ('Tagline', tagline)
6287 +
6288 + def get_screenplay(self):
6289 + self.screenplay = ''
6290 +- parts = re.split('<a href=', gutils.trim(self.cast_page, '>Writing credits<', '</table>'))
6291 ++ parts = re.split('<a href=', gutils.trim(self.cast_page, '>Writing Credits', '</table>'))
6292 + if len(parts) > 1:
6293 + for part in parts[1:]:
6294 +- screenplay = gutils.trim(part, '>', '<')
6295 ++ screenplay = string.strip(string.replace(gutils.trim(part, '>', '<'), '\n', ''))
6296 + if screenplay == 'WGA':
6297 + continue
6298 + screenplay = screenplay.replace(' (written by)', '')
6299 +@@ -194,28 +206,31 @@ class Plugin(movie.Movie):
6300 + self.screenplay = self.screenplay + screenplay + ', '
6301 + if len(self.screenplay) > 2:
6302 + self.screenplay = self.screenplay[0:len(self.screenplay) - 2]
6303 ++ self.screenplay = re.sub('[ \t]+', ' ', self.screenplay)
6304 +
6305 + def get_cameraman(self):
6306 + self.cameraman = ''
6307 +- tmp = gutils.regextrim(self.cast_page, 'Cinematography by<[^>]+', '</table>')
6308 ++ tmp = gutils.regextrim(self.cast_page, '>Cinematography by', '</table>')
6309 + tmp = string.split(tmp, 'href="')
6310 +- for entry in tmp:
6311 +- entry = gutils.trim(entry, '>', '<')
6312 +- if entry:
6313 +- self.cameraman = self.cameraman + entry + ', '
6314 +- if self.cameraman:
6315 +- self.cameraman = self.cameraman[:-2]
6316 ++ if len(tmp) > 1:
6317 ++ for entry in tmp[1:]:
6318 ++ entry = string.strip(string.replace(gutils.trim(entry, '>', '<'), '\n', ''))
6319 ++ if entry:
6320 ++ self.cameraman = self.cameraman + entry + ', '
6321 ++ if self.cameraman:
6322 ++ self.cameraman = self.cameraman[:-2]
6323 +
6324 + def __before_more(self, data):
6325 + for element in ['>See more<', '>more<', '>Full summary<', '>Full synopsis<']:
6326 + tmp = string.find(data, element)
6327 +- if tmp>0:
6328 ++ if tmp > 0:
6329 + data = data[:tmp] + '>'
6330 + return data
6331 +
6332 ++
6333 + class SearchPlugin(movie.SearchMovie):
6334 +- PATTERN = re.compile(r"""<A HREF=['"]/title/tt([0-9]+)/["']>(.*?)</LI>""")
6335 +- PATTERN2 = re.compile(r"""<a href=['"]/title/tt([0-9]+)/["'](.*?)</tr>""")
6336 ++ PATTERN = re.compile(r"""<a href=['"]/title/tt([0-9]+)/[^>]+[>](.*?)</td>""")
6337 ++ PATTERN_DIRECT = re.compile(r"""value="/title/tt([0-9]+)""")
6338 +
6339 + def __init__(self):
6340 + # http://www.imdb.com/List?words=
6341 +@@ -225,49 +240,35 @@ class SearchPlugin(movie.SearchMovie):
6342 + # finds a whole bunch of results. if you look for "Rocky" you will get 903 results.
6343 + # http://www.imdb.com/find?s=tt;q=
6344 + # seems to give the best results. 88 results for "Rocky", popular titles first.
6345 +- self.original_url_search = 'http://www.imdb.com/find?s=tt;q='
6346 +- self.translated_url_search = 'http://www.imdb.com/find?s=tt;q='
6347 +- self.encode = 'iso8859-1'
6348 ++ self.original_url_search = 'http://www.imdb.com/find?s=tt&q='
6349 ++ self.translated_url_search = 'http://www.imdb.com/find?s=tt&q='
6350 ++ self.encode = 'utf8'
6351 +
6352 +- def search(self,parent_window):
6353 ++ def search(self, parent_window):
6354 + if not self.open_search(parent_window):
6355 + return None
6356 +- tmp_page = gutils.trim(self.page, 'Here are the', '</TABLE>')
6357 +- if not tmp_page:
6358 +- has_results = re.match('[(]Displaying [1-9][0-7]* Result[s]*[)]', self.page)
6359 +- if not has_results:
6360 +- # nothing or one result found, try another url which looks deeper in the imdb database
6361 +- # example: Adventures of Falcon -> one result, jumps directly to the movie page
6362 +- # which isn't supported by this plugin
6363 +- self.url = 'http://www.imdb.com/find?more=tt;q='
6364 +- if not self.open_search(parent_window):
6365 +- return None
6366 +- self.page = gutils.trim(self.page, '(Displaying', '>Suggestions For Improving Your Results<')
6367 +- else:
6368 +- self.page = tmp_page
6369 +- self.page = self.page.decode('iso-8859-1')
6370 +- # correction of all &#xxx entities
6371 +- self.page = gutils.convert_entities(self.page)
6372 + return self.page
6373 +
6374 + def get_searches(self):
6375 +- elements = re.split('<LI>', self.page)
6376 +- if len(elements) < 2:
6377 +- elements = string.split(self.page, '<tr>')
6378 +- if len(elements):
6379 +- for element in elements[1:]:
6380 +- match = self.PATTERN2.findall(element)
6381 +- if len(match):
6382 +- tmp = re.sub('^[0-9]+[.]', '', gutils.clean(gutils.after(match[0][1], '>')))
6383 +- self.ids.append(match[0][0])
6384 +- self.titles.append(tmp)
6385 +- else:
6386 ++ elements = string.split(self.page, '<tr')
6387 ++ if len(elements):
6388 + for element in elements[1:]:
6389 + match = self.PATTERN.findall(element)
6390 +- if len(match):
6391 +- tmp = gutils.clean(match[0][1])
6392 +- self.ids.append(match[0][0])
6393 ++ if len(match) > 1:
6394 ++ tmp = re.sub('^[0-9]+[.]', '', gutils.clean(match[1][1]))
6395 ++ self.ids.append(match[1][0])
6396 + self.titles.append(tmp)
6397 ++ if len(self.ids) < 2:
6398 ++ # try to find a direct result
6399 ++ match = self.PATTERN_DIRECT.findall(self.page)
6400 ++ if len(match) > 0:
6401 ++ self.ids.append(match[0])
6402 ++ else:
6403 ++ # try to look for IMDb id directly
6404 ++ if len(self.title) == 7 and re.match('[0-9]+', self.title):
6405 ++ self.ids.append(self.title)
6406 ++
6407 ++
6408 + #
6409 + # Plugin Test
6410 + #
6411 +@@ -277,11 +278,12 @@ class SearchPluginTest(SearchPlugin):
6412 + # dict { movie_id -> [ expected result count for original url, expected result count for translated url ] }
6413 + #
6414 + test_configuration = {
6415 +- 'Rocky Balboa' : [ 25, 25 ],
6416 +- 'Ein glückliches Jahr' : [ 47, 47 ]
6417 ++ 'Rocky Balboa': [8, 8],
6418 ++ 'Ein glückliches Jahr': [2, 2]
6419 + }
6420 +
6421 +-class PluginTest:
6422 ++
6423 ++class PluginTest(object):
6424 + #
6425 + # Configuration for automated tests:
6426 + # dict { movie_id -> dict { arribute -> value } }
6427 +@@ -290,85 +292,29 @@ class PluginTest:
6428 + # * or the expected value
6429 + #
6430 + test_configuration = {
6431 +- '0138097' : {
6432 +- 'title' : 'Shakespeare in Love',
6433 +- 'o_title' : 'Shakespeare in Love',
6434 +- 'director' : 'John Madden',
6435 +- 'plot' : True,
6436 +- 'cast' : 'Geoffrey Rush' + _(' as ') + 'Philip Henslowe\n\
6437 +-Tom Wilkinson' + _(' as ') + 'Hugh Fennyman\n\
6438 +-Steven O\'Donnell' + _(' as ') + 'Lambert\n\
6439 +-Tim McMullan' + _(' as ') + 'Frees (as Tim McMullen)\n\
6440 +-Joseph Fiennes' + _(' as ') + 'Will Shakespeare\n\
6441 +-Steven Beard' + _(' as ') + 'Makepeace - the Preacher\n\
6442 +-Antony Sher' + _(' as ') + 'Dr. Moth\n\
6443 +-Patrick Barlow' + _(' as ') + 'Will Kempe\n\
6444 +-Martin Clunes' + _(' as ') + 'Richard Burbage\n\
6445 +-Sandra Reinton' + _(' as ') + 'Rosaline\n\
6446 +-Simon Callow' + _(' as ') + 'Tilney - Master of the Revels\n\
6447 +-Judi Dench' + _(' as ') + 'Queen Elizabeth\n\
6448 +-Bridget McConnell' + _(' as ') + 'Lady in Waiting (as Bridget McConnel)\n\
6449 +-Georgie Glen' + _(' as ') + 'Lady in Waiting\n\
6450 +-Nicholas Boulton' + _(' as ') + 'Henry Condell\n\
6451 +-Gwyneth Paltrow' + _(' as ') + 'Viola De Lesseps\n\
6452 +-Imelda Staunton' + _(' as ') + 'Nurse\n\
6453 +-Colin Firth' + _(' as ') + 'Lord Wessex\n\
6454 +-Desmond McNamara' + _(' as ') + 'Crier\n\
6455 +-Barnaby Kay' + _(' as ') + 'Nol\n\
6456 +-Jim Carter' + _(' as ') + 'Ralph Bashford\n\
6457 +-Paul Bigley' + _(' as ') + 'Peter - the Stage Manager\n\
6458 +-Jason Round' + _(' as ') + 'Actor in Tavern\n\
6459 +-Rupert Farley' + _(' as ') + 'Barman\n\
6460 +-Adam Barker' + _(' as ') + 'First Auditionee\n\
6461 +-Joe Roberts' + _(' as ') + 'John Webster\n\
6462 +-Harry Gostelow' + _(' as ') + 'Second Auditionee\n\
6463 +-Alan Cody' + _(' as ') + 'Third Auditionee\n\
6464 +-Mark Williams' + _(' as ') + 'Wabash\n\
6465 +-David Curtiz' + _(' as ') + 'John Hemmings\n\
6466 +-Gregor Truter' + _(' as ') + 'James Hemmings\n\
6467 +-Simon Day' + _(' as ') + 'First Boatman\n\
6468 +-Jill Baker' + _(' as ') + 'Lady De Lesseps\n\
6469 +-Amber Glossop' + _(' as ') + 'Scullery Maid\n\
6470 +-Robin Davies' + _(' as ') + 'Master Plum\n\
6471 +-Hywel Simons' + _(' as ') + 'Servant\n\
6472 +-Nicholas Le Prevost' + _(' as ') + 'Sir Robert De Lesseps\n\
6473 +-Ben Affleck' + _(' as ') + 'Ned Alleyn\n\
6474 +-Timothy Kightley' + _(' as ') + 'Edward Pope\n\
6475 +-Mark Saban' + _(' as ') + 'Augustine Philips\n\
6476 +-Bob Barrett' + _(' as ') + 'George Bryan\n\
6477 +-Roger Morlidge' + _(' as ') + 'James Armitage\n\
6478 +-Daniel Brocklebank' + _(' as ') + 'Sam Gosse\n\
6479 +-Roger Frost' + _(' as ') + 'Second Boatman\n\
6480 +-Rebecca Charles' + _(' as ') + 'Chambermaid\n\
6481 +-Richard Gold' + _(' as ') + 'Lord in Waiting\n\
6482 +-Rachel Clarke' + _(' as ') + 'First Whore\n\
6483 +-Lucy Speed' + _(' as ') + 'Second Whore\n\
6484 +-Patricia Potter' + _(' as ') + 'Third Whore\n\
6485 +-John Ramm' + _(' as ') + 'Makepeace\'s Neighbor\n\
6486 +-Martin Neely' + _(' as ') + 'Paris / Lady Montague (as Martin Neeley)\n\
6487 +-The Choir of St. George\'s School in Windsor' + _(' as ') + 'Choir (as The Choir of St. George\'s School, Windsor) rest of cast listed alphabetically:\n\
6488 +-Jason Canning' + _(' as ') + 'Nobleman (uncredited)\n\
6489 +-Kelley Costigan' + _(' as ') + 'Theatregoer (uncredited)\n\
6490 +-Rupert Everett' + _(' as ') + 'Christopher Marlowe (uncredited)\n\
6491 +-John Inman' + _(' as ') + 'Character player (uncredited)',
6492 +- 'country' : 'USA | UK',
6493 +- 'genre' : 'Comedy | Drama | Romance',
6494 +- 'classification' : 'R',
6495 +- 'studio' : 'Universal Pictures, Miramax Films, Bedford Falls Productions',
6496 +- 'o_site' : False,
6497 +- 'site' : 'http://www.imdb.com/title/tt0138097',
6498 +- 'trailer' : 'http://www.imdb.com/title/tt0138097/trailers',
6499 +- 'year' : 1998,
6500 +- 'notes' : _('Language') + ': English\n'\
6501 +-+ _('Audio') + ': Dolby Digital\n'\
6502 +-+ _('Color') + ': Color\n\
6503 ++ '0138097': {
6504 ++ 'title': 'Shakespeare in Love',
6505 ++ 'o_title': 'Shakespeare in Love',
6506 ++ 'director': 'John Madden',
6507 ++ 'plot': True,
6508 ++ 'country': 'USA',
6509 ++ 'genre': 'Comedy | Drama | Romance',
6510 ++ 'classification': False,
6511 ++ 'studio': 'Universal Pictures, Miramax Films, Bedford Falls Productions',
6512 ++ 'o_site': False,
6513 ++ 'site': 'http://www.imdb.com/title/tt0138097',
6514 ++ 'trailer': 'http://www.imdb.com/title/tt0138097/trailers',
6515 ++ 'year': 1998,
6516 ++ 'notes': _('Language') + ': English\n' \
6517 ++ + _('Audio') + ': Dolby Digital\n' \
6518 ++ + _('Color') + ': Color\n\
6519 + Tagline: ...A Comedy About the Greatest Love Story Almost Never Told...\n\
6520 + Love is the only inspiration',
6521 +- 'runtime' : 123,
6522 +- 'image' : True,
6523 +- 'rating' : 7,
6524 +- 'screenplay' : 'Marc Norman, Tom Stoppard',
6525 +- 'cameraman' : 'Richard Greatrex',
6526 +- 'barcode' : False
6527 ++ 'runtime': 123,
6528 ++ 'image': True,
6529 ++ 'rating': 7,
6530 ++ 'screenplay': 'Marc Norman, Tom Stoppard',
6531 ++ 'cameraman': 'Richard Greatrex',
6532 ++ 'barcode': False
6533 + },
6534 + }
6535 +diff --git a/lib/plugins/movie/PluginMovieKinoDe.py b/lib/plugins/movie/PluginMovieKinoDe.py
6536 +index 315b406..c492d78 100644
6537 +--- a/lib/plugins/movie/PluginMovieKinoDe.py
6538 ++++ b/lib/plugins/movie/PluginMovieKinoDe.py
6539 +@@ -1,6 +1,6 @@
6540 + # -*- coding: UTF-8 -*-
6541 +
6542 +-__revision__ = '$Id: PluginMovieKinoDe.py 1599 2011-12-02 19:52:02Z mikej06 $'
6543 ++__revision__ = '$Id$'
6544 +
6545 + # Copyright (c) 2006-2011
6546 + #
6547 +@@ -67,33 +67,34 @@ class Plugin(movie.Movie):
6548 + self.videopage = None
6549 +
6550 + def get_image(self):
6551 +- self.image_url = ''
6552 +- tmpdata = gutils.regextrim(self.page, '<div class="cover-area">', '</div>')
6553 +- if tmpdata:
6554 +- # video page
6555 +- tmpdata = re.search('(http[:][/][/][^/]+[/]flbilder[/][^"\']+)', tmpdata)
6556 +- if tmpdata:
6557 +- self.image_url = tmpdata.group(1)
6558 +- else:
6559 +- # kino page
6560 +- tmpdata = gutils.before(self.page, '<span style="line-height: 15px;">')
6561 +- if tmpdata:
6562 +- tmpparts = re.split('http://images.kino.de/s/', tmpdata)
6563 +- if len(tmpparts) > 2:
6564 +- self.image_url = 'http://images.kino.de/s/' + gutils.before(tmpparts[2], '"')
6565 +- elif len(tmpparts) > 1:
6566 +- self.image_url = 'http://images.kino.de/s/' + gutils.before(tmpparts[1], '"')
6567 +- if not self.image_url and self.videopage:
6568 +- tmpdata = gutils.regextrim(self.videopage, '<div class="cover-area">', '</div>')
6569 ++ self.image_url = string.replace(string.replace(gutils.trim(self.page, '"picture":', ','), '"', ''), '\\', '')
6570 ++ if not self.image_url:
6571 ++ tmpdata = gutils.regextrim(self.page, '<div class="cover-area">', '</div>')
6572 + if tmpdata:
6573 + # video page
6574 + tmpdata = re.search('(http[:][/][/][^/]+[/]flbilder[/][^"\']+)', tmpdata)
6575 + if tmpdata:
6576 + self.image_url = tmpdata.group(1)
6577 ++ else:
6578 ++ # kino page
6579 ++ tmpdata = gutils.before(self.page, '<span style="line-height: 15px;">')
6580 ++ if tmpdata:
6581 ++ tmpparts = re.split('http://images.kino.de/s/', tmpdata)
6582 ++ if len(tmpparts) > 2:
6583 ++ self.image_url = 'http://images.kino.de/s/' + gutils.before(tmpparts[2], '"')
6584 ++ elif len(tmpparts) > 1:
6585 ++ self.image_url = 'http://images.kino.de/s/' + gutils.before(tmpparts[1], '"')
6586 ++ if not self.image_url and self.videopage:
6587 ++ tmpdata = gutils.regextrim(self.videopage, '<div class="cover-area">', '</div>')
6588 ++ if tmpdata:
6589 ++ # video page
6590 ++ tmpdata = re.search('(http[:][/][/][^/]+[/]flbilder[/][^"\']+)', tmpdata)
6591 ++ if tmpdata:
6592 ++ self.image_url = tmpdata.group(1)
6593 +
6594 +
6595 + def get_o_title(self):
6596 +- self.o_title = gutils.trim(self.page, '<p>Originaltitel: ', '</p>')
6597 ++ self.o_title = gutils.regextrim(self.page, '(<p>Originaltitel[:] |Originaltitel<[^>]+>)', '(</tr>|</p>)')
6598 + if not self.o_title:
6599 + self.o_title = gutils.trim(self.page, '<h1(', ')')
6600 + if not self.o_title:
6601 +@@ -102,23 +103,23 @@ class Plugin(movie.Movie):
6602 + if self.videopage:
6603 + self.o_title = gutils.trim(self.videopage, '<p>Originaltitel: ', '</p>')
6604 + if not self.o_title:
6605 +- self.o_title = gutils.regextrim(self.page, '<h1>', '</h1>')
6606 ++ self.o_title = gutils.regextrim(self.page, '<h1>', '(</h1>|</span>)')
6607 +
6608 + def get_title(self):
6609 + self.title = gutils.trim(self.page, '<div class="teaser">', '</')
6610 + if not self.title:
6611 +- self.title = gutils.regextrim(self.page, '<h1>', '</h1>')
6612 ++ self.title = gutils.regextrim(self.page, '<h1>', '(</h1>|</span>)')
6613 +
6614 + def get_director(self):
6615 + self.director = gutils.trim(self.page, '<th>Regie:', '<th>')
6616 + if not self.director:
6617 +- self.director = gutils.trim(self.creditspage, 'Regie&nbsp;', '</tr>')
6618 ++ self.director = gutils.trim(self.creditspage, 'Regie:', '</li>')
6619 +
6620 + def get_plot(self):
6621 + self.plot = gutils.trim(self.page, '<div class="yui-content">', '<div class="footer">')
6622 + if not self.plot:
6623 + # kino page
6624 +- self.plot = gutils.trim(self.page, '<span style="line-height: 15px;">', '<table')
6625 ++ self.plot = gutils.after(gutils.trim(self.page, 'Filmhandlung & Hintergrund', '</div>'), '</h2>')
6626 + if not self.plot and self.videopage:
6627 + self.plot = gutils.trim(self.videopage, '<div class="yui-content">', '<div class="footer">')
6628 + if self.plot:
6629 +@@ -140,11 +141,15 @@ class Plugin(movie.Movie):
6630 +
6631 + def get_year(self):
6632 + self.year = ''
6633 +- tmp = gutils.trim(self.page, '<div class="description">', '</div>')
6634 ++ tmp = gutils.trim(gutils.trim(self.page, '"releaseDate":', ','), ':"', '"')
6635 + if tmp:
6636 +- searchyearandcountry = re.search('([0-9]{4})<br', tmp)
6637 +- if searchyearandcountry:
6638 +- self.year = searchyearandcountry.group(1)
6639 ++ self.year = tmp
6640 ++ else:
6641 ++ tmp = gutils.trim(self.page, '<div class="description">', '</div>')
6642 ++ if tmp:
6643 ++ searchyearandcountry = re.search('([0-9]{4})<br', tmp)
6644 ++ if searchyearandcountry:
6645 ++ self.year = searchyearandcountry.group(1)
6646 + if not self.year:
6647 + tmp = gutils.trim(self.page, '<span class="standardsmall"><strong>', '<br')
6648 + if tmp:
6649 +@@ -161,21 +166,24 @@ class Plugin(movie.Movie):
6650 + self.year = searchyearandcountry.group(1)
6651 +
6652 + def get_runtime(self):
6653 +- self.runtime = ''
6654 +- srchresult = re.search('Laufzeit: ([0-9]+)[ \t]Min[.]<', self.page)
6655 +- if srchresult <> None:
6656 +- self.runtime = srchresult.group(1)
6657 ++ self.runtime = gutils.trim(self.page, '"runtime":', ',')
6658 + if not self.runtime:
6659 +- srchresult = re.search('>([0-9]+)[ \t]Min[.]<', self.page)
6660 +- if srchresult <> None:
6661 +- self.runtime = srchresult.group(1)
6662 +- if not self.runtime and self.videopage:
6663 +- srchresult = re.search('Laufzeit: ([0-9]+)[ \t]Min[.]<', self.videopage)
6664 ++ srchresult = re.search('Laufzeit: ([0-9]+)[ \t]Min[.]<', self.page)
6665 + if srchresult <> None:
6666 + self.runtime = srchresult.group(1)
6667 ++ if not self.runtime:
6668 ++ srchresult = re.search('>([0-9]+)[ \t]Min[.]<', self.page)
6669 ++ if srchresult <> None:
6670 ++ self.runtime = srchresult.group(1)
6671 ++ if not self.runtime and self.videopage:
6672 ++ srchresult = re.search('Laufzeit: ([0-9]+)[ \t]Min[.]<', self.videopage)
6673 ++ if srchresult <> None:
6674 ++ self.runtime = srchresult.group(1)
6675 +
6676 + def get_genre(self):
6677 +- self.genre = gutils.trim(self.page,'<p class="genre">', '</p>')
6678 ++ self.genre = string.replace(gutils.trim(self.page, '"genre":', ','), '"', '')
6679 ++ if not self.genre:
6680 ++ self.genre = gutils.trim(self.page,'<p class="genre">', '</p>')
6681 + if not self.genre:
6682 + self.genre = gutils.trim(self.page, 'title="Zur Genreliste: Drama">', '<')
6683 + if not self.genre and self.videopage:
6684 +@@ -195,19 +203,20 @@ class Plugin(movie.Movie):
6685 + else:
6686 + self.cast = self.cast + name + '\n'
6687 + if not self.cast:
6688 +- tmp = gutils.trim(self.creditspage, '>Cast<br />', '>Crew<')
6689 +- if tmp:
6690 +- castparts = re.split('width="50%"><a href="/star/', tmp)
6691 +- for index in range(1, len(castparts), 1):
6692 +- role = gutils.clean(gutils.trim(castparts[index - 1], 'width="50%">', '</td>'))
6693 +- name = gutils.clean(gutils.trim(castparts[index], '">', '<'))
6694 +- if role:
6695 +- self.cast = self.cast + name + _(' as ') + role + '\n'
6696 +- else:
6697 +- self.cast = self.cast + name + '\n'
6698 ++ elements = re.split('<h3>Darsteller</h3>', self.page)
6699 ++ for element in elements[1:]:
6700 ++ actor = gutils.trim(element, 'itemprop="name">', '<')
6701 ++ if actor:
6702 ++ self.cast = self.cast + actor
6703 ++ role = gutils.trim(element, 'itemprop="title">', '<')
6704 ++ if role and role <> 'Darsteller':
6705 ++ self.cast = self.cast + _(' as ') + role
6706 ++ self.cast = self.cast + '\n'
6707 +
6708 + def get_classification(self):
6709 +- self.classification = gutils.regextrim(self.page, 'FSK: ', '<')
6710 ++ self.classification = string.replace(gutils.trim(self.page, '"fsk":', ','), '"', '')
6711 ++ if not self.classification:
6712 ++ self.classification = gutils.regextrim(self.page, 'FSK: ', '<')
6713 + if not self.classification and self.videopage:
6714 + self.classification = gutils.regextrim(self.videopage, 'FSK: ', '<')
6715 +
6716 +@@ -220,6 +229,8 @@ class Plugin(movie.Movie):
6717 + self.studio = string.replace(gutils.after(tmp, '<br/>'), 'Verleih: ', '')
6718 + if not self.studio:
6719 + self.studio = gutils.trim(self.page, 'Verleih: ', '<')
6720 ++ if not self.studio:
6721 ++ self.studio = gutils.trim(self.page, 'Verleih:', '</li>')
6722 + if not self.studio and self.videopage:
6723 + tmp = gutils.trim(self.videopage, '<div class="description">', '</div>')
6724 + if tmp:
6725 +@@ -258,6 +269,8 @@ class Plugin(movie.Movie):
6726 + tmp = gutils.trim(tmp, '<strong>', '</strong>')
6727 + if tmp:
6728 + self.country = gutils.before(tmp, ' ')
6729 ++ if not self.country:
6730 ++ self.country = gutils.trim(self.page, 'itemprop="contentLocation">', '<')
6731 + if not self.country and self.videopage:
6732 + tmp = gutils.trim(self.videopage, '<div class="description">', '</div>')
6733 + if tmp:
6734 +@@ -298,11 +311,23 @@ class Plugin(movie.Movie):
6735 + self.screenplay = gutils.regextrim(self.page, '<th>Buch:', '<th>')
6736 + if not self.screenplay:
6737 + self.screenplay= gutils.trim(self.creditspage, 'Drehbuch:&nbsp;', '</tr>')
6738 ++ if not self.screenplay:
6739 ++ elements = re.split('<h3>Drehbuch</h3>', self.page)
6740 ++ delimiter = ''
6741 ++ for element in elements[1:]:
6742 ++ self.screenplay = self.screenplay + delimiter + gutils.trim(element, 'itemprop="name">', '<')
6743 ++ delimiter = ', '
6744 +
6745 + def get_cameraman(self):
6746 + self.cameraman = gutils.regextrim(self.page, '<th>Kamera:', '(<th>|</table>)')
6747 + if not self.cameraman:
6748 + self.cameraman= gutils.trim(self.creditspage, 'Kamera&nbsp;', '</tr>')
6749 ++ if not self.cameraman:
6750 ++ elements = re.split('"function-title">Kamera</span>', self.page)
6751 ++ delimiter = ''
6752 ++ for element in elements[1:]:
6753 ++ self.cameraman = self.cameraman + delimiter + gutils.trim(element, 'itemprop="name">', '<')
6754 ++ delimiter = ', '
6755 +
6756 + class SearchPlugin(movie.SearchMovie):
6757 +
6758 +@@ -340,7 +365,7 @@ class SearchPlugin(movie.SearchMovie):
6759 + for element in elements2:
6760 + if element <> None:
6761 + title = gutils.clean(gutils.trim(element,'>','</a>')) + string.replace(' (' +
6762 +- gutils.clean(gutils.trim(element, '<p>', "<br />")) + ')', '()', '')
6763 ++ gutils.clean(gutils.trim(gutils.before(element, '</li>'), '<p>', "<br />")) + ')', '()', '')
6764 + if title != ' ':
6765 + id = re.sub('[?].*', '', gutils.before(element,'"'))
6766 + self.ids.append("V_" + id)
6767 +@@ -364,7 +389,7 @@ class SearchPluginTest(SearchPlugin):
6768 + # dict { movie_id -> [ expected result count for original url, expected result count for translated url ] }
6769 + #
6770 + test_configuration = {
6771 +- 'Rocky Balboa' : [ 9, 9 ],
6772 ++ 'Rocky Balboa' : [ 10, 10 ],
6773 + 'Arahan' : [ 10, 10 ],
6774 + 'Ein glückliches Jahr' : [ 4, 4 ]
6775 + }
6776 +@@ -393,12 +418,12 @@ Tony Burton' + _(' as ') + 'Duke\n\
6777 + A.J. Benza' + _(' as ') + 'L.C.',
6778 + 'country' : 'USA',
6779 + 'genre' : 'Drama',
6780 +- 'classification' : 'ab 12 Jahre',
6781 ++ 'classification' : '12',
6782 + 'studio' : 'Fox',
6783 + 'o_site' : False,
6784 + 'site' : 'http://www.kino.de/kinofilm/rocky-balboa/96132.html',
6785 + 'trailer' : 'http://www.kino.de/kinofilm/rocky-balboa/trailer/96132.html',
6786 +- 'year' : 2006,
6787 ++ 'year' : 2007,
6788 + 'notes' : False,
6789 + 'runtime' : 102,
6790 + 'image' : True,
6791 +@@ -417,14 +442,14 @@ Charles Gérard\n\
6792 + André Falcon',
6793 + 'country' : 'Frankreich/Italien',
6794 + 'genre' : 'Drama',
6795 +- 'classification' : 'ab 12',
6796 +- 'studio' : 'Black Hill Pictures',
6797 ++ 'classification' : '12',
6798 ++ 'studio' : 'Columbia TriStar',
6799 + 'o_site' : False,
6800 + 'site' : 'http://www.kino.de/kinofilm/ein-glueckliches-jahr/28675.html',
6801 + 'trailer' : 'http://www.kino.de/kinofilm/ein-glueckliches-jahr/trailer/28675.html',
6802 + 'year' : 1973,
6803 + 'notes' : False,
6804 +- 'runtime' : 110,
6805 ++ 'runtime' : 115,
6806 + 'image' : True,
6807 + 'rating' : False,
6808 + 'cameraman' : 'Jean Collomb',
6809 +diff --git a/lib/plugins/movie/PluginMovieMediadis.py b/lib/plugins/movie/PluginMovieMediadis.py
6810 +index a3860eb..94eda95 100644
6811 +--- a/lib/plugins/movie/PluginMovieMediadis.py
6812 ++++ b/lib/plugins/movie/PluginMovieMediadis.py
6813 +@@ -1,6 +1,6 @@
6814 + # -*- coding: UTF-8 -*-
6815 +
6816 +-# $Id: PluginMovieMediadis.py 1090 2008-12-16 20:59:02Z piotrek $
6817 ++# $Id$
6818 +
6819 + # Copyright (c) 2005-2007 Vasco Nunes
6820 + # You may use and distribute this software under the terms of the
6821 +diff --git a/lib/plugins/movie/PluginMovieMoviefone.py b/lib/plugins/movie/PluginMovieMoviefone.py
6822 +index 877c0ec..1123e98 100644
6823 +--- a/lib/plugins/movie/PluginMovieMoviefone.py
6824 ++++ b/lib/plugins/movie/PluginMovieMoviefone.py
6825 +@@ -1,6 +1,6 @@
6826 + # -*- coding: UTF-8 -*-
6827 +
6828 +-# $Id: PluginMovieMoviefone.py 1113 2009-01-06 21:30:41Z mikej06 $
6829 ++# $Id$
6830 +
6831 + # Copyright (c) 2005-2009 Vasco Nunes
6832 + # You may use and distribute this software under the terms of the
6833 +diff --git a/lib/plugins/movie/PluginMovieMyMoviesIt.py b/lib/plugins/movie/PluginMovieMyMoviesIt.py
6834 +index bdab469..f15d07a 100644
6835 +--- a/lib/plugins/movie/PluginMovieMyMoviesIt.py
6836 ++++ b/lib/plugins/movie/PluginMovieMyMoviesIt.py
6837 +@@ -1,6 +1,6 @@
6838 + # -*- coding: UTF-8 -*-
6839 +
6840 +-__revision__ = '$Id: PluginMovieMyMoviesIt.py 1577 2011-08-30 21:13:26Z mikej06 $'
6841 ++__revision__ = '$Id$'
6842 +
6843 + # Copyright (c) 2007-2011
6844 + #
6845 +diff --git a/lib/plugins/movie/PluginMovieOFDb.py b/lib/plugins/movie/PluginMovieOFDb.py
6846 +index 7c7b2b4..369ac17 100644
6847 +--- a/lib/plugins/movie/PluginMovieOFDb.py
6848 ++++ b/lib/plugins/movie/PluginMovieOFDb.py
6849 +@@ -1,6 +1,6 @@
6850 + # -*- coding: UTF-8 -*-
6851 +
6852 +-__revision__ = '$Id: PluginMovieOFDb.py 1599 2011-12-02 19:52:02Z mikej06 $'
6853 ++__revision__ = '$Id$'
6854 +
6855 + # Written by Christian Sagmueller <christian@××××××××××.net>
6856 + # based on PluginMovieIMDB.py, Copyright (c) 2005 Vasco Nunes
6857 +@@ -16,7 +16,7 @@ plugin_url = "www.ofdb.de"
6858 + plugin_language = _("German")
6859 + plugin_author = "Christian Sagmueller, Jessica Katharina Parth"
6860 + plugin_author_email = "Jessica.K.P@×××××××××××××.org"
6861 +-plugin_version = "0.10"
6862 ++plugin_version = "0.11"
6863 +
6864 + class Plugin(movie.Movie):
6865 + def __init__(self, id):
6866 +@@ -65,7 +65,7 @@ class Plugin(movie.Movie):
6867 +
6868 + def get_runtime(self):
6869 + # from imdb
6870 +- self.runtime = gutils.regextrim(self.imdb_page, '<h5>(L&auml;nge|L&#xE4;nge|Runtime):</h5>', ' (min|Min)')
6871 ++ self.runtime = gutils.after(gutils.regextrim(self.imdb_page, 'itemprop="duration"', ' (min|Min)'), '>')
6872 +
6873 + def get_genre(self):
6874 + self.genre = gutils.trim(self.page,"Genre(s):","</table>")
6875 +@@ -94,10 +94,10 @@ class Plugin(movie.Movie):
6876 +
6877 + def get_studio(self):
6878 + # from imdb
6879 +- self.studio = gutils.regextrim(self.imdb_page, '<h5>(Firma|Company):</h5>', '</a>')
6880 ++ self.studio = gutils.regextrim(self.imdb_page, 'Production Co:', '(<span|</span>)')
6881 +
6882 + def get_o_site(self):
6883 +- self.o_site = ""
6884 ++ self.o_site = gutils.trim(gutils.regextrim(self.imdb_page, 'Official Sites:', '(<span|</span>)'), 'href="', '"')
6885 +
6886 + def get_site(self):
6887 + self.site = self.url
6888 +@@ -175,63 +175,90 @@ class PluginTest:
6889 + 'plot' : True,
6890 + 'cast' : 'Sylvester Stallone' + _(' as ') + 'Rocky Balboa\n\
6891 + Burt Young' + _(' as ') + 'Paulie\n\
6892 +-Milo Ventimiglia' + _(' as ') + 'Robert Jr.\n\
6893 ++Antonio Tarver' + _(' as ') + 'Mason \'The Line\' Dixon\n\
6894 + Geraldine Hughes' + _(' as ') + 'Marie\n\
6895 +-James Francis Kelly III' + _(' as ') + 'Steps\n\
6896 ++Milo Ventimiglia' + _(' as ') + 'Robert Jr.\n\
6897 + Tony Burton' + _(' as ') + 'Duke\n\
6898 +-A.J. Benza\n\
6899 ++A.J. Benza' + _(' as ') + 'L.C.\n\
6900 ++James Francis Kelly III' + _(' as ') + 'Steps\n\
6901 ++Lou DiBella' + _(' as ') + 'Himself\n\
6902 ++Mike Tyson' + _(' as ') + 'Himself\n\
6903 + Henry G. Sanders' + _(' as ') + 'Martin\n\
6904 +-Antonio Tarver' + _(' as ') + 'Mason \'The Line\' Dixon\n\
6905 + Pedro Lovell' + _(' as ') + 'Spider Rico\n\
6906 +-Ana Gerena\n\
6907 +-Angela Boyd\n\
6908 ++Ana Gerena' + _(' as ') + 'Isabel\n\
6909 ++Angela Boyd' + _(' as ') + 'Angie\n\
6910 + Louis Giansante\n\
6911 + Maureen Schilling\n\
6912 ++Lahmard J. Tate\n\
6913 ++Woody Paige\n\
6914 ++Skip Bayless\n\
6915 ++Jay Crawford\n\
6916 ++Brian Kenny\n\
6917 ++Dana Jacobson\n\
6918 ++Charles Johnson\n\
6919 ++James Binns\n\
6920 ++Johnnie Hobbs Jr.\n\
6921 ++Barney Fitzpatrick\n\
6922 ++Jim Lampley\n\
6923 ++Larry Merchant\n\
6924 ++Max Kellerman\n\
6925 ++LeRoy Neiman\n\
6926 ++Bert Randolph Sugar\n\
6927 ++Bernard Fernández\n\
6928 ++Gunnar Peterson\n\
6929 ++Yahya\n\
6930 ++Marc Ratner\n\
6931 ++Anthony Lato Jr.\n\
6932 ++Jack Lazzarado\n\
6933 ++Michael Buffer' + _(' as ') + 'Ring Announcer\n\
6934 ++Joe Cortez' + _(' as ') + 'Referee\n\
6935 + Carter Mitchell\n\
6936 + Vinod Kumar\n\
6937 ++Fran Pultro\n\
6938 ++Frank Stallone als Frank Stallone Jr.' + _(' as ') + 'Dinner Patron \n\
6939 ++Jody Giambelluca\n\
6940 + Tobias Segal' + _(' as ') + 'Robert\'s Friend\n\
6941 + Tim Carr' + _(' as ') + 'Robert\'s Friend \n\
6942 ++Matt Frack\n\
6943 + Paul Dion Monte' + _(' as ') + 'Robert\'s Friend\n\
6944 + Kevin King Templeton\n\
6945 + Robert Michael Kelly\n\
6946 +-Don Sherman' + _(' as ') + 'Andy\n\
6947 +-Nick Baker\n\
6948 + Rick Buchborn\n\
6949 ++Nick Baker\n\
6950 ++Don Sherman' + _(' as ') + 'Andy\n\
6951 + Gary Compton\n\
6952 +-Jody Giambelluca\n\
6953 +-Frank Stallone als Frank Stallone Jr.' + _(' as ') + 'Dinner Patron \n\
6954 +-Fran Pultro\n\
6955 +-Michael Buffer' + _(' as ') + 'Ring Announcer\n\
6956 +-Jack Lazzarado\n\
6957 +-Marc Ratner\n\
6958 +-Anthony Lato Jr.\n\
6959 +-Yahya\n\
6960 +-Gunnar Peterson\n\
6961 +-Bernard Fernández\n\
6962 +-Bert Randolph Sugar\n\
6963 +-Jim Lampley\n\
6964 +-Larry Merchant\n\
6965 +-Max Kellerman\n\
6966 +-James Binns\n\
6967 +-Johnnie Hobbs Jr.\n\
6968 +-Barney Fitzpatrick\n\
6969 +-Brian Kenny\n\
6970 +-Dana Jacobson\n\
6971 +-Skip Bayless\n\
6972 +-Charles Johnson\n\
6973 +-Matt Frack\n\
6974 +-Woody Paige\n\
6975 +-Jay Crawford\n\
6976 +-Lahmard J. Tate\n\
6977 +-LeRoy Neiman\n\
6978 +-Mike Tyson' + _(' as ') + 'Himself\n\
6979 +-Lou DiBella\n\
6980 +-Joe Cortez\n\
6981 +-Ricky Cavazos' + _(' as ') + 'Boxing Spectator (uncredited)',
6982 ++Vale Anoai\n\
6983 ++Sikander Malik\n\
6984 ++Michael Ahl\n\
6985 ++Andrew Aninsman\n\
6986 ++Ben Bachelder\n\
6987 ++Lacy Bevis\n\
6988 ++Tim Brooks\n\
6989 ++D.T. Carney\n\
6990 ++Ricky Cavazos' + _(' as ') + 'Boxing Spectator (uncredited)\n\
6991 ++Rennie Cowan\n\
6992 ++Deon Derrico\n\
6993 ++Jacob \'Stitch\' Duran\n\
6994 ++Simon P. Edwards\n\
6995 ++Ruben Fischman' + _(' as ') + 'High-Roller in Las Vegas (uncredited)\n\
6996 ++David Gere\n\
6997 ++Noah Jacobs\n\
6998 ++Mark J. Kilbane\n\
6999 ++Zach Klinefelter\n\
7000 ++David Kneeream\n\
7001 ++Dan Montero\n\
7002 ++Keith Moyer' + _(' as ') + 'Bar Patron (uncredited)\n\
7003 ++Carol Anne Mueller\n\
7004 ++Jacqueline Olivia\n\
7005 ++Brian H. Scott\n\
7006 ++Keyon Smith\n\
7007 ++Frank Traynor\n\
7008 ++Ryan Tygh\n\
7009 ++Kimberly Villanova',
7010 + 'country' : 'USA',
7011 + 'genre' : 'Action, Drama, Sportfilm',
7012 + 'classification' : False,
7013 +- 'studio' : 'Metro-Goldwyn-Mayer (MGM)',
7014 ++ 'studio' : 'Metro-Goldwyn-Mayer (MGM), Columbia Pictures, Revolution Studios',
7015 + 'o_site' : False,
7016 + 'site' : 'http://www.ofdb.de/film/103013,Rocky%20Balboa',
7017 + 'trailer' : False,
7018 +@@ -246,7 +273,7 @@ Ricky Cavazos' + _(' as ') + 'Boxing Spectator (uncredited)',
7019 + 'o_title' : 'Bonne année, La',
7020 + 'director' : 'Claude Lelouch',
7021 + 'plot' : False,
7022 +- 'cast' : 'Lino Ventura' + _(' as ') + 'Simon \n\
7023 ++ 'cast' : 'Lino Ventura' + _(' as ') + 'Simon\n\
7024 + Françoise Fabian' + _(' as ') + 'Françoise\n\
7025 + Charles Gérard' + _(' as ') + 'Charlot\n\
7026 + André Falcon' + _(' as ') + 'Le bijoutier\n\
7027 +@@ -255,7 +282,7 @@ Lilo\n\
7028 + Claude Mann\n\
7029 + Frédéric de Pasquale\n\
7030 + Gérard Sire\n\
7031 +-Silvano Tranquilli' + _(' as ') + 'L\'amant italien \n\
7032 ++Silvano Tranquilli' + _(' as ') + 'L\'amant italien\n\
7033 + André Barello\n\
7034 + Michel Bertay\n\
7035 + Norman de la Chesnaye\n\
7036 +@@ -270,14 +297,14 @@ Harry Walter\n\
7037 + Elie Chouraqui',
7038 + 'country' : 'Frankreich',
7039 + 'genre' : 'Komödie, Krimi',
7040 +- 'classification' : '12 (f)',
7041 +- 'studio' : 'Les Films 13',
7042 ++ 'classification' : False,
7043 ++ 'studio' : 'Les Films 13, Rizzoli Film',
7044 + 'o_site' : False,
7045 + 'site' : 'http://www.ofdb.de/film/22489,Ein-Gl%C3%BCckliches-Jahr',
7046 + 'trailer' : False,
7047 + 'year' : 1973,
7048 + 'notes' : False,
7049 +- 'runtime' : 90,
7050 ++ 'runtime' : 115,
7051 + 'image' : True,
7052 + 'rating' : 6
7053 + },
7054 +@@ -318,9 +345,9 @@ Oh Soon-tae\n\
7055 + Lee Oi-soo',
7056 + 'country' : 'Südkorea',
7057 + 'genre' : 'Action, Fantasy, Komödie',
7058 +- 'classification' : '16',
7059 +- 'studio' : 'Fun and Happiness',
7060 +- 'o_site' : False,
7061 ++ 'classification' : False,
7062 ++ 'studio' : 'Fun and Happiness, Good Movie Company',
7063 ++ 'o_site' : 'http://www.arahan.co.kr/',
7064 + 'site' : 'http://www.ofdb.de/film/54088,Arahan',
7065 + 'trailer' : False,
7066 + 'year' : 2004,
7067 +diff --git a/lib/plugins/movie/PluginMovieOnet.py b/lib/plugins/movie/PluginMovieOnet.py
7068 +index 647fa5a..23743c4 100644
7069 +--- a/lib/plugins/movie/PluginMovieOnet.py
7070 ++++ b/lib/plugins/movie/PluginMovieOnet.py
7071 +@@ -1,6 +1,6 @@
7072 + # -*- coding: utf-8 -*-
7073 +
7074 +-__revision__ = '$Id: PluginMovieOnet.py 1390 2010-01-08 11:13:20Z kura666 $'
7075 ++__revision__ = '$Id$'
7076 +
7077 + # Copyright (c) 2005-2006 Piotr Ożarowski
7078 + #
7079 +diff --git a/lib/plugins/movie/PluginMoviePTGate.py b/lib/plugins/movie/PluginMoviePTGate.py
7080 +index 03a8cda..cfe4741 100644
7081 +--- a/lib/plugins/movie/PluginMoviePTGate.py
7082 ++++ b/lib/plugins/movie/PluginMoviePTGate.py
7083 +@@ -1,6 +1,6 @@
7084 + # -*- coding: UTF-8 -*-
7085 +
7086 +-__revision__ = '$Id: PluginMoviePTGate.py 1513 2011-02-03 19:50:04Z iznogoud $'
7087 ++__revision__ = '$Id$'
7088 +
7089 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ozarowski
7090 + #
7091 +diff --git a/lib/plugins/movie/PluginMovieScope.py b/lib/plugins/movie/PluginMovieScope.py
7092 +index d7ae589..47f3ce7 100644
7093 +--- a/lib/plugins/movie/PluginMovieScope.py
7094 ++++ b/lib/plugins/movie/PluginMovieScope.py
7095 +@@ -1,6 +1,6 @@
7096 + # -*- coding: UTF-8 -*-
7097 +
7098 +-__revision__ = '$Id: PluginMovieScope.py 1405 2010-03-02 21:26:35Z mikej06 $'
7099 ++__revision__ = '$Id$'
7100 +
7101 + # Copyright (c) 2010
7102 + #
7103 +diff --git a/lib/plugins/movie/PluginMovieStopklatka.py b/lib/plugins/movie/PluginMovieStopklatka.py
7104 +index 322f00b..8496d40 100644
7105 +--- a/lib/plugins/movie/PluginMovieStopklatka.py
7106 ++++ b/lib/plugins/movie/PluginMovieStopklatka.py
7107 +@@ -1,6 +1,6 @@
7108 + # -*- coding: utf-8 -*-
7109 +
7110 +-__revision__ = '$Id: PluginMovieStopklatka.py 1383 2010-01-05 21:04:00Z mikej06 $'
7111 ++__revision__ = '$Id$'
7112 +
7113 + # Copyright (c) 2005-2010 Piotr Ożarowski
7114 + #
7115 +diff --git a/lib/plugins/movie/PluginMovieTanukiAnime.py b/lib/plugins/movie/PluginMovieTanukiAnime.py
7116 +index 5e58be6..e1a6472 100644
7117 +--- a/lib/plugins/movie/PluginMovieTanukiAnime.py
7118 ++++ b/lib/plugins/movie/PluginMovieTanukiAnime.py
7119 +@@ -1,6 +1,6 @@
7120 + # -*- coding: utf-8 -*-
7121 +
7122 +-__revision__ = '$Id: PluginMovieTanukiAnime.py 1090 2008-12-16 20:59:02Z piotrek $'
7123 ++__revision__ = '$Id$'
7124 +
7125 + # Copyright (c) 2005-2007 Piotr Ożarowski
7126 + #
7127 +diff --git a/lib/plugins/movie/PluginMovieWP.py b/lib/plugins/movie/PluginMovieWP.py
7128 +index 31386b8..e159e01 100644
7129 +--- a/lib/plugins/movie/PluginMovieWP.py
7130 ++++ b/lib/plugins/movie/PluginMovieWP.py
7131 +@@ -1,6 +1,6 @@
7132 + # -*- coding: utf-8 -*-
7133 +
7134 +-__revision__ = '$Id: PluginMovieWP.py 1412 2010-03-28 20:18:54Z mikej06 $'
7135 ++__revision__ = '$Id$'
7136 +
7137 + # Copyright (c) 2005-2010 Piotr Ożarowski
7138 + #
7139 +diff --git a/lib/plugins/movie/PluginMovieZelluloid.py b/lib/plugins/movie/PluginMovieZelluloid.py
7140 +index e90a829..a9e15a1 100644
7141 +--- a/lib/plugins/movie/PluginMovieZelluloid.py
7142 ++++ b/lib/plugins/movie/PluginMovieZelluloid.py
7143 +@@ -1,6 +1,6 @@
7144 + # -*- coding: UTF-8 -*-
7145 +
7146 +-__revision__ = '$Id: PluginMovieZelluloid.py 1599 2011-12-02 19:52:02Z mikej06 $'
7147 ++__revision__ = '$Id$'
7148 +
7149 + # Copyright (c) 2007-2011 Michael Jahn
7150 + #
7151 +@@ -51,7 +51,7 @@ class Plugin(movie.Movie):
7152 + self.image_url = 'http://www.zelluloid.de/images/poster/' + gutils.trim(self.page, '<IMG SRC="/images/poster/', '"');
7153 +
7154 + def get_o_title(self):
7155 +- self.o_title = gutils.trim(self.page, 'Originaltitel: ', '<BR>')
7156 ++ self.o_title = gutils.regextrim(self.page, 'Originaltitel: ', '(<BR>|<br />)')
7157 + if self.o_title == '':
7158 + self.o_title = gutils.trim(self.page, '<title>', '|')
7159 +
7160 +@@ -224,11 +224,13 @@ James Francis Kelly III' + _(' as ') + 'Steps\n\
7161 + Talia Shire' + _(' as ') + 'Adrian\n\
7162 + Lou DiBella' + _(' as ') + 'Lou DiBella\n\
7163 + Mike Tyson' + _(' as ') + 'Mike Tyson\n\
7164 +-Henry G. Sanders' + _(' as ') + 'Martin',
7165 ++Henry G. Sanders' + _(' as ') + 'Martin\n\
7166 ++Kevin King Templeton' + _(' as ') + '\n\
7167 ++Frank Stallone as',
7168 + 'country' : 'USA',
7169 +- 'genre' : 'Drama, Sport',
7170 ++ 'genre' : 'Drama, Action, Sport',
7171 + 'classification' : 'ab 12',
7172 +- 'studio' : 'Chartoff-Winkler Productions, Columbia Pictures Corporation, Metro-Goldwyn-Mayer, Revolution Studios, Rogue Marble',
7173 ++ 'studio' : 'Chartoff-Winkler Productions, Columbia Pictures Corporation, MGM, Revolution Studios, Rogue Marble',
7174 + 'o_site' : False,
7175 + 'site' : 'http://www.zelluloid.de/filme/details.php3?id=2835',
7176 + 'trailer' : False,
7177 +diff --git a/lib/preferences.py b/lib/preferences.py
7178 +index e65bc2d..7abf510 100644
7179 +--- a/lib/preferences.py
7180 ++++ b/lib/preferences.py
7181 +@@ -1,6 +1,6 @@
7182 + # -*- coding: UTF-8 -*-
7183 +
7184 +-__revision__ = '$Id: preferences.py 1597 2011-10-04 18:41:24Z piotrek $'
7185 ++__revision__ = '$Id$'
7186 +
7187 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
7188 + #
7189 +diff --git a/lib/quick_filter.py b/lib/quick_filter.py
7190 +index 70c6ea8..f9d433e 100644
7191 +--- a/lib/quick_filter.py
7192 ++++ b/lib/quick_filter.py
7193 +@@ -1,6 +1,6 @@
7194 + # -*- coding: UTF-8 -*-
7195 +
7196 +-__revision__ = '$Id: quick_filter.py 1601 2011-12-12 20:07:03Z mikej06 $'
7197 ++__revision__ = '$Id$'
7198 +
7199 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
7200 +
7201 +diff --git a/lib/sql.py b/lib/sql.py
7202 +index c93587b..5e5e5f3 100644
7203 +--- a/lib/sql.py
7204 ++++ b/lib/sql.py
7205 +@@ -1,7 +1,7 @@
7206 + # -*- coding: UTF-8 -*-
7207 + # vim: fdm=marker
7208 +
7209 +-__revision__ = '$Id: sql.py 1538 2011-02-13 20:04:22Z piotrek $'
7210 ++__revision__ = '$Id$'
7211 +
7212 + # Copyright © 2005-2009 Vasco Nunes, Piotr Ożarowski
7213 + #
7214 +diff --git a/lib/test_movieplugins.py b/lib/test_movieplugins.py
7215 +index 8047375..0c3e80b 100644
7216 +--- a/lib/test_movieplugins.py
7217 ++++ b/lib/test_movieplugins.py
7218 +@@ -1,6 +1,6 @@
7219 + # -*- coding: UTF-8 -*-
7220 +
7221 +-__revision__ = '$Id: test_movieplugins.py 1599 2011-12-02 19:52:02Z mikej06 $'
7222 ++__revision__ = '$Id$'
7223 +
7224 + # Copyright (c) 2006-2011
7225 + #
7226 +@@ -69,32 +69,31 @@ sys.path.append('plugins/extensions')
7227 + #
7228 + class PluginTester:
7229 + test_plugins = [
7230 +- 'PluginMovieAllocine',
7231 +- 'PluginMovieAllRovi',
7232 +- 'PluginMovieAmazon',
7233 +- 'PluginMovieAniDB',
7234 +- 'PluginMovieCinematografo',
7235 +- 'PluginMovieCineMovies',
7236 +- 'PluginMovieCineteka',
7237 +- 'PluginMovieClubedevideo',
7238 +- 'PluginMovieCSFD',
7239 +- 'PluginMovieCulturalia',
7240 +- 'PluginMovieDVDEmpire',
7241 +- 'PluginMovieE-Pipoca',
7242 +- 'PluginMovieFilmAffinity',
7243 +- 'PluginMovieFilmDb',
7244 +- #'PluginMovieFilmeVonAZ',
7245 +- 'PluginMovieFilmtipset',
7246 +- 'PluginMovieHKMDB',
7247 ++ # 'PluginMovieAllocine',
7248 ++ # 'PluginMovieAllRovi',
7249 ++ # 'PluginMovieAmazon',
7250 ++ # 'PluginMovieAniDB',
7251 ++ # 'PluginMovieCinematografo',
7252 ++ # 'PluginMovieCineMovies',
7253 ++ # 'PluginMovieCineteka',
7254 ++ # 'PluginMovieClubedevideo',
7255 ++ # 'PluginMovieCSFD',
7256 ++ # 'PluginMovieCulturalia',
7257 ++ # 'PluginMovieDVDEmpire',
7258 ++ # 'PluginMovieE-Pipoca',
7259 ++ # 'PluginMovieFilmAffinity',
7260 ++ # 'PluginMovieFilmeVonAZ',
7261 ++ # 'PluginMovieFilmtipset',
7262 ++ # 'PluginMovieHKMDB',
7263 + 'PluginMovieIMDB',
7264 +- 'PluginMovieIMDB-de',
7265 +- 'PluginMovieIMDB-es',
7266 +- 'PluginMovieKinoDe',
7267 +- 'PluginMovieMovieMeter',
7268 +- 'PluginMovieMyMoviesIt',
7269 +- 'PluginMovieOFDb',
7270 +- 'PluginMovieScope',
7271 +- 'PluginMovieZelluloid',
7272 ++ # 'PluginMovieIMDB-de',
7273 ++ # 'PluginMovieIMDB-es',
7274 ++ # 'PluginMovieKinoDe',
7275 ++ # 'PluginMovieMovieMeter',
7276 ++ # 'PluginMovieMyMoviesIt',
7277 ++ # 'PluginMovieOFDb',
7278 ++ # 'PluginMovieScope',
7279 ++ # 'PluginMovieZelluloid',
7280 + ]
7281 +
7282 + #
7283 +diff --git a/lib/version.py b/lib/version.py
7284 +index 141796e..60add34 100644
7285 +--- a/lib/version.py
7286 ++++ b/lib/version.py
7287 +@@ -1,6 +1,6 @@
7288 + # -*- coding: UTF-8 -*-
7289 +
7290 +-__revision__ = '$Id: version.py 1606 2011-12-18 22:35:46Z piotrek $'
7291 ++__revision__ = '$Id$'
7292 +
7293 + # Copyright © 2005-2010 Vasco Nunes, Piotr Ożarowski
7294 + #
7295 +diff --git a/lib/view.py b/lib/view.py
7296 +index 6fe644d..64882c9 100644
7297 +--- a/lib/view.py
7298 ++++ b/lib/view.py
7299 +@@ -1,6 +1,6 @@
7300 + # -*- coding: UTF-8 -*-
7301 +
7302 +-__revision__ = '$Id: view.py 1536 2011-02-12 00:50:13Z iznogoud $'
7303 ++__revision__ = '$Id$'
7304 +
7305 + # Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
7306 + #
7307 +diff --git a/lib/widgets.py b/lib/widgets.py
7308 +index f3c75b5..f869d92 100644
7309 +--- a/lib/widgets.py
7310 ++++ b/lib/widgets.py
7311 +@@ -1,7 +1,7 @@
7312 + # -*- coding: UTF-8 -*-
7313 + # vim: fdm=marker
7314 +
7315 +-__revision__ = '$Id: widgets.py 1572 2011-08-23 18:47:22Z mikej06 $'
7316 ++__revision__ = '$Id$'
7317 +
7318 + # Copyright (c) 2005-2011 Vasco Nunes, Piotr Ożarowski
7319 + #
7320 +diff --git a/po/Makefile b/po/Makefile
7321 +index 1eb6b01..f5f666f 100644
7322 +--- a/po/Makefile
7323 ++++ b/po/Makefile
7324 +@@ -1,4 +1,4 @@
7325 +-# $Id: Makefile 1603 2011-12-18 19:43:30Z piotrek $
7326 ++# $Id$
7327 + INSTALL ?= install
7328 +
7329 + PYFILES = ../griffith $(wildcard ../lib/*.py ../lib/db/*.py ../lib/plugins/movie/*.py ../lib/plugins/export/*.py ../lib/plugins/imp/*.py)
7330 +diff --git a/po/messages.pot b/po/messages.pot
7331 +deleted file mode 100644
7332 +index e5ecee9..0000000
7333 +--- a/po/messages.pot
7334 ++++ /dev/null
7335 +@@ -1,2773 +0,0 @@
7336 +-# SOME DESCRIPTIVE TITLE.
7337 +-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
7338 +-# This file is distributed under the same license as the PACKAGE package.
7339 +-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
7340 +-#
7341 +-#, fuzzy
7342 +-msgid ""
7343 +-msgstr ""
7344 +-"Project-Id-Version: PACKAGE VERSION\n"
7345 +-"Report-Msgid-Bugs-To: \n"
7346 +-"POT-Creation-Date: 2011-12-18 20:29+0100\n"
7347 +-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
7348 +-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
7349 +-"Language-Team: LANGUAGE <LL@××.org>\n"
7350 +-"Language: \n"
7351 +-"MIME-Version: 1.0\n"
7352 +-"Content-Type: text/plain; charset=CHARSET\n"
7353 +-"Content-Transfer-Encoding: 8bit\n"
7354 +-
7355 +-#: ../griffith:257 ../griffith:1036 ../lib/delete.py:35 ../lib/edit.py:43
7356 +-msgid "You have no movies in your database"
7357 +-msgstr ""
7358 +-
7359 +-#: ../griffith:442
7360 +-msgid "You have seen all films in your collection!"
7361 +-msgstr ""
7362 +-
7363 +-#: ../griffith:593 ../griffith:598 ../lib/initialize.py:391
7364 +-#: ../lib/initialize.py:814
7365 +-msgid "subtitles"
7366 +-msgstr ""
7367 +-
7368 +-#: ../griffith:641 ../griffith:699 ../griffith:758 ../griffith:815
7369 +-#: ../griffith:872 ../griffith:920 ../griffith:968
7370 +-msgid ""
7371 +-"This item is in use.\n"
7372 +-"Operation aborted!"
7373 +-msgstr ""
7374 +-
7375 +-#: ../griffith:1012
7376 +-msgid ""
7377 +-"Are you sure you want to restore? Your current movie collection will be "
7378 +-"replaced. You can't undo this operation."
7379 +-msgstr ""
7380 +-
7381 +-#: ../griffith:1017
7382 +-msgid ""
7383 +-"Are you sure you want to merge? Your current movie collection will be merged "
7384 +-"with a backup. You can't undo this operation."
7385 +-msgstr ""
7386 +-
7387 +-#: ../griffith:1113
7388 +-#, python-format
7389 +-msgid ""
7390 +-"%s movie(s) in collection. %s movie(s) are shown by the filter. %s movie(s) "
7391 +-"loaned. You haven't seen %s movie(s)"
7392 +-msgstr ""
7393 +-
7394 +-#: ../griffith:1321
7395 +-msgid ""
7396 +-"Are you sure you want to create a new database?\n"
7397 +-"You will lose ALL your current data!"
7398 +-msgstr ""
7399 +-
7400 +-#: ../griffith:1323
7401 +-msgid ""
7402 +-"Last chance!\n"
7403 +-"Do you confirm that you want\n"
7404 +-"to lose your current data?"
7405 +-msgstr ""
7406 +-
7407 +-#: ../griffith:1475
7408 +-msgid ""
7409 +-"This is development version of Griffith.\n"
7410 +-"Upgrade path from dev. versions may not be provided.\n"
7411 +-"Please make sure you have a backup!\n"
7412 +-"\n"
7413 +-"Do you want to proceed?"
7414 +-msgstr ""
7415 +-
7416 +-#: ../lib/about.py:46
7417 +-msgid "Main Authors"
7418 +-msgstr ""
7419 +-
7420 +-#: ../lib/about.py:48
7421 +-msgid "Programmers"
7422 +-msgstr ""
7423 +-
7424 +-#: ../lib/about.py:52
7425 +-msgid "Contributors"
7426 +-msgstr ""
7427 +-
7428 +-#: ../lib/about.py:56
7429 +-msgid "Logo, icon and general artwork "
7430 +-msgstr ""
7431 +-
7432 +-#: ../lib/about.py:82
7433 +-msgid "See TRANSLATORS file"
7434 +-msgstr ""
7435 +-
7436 +-#: ../lib/about.py:90
7437 +-msgid "This program is released under the GNU"
7438 +-msgstr ""
7439 +-
7440 +-#: ../lib/add.py:56 ../glade/griffith.glade.h:27
7441 +-msgid "Add a new movie"
7442 +-msgstr ""
7443 +-
7444 +-#: ../lib/add.py:69
7445 +-msgid "Edit movie"
7446 +-msgstr ""
7447 +-
7448 +-#: ../lib/add.py:130
7449 +-msgid "Movie information has been updated"
7450 +-msgstr ""
7451 +-
7452 +-#: ../lib/add.py:269
7453 +-msgid "No results"
7454 +-msgstr ""
7455 +-
7456 +-#: ../lib/add.py:318 ../lib/movie.py:172
7457 +-msgid "Connection failed."
7458 +-msgstr ""
7459 +-
7460 +-#: ../lib/add.py:320 ../lib/add.py:670
7461 +-msgid ""
7462 +-"You should fill the original title\n"
7463 +-"or the movie title."
7464 +-msgstr ""
7465 +-
7466 +-#: ../lib/add.py:329
7467 +-msgid "Url: "
7468 +-msgstr ""
7469 +-
7470 +-#: ../lib/add.py:330
7471 +-msgid "Language: "
7472 +-msgstr ""
7473 +-
7474 +-#: ../lib/add.py:678 ../lib/add.py:682
7475 +-msgid "Movie with that title already exists, are you sure you want to add?"
7476 +-msgstr ""
7477 +-
7478 +-#: ../lib/advfilter.py:65
7479 +-msgid "is equal to"
7480 +-msgstr ""
7481 +-
7482 +-#: ../lib/advfilter.py:66
7483 +-msgid "is not equal to"
7484 +-msgstr ""
7485 +-
7486 +-#: ../lib/advfilter.py:67
7487 +-msgid "starts with"
7488 +-msgstr ""
7489 +-
7490 +-#: ../lib/advfilter.py:68
7491 +-msgid "doesn't start with"
7492 +-msgstr ""
7493 +-
7494 +-#: ../lib/advfilter.py:69
7495 +-msgid "contains"
7496 +-msgstr ""
7497 +-
7498 +-#: ../lib/advfilter.py:70
7499 +-msgid "doesn't contain"
7500 +-msgstr ""
7501 +-
7502 +-#: ../lib/advfilter.py:71
7503 +-msgid "like"
7504 +-msgstr ""
7505 +-
7506 +-#: ../lib/advfilter.py:72
7507 +-msgid "not like"
7508 +-msgstr ""
7509 +-
7510 +-#: ../lib/advfilter.py:140 ../lib/advfilter.py:148 ../lib/advfilter.py:167
7511 +-msgid "ignore"
7512 +-msgstr ""
7513 +-
7514 +-#: ../lib/advfilter.py:140
7515 +-msgid "with"
7516 +-msgstr ""
7517 +-
7518 +-#: ../lib/advfilter.py:140
7519 +-msgid "without"
7520 +-msgstr ""
7521 +-
7522 +-#: ../lib/advfilter.py:140
7523 +-msgid "require"
7524 +-msgstr ""
7525 +-
7526 +-#: ../lib/advfilter.py:148
7527 +-msgid "in"
7528 +-msgstr ""
7529 +-
7530 +-#: ../lib/advfilter.py:148
7531 +-msgid "not in"
7532 +-msgstr ""
7533 +-
7534 +-#: ../lib/advfilter.py:167
7535 +-msgid "loaned to "
7536 +-msgstr ""
7537 +-
7538 +-#: ../lib/advfilter.py:167
7539 +-msgid "loan history"
7540 +-msgstr ""
7541 +-
7542 +-#: ../lib/advfilter.py:370 ../lib/advfilter.py:413
7543 +-msgid "Name is empty"
7544 +-msgstr ""
7545 +-
7546 +-#: ../lib/advfilter.py:387
7547 +-msgid "Cannot save search conditions"
7548 +-msgstr ""
7549 +-
7550 +-#: ../lib/advfilter.py:392
7551 +-msgid "Search conditions saved"
7552 +-msgstr ""
7553 +-
7554 +-#: ../lib/advfilter.py:425
7555 +-msgid "Cannot delete search conditions"
7556 +-msgstr ""
7557 +-
7558 +-#: ../lib/advfilter.py:429
7559 +-msgid "Search conditions deleted"
7560 +-msgstr ""
7561 +-
7562 +-#: ../lib/backup.py:58
7563 +-msgid "Save Griffith backup"
7564 +-msgstr ""
7565 +-
7566 +-#: ../lib/backup.py:67 ../lib/plugins/export/__init__.py:162
7567 +-#: ../lib/plugins/export/PluginExportCSV.py:61
7568 +-#: ../lib/plugins/export/PluginExportiPod.py:113
7569 +-#: ../lib/plugins/export/PluginExportPDF.py:76
7570 +-#: ../lib/plugins/export/PluginExportXML.py:58
7571 +-msgid "File exists. Do you want to overwrite it?"
7572 +-msgstr ""
7573 +-
7574 +-#: ../lib/backup.py:79
7575 +-msgid "Error creating backup"
7576 +-msgstr ""
7577 +-
7578 +-#: ../lib/backup.py:119
7579 +-msgid "Backup has been created"
7580 +-msgstr ""
7581 +-
7582 +-#: ../lib/backup.py:122
7583 +-msgid "Restoring database..."
7584 +-msgstr ""
7585 +-
7586 +-#: ../lib/backup.py:203
7587 +-msgid "Restore Griffith backup"
7588 +-msgstr ""
7589 +-
7590 +-#: ../lib/backup.py:219
7591 +-msgid "Can't read backup file"
7592 +-msgstr ""
7593 +-
7594 +-#: ../lib/backup.py:289
7595 +-msgid "Backup restored"
7596 +-msgstr ""
7597 +-
7598 +-#: ../lib/cover.py:43 ../lib/edit.py:52
7599 +-msgid "Select image"
7600 +-msgstr ""
7601 +-
7602 +-#: ../lib/cover.py:87 ../lib/cover.py:150
7603 +-msgid "Cover generated by Griffith v"
7604 +-msgstr ""
7605 +-
7606 +-#: ../lib/cover.py:89 ../lib/cover.py:152
7607 +-#: ../lib/plugins/export/PluginExportHTML.py:719
7608 +-#: ../lib/plugins/export/PluginExportPDF.py:265
7609 +-msgid "Released Under the GNU/GPL License"
7610 +-msgstr ""
7611 +-
7612 +-#: ../lib/cover.py:177 ../lib/initialize.py:195 ../lib/initialize.py:795
7613 +-#: ../lib/plugins/export/PluginExportHTML.py:157 ../glade/griffith.glade.h:103
7614 +-msgid "Original Title"
7615 +-msgstr ""
7616 +-
7617 +-#: ../lib/cover.py:178 ../lib/initialize.py:203 ../lib/initialize.py:807
7618 +-#: ../lib/plugins/export/PluginExportHTML.py:163 ../glade/griffith.glade.h:159
7619 +-msgid "Title"
7620 +-msgstr ""
7621 +-
7622 +-#: ../lib/cover.py:180 ../lib/initialize.py:211 ../lib/initialize.py:785
7623 +-#: ../lib/plugins/export/PluginExportHTML.py:148
7624 +-#: ../lib/plugins/export/PluginExportPDF.py:183 ../glade/griffith.glade.h:52
7625 +-msgid "Director"
7626 +-msgstr ""
7627 +-
7628 +-#: ../lib/cover.py:182
7629 +-msgid "Running Time"
7630 +-msgstr ""
7631 +-
7632 +-#: ../lib/cover.py:182 ../lib/main_treeview.py:566
7633 +-#: ../lib/plugins/movie/PluginMovieAniDB.py:168
7634 +-msgid " min"
7635 +-msgstr ""
7636 +-
7637 +-#: ../lib/cover.py:183 ../lib/initialize.py:784
7638 +-#: ../lib/plugins/export/PluginExportHTML.py:147 ../glade/griffith.glade.h:45
7639 +-msgid "Country"
7640 +-msgstr ""
7641 +-
7642 +-#: ../lib/cover.py:184 ../lib/initialize.py:219 ../lib/initialize.py:786
7643 +-#: ../lib/plugins/export/PluginExportHTML.py:149
7644 +-#: ../lib/plugins/export/PluginExportPDF.py:179 ../glade/griffith.glade.h:68
7645 +-msgid "Genre"
7646 +-msgstr ""
7647 +-
7648 +-#: ../lib/dbupgrade.py:37
7649 +-msgid "Upgrading database..."
7650 +-msgstr ""
7651 +-
7652 +-#: ../lib/dbupgrade.py:90 ../lib/plugins/movie/PluginMovieE-Pipoca.py:33
7653 +-#: ../lib/plugins/movie/PluginMovieInterfilmes.py:35
7654 +-msgid "Brazilian Portuguese"
7655 +-msgstr ""
7656 +-
7657 +-#: ../lib/dbupgrade.py:91
7658 +-msgid "Bulgarian"
7659 +-msgstr ""
7660 +-
7661 +-#: ../lib/dbupgrade.py:92
7662 +-msgid "Catalan"
7663 +-msgstr ""
7664 +-
7665 +-#: ../lib/dbupgrade.py:93 ../lib/plugins/movie/PluginMovieCSFD.py:31
7666 +-msgid "Czech"
7667 +-msgstr ""
7668 +-
7669 +-#: ../lib/dbupgrade.py:94 ../lib/plugins/movie/PluginMovieScope.py:32
7670 +-msgid "Danish"
7671 +-msgstr ""
7672 +-
7673 +-#: ../lib/dbupgrade.py:95 ../lib/plugins/movie/PluginMovieMovieMeter.py:32
7674 +-msgid "Dutch"
7675 +-msgstr ""
7676 +-
7677 +-#: ../lib/dbupgrade.py:96 ../lib/plugins/movie/PluginMovieAllRovi.py:31
7678 +-#: ../lib/plugins/movie/PluginMovieAniDB.py:40
7679 +-#: ../lib/plugins/movie/PluginMovieDVDEmpire.py:31
7680 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:32
7681 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:30
7682 +-#: ../lib/plugins/movie/PluginMovieMediadis.py:15
7683 +-#: ../lib/plugins/movie/PluginMovieMoviefone.py:15
7684 +-msgid "English"
7685 +-msgstr ""
7686 +-
7687 +-#: ../lib/dbupgrade.py:97
7688 +-msgid "Estonian"
7689 +-msgstr ""
7690 +-
7691 +-#: ../lib/dbupgrade.py:98 ../lib/plugins/movie/PluginMovieAllocine.py:35
7692 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:30
7693 +-msgid "French"
7694 +-msgstr ""
7695 +-
7696 +-#: ../lib/dbupgrade.py:99 ../lib/plugins/movie/PluginMovieDVDPalace.py:32
7697 +-#: ../lib/plugins/movie/PluginMovieFilmDb.py:31
7698 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:32
7699 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:30
7700 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:32
7701 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:16
7702 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:32
7703 +-msgid "German"
7704 +-msgstr ""
7705 +-
7706 +-#: ../lib/dbupgrade.py:100
7707 +-msgid "Greek"
7708 +-msgstr ""
7709 +-
7710 +-#: ../lib/dbupgrade.py:101
7711 +-msgid "Hungarian"
7712 +-msgstr ""
7713 +-
7714 +-#: ../lib/dbupgrade.py:102
7715 +-msgid "Indonesian"
7716 +-msgstr ""
7717 +-
7718 +-#: ../lib/dbupgrade.py:103 ../lib/plugins/movie/PluginMovieCinematografo.py:32
7719 +-#: ../lib/plugins/movie/PluginMovieIMDB-it.py:31
7720 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:33
7721 +-msgid "Italian"
7722 +-msgstr ""
7723 +-
7724 +-#: ../lib/dbupgrade.py:104
7725 +-msgid "Japanese"
7726 +-msgstr ""
7727 +-
7728 +-#: ../lib/dbupgrade.py:105
7729 +-msgid "Korean"
7730 +-msgstr ""
7731 +-
7732 +-#: ../lib/dbupgrade.py:106
7733 +-msgid "Norwegian Bokmal"
7734 +-msgstr ""
7735 +-
7736 +-#: ../lib/dbupgrade.py:107
7737 +-msgid "Occitan"
7738 +-msgstr ""
7739 +-
7740 +-#: ../lib/dbupgrade.py:108
7741 +-msgid "Pashto"
7742 +-msgstr ""
7743 +-
7744 +-#: ../lib/dbupgrade.py:109 ../lib/plugins/movie/PluginMovieFDb.py:32
7745 +-#: ../lib/plugins/movie/PluginMovieFilmweb.py:32
7746 +-#: ../lib/plugins/movie/PluginMovieOnet.py:30
7747 +-#: ../lib/plugins/movie/PluginMovieStopklatka.py:32
7748 +-#: ../lib/plugins/movie/PluginMovieTanukiAnime.py:30
7749 +-#: ../lib/plugins/movie/PluginMovieWP.py:31
7750 +-msgid "Polish"
7751 +-msgstr ""
7752 +-
7753 +-#: ../lib/dbupgrade.py:110 ../lib/plugins/movie/PluginMovie7arte.py:31
7754 +-#: ../lib/plugins/movie/PluginMovieCineteka.py:31
7755 +-#: ../lib/plugins/movie/PluginMovieClubedevideo.py:32
7756 +-#: ../lib/plugins/movie/PluginMovieIMDB-pt.py:33
7757 +-#: ../lib/plugins/movie/PluginMoviePTGate.py:32
7758 +-msgid "Portuguese"
7759 +-msgstr ""
7760 +-
7761 +-#: ../lib/dbupgrade.py:111
7762 +-msgid "Russian"
7763 +-msgstr ""
7764 +-
7765 +-#: ../lib/dbupgrade.py:112
7766 +-msgid "Simplified Chinese"
7767 +-msgstr ""
7768 +-
7769 +-#: ../lib/dbupgrade.py:113
7770 +-msgid "Slovak"
7771 +-msgstr ""
7772 +-
7773 +-#: ../lib/dbupgrade.py:114 ../lib/plugins/movie/PluginMovieCulturalia.py:31
7774 +-#: ../lib/plugins/movie/PluginMovieFilmAffinity.py:31
7775 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:32
7776 +-msgid "Spanish"
7777 +-msgstr ""
7778 +-
7779 +-#: ../lib/dbupgrade.py:115 ../lib/plugins/movie/PluginMovieFilmtipset.py:32
7780 +-msgid "Swedish"
7781 +-msgstr ""
7782 +-
7783 +-#: ../lib/dbupgrade.py:116
7784 +-msgid "Turkish"
7785 +-msgstr ""
7786 +-
7787 +-#: ../lib/dbupgrade.py:117
7788 +-msgid "Favourite"
7789 +-msgstr ""
7790 +-
7791 +-#: ../lib/dbupgrade.py:118
7792 +-msgid "Buy me"
7793 +-msgstr ""
7794 +-
7795 +-#: ../lib/dbupgrade.py:303
7796 +-msgid ""
7797 +-"Griffith will now convert your database to the new format. This can take "
7798 +-"several minutes if you have a large database."
7799 +-msgstr ""
7800 +-
7801 +-#: ../lib/dbupgrade.py:321
7802 +-msgid "Old DB conversion: please install pysqlite legacy (v1.0)"
7803 +-msgstr ""
7804 +-
7805 +-#: ../lib/dbupgrade.py:348
7806 +-msgid ""
7807 +-"Your database is most probably in SQLite2 format, please convert it to "
7808 +-"SQLite3"
7809 +-msgstr ""
7810 +-
7811 +-#: ../lib/delete.py:38
7812 +-msgid "Are you sure you want to delete?"
7813 +-msgstr ""
7814 +-
7815 +-#: ../lib/delete.py:42
7816 +-msgid "You can't delete movie while it is loaned."
7817 +-msgstr ""
7818 +-
7819 +-#: ../lib/edit.py:77
7820 +-msgid "Image is not valid."
7821 +-msgstr ""
7822 +-
7823 +-#: ../lib/edit.py:114 ../lib/edit.py:147
7824 +-msgid "Image has been updated"
7825 +-msgstr ""
7826 +-
7827 +-#: ../lib/edit.py:125
7828 +-msgid "Are you sure you want to delete this poster?"
7829 +-msgstr ""
7830 +-
7831 +-#: ../lib/gconsole.py:182
7832 +-msgid "No movie found"
7833 +-msgstr ""
7834 +-
7835 +-#: ../lib/gemail.py:38
7836 +-msgid "Connection timed out"
7837 +-msgstr ""
7838 +-
7839 +-#: ../lib/gemail.py:49 ../lib/gemail.py:59
7840 +-#, python-format
7841 +-msgid "Error sending e-mail: %s"
7842 +-msgstr ""
7843 +-
7844 +-#: ../lib/gemail.py:49
7845 +-msgid "login failure"
7846 +-msgstr ""
7847 +-
7848 +-#: ../lib/gemail.py:56
7849 +-msgid "E-mail sent successfully"
7850 +-msgstr ""
7851 +-
7852 +-#: ../lib/gemail.py:76
7853 +-msgid "Movie loan reminder"
7854 +-msgstr ""
7855 +-
7856 +-#: ../lib/gemail.py:76
7857 +-#, python-format
7858 +-msgid ""
7859 +-"Hi, %s!\n"
7860 +-"\n"
7861 +-"Just to remind you that I'm really needing the following movie I have loaned "
7862 +-"to you recently:\n"
7863 +-"\n"
7864 +-"%s (%s)\n"
7865 +-"\n"
7866 +-"Loaned on %s"
7867 +-msgstr ""
7868 +-
7869 +-#: ../lib/gemail.py:80
7870 +-msgid "Mail could not be sent. Please check e-mail preferences."
7871 +-msgstr ""
7872 +-
7873 +-#: ../lib/gemail.py:82
7874 +-msgid "This person has no e-mail address defined."
7875 +-msgstr ""
7876 +-
7877 +-#: ../lib/gutils.py:381
7878 +-msgid "Images"
7879 +-msgstr ""
7880 +-
7881 +-#: ../lib/gutils.py:392
7882 +-msgid "backups"
7883 +-msgstr ""
7884 +-
7885 +-#: ../lib/gutils.py:398 ../lib/plugins/imp/__init__.py:377
7886 +-msgid "All files"
7887 +-msgstr ""
7888 +-
7889 +-#: ../lib/initialize.py:180
7890 +-msgid "No."
7891 +-msgstr ""
7892 +-
7893 +-#: ../lib/initialize.py:188 ../lib/initialize.py:787
7894 +-#: ../lib/plugins/export/PluginExportHTML.py:150 ../glade/griffith.glade.h:74
7895 +-msgid "Image"
7896 +-msgstr ""
7897 +-
7898 +-#: ../lib/initialize.py:227 ../lib/initialize.py:803
7899 +-#: ../lib/plugins/export/PluginExportHTML.py:162 ../glade/griffith.glade.h:137
7900 +-msgid "Seen it"
7901 +-msgstr ""
7902 +-
7903 +-#: ../lib/initialize.py:236 ../lib/initialize.py:811
7904 +-#: ../lib/plugins/export/PluginExportHTML.py:164
7905 +-#: ../lib/plugins/export/PluginExportPDF.py:171 ../glade/griffith.glade.h:173
7906 +-msgid "Year"
7907 +-msgstr ""
7908 +-
7909 +-#: ../lib/initialize.py:246 ../lib/initialize.py:801
7910 +-#: ../lib/plugins/export/PluginExportHTML.py:160
7911 +-#: ../lib/plugins/export/PluginExportPDF.py:175 ../glade/griffith.glade.h:131
7912 +-msgid "Runtime"
7913 +-msgstr ""
7914 +-
7915 +-#: ../lib/initialize.py:256 ../lib/initialize.py:799
7916 +-#: ../lib/plugins/export/PluginExportHTML.py:159 ../glade/griffith.glade.h:119
7917 +-msgid "Rating"
7918 +-msgstr ""
7919 +-
7920 +-#: ../lib/initialize.py:266 ../glade/griffith.glade.h:47
7921 +-msgid "Created"
7922 +-msgstr ""
7923 +-
7924 +-#: ../lib/initialize.py:276 ../glade/griffith.glade.h:164
7925 +-msgid "Updated"
7926 +-msgstr ""
7927 +-
7928 +-#: ../lib/initialize.py:346
7929 +-msgid "Loan Date"
7930 +-msgstr ""
7931 +-
7932 +-#: ../lib/initialize.py:352
7933 +-msgid "Return Date"
7934 +-msgstr ""
7935 +-
7936 +-#: ../lib/initialize.py:357
7937 +-msgid "Loaned To"
7938 +-msgstr ""
7939 +-
7940 +-#: ../lib/initialize.py:377 ../lib/plugins/movie/PluginMovieIMDB-de.py:210
7941 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:410
7942 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:457
7943 +-#: ../lib/plugins/movie/PluginMovieIMDB-it.py:152
7944 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:176
7945 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:362
7946 +-msgid "Language"
7947 +-msgstr ""
7948 +-
7949 +-#: ../lib/initialize.py:389 ../lib/initialize.py:814
7950 +-msgid "lector"
7951 +-msgstr ""
7952 +-
7953 +-#: ../lib/initialize.py:390 ../lib/initialize.py:814
7954 +-msgid "dubbing"
7955 +-msgstr ""
7956 +-
7957 +-#: ../lib/initialize.py:392 ../lib/initialize.py:814
7958 +-msgid "commentary"
7959 +-msgstr ""
7960 +-
7961 +-#: ../lib/initialize.py:399 ../glade/griffith.glade.h:162
7962 +-msgid "Type"
7963 +-msgstr ""
7964 +-
7965 +-#: ../lib/initialize.py:414
7966 +-msgid "Codec"
7967 +-msgstr ""
7968 +-
7969 +-#: ../lib/initialize.py:429
7970 +-msgid "Channels"
7971 +-msgstr ""
7972 +-
7973 +-#: ../lib/initialize.py:444
7974 +-msgid "Subtitle format"
7975 +-msgstr ""
7976 +-
7977 +-#: ../lib/initialize.py:598
7978 +-msgid "Enable this extension"
7979 +-msgstr ""
7980 +-
7981 +-#: ../lib/initialize.py:689 ../glade/griffith.glade.h:95
7982 +-msgid "Name"
7983 +-msgstr ""
7984 +-
7985 +-#: ../lib/initialize.py:695 ../glade/exporthtml.glade.h:15
7986 +-#: ../glade/griffith.glade.h:54 ../glade/import.glade.h:5
7987 +-msgid "E-mail"
7988 +-msgstr ""
7989 +-
7990 +-#: ../lib/initialize.py:733
7991 +-msgid "Any"
7992 +-msgstr ""
7993 +-
7994 +-#: ../lib/initialize.py:745
7995 +-msgid "Last added"
7996 +-msgstr ""
7997 +-
7998 +-#: ../lib/initialize.py:777 ../lib/plugins/export/PluginExportHTML.py:170
7999 +-#: ../glade/griffith.glade.h:33
8000 +-msgid "Barcode"
8001 +-msgstr ""
8002 +-
8003 +-#: ../lib/initialize.py:778 ../lib/plugins/export/PluginExportHTML.py:145
8004 +-#: ../lib/plugins/export/PluginExportPDF.py:187 ../glade/griffith.glade.h:37
8005 +-msgid "Cast"
8006 +-msgstr ""
8007 +-
8008 +-#: ../lib/initialize.py:779 ../lib/plugins/export/PluginExportHTML.py:167
8009 +-#: ../glade/griffith.glade.h:36
8010 +-msgid "Cameraman"
8011 +-msgstr ""
8012 +-
8013 +-#: ../lib/initialize.py:780 ../lib/plugins/export/PluginExportHTML.py:146
8014 +-#: ../glade/griffith.glade.h:39
8015 +-msgid "Classification"
8016 +-msgstr ""
8017 +-
8018 +-#: ../lib/initialize.py:781 ../lib/plugins/export/PluginExportHTML.py:178
8019 +-#: ../glade/griffith.glade.h:42
8020 +-msgid "Collection"
8021 +-msgstr ""
8022 +-
8023 +-#: ../lib/initialize.py:782 ../lib/initialize.py:813
8024 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:214
8025 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:412
8026 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:459
8027 +-#: ../lib/plugins/movie/PluginMovieIMDB-it.py:156
8028 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:180
8029 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:364 ../glade/griffith.glade.h:43
8030 +-msgid "Color"
8031 +-msgstr ""
8032 +-
8033 +-#: ../lib/initialize.py:783 ../glade/griffith.glade.h:44
8034 +-msgid "Condition"
8035 +-msgstr ""
8036 +-
8037 +-#: ../lib/initialize.py:788 ../glade/griffith.glade.h:78
8038 +-msgid "Layers"
8039 +-msgstr ""
8040 +-
8041 +-#: ../lib/initialize.py:789 ../lib/plugins/export/PluginExportHTML.py:154
8042 +-msgid "Loaned"
8043 +-msgstr ""
8044 +-
8045 +-#: ../lib/initialize.py:790 ../lib/plugins/export/PluginExportHTML.py:155
8046 +-#: ../glade/griffith.glade.h:53
8047 +-msgid "Discs"
8048 +-msgstr ""
8049 +-
8050 +-#: ../lib/initialize.py:791 ../glade/griffith.glade.h:90
8051 +-msgid "Medium"
8052 +-msgstr ""
8053 +-
8054 +-#: ../lib/initialize.py:792 ../lib/plugins/export/PluginExportHTML.py:165
8055 +-#: ../lib/plugins/export/PluginExportPDF.py:195 ../glade/griffith.glade.h:99
8056 +-msgid "Notes"
8057 +-msgstr ""
8058 +-
8059 +-#: ../lib/initialize.py:793 ../lib/plugins/export/PluginExportHTML.py:156
8060 +-#: ../glade/griffith.glade.h:100
8061 +-msgid "Number"
8062 +-msgstr ""
8063 +-
8064 +-#: ../lib/initialize.py:794 ../lib/plugins/export/PluginExportHTML.py:151
8065 +-#: ../glade/griffith.glade.h:101
8066 +-msgid "Official site"
8067 +-msgstr ""
8068 +-
8069 +-#: ../lib/initialize.py:796 ../lib/plugins/export/PluginExportHTML.py:158
8070 +-#: ../lib/plugins/export/PluginExportPDF.py:191 ../glade/griffith.glade.h:111
8071 +-msgid "Plot"
8072 +-msgstr ""
8073 +-
8074 +-#: ../lib/initialize.py:797
8075 +-msgid "Poster"
8076 +-msgstr ""
8077 +-
8078 +-#: ../lib/initialize.py:798
8079 +-msgid "Aspect ratio"
8080 +-msgstr ""
8081 +-
8082 +-#: ../lib/initialize.py:800 ../glade/griffith.glade.h:121
8083 +-msgid "Region"
8084 +-msgstr ""
8085 +-
8086 +-#: ../lib/initialize.py:802 ../lib/plugins/export/PluginExportHTML.py:166
8087 +-#: ../glade/griffith.glade.h:135
8088 +-msgid "Screenplay"
8089 +-msgstr ""
8090 +-
8091 +-#: ../lib/initialize.py:804 ../lib/plugins/export/PluginExportHTML.py:152
8092 +-#: ../glade/griffith.glade.h:148
8093 +-msgid "Site"
8094 +-msgstr ""
8095 +-
8096 +-#: ../lib/initialize.py:805 ../lib/plugins/export/PluginExportHTML.py:161
8097 +-#: ../glade/griffith.glade.h:154
8098 +-msgid "Studio"
8099 +-msgstr ""
8100 +-
8101 +-#: ../lib/initialize.py:806 ../glade/griffith.glade.h:156
8102 +-msgid "Tags"
8103 +-msgstr ""
8104 +-
8105 +-#: ../lib/initialize.py:808 ../lib/plugins/export/PluginExportHTML.py:153
8106 +-#: ../glade/griffith.glade.h:161
8107 +-msgid "Trailer"
8108 +-msgstr ""
8109 +-
8110 +-#: ../lib/initialize.py:809 ../lib/plugins/export/PluginExportHTML.py:181
8111 +-#: ../glade/griffith.glade.h:168
8112 +-msgid "Video codec"
8113 +-msgstr ""
8114 +-
8115 +-#: ../lib/initialize.py:810 ../lib/plugins/export/PluginExportHTML.py:179
8116 +-#: ../glade/griffith.glade.h:171
8117 +-msgid "Volume"
8118 +-msgstr ""
8119 +-
8120 +-#: ../lib/initialize.py:812 ../lib/initialize.py:813 ../lib/initialize.py:815
8121 +-#: ../lib/initialize.py:1076 ../lib/initialize.py:1077
8122 +-#: ../lib/initialize.py:1108 ../lib/initialize.py:1109
8123 +-msgid "N/A"
8124 +-msgstr ""
8125 +-
8126 +-#: ../lib/initialize.py:812
8127 +-msgid "Damaged"
8128 +-msgstr ""
8129 +-
8130 +-#: ../lib/initialize.py:812
8131 +-msgid "Poor"
8132 +-msgstr ""
8133 +-
8134 +-#: ../lib/initialize.py:812
8135 +-msgid "Fair"
8136 +-msgstr ""
8137 +-
8138 +-#: ../lib/initialize.py:812
8139 +-msgid "Good"
8140 +-msgstr ""
8141 +-
8142 +-#: ../lib/initialize.py:812
8143 +-msgid "Excellent"
8144 +-msgstr ""
8145 +-
8146 +-#: ../lib/initialize.py:813
8147 +-msgid "Black and White"
8148 +-msgstr ""
8149 +-
8150 +-#: ../lib/initialize.py:813
8151 +-msgid "Mixed"
8152 +-msgstr ""
8153 +-
8154 +-#: ../lib/initialize.py:815
8155 +-msgid "Single Side, Single Layer"
8156 +-msgstr ""
8157 +-
8158 +-#: ../lib/initialize.py:815
8159 +-msgid "Single Side, Dual Layer"
8160 +-msgstr ""
8161 +-
8162 +-#: ../lib/initialize.py:815
8163 +-msgid "Dual Side, Single Layer"
8164 +-msgstr ""
8165 +-
8166 +-#: ../lib/initialize.py:815
8167 +-msgid "Dual Side, Dual Layer"
8168 +-msgstr ""
8169 +-
8170 +-#: ../lib/initialize.py:817
8171 +-msgid "Region 0 (No Region Coding)"
8172 +-msgstr ""
8173 +-
8174 +-#: ../lib/initialize.py:818
8175 +-msgid "Region 1 (United States of America, Canada)"
8176 +-msgstr ""
8177 +-
8178 +-#: ../lib/initialize.py:819
8179 +-msgid "Region 2 (Europe, Egypt, Arabia, Japan and South Africa)"
8180 +-msgstr ""
8181 +-
8182 +-#: ../lib/initialize.py:820
8183 +-msgid "Region 3 (Korea, Thailand, Vietnam, Borneo and Indonesia)"
8184 +-msgstr ""
8185 +-
8186 +-#: ../lib/initialize.py:821
8187 +-msgid "Region 4 (Australia and New Zealand, Mexico and South America)"
8188 +-msgstr ""
8189 +-
8190 +-#: ../lib/initialize.py:822
8191 +-msgid "Region 5 (India, Africa, Russia and former USSR countries)"
8192 +-msgstr ""
8193 +-
8194 +-#: ../lib/initialize.py:823
8195 +-msgid "Region 6 (Popular Republic of China)"
8196 +-msgstr ""
8197 +-
8198 +-#: ../lib/initialize.py:824
8199 +-msgid "Region 7 (Reserved for Unspecified Special Use)"
8200 +-msgstr ""
8201 +-
8202 +-#: ../lib/initialize.py:825
8203 +-msgid "Region 8 (Airlines/Cruise Ships)"
8204 +-msgstr ""
8205 +-
8206 +-#: ../lib/initialize.py:826
8207 +-msgid ""
8208 +-"Region A/1 (North and South America, Japan, Korea, Taiwan, Hong Kong, "
8209 +-"Southeast Asia)"
8210 +-msgstr ""
8211 +-
8212 +-#: ../lib/initialize.py:827
8213 +-msgid "Region B/2 (Europe, Middle East, Africa, Australia, Oceania)"
8214 +-msgstr ""
8215 +-
8216 +-#: ../lib/initialize.py:828
8217 +-msgid "Region C/3 (India, Nepal, China, Russia, Central and South Asia)"
8218 +-msgstr ""
8219 +-
8220 +-#: ../lib/initialize.py:867
8221 +-msgid "Dictionary not available. Spellcheck will be disabled. \n"
8222 +-msgstr ""
8223 +-
8224 +-#: ../lib/loan.py:44
8225 +-msgid "No person is defined yet."
8226 +-msgstr ""
8227 +-
8228 +-#: ../lib/loan.py:73
8229 +-msgid "Do you want to loan the whole collection?"
8230 +-msgstr ""
8231 +-
8232 +-#: ../lib/loan.py:82
8233 +-msgid ""
8234 +-"Collection contains loaned movie.\n"
8235 +-"Loan aborted!"
8236 +-msgstr ""
8237 +-
8238 +-#: ../lib/loan.py:87
8239 +-msgid "Movie loaned"
8240 +-msgstr ""
8241 +-
8242 +-#: ../lib/main_treeview.py:305
8243 +-#, python-format
8244 +-msgid "This movie has been loaned to %s on %s"
8245 +-msgstr ""
8246 +-
8247 +-#: ../lib/main_treeview.py:316
8248 +-msgid "Movie not loaned"
8249 +-msgstr ""
8250 +-
8251 +-#: ../lib/movie.py:162 ../lib/movie.py:182
8252 +-#: ../lib/plugins/movie/PluginMovieMovieMeter.py:88
8253 +-msgid "Fetching data"
8254 +-msgstr ""
8255 +-
8256 +-#: ../lib/movie.py:162 ../lib/movie.py:182 ../lib/movie.py:230
8257 +-#: ../lib/movie.py:335 ../lib/movie.py:356
8258 +-#: ../lib/plugins/movie/PluginMovieMovieMeter.py:88
8259 +-#: ../lib/plugins/movie/PluginMovieMovieMeter.py:188
8260 +-msgid "Wait a moment"
8261 +-msgstr ""
8262 +-
8263 +-#: ../lib/movie.py:216 ../lib/movie.py:385
8264 +-msgid "Connection error"
8265 +-msgstr ""
8266 +-
8267 +-#: ../lib/movie.py:230
8268 +-msgid "Fetching poster"
8269 +-msgstr ""
8270 +-
8271 +-#: ../lib/movie.py:335 ../lib/movie.py:356
8272 +-#: ../lib/plugins/movie/PluginMovieMovieMeter.py:188
8273 +-msgid "Searching"
8274 +-msgstr ""
8275 +-
8276 +-#: ../lib/movie.py:523
8277 +-msgid "Cancel"
8278 +-msgstr ""
8279 +-
8280 +-#: ../lib/people.py:74
8281 +-msgid "You should fill the person name"
8282 +-msgstr ""
8283 +-
8284 +-#: ../lib/people.py:114
8285 +-msgid "Record updated"
8286 +-msgstr ""
8287 +-
8288 +-#: ../lib/people.py:135
8289 +-msgid "This person has loaned films from you. Return them first."
8290 +-msgstr ""
8291 +-
8292 +-#: ../lib/people.py:139
8293 +-msgid ""
8294 +-"This person has data in the loan history. This data will be erased if you "
8295 +-"continue."
8296 +-msgstr ""
8297 +-
8298 +-#: ../lib/people.py:141
8299 +-#, python-format
8300 +-msgid ""
8301 +-"%s\n"
8302 +-"Are you sure you want to delete this person?"
8303 +-msgstr ""
8304 +-
8305 +-#: ../lib/sql.py:117
8306 +-msgid ""
8307 +-"Cannot connect to database.\n"
8308 +-"Falling back to SQLite."
8309 +-msgstr ""
8310 +-
8311 +-#: ../lib/sql.py:117
8312 +-msgid "Please check debug output for more informations."
8313 +-msgstr ""
8314 +-
8315 +-#: ../lib/sql.py:148
8316 +-msgid "This database requires newer version of Griffith."
8317 +-msgstr ""
8318 +-
8319 +-#: ../lib/version.py:29
8320 +-msgid "Griffith is a film collection manager."
8321 +-msgstr ""
8322 +-
8323 +-#: ../lib/view.py:28
8324 +-msgid "Filter activated. Showing only not seen movies."
8325 +-msgstr ""
8326 +-
8327 +-#: ../lib/view.py:34
8328 +-msgid "Filter activated. Showing only loaned movies."
8329 +-msgstr ""
8330 +-
8331 +-#: ../lib/view.py:46
8332 +-#, python-format
8333 +-msgid "Filter activated. Showing only movies from volume: %s"
8334 +-msgstr ""
8335 +-
8336 +-#: ../lib/view.py:53
8337 +-#, python-format
8338 +-msgid "Filter activated. Showing only movies from collection: %s"
8339 +-msgstr ""
8340 +-
8341 +-#: ../lib/widgets.py:392
8342 +-msgid ""
8343 +-"Define here the PDF reader you want to use within Griffith. Popular choices "
8344 +-"are xpdf, gpdf, evince or kpdf. Make sure you have this program installed "
8345 +-"and working first."
8346 +-msgstr ""
8347 +-
8348 +-#: ../lib/widgets.py:393
8349 +-msgid ""
8350 +-"Here you can define the desired language to use while spell checking some "
8351 +-"fields. Use you locale setting. For example, to use european portuguese "
8352 +-"spell checking enter 'pt'"
8353 +-msgstr ""
8354 +-
8355 +-#: ../lib/widgets.py:394
8356 +-msgid ""
8357 +-"Use this entry to define the SMTP server you want to use to send e-mails. On "
8358 +-"*nix systems, 'localhost' should work. Alternatively, you can use your "
8359 +-"Internet Service Provider's SMTP server address."
8360 +-msgstr ""
8361 +-
8362 +-#: ../lib/widgets.py:395
8363 +-msgid ""
8364 +-"This is the from e-mail address that should be used to all outgoing e-mail. "
8365 +-"You want to include your own e-mail address here probably."
8366 +-msgstr ""
8367 +-
8368 +-#: ../lib/widgets.py:396
8369 +-msgid ""
8370 +-"Here you can define the smtp server port to use. If you want to use your "
8371 +-"gmail account service to send e-mails, try to enter '587' here. Default (and "
8372 +-"the most common one) is '25'"
8373 +-msgstr ""
8374 +-
8375 +-#: ../lib/widgets.py:397
8376 +-msgid ""
8377 +-"If you need TLS support, please check this checkbox. This is needed, for "
8378 +-"example, when using gmail service to send your reminder e-mails."
8379 +-msgstr ""
8380 +-
8381 +-#: ../lib/db/_objects.py:58
8382 +-msgid "Name cannot be empty"
8383 +-msgstr ""
8384 +-
8385 +-#: ../lib/db/_objects.py:188
8386 +-msgid "E-mail address is not valid"
8387 +-msgstr ""
8388 +-
8389 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:104
8390 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:232
8391 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:233
8392 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:234
8393 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:235
8394 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:236
8395 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:237
8396 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:238
8397 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:239
8398 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:261
8399 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:262
8400 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:263
8401 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:264
8402 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:265
8403 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:266
8404 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:267
8405 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:268
8406 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:269
8407 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:270
8408 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:271
8409 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:272
8410 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:273
8411 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:274
8412 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:275
8413 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:276
8414 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:277
8415 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:278
8416 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:279
8417 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:280
8418 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:281
8419 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:282
8420 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:283
8421 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:284
8422 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:285
8423 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:286
8424 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:287
8425 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:288
8426 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:289
8427 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:290
8428 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:291
8429 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:292
8430 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:293
8431 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:294
8432 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:295
8433 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:296
8434 +-#: ../lib/plugins/movie/PluginMovieAllocine.py:297
8435 +-#: ../lib/plugins/movie/PluginMovieAllRovi.py:75
8436 +-#: ../lib/plugins/movie/PluginMovieAllRovi.py:171
8437 +-#: ../lib/plugins/movie/PluginMovieAllRovi.py:172
8438 +-#: ../lib/plugins/movie/PluginMovieAllRovi.py:173
8439 +-#: ../lib/plugins/movie/PluginMovieAllRovi.py:174
8440 +-#: ../lib/plugins/movie/PluginMovieAllRovi.py:175
8441 +-#: ../lib/plugins/movie/PluginMovieAllRovi.py:176
8442 +-#: ../lib/plugins/movie/PluginMovieAllRovi.py:177
8443 +-#: ../lib/plugins/movie/PluginMovieAllRovi.py:178
8444 +-#: ../lib/plugins/movie/PluginMovieAllRovi.py:180
8445 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:99
8446 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:254
8447 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:255
8448 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:256
8449 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:257
8450 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:258
8451 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:259
8452 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:260
8453 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:261
8454 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:262
8455 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:263
8456 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:264
8457 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:265
8458 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:266
8459 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:267
8460 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:268
8461 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:269
8462 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:270
8463 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:271
8464 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:272
8465 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:273
8466 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:274
8467 +-#: ../lib/plugins/movie/PluginMovieCinematografo.py:275
8468 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:82
8469 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:84
8470 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:169
8471 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:170
8472 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:171
8473 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:172
8474 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:173
8475 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:174
8476 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:175
8477 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:176
8478 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:177
8479 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:178
8480 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:179
8481 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:180
8482 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:181
8483 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:182
8484 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:183
8485 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:205
8486 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:206
8487 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:207
8488 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:208
8489 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:209
8490 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:210
8491 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:211
8492 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:212
8493 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:213
8494 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:214
8495 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:215
8496 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:216
8497 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:217
8498 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:218
8499 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:219
8500 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:220
8501 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:221
8502 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:222
8503 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:223
8504 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:224
8505 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:225
8506 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:226
8507 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:227
8508 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:228
8509 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:229
8510 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:230
8511 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:231
8512 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:232
8513 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:233
8514 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:234
8515 +-#: ../lib/plugins/movie/PluginMovieCineMovies.py:235
8516 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:91
8517 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:193
8518 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:194
8519 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:195
8520 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:196
8521 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:197
8522 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:198
8523 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:199
8524 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:200
8525 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:201
8526 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:202
8527 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:203
8528 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:204
8529 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:205
8530 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:206
8531 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:207
8532 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:208
8533 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:209
8534 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:210
8535 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:211
8536 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:212
8537 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:213
8538 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:214
8539 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:215
8540 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:216
8541 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:217
8542 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:218
8543 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:219
8544 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:220
8545 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:221
8546 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:222
8547 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:223
8548 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:224
8549 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:225
8550 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:226
8551 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:227
8552 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:228
8553 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:229
8554 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:230
8555 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:231
8556 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:232
8557 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:233
8558 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:234
8559 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:235
8560 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:236
8561 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:237
8562 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:238
8563 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:239
8564 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:240
8565 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:241
8566 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:242
8567 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:243
8568 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:244
8569 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:245
8570 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:246
8571 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:247
8572 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:248
8573 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:249
8574 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:250
8575 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:251
8576 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:252
8577 +-#: ../lib/plugins/movie/PluginMovieE-Pipoca.py:253
8578 +-#: ../lib/plugins/movie/PluginMovieFDb.py:121
8579 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:91
8580 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:200
8581 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:201
8582 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:202
8583 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:203
8584 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:204
8585 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:205
8586 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:206
8587 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:227
8588 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:228
8589 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:229
8590 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:230
8591 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:231
8592 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:232
8593 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:233
8594 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:234
8595 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:255
8596 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:256
8597 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:257
8598 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:258
8599 +-#: ../lib/plugins/movie/PluginMovieFilmeVonAZ.py:259
8600 +-#: ../lib/plugins/movie/PluginMovieFilmweb.py:134
8601 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:84
8602 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:185
8603 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:186
8604 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:189
8605 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:191
8606 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:192
8607 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:194
8608 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:195
8609 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:199
8610 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:203
8611 +-#: ../lib/plugins/movie/PluginMovieHKMDB.py:204
8612 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:133
8613 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:134
8614 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:314
8615 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:315
8616 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:316
8617 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:317
8618 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:318
8619 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:319
8620 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:320
8621 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:321
8622 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:322
8623 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:323
8624 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:324
8625 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:325
8626 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:326
8627 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:327
8628 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:328
8629 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:329
8630 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:330
8631 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:331
8632 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:332
8633 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:333
8634 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:334
8635 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:335
8636 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:336
8637 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:337
8638 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:338
8639 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:339
8640 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:340
8641 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:341
8642 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:342
8643 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:343
8644 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:344
8645 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:345
8646 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:346
8647 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:347
8648 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:348
8649 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:349
8650 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:350
8651 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:351
8652 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:352
8653 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:353
8654 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:354
8655 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:355
8656 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:356
8657 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:357
8658 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:358
8659 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:359
8660 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:360
8661 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:361
8662 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:362
8663 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:363
8664 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:364
8665 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:365
8666 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:366
8667 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:367
8668 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:368
8669 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:369
8670 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:370
8671 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:371
8672 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:372
8673 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:373
8674 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:374
8675 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:375
8676 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:376
8677 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:377
8678 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:378
8679 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:379
8680 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:380
8681 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:381
8682 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:382
8683 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:383
8684 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:384
8685 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:385
8686 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:386
8687 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:387
8688 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:388
8689 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:389
8690 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:390
8691 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:391
8692 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:392
8693 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:393
8694 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:394
8695 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:395
8696 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:396
8697 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:397
8698 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:398
8699 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:399
8700 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:400
8701 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:401
8702 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:424
8703 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:425
8704 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:426
8705 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:427
8706 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:428
8707 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:429
8708 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:430
8709 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:431
8710 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:432
8711 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:433
8712 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:439
8713 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:440
8714 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:445
8715 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:446
8716 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:447
8717 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:448
8718 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:139
8719 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:140
8720 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:268
8721 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:269
8722 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:270
8723 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:271
8724 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:272
8725 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:273
8726 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:274
8727 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:275
8728 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:276
8729 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:277
8730 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:278
8731 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:279
8732 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:280
8733 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:281
8734 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:282
8735 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:283
8736 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:284
8737 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:285
8738 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:286
8739 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:287
8740 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:288
8741 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:289
8742 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:290
8743 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:291
8744 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:292
8745 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:293
8746 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:294
8747 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:295
8748 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:296
8749 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:297
8750 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:298
8751 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:299
8752 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:300
8753 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:301
8754 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:302
8755 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:303
8756 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:304
8757 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:305
8758 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:306
8759 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:307
8760 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:308
8761 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:309
8762 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:310
8763 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:311
8764 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:312
8765 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:313
8766 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:314
8767 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:315
8768 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:316
8769 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:317
8770 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:318
8771 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:319
8772 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:320
8773 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:321
8774 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:322
8775 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:323
8776 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:324
8777 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:325
8778 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:326
8779 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:327
8780 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:328
8781 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:329
8782 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:330
8783 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:331
8784 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:332
8785 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:333
8786 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:334
8787 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:335
8788 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:336
8789 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:337
8790 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:338
8791 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:339
8792 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:340
8793 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:341
8794 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:342
8795 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:343
8796 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:344
8797 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:345
8798 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:346
8799 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:347
8800 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:348
8801 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:349
8802 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:350
8803 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:351
8804 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:352
8805 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:353
8806 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:354
8807 +-#: ../lib/plugins/movie/PluginMovieIMDB-es.py:355
8808 +-#: ../lib/plugins/movie/PluginMovieIMDB-it.py:96
8809 +-#: ../lib/plugins/movie/PluginMovieIMDB-it.py:97
8810 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:99
8811 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:100
8812 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:298
8813 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:299
8814 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:300
8815 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:301
8816 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:302
8817 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:303
8818 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:304
8819 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:305
8820 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:306
8821 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:307
8822 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:308
8823 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:309
8824 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:310
8825 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:311
8826 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:312
8827 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:313
8828 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:314
8829 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:315
8830 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:316
8831 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:317
8832 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:318
8833 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:319
8834 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:320
8835 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:321
8836 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:322
8837 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:323
8838 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:324
8839 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:325
8840 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:326
8841 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:327
8842 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:328
8843 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:329
8844 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:330
8845 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:331
8846 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:332
8847 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:333
8848 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:334
8849 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:335
8850 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:336
8851 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:337
8852 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:338
8853 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:339
8854 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:340
8855 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:341
8856 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:342
8857 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:343
8858 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:344
8859 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:345
8860 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:346
8861 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:347
8862 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:348
8863 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:349
8864 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:350
8865 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:351
8866 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:352
8867 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:353
8868 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:194
8869 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:205
8870 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:386
8871 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:387
8872 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:388
8873 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:389
8874 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:390
8875 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:391
8876 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:392
8877 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:393
8878 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:469
8879 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:470
8880 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:471
8881 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:472
8882 +-#: ../lib/plugins/movie/PluginMovieKinoDe.py:473
8883 +-#: ../lib/plugins/movie/PluginMovieMoviefone.py:72
8884 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:91
8885 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:214
8886 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:215
8887 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:216
8888 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:217
8889 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:218
8890 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:219
8891 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:220
8892 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:221
8893 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:222
8894 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:223
8895 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:224
8896 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:225
8897 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:226
8898 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:227
8899 +-#: ../lib/plugins/movie/PluginMovieMyMoviesIt.py:228
8900 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:88
8901 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:176
8902 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:177
8903 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:178
8904 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:179
8905 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:180
8906 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:181
8907 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:183
8908 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:184
8909 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:185
8910 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:192
8911 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:193
8912 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:194
8913 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:197
8914 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:202
8915 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:204
8916 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:227
8917 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:230
8918 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:249
8919 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:250
8920 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:251
8921 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:252
8922 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:258
8923 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:290
8924 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:291
8925 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:292
8926 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:293
8927 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:303
8928 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:304
8929 +-#: ../lib/plugins/movie/PluginMovieOFDb.py:306
8930 +-#: ../lib/plugins/movie/PluginMovieOnet.py:88
8931 +-#: ../lib/plugins/movie/PluginMovieScope.py:86
8932 +-#: ../lib/plugins/movie/PluginMovieScope.py:195
8933 +-#: ../lib/plugins/movie/PluginMovieScope.py:196
8934 +-#: ../lib/plugins/movie/PluginMovieScope.py:197
8935 +-#: ../lib/plugins/movie/PluginMovieScope.py:198
8936 +-#: ../lib/plugins/movie/PluginMovieScope.py:199
8937 +-#: ../lib/plugins/movie/PluginMovieScope.py:200
8938 +-#: ../lib/plugins/movie/PluginMovieScope.py:201
8939 +-#: ../lib/plugins/movie/PluginMovieScope.py:202
8940 +-#: ../lib/plugins/movie/PluginMovieScope.py:203
8941 +-#: ../lib/plugins/movie/PluginMovieScope.py:204
8942 +-#: ../lib/plugins/movie/PluginMovieStopklatka.py:98
8943 +-#: ../lib/plugins/movie/PluginMovieWP.py:98
8944 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:107
8945 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:216
8946 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:217
8947 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:218
8948 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:219
8949 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:220
8950 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:221
8951 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:222
8952 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:223
8953 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:224
8954 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:225
8955 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:226
8956 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:227
8957 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:247
8958 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:248
8959 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:249
8960 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:250
8961 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:251
8962 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:252
8963 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:253
8964 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:254
8965 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:255
8966 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:256
8967 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:257
8968 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:258
8969 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:259
8970 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:260
8971 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:261
8972 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:262
8973 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:263
8974 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:264
8975 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:265
8976 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:266
8977 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:267
8978 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:268
8979 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:269
8980 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:270
8981 +-#: ../lib/plugins/movie/PluginMovieZelluloid.py:271
8982 +-#: ../lib/plugins/export/PluginExportAMC.py:115
8983 +-#: ../lib/plugins/export/PluginExportDVDProfilerXMLExportV2.py:200
8984 +-#: ../lib/plugins/export/PluginExportDVDProfilerXMLExportV3.py:182
8985 +-#: ../lib/plugins/export/PluginExportGCstar.py:148
8986 +-#: ../lib/plugins/imp/AllMyMovies.py:138 ../lib/plugins/imp/AllMyMovies.py:144
8987 +-#: ../lib/plugins/imp/DVDProfiler.py:229 ../lib/plugins/imp/DVDProfiler.py:231
8988 +-#: ../lib/plugins/imp/DVDProfiler.py:250 ../lib/plugins/imp/DVDProfiler.py:252
8989 +-#: ../lib/plugins/imp/eXtremeMovieManager.py:171
8990 +-#: ../lib/plugins/imp/FoxMovieManager.py:109 ../lib/plugins/imp/GCstar.py:150
8991 +-#: ../lib/plugins/imp/TheMovieLibrary.py:148
8992 +-#: ../lib/plugins/imp/WintoolzFilmdatenbank.py:136
8993 +-msgid " as "
8994 +-msgstr ""
8995 +-
8996 +-#: ../lib/plugins/movie/PluginMovieAmazon.py:38
8997 +-msgid "International"
8998 +-msgstr ""
8999 +-
9000 +-#: ../lib/plugins/movie/PluginMovieAmazon.py:59
9001 +-#: ../lib/plugins/movie/PluginMovieAmazon.py:254
9002 +-msgid ""
9003 +-"Please configure your Amazon Access Key ID and Secret Key correctly in the "
9004 +-"preferences dialog."
9005 +-msgstr ""
9006 +-
9007 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:212
9008 +-#: ../lib/plugins/movie/PluginMovieIMDB-it.py:154
9009 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:178 ../glade/griffith.glade.h:4
9010 +-msgid "<b>Audio</b>"
9011 +-msgstr ""
9012 +-
9013 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:411
9014 +-#: ../lib/plugins/movie/PluginMovieIMDB-de.py:458
9015 +-#: ../lib/plugins/movie/PluginMovieIMDB.py:363
9016 +-msgid "Audio"
9017 +-msgstr ""
9018 +-
9019 +-#: ../lib/plugins/movie/PluginMovieIMDB-it.py:158
9020 +-msgid "Data di uscita"
9021 +-msgstr ""
9022 +-
9023 +-#: ../lib/plugins/movie/PluginMovieIMDB-pt.py:90
9024 +-#: ../lib/plugins/movie/PluginMovieIMDB-pt.py:91
9025 +-msgid " como "
9026 +-msgstr ""
9027 +-
9028 +-#: ../lib/plugins/export/__init__.py:136
9029 +-#: ../lib/plugins/export/PluginExportCSV.py:78
9030 +-#: ../lib/plugins/export/PluginExportXML.py:115
9031 +-#, python-format
9032 +-msgid "%s file has been created."
9033 +-msgstr ""
9034 +-
9035 +-#: ../lib/plugins/export/__init__.py:145 ../lib/plugins/export/__init__.py:148
9036 +-#: ../lib/plugins/export/PluginExportCSV.py:50
9037 +-#: ../lib/plugins/export/PluginExportCSV.py:53
9038 +-#: ../lib/plugins/export/PluginExportiPod.py:108
9039 +-#: ../lib/plugins/export/PluginExportXML.py:47
9040 +-#: ../lib/plugins/export/PluginExportXML.py:50
9041 +-#, python-format
9042 +-msgid "Export a %s document"
9043 +-msgstr ""
9044 +-
9045 +-#: ../lib/plugins/export/PluginExportAMC.py:30
9046 +-msgid "Full Ant Movie Catalog database xml export plugin"
9047 +-msgstr ""
9048 +-
9049 +-#: ../lib/plugins/export/PluginExportCSV.py:34
9050 +-msgid "Full CSV list export plugin"
9051 +-msgstr ""
9052 +-
9053 +-#: ../lib/plugins/export/PluginExportDVDProfilerXMLExportV2.py:29
9054 +-msgid "Full DVD Profiler XML Export V2 plugin"
9055 +-msgstr ""
9056 +-
9057 +-#: ../lib/plugins/export/PluginExportDVDProfilerXMLExportV3.py:29
9058 +-msgid "Full DVD Profiler XML Export V3 plugin"
9059 +-msgstr ""
9060 +-
9061 +-#: ../lib/plugins/export/PluginExportGCstar.py:30
9062 +-msgid "Full GCstar database export plugin"
9063 +-msgstr ""
9064 +-
9065 +-#: ../lib/plugins/export/PluginExportHTML.py:41
9066 +-msgid "Plugin exports data using templates"
9067 +-msgstr ""
9068 +-
9069 +-#: ../lib/plugins/export/PluginExportHTML.py:52
9070 +-msgid "Griffith's movies list"
9071 +-msgstr ""
9072 +-
9073 +-#: ../lib/plugins/export/PluginExportHTML.py:168
9074 +-msgid "Width"
9075 +-msgstr ""
9076 +-
9077 +-#: ../lib/plugins/export/PluginExportHTML.py:169
9078 +-msgid "Height"
9079 +-msgstr ""
9080 +-
9081 +-#: ../lib/plugins/export/PluginExportHTML.py:177 ../glade/griffith.glade.h:89
9082 +-msgid "Media"
9083 +-msgstr ""
9084 +-
9085 +-#: ../lib/plugins/export/PluginExportHTML.py:520
9086 +-#: ../lib/plugins/export/PluginExportHTML.py:522
9087 +-msgid "previous"
9088 +-msgstr ""
9089 +-
9090 +-#: ../lib/plugins/export/PluginExportHTML.py:533
9091 +-#: ../lib/plugins/export/PluginExportHTML.py:535
9092 +-msgid "next"
9093 +-msgstr ""
9094 +-
9095 +-#: ../lib/plugins/export/PluginExportHTML.py:622
9096 +-#: ../lib/plugins/export/PluginExportHTML.py:658
9097 +-#: ../lib/plugins/export/PluginExportHTML.py:763
9098 +-#, python-format
9099 +-msgid "Can't create %s!"
9100 +-msgstr ""
9101 +-
9102 +-#: ../lib/plugins/export/PluginExportHTML.py:647
9103 +-#, python-format
9104 +-msgid ""
9105 +-"Directory %s already exists.\n"
9106 +-"Do you want to overwrite it?"
9107 +-msgstr ""
9108 +-
9109 +-#: ../lib/plugins/export/PluginExportHTML.py:651
9110 +-#, python-format
9111 +-msgid "Can't remove %s!"
9112 +-msgstr ""
9113 +-
9114 +-#: ../lib/plugins/export/PluginExportHTML.py:666
9115 +-#: ../lib/plugins/export/PluginExportHTML.py:679
9116 +-#, python-format
9117 +-msgid "Can't copy %s!"
9118 +-msgstr ""
9119 +-
9120 +-#: ../lib/plugins/export/PluginExportHTML.py:709
9121 +-#, python-format
9122 +-msgid "Can't open %s!"
9123 +-msgstr ""
9124 +-
9125 +-#: ../lib/plugins/export/PluginExportHTML.py:717
9126 +-#: ../lib/plugins/export/PluginExportPDF.py:263
9127 +-msgid "Document generated by Griffith v"
9128 +-msgstr ""
9129 +-
9130 +-#: ../lib/plugins/export/PluginExportHTML.py:785
9131 +-msgid "Yes"
9132 +-msgstr ""
9133 +-
9134 +-#: ../lib/plugins/export/PluginExportHTML.py:787
9135 +-msgid "No"
9136 +-msgstr ""
9137 +-
9138 +-#: ../lib/plugins/export/PluginExportHTML.py:862
9139 +-msgid "Document has been generated."
9140 +-msgstr ""
9141 +-
9142 +-#: ../lib/plugins/export/PluginExportiPod.py:63
9143 +-msgid "iPod Notes export plugin"
9144 +-msgstr ""
9145 +-
9146 +-#: ../lib/plugins/export/PluginExportiPod.py:87
9147 +-msgid "My Movies List"
9148 +-msgstr ""
9149 +-
9150 +-#: ../lib/plugins/export/PluginExportiPod.py:103
9151 +-msgid "List successfully exported to iPod."
9152 +-msgstr ""
9153 +-
9154 +-#: ../lib/plugins/export/PluginExportiPod.py:105
9155 +-msgid "iPod is not connected."
9156 +-msgstr ""
9157 +-
9158 +-#: ../lib/plugins/export/PluginExportiPod.py:119
9159 +-msgid ""
9160 +-"The list was successfully exported. Now you should move it to the 'Notes' "
9161 +-"folder on your iPod."
9162 +-msgstr ""
9163 +-
9164 +-#: ../lib/plugins/export/PluginExportPDF.py:48
9165 +-msgid "PDF export plugin"
9166 +-msgstr ""
9167 +-
9168 +-#: ../lib/plugins/export/PluginExportPDF.py:66
9169 +-#: ../lib/plugins/export/PluginExportPDF.py:68
9170 +-msgid "Export a PDF"
9171 +-msgstr ""
9172 +-
9173 +-#: ../lib/plugins/export/PluginExportPDF.py:88
9174 +-#: ../lib/plugins/export/PluginExportPDF.py:89
9175 +-#: ../lib/plugins/export/PluginExportPDF.py:116
9176 +-msgid "List of films"
9177 +-msgstr ""
9178 +-
9179 +-#: ../lib/plugins/export/PluginExportPDF.py:119
9180 +-#, python-format
9181 +-msgid "Total Movies: %s"
9182 +-msgstr ""
9183 +-
9184 +-#: ../lib/plugins/export/PluginExportPDF.py:199
9185 +-msgid "PDF has been created."
9186 +-msgstr ""
9187 +-
9188 +-#: ../lib/plugins/export/PluginExportPDF.py:261
9189 +-#, python-format
9190 +-msgid "Page %d"
9191 +-msgstr ""
9192 +-
9193 +-#: ../lib/plugins/export/PluginExportXML.py:33
9194 +-msgid "Full XML list export plugin"
9195 +-msgstr ""
9196 +-
9197 +-#: ../lib/plugins/imp/AllMyMovies.py:60 ../lib/plugins/imp/AMC.py:121
9198 +-#: ../lib/plugins/imp/BESTheMovieLibrary.py:60
9199 +-#: ../lib/plugins/imp/DVDProfiler.py:57
9200 +-#: ../lib/plugins/imp/eXtremeMovieManager.py:57
9201 +-#: ../lib/plugins/imp/FoxMovieManager.py:60 ../lib/plugins/imp/GCstar.py:58
9202 +-#: ../lib/plugins/imp/GriffithXML.py:57 ../lib/plugins/imp/MovieTrack.py:56
9203 +-#: ../lib/plugins/imp/MyDVDs.py:60
9204 +-#: ../lib/plugins/imp/PersonalVideoDatabase.py:57
9205 +-#: ../lib/plugins/imp/TheMovieLibrary.py:60
9206 +-#: ../lib/plugins/imp/WintoolzFilmdatenbank.py:59
9207 +-msgid "The format of the file is not supported."
9208 +-msgstr ""
9209 +-
9210 +-#: ../lib/plugins/imp/CSV.py:45
9211 +-msgid "Full CSV list import plugin"
9212 +-msgstr ""
9213 +-
9214 +-#: ../lib/plugins/imp/CSV.py:195
9215 +-msgid "Please assign at least one field first!"
9216 +-msgstr ""
9217 +-
9218 +-#: ../lib/plugins/imp/CSV.py:311
9219 +-#, python-format
9220 +-msgid "Can't open the file %s"
9221 +-msgstr ""
9222 +-
9223 +-#: ../lib/plugins/imp/__init__.py:409
9224 +-#, python-format
9225 +-msgid "%s file has been imported. %s movies added."
9226 +-msgstr ""
9227 +-
9228 +-#: ../glade/exporthtml.glade.h:1
9229 +-msgid "<b>Example</b>"
9230 +-msgstr ""
9231 +-
9232 +-#: ../glade/exporthtml.glade.h:2
9233 +-msgid "<b>Export</b>"
9234 +-msgstr ""
9235 +-
9236 +-#: ../glade/exporthtml.glade.h:3
9237 +-msgid "<b>Header</b>"
9238 +-msgstr ""
9239 +-
9240 +-#: ../glade/exporthtml.glade.h:4 ../glade/griffith.glade.h:18
9241 +-msgid "<b>Sort by</b>"
9242 +-msgstr ""
9243 +-
9244 +-#: ../glade/exporthtml.glade.h:5
9245 +-msgid "<b>Split into</b>"
9246 +-msgstr ""
9247 +-
9248 +-#: ../glade/exporthtml.glade.h:6
9249 +-msgid "<b>Style</b>"
9250 +-msgstr ""
9251 +-
9252 +-#: ../glade/exporthtml.glade.h:7
9253 +-msgid "<b>Template</b>"
9254 +-msgstr ""
9255 +-
9256 +-#: ../glade/exporthtml.glade.h:8 ../glade/import.glade.h:3
9257 +-msgid "Author"
9258 +-msgstr ""
9259 +-
9260 +-#: ../glade/exporthtml.glade.h:9
9261 +-msgid "Black and white"
9262 +-msgstr ""
9263 +-
9264 +-#: ../glade/exporthtml.glade.h:10
9265 +-msgid "Choose style file"
9266 +-msgstr ""
9267 +-
9268 +-#: ../glade/exporthtml.glade.h:11
9269 +-msgid "Convert images"
9270 +-msgstr ""
9271 +-
9272 +-#: ../glade/exporthtml.glade.h:12
9273 +-msgid "Data"
9274 +-msgstr ""
9275 +-
9276 +-#: ../glade/exporthtml.glade.h:13 ../glade/import.glade.h:4
9277 +-msgid "Description"
9278 +-msgstr ""
9279 +-
9280 +-#: ../glade/exporthtml.glade.h:14
9281 +-msgid "Destination"
9282 +-msgstr ""
9283 +-
9284 +-#: ../glade/exporthtml.glade.h:16
9285 +-msgid "Export"
9286 +-msgstr ""
9287 +-
9288 +-#: ../glade/exporthtml.glade.h:17
9289 +-msgid "Export data"
9290 +-msgstr ""
9291 +-
9292 +-#: ../glade/exporthtml.glade.h:18
9293 +-msgid "Format"
9294 +-msgstr ""
9295 +-
9296 +-#: ../glade/exporthtml.glade.h:19
9297 +-msgid "Maximal height"
9298 +-msgstr ""
9299 +-
9300 +-#: ../glade/exporthtml.glade.h:20
9301 +-msgid "Maximal width"
9302 +-msgstr ""
9303 +-
9304 +-#: ../glade/exporthtml.glade.h:21
9305 +-msgid "Posters"
9306 +-msgstr ""
9307 +-
9308 +-#: ../glade/exporthtml.glade.h:22 ../glade/griffith.glade.h:130
9309 +-msgid "Reverse"
9310 +-msgstr ""
9311 +-
9312 +-#: ../glade/exporthtml.glade.h:23
9313 +-msgid "Template"
9314 +-msgstr ""
9315 +-
9316 +-#: ../glade/exporthtml.glade.h:24
9317 +-msgid "Use custom file"
9318 +-msgstr ""
9319 +-
9320 +-#: ../glade/exporthtml.glade.h:25 ../glade/import.glade.h:10
9321 +-msgid "Version"
9322 +-msgstr ""
9323 +-
9324 +-#: ../glade/exporthtml.glade.h:26
9325 +-msgid "entries per page"
9326 +-msgstr ""
9327 +-
9328 +-#: ../glade/exporthtml.glade.h:27
9329 +-msgid "files"
9330 +-msgstr ""
9331 +-
9332 +-#: ../glade/griffith.glade.h:1
9333 +-msgid "0 means no limits"
9334 +-msgstr ""
9335 +-
9336 +-#: ../glade/griffith.glade.h:2
9337 +-msgid "<b>Audio channels</b>"
9338 +-msgstr ""
9339 +-
9340 +-#: ../glade/griffith.glade.h:3
9341 +-msgid "<b>Audio codecs</b>"
9342 +-msgstr ""
9343 +-
9344 +-#: ../glade/griffith.glade.h:5
9345 +-msgid "<b>Collection</b>"
9346 +-msgstr ""
9347 +-
9348 +-#: ../glade/griffith.glade.h:6
9349 +-msgid "<b>Collections</b>"
9350 +-msgstr ""
9351 +-
9352 +-#: ../glade/griffith.glade.h:7
9353 +-msgid "<b>Defaults</b>"
9354 +-msgstr ""
9355 +-
9356 +-#: ../glade/griffith.glade.h:8
9357 +-msgid "<b>E-mail reminder</b>"
9358 +-msgstr ""
9359 +-
9360 +-#: ../glade/griffith.glade.h:9
9361 +-msgid "<b>Languages</b>"
9362 +-msgstr ""
9363 +-
9364 +-#: ../glade/griffith.glade.h:10
9365 +-msgid "<b>Limits</b>"
9366 +-msgstr ""
9367 +-
9368 +-#: ../glade/griffith.glade.h:11
9369 +-msgid "<b>Loan History</b>"
9370 +-msgstr ""
9371 +-
9372 +-#: ../glade/griffith.glade.h:12
9373 +-msgid "<b>Loans</b>"
9374 +-msgstr ""
9375 +-
9376 +-#: ../glade/griffith.glade.h:13
9377 +-msgid "<b>Media</b>"
9378 +-msgstr ""
9379 +-
9380 +-#: ../glade/griffith.glade.h:14
9381 +-msgid "<b>Search for:</b>"
9382 +-msgstr ""
9383 +-
9384 +-#: ../glade/griffith.glade.h:15
9385 +-msgid "<b>Search results</b>"
9386 +-msgstr ""
9387 +-
9388 +-#: ../glade/griffith.glade.h:16
9389 +-msgid "<b>Select database to use</b>"
9390 +-msgstr ""
9391 +-
9392 +-#: ../glade/griffith.glade.h:17
9393 +-msgid "<b>Show only the following columns</b>"
9394 +-msgstr ""
9395 +-
9396 +-#: ../glade/griffith.glade.h:19
9397 +-msgid "<b>Subtitle formats</b>"
9398 +-msgstr ""
9399 +-
9400 +-#: ../glade/griffith.glade.h:20
9401 +-msgid "<b>Subtitles</b>"
9402 +-msgstr ""
9403 +-
9404 +-#: ../glade/griffith.glade.h:21
9405 +-msgid "<b>Tags</b>"
9406 +-msgstr ""
9407 +-
9408 +-#: ../glade/griffith.glade.h:22
9409 +-msgid "<b>Use spell checking on the following fields:</b>"
9410 +-msgstr ""
9411 +-
9412 +-#: ../glade/griffith.glade.h:23
9413 +-msgid "<b>Video codecs</b>"
9414 +-msgstr ""
9415 +-
9416 +-#: ../glade/griffith.glade.h:24
9417 +-msgid "<b>Volume</b>"
9418 +-msgstr ""
9419 +-
9420 +-#: ../glade/griffith.glade.h:25
9421 +-msgid "<b>Volumes</b>"
9422 +-msgstr ""
9423 +-
9424 +-#: ../glade/griffith.glade.h:26
9425 +-msgid "Add"
9426 +-msgstr ""
9427 +-
9428 +-#: ../glade/griffith.glade.h:28
9429 +-msgid "Add a new person"
9430 +-msgstr ""
9431 +-
9432 +-#: ../glade/griffith.glade.h:29
9433 +-msgid "Add movie"
9434 +-msgstr ""
9435 +-
9436 +-#: ../glade/griffith.glade.h:30
9437 +-msgid "Add movie and close"
9438 +-msgstr ""
9439 +-
9440 +-#: ../glade/griffith.glade.h:31
9441 +-msgid "Adds new movie"
9442 +-msgstr ""
9443 +-
9444 +-#: ../glade/griffith.glade.h:32
9445 +-msgid "All Movies"
9446 +-msgstr ""
9447 +-
9448 +-#: ../glade/griffith.glade.h:34
9449 +-msgid "Base font size"
9450 +-msgstr ""
9451 +-
9452 +-#: ../glade/griffith.glade.h:35
9453 +-msgid "By Collection"
9454 +-msgstr ""
9455 +-
9456 +-#: ../glade/griffith.glade.h:38
9457 +-msgid "Choose Image"
9458 +-msgstr ""
9459 +-
9460 +-#: ../glade/griffith.glade.h:40
9461 +-msgid "Clear filter"
9462 +-msgstr ""
9463 +-
9464 +-#: ../glade/griffith.glade.h:41
9465 +-msgid "Clone"
9466 +-msgstr ""
9467 +-
9468 +-#: ../glade/griffith.glade.h:46
9469 +-msgid "Create backup"
9470 +-msgstr ""
9471 +-
9472 +-#: ../glade/griffith.glade.h:48
9473 +-msgid "Database"
9474 +-msgstr ""
9475 +-
9476 +-#: ../glade/griffith.glade.h:49
9477 +-msgid "Delete a person"
9478 +-msgstr ""
9479 +-
9480 +-#: ../glade/griffith.glade.h:50
9481 +-msgid "Details"
9482 +-msgstr ""
9483 +-
9484 +-#: ../glade/griffith.glade.h:51
9485 +-msgid "Dictionaries"
9486 +-msgstr ""
9487 +-
9488 +-#: ../glade/griffith.glade.h:55
9489 +-msgid "E-mail reminder"
9490 +-msgstr ""
9491 +-
9492 +-#: ../glade/griffith.glade.h:56
9493 +-msgid "E_xport"
9494 +-msgstr ""
9495 +-
9496 +-#: ../glade/griffith.glade.h:57
9497 +-msgid "Edit a person"
9498 +-msgstr ""
9499 +-
9500 +-#: ../glade/griffith.glade.h:58
9501 +-msgid "Edit movie details"
9502 +-msgstr ""
9503 +-
9504 +-#: ../glade/griffith.glade.h:59
9505 +-msgid "Extensions"
9506 +-msgstr ""
9507 +-
9508 +-#: ../glade/griffith.glade.h:60
9509 +-msgid "Extensions toolbar"
9510 +-msgstr ""
9511 +-
9512 +-#: ../glade/griffith.glade.h:61
9513 +-msgid "Favorite Movie Plugin"
9514 +-msgstr ""
9515 +-
9516 +-#: ../glade/griffith.glade.h:62
9517 +-msgid "Fill empty fields only"
9518 +-msgstr ""
9519 +-
9520 +-#: ../glade/griffith.glade.h:63
9521 +-msgid "Filter "
9522 +-msgstr ""
9523 +-
9524 +-#: ../glade/griffith.glade.h:64
9525 +-msgid "Filter movies"
9526 +-msgstr ""
9527 +-
9528 +-#: ../glade/griffith.glade.h:65
9529 +-msgid "Font for reports"
9530 +-msgstr ""
9531 +-
9532 +-#: ../glade/griffith.glade.h:66
9533 +-msgid "Forum"
9534 +-msgstr ""
9535 +-
9536 +-#: ../glade/griffith.glade.h:67
9537 +-msgid "Found Results"
9538 +-msgstr ""
9539 +-
9540 +-#: ../glade/griffith.glade.h:69
9541 +-msgid "Get from web"
9542 +-msgstr ""
9543 +-
9544 +-#: ../glade/griffith.glade.h:70
9545 +-msgid "Get movie data from:"
9546 +-msgstr ""
9547 +-
9548 +-#: ../glade/griffith.glade.h:71
9549 +-msgid "Homepage"
9550 +-msgstr ""
9551 +-
9552 +-#: ../glade/griffith.glade.h:72
9553 +-msgid "Host"
9554 +-msgstr ""
9555 +-
9556 +-#: ../glade/griffith.glade.h:73
9557 +-msgid "I_mport"
9558 +-msgstr ""
9559 +-
9560 +-#: ../glade/griffith.glade.h:75
9561 +-msgid "Include Front Image"
9562 +-msgstr ""
9563 +-
9564 +-#: ../glade/griffith.glade.h:76
9565 +-msgid "Include movie number"
9566 +-msgstr ""
9567 +-
9568 +-#: ../glade/griffith.glade.h:77
9569 +-msgid "Languages"
9570 +-msgstr ""
9571 +-
9572 +-#: ../glade/griffith.glade.h:79
9573 +-msgid "Limit search results to"
9574 +-msgstr ""
9575 +-
9576 +-#: ../glade/griffith.glade.h:80
9577 +-msgid "Load poster from disk"
9578 +-msgstr ""
9579 +-
9580 +-#: ../glade/griffith.glade.h:81
9581 +-msgid "Loan"
9582 +-msgstr ""
9583 +-
9584 +-#: ../glade/griffith.glade.h:82
9585 +-msgid "Loan Management"
9586 +-msgstr ""
9587 +-
9588 +-#: ../glade/griffith.glade.h:83
9589 +-msgid "Loan movie"
9590 +-msgstr ""
9591 +-
9592 +-#: ../glade/griffith.glade.h:84
9593 +-msgid "Loan to"
9594 +-msgstr ""
9595 +-
9596 +-#: ../glade/griffith.glade.h:85
9597 +-msgid "Loaned Movies"
9598 +-msgstr ""
9599 +-
9600 +-#: ../glade/griffith.glade.h:86
9601 +-msgid "Loans"
9602 +-msgstr ""
9603 +-
9604 +-#: ../glade/griffith.glade.h:87
9605 +-msgid "Main list"
9606 +-msgstr ""
9607 +-
9608 +-#: ../glade/griffith.glade.h:88
9609 +-msgid "Manage People"
9610 +-msgstr ""
9611 +-
9612 +-#: ../glade/griffith.glade.h:91
9613 +-msgid ""
9614 +-"Meter\n"
9615 +-"Stars"
9616 +-msgstr ""
9617 +-
9618 +-#: ../glade/griffith.glade.h:93
9619 +-msgid "Movie details"
9620 +-msgstr ""
9621 +-
9622 +-#: ../glade/griffith.glade.h:94
9623 +-msgid "Movie information"
9624 +-msgstr ""
9625 +-
9626 +-#: ../glade/griffith.glade.h:96
9627 +-msgid "Needs authentication"
9628 +-msgstr ""
9629 +-
9630 +-#: ../glade/griffith.glade.h:97
9631 +-msgid "New database"
9632 +-msgstr ""
9633 +-
9634 +-#: ../glade/griffith.glade.h:98
9635 +-msgid "Not Seen Movies"
9636 +-msgstr ""
9637 +-
9638 +-#: ../glade/griffith.glade.h:102
9639 +-msgid "Open search window"
9640 +-msgstr ""
9641 +-
9642 +-#: ../glade/griffith.glade.h:104
9643 +-msgid "Original title"
9644 +-msgstr ""
9645 +-
9646 +-#: ../glade/griffith.glade.h:105
9647 +-msgid "Other"
9648 +-msgstr ""
9649 +-
9650 +-#: ../glade/griffith.glade.h:106
9651 +-msgid "PDF reader"
9652 +-msgstr ""
9653 +-
9654 +-#: ../glade/griffith.glade.h:107
9655 +-msgid "Password"
9656 +-msgstr ""
9657 +-
9658 +-#: ../glade/griffith.glade.h:108
9659 +-msgid "People"
9660 +-msgstr ""
9661 +-
9662 +-#: ../glade/griffith.glade.h:109
9663 +-msgid "Phone"
9664 +-msgstr ""
9665 +-
9666 +-#: ../glade/griffith.glade.h:110
9667 +-msgid "Please wait a moment..."
9668 +-msgstr ""
9669 +-
9670 +-#: ../glade/griffith.glade.h:112
9671 +-msgid "Plugins"
9672 +-msgstr ""
9673 +-
9674 +-#: ../glade/griffith.glade.h:113
9675 +-msgid "Port"
9676 +-msgstr ""
9677 +-
9678 +-#: ../glade/griffith.glade.h:114
9679 +-msgid "Poster image"
9680 +-msgstr ""
9681 +-
9682 +-#: ../glade/griffith.glade.h:115
9683 +-msgid "Poster viewer"
9684 +-msgstr ""
9685 +-
9686 +-#: ../glade/griffith.glade.h:116
9687 +-msgid "Preferences"
9688 +-msgstr ""
9689 +-
9690 +-#: ../glade/griffith.glade.h:117
9691 +-msgid "Print Cover"
9692 +-msgstr ""
9693 +-
9694 +-#: ../glade/griffith.glade.h:118
9695 +-msgid "Print cover"
9696 +-msgstr ""
9697 +-
9698 +-#: ../glade/griffith.glade.h:120
9699 +-msgid "Rating image"
9700 +-msgstr ""
9701 +-
9702 +-#: ../glade/griffith.glade.h:122
9703 +-msgid "Remove"
9704 +-msgstr ""
9705 +-
9706 +-#: ../glade/griffith.glade.h:123
9707 +-msgid "Remove poster"
9708 +-msgstr ""
9709 +-
9710 +-#: ../glade/griffith.glade.h:124
9711 +-msgid "Remove selected movie"
9712 +-msgstr ""
9713 +-
9714 +-#: ../glade/griffith.glade.h:125
9715 +-msgid "Rename"
9716 +-msgstr ""
9717 +-
9718 +-#: ../glade/griffith.glade.h:126
9719 +-msgid "Report bug"
9720 +-msgstr ""
9721 +-
9722 +-#: ../glade/griffith.glade.h:127
9723 +-msgid "Resolution"
9724 +-msgstr ""
9725 +-
9726 +-#: ../glade/griffith.glade.h:128
9727 +-msgid "Restore from backup"
9728 +-msgstr ""
9729 +-
9730 +-#: ../glade/griffith.glade.h:129
9731 +-msgid "Return"
9732 +-msgstr ""
9733 +-
9734 +-#: ../glade/griffith.glade.h:132
9735 +-msgid "SMTP port"
9736 +-msgstr ""
9737 +-
9738 +-#: ../glade/griffith.glade.h:133
9739 +-msgid "SMTP server"
9740 +-msgstr ""
9741 +-
9742 +-#: ../glade/griffith.glade.h:134
9743 +-msgid "Saved filters"
9744 +-msgstr ""
9745 +-
9746 +-#: ../glade/griffith.glade.h:136
9747 +-msgid "Searching on the web"
9748 +-msgstr ""
9749 +-
9750 +-#: ../glade/griffith.glade.h:138
9751 +-msgid "Select all"
9752 +-msgstr ""
9753 +-
9754 +-#: ../glade/griffith.glade.h:139
9755 +-msgid "Select database"
9756 +-msgstr ""
9757 +-
9758 +-#: ../glade/griffith.glade.h:140
9759 +-msgid "Select first movie"
9760 +-msgstr ""
9761 +-
9762 +-#: ../glade/griffith.glade.h:141
9763 +-msgid "Select last movie"
9764 +-msgstr ""
9765 +-
9766 +-#: ../glade/griffith.glade.h:142
9767 +-msgid "Select next movie"
9768 +-msgstr ""
9769 +-
9770 +-#: ../glade/griffith.glade.h:143
9771 +-msgid "Select previous movie"
9772 +-msgstr ""
9773 +-
9774 +-#: ../glade/griffith.glade.h:144
9775 +-msgid "Sender E-mail address"
9776 +-msgstr ""
9777 +-
9778 +-#: ../glade/griffith.glade.h:145
9779 +-msgid "Show other movies in this collection"
9780 +-msgstr ""
9781 +-
9782 +-#: ../glade/griffith.glade.h:146
9783 +-msgid "Show other movies in this volume"
9784 +-msgstr ""
9785 +-
9786 +-#: ../glade/griffith.glade.h:147
9787 +-msgid "Simple"
9788 +-msgstr ""
9789 +-
9790 +-#: ../glade/griffith.glade.h:149
9791 +-msgid "Size"
9792 +-msgstr ""
9793 +-
9794 +-#: ../glade/griffith.glade.h:150
9795 +-msgid "Spell check the following language"
9796 +-msgstr ""
9797 +-
9798 +-#: ../glade/griffith.glade.h:151
9799 +-msgid ""
9800 +-"Standard\n"
9801 +-"Slim\n"
9802 +-"Double Slim"
9803 +-msgstr ""
9804 +-
9805 +-#: ../glade/griffith.glade.h:155
9806 +-msgid "Suggest an unseen movie"
9807 +-msgstr ""
9808 +-
9809 +-#: ../glade/griffith.glade.h:157
9810 +-msgid "Technical information"
9811 +-msgstr ""
9812 +-
9813 +-#: ../glade/griffith.glade.h:158
9814 +-msgid "This movie is part of..."
9815 +-msgstr ""
9816 +-
9817 +-#: ../glade/griffith.glade.h:160
9818 +-msgid "Toolbar"
9819 +-msgstr ""
9820 +-
9821 +-#: ../glade/griffith.glade.h:163
9822 +-msgid ""
9823 +-"Type in the original film title, select source and choose <i>Get from web</"
9824 +-"i>. Griffith will try to fetch all the related information from the Web."
9825 +-msgstr ""
9826 +-
9827 +-#: ../glade/griffith.glade.h:165
9828 +-msgid "Use Spellchecker"
9829 +-msgstr ""
9830 +-
9831 +-#: ../glade/griffith.glade.h:166
9832 +-msgid "Use TLS?"
9833 +-msgstr ""
9834 +-
9835 +-#: ../glade/griffith.glade.h:167
9836 +-msgid "Username"
9837 +-msgstr ""
9838 +-
9839 +-#: ../glade/griffith.glade.h:169
9840 +-msgid "Visit movie web site"
9841 +-msgstr ""
9842 +-
9843 +-#: ../glade/griffith.glade.h:170
9844 +-msgid "Visit the official web site"
9845 +-msgstr ""
9846 +-
9847 +-#: ../glade/griffith.glade.h:172
9848 +-msgid "Watch the trailer"
9849 +-msgstr ""
9850 +-
9851 +-#: ../glade/griffith.glade.h:174
9852 +-msgid "_Edit"
9853 +-msgstr ""
9854 +-
9855 +-#: ../glade/griffith.glade.h:175
9856 +-msgid "_File"
9857 +-msgstr ""
9858 +-
9859 +-#: ../glade/griffith.glade.h:176
9860 +-msgid "_Help"
9861 +-msgstr ""
9862 +-
9863 +-#: ../glade/griffith.glade.h:177
9864 +-msgid "_Loans"
9865 +-msgstr ""
9866 +-
9867 +-#: ../glade/griffith.glade.h:178
9868 +-msgid "_Tools"
9869 +-msgstr ""
9870 +-
9871 +-#: ../glade/griffith.glade.h:179
9872 +-msgid "_View"
9873 +-msgstr ""
9874 +-
9875 +-#: ../glade/griffith.glade.h:180
9876 +-msgid "add entered name to collections list"
9877 +-msgstr ""
9878 +-
9879 +-#: ../glade/griffith.glade.h:181
9880 +-msgid "add entered name to volumes list"
9881 +-msgstr ""
9882 +-
9883 +-#: ../glade/griffith.glade.h:182
9884 +-msgid "classification"
9885 +-msgstr ""
9886 +-
9887 +-#: ../glade/griffith.glade.h:183
9888 +-msgid "click here if movie was returned"
9889 +-msgstr ""
9890 +-
9891 +-#: ../glade/griffith.glade.h:184
9892 +-msgid "collection details"
9893 +-msgstr ""
9894 +-
9895 +-#: ../glade/griffith.glade.h:185
9896 +-msgid "loaned only"
9897 +-msgstr ""
9898 +-
9899 +-#: ../glade/griffith.glade.h:186
9900 +-msgid "loans movie or volume"
9901 +-msgstr ""
9902 +-
9903 +-#: ../glade/griffith.glade.h:187
9904 +-msgid "minutes"
9905 +-msgstr ""
9906 +-
9907 +-#: ../glade/griffith.glade.h:188
9908 +-msgid "movies"
9909 +-msgstr ""
9910 +-
9911 +-#: ../glade/griffith.glade.h:189
9912 +-msgid "none"
9913 +-msgstr ""
9914 +-
9915 +-#: ../glade/griffith.glade.h:190
9916 +-msgid "not loaned only"
9917 +-msgstr ""
9918 +-
9919 +-#: ../glade/griffith.glade.h:191
9920 +-msgid "remove selected collection"
9921 +-msgstr ""
9922 +-
9923 +-#: ../glade/griffith.glade.h:192
9924 +-msgid "remove selected volume"
9925 +-msgstr ""
9926 +-
9927 +-#: ../glade/griffith.glade.h:193
9928 +-msgid "seen only"
9929 +-msgstr ""
9930 +-
9931 +-#: ../glade/griffith.glade.h:194
9932 +-msgid "tags"
9933 +-msgstr ""
9934 +-
9935 +-#: ../glade/griffith.glade.h:195
9936 +-msgid "unseen only"
9937 +-msgstr ""
9938 +-
9939 +-#: ../glade/griffith.glade.h:196
9940 +-msgid "volume details"
9941 +-msgstr ""
9942 +-
9943 +-#: ../glade/importcsv.glade.h:1
9944 +-msgid ""
9945 +-"<b>Some Hints</b>:\n"
9946 +-"\n"
9947 +-"On the next step you can assign your csv fields with the one in Griffith.\n"
9948 +-"One CSV-field can be assigned to multiple griffith-fields, i.e. if you have "
9949 +-"only one title.\n"
9950 +-"Your cast-list should be comma-seperated to break it apart in multiple lines."
9951 +-msgstr ""
9952 +-
9953 +-#: ../glade/importcsv.glade.h:6
9954 +-msgid "Assigned Fields (CSV > Griffith)"
9955 +-msgstr ""
9956 +-
9957 +-#: ../glade/importcsv.glade.h:7
9958 +-msgid "CSV Fields"
9959 +-msgstr ""
9960 +-
9961 +-#: ../glade/importcsv.glade.h:8
9962 +-msgid "CSV Import"
9963 +-msgstr ""
9964 +-
9965 +-#: ../glade/importcsv.glade.h:9
9966 +-msgid "Delimiter"
9967 +-msgstr ""
9968 +-
9969 +-#: ../glade/importcsv.glade.h:10
9970 +-msgid "Encoding"
9971 +-msgstr ""
9972 +-
9973 +-#: ../glade/importcsv.glade.h:11 ../glade/import.glade.h:6
9974 +-msgid "Fields"
9975 +-msgstr ""
9976 +-
9977 +-#: ../glade/importcsv.glade.h:12
9978 +-msgid "File-Options"
9979 +-msgstr ""
9980 +-
9981 +-#: ../glade/importcsv.glade.h:13
9982 +-msgid "From Row"
9983 +-msgstr ""
9984 +-
9985 +-#: ../glade/importcsv.glade.h:14
9986 +-msgid "Griffith Fields"
9987 +-msgstr ""
9988 +-
9989 +-#: ../glade/importcsv.glade.h:15
9990 +-msgid "If your file has no column headers then you should import from row 0."
9991 +-msgstr ""
9992 +-
9993 +-#: ../glade/importcsv.glade.h:16
9994 +-msgid "Line terminator"
9995 +-msgstr ""
9996 +-
9997 +-#: ../glade/importcsv.glade.h:17
9998 +-msgid "Quotechar"
9999 +-msgstr ""
10000 +-
10001 +-#: ../glade/importcsv.glade.h:18
10002 +-msgid ""
10003 +-"ascii (English)\n"
10004 +-"big5 (Traditional Chinese)\n"
10005 +-"big5hkscs (Traditional Chinese)\n"
10006 +-"cp037 (English)\n"
10007 +-"cp424 (Hebrew)\n"
10008 +-"cp437 (English)\n"
10009 +-"cp500 (Western Europe)\n"
10010 +-"cp737 (Greek)\n"
10011 +-"cp775 (Baltic languages)\n"
10012 +-"cp850 (Western Europe)\n"
10013 +-"cp852 (Central and Eastern Europe)\n"
10014 +-"cp855 (Bulgarian, Byelorussian, Macedonian, Russian, Serbian)\n"
10015 +-"cp856 (Hebrew)\n"
10016 +-"cp857 (Turkish)\n"
10017 +-"cp860 (Portuguese)\n"
10018 +-"cp861 (Icelandic)\n"
10019 +-"cp862 (Hebrew)\n"
10020 +-"cp863 (Canadian)\n"
10021 +-"cp864 (Arabic)\n"
10022 +-"cp865 (Danish, Norwegian)\n"
10023 +-"cp866 (Russian)\n"
10024 +-"cp869 (Greek)\n"
10025 +-"cp874 (Thai)\n"
10026 +-"cp875 (Greek)\n"
10027 +-"cp932 (Japanese)\n"
10028 +-"cp949 (Korean)\n"
10029 +-"cp950 (Traditional Chinese)\n"
10030 +-"cp1006 (Urdu)\n"
10031 +-"cp1026 (Turkish)\n"
10032 +-"cp1140 (Western Europe)\n"
10033 +-"cp1250 (Central and Eastern Europe)\n"
10034 +-"cp1251 (Bulgarian, Byelorussian, Macedonian, Russian, Serbian)\n"
10035 +-"cp1252 (Western Europe)\n"
10036 +-"cp1253 (Greek)\n"
10037 +-"cp1254 (Turkish)\n"
10038 +-"cp1255 (Hebrew)\n"
10039 +-"cp1256 (Arabic)\n"
10040 +-"cp1257 (Baltic languages)\n"
10041 +-"cp1258 (Vietnamese)\n"
10042 +-"euc_jp (Japanese)\n"
10043 +-"euc_jis_2004 (Japanese)\n"
10044 +-"euc_jisx0213 (Japanese)\n"
10045 +-"euc_kr (Korean)\n"
10046 +-"gb2312 (Simplified Chinese)\n"
10047 +-"gbk (Unified Chinese)\n"
10048 +-"gb18030 (Unified Chinese)\n"
10049 +-"hz (Simplified Chinese)\n"
10050 +-"iso2022_jp (Japanese)\n"
10051 +-"iso2022_jp_1 (Japanese)\n"
10052 +-"iso2022_jp_2 (Japanese, Korean, Simplified Chinese, Western Europe, Greek)\n"
10053 +-"iso2022_jp_2004 (Japanese)\n"
10054 +-"iso2022_jp_3 (Japanese)\n"
10055 +-"iso2022_jp_ext (Japanese)\n"
10056 +-"iso2022_kr (Korean)\n"
10057 +-"latin_1 (West Europe)\n"
10058 +-"iso8859_2 (Central and Eastern Europe)\n"
10059 +-"iso8859_3 (Esperanto, Maltese)\n"
10060 +-"iso8859_4 (Baltic languagues)\n"
10061 +-"iso8859_5 (Bulgarian, Byelorussian, Macedonian, Russian, Serbian)\n"
10062 +-"iso8859_6 (Arabic)\n"
10063 +-"iso8859_7 (Greek)\n"
10064 +-"iso8859_8 (Hebrew)\n"
10065 +-"iso8859_9 (Turkish)\n"
10066 +-"iso8859_10 (Nordic languages)\n"
10067 +-"iso8859_13 (Baltic languages)\n"
10068 +-"iso8859_14 (Celtic languages)\n"
10069 +-"iso8859_15 (Western Europe)\n"
10070 +-"johab (Korean)\n"
10071 +-"koi8_r (Russian)\n"
10072 +-"koi8_u (Ukrainian)\n"
10073 +-"mac_cyrillic (Bulgarian, Byelorussian, Macedonian, Russian, Serbian)\n"
10074 +-"mac_greek (Greek)\n"
10075 +-"mac_iceland (Icelandic)\n"
10076 +-"mac_latin2 (Central and Eastern Europe)\n"
10077 +-"mac_roman (Western Europe)\n"
10078 +-"mac_turkish (Turkish)\n"
10079 +-"ptcp154 (Kazakh)\n"
10080 +-"shift_jis (Japanese)\n"
10081 +-"shift_jis_2004 (Japanese)\n"
10082 +-"shift_jisx0213 (Japanese)\n"
10083 +-"utf_16 (all languages)\n"
10084 +-"utf_16_be (all languages (BMP only))\n"
10085 +-"utf_16_le (all languages (BMP only))\n"
10086 +-"utf_7 (all languages)\n"
10087 +-"utf_8 (all languages)"
10088 +-msgstr ""
10089 +-
10090 +-#: ../glade/import.glade.h:1
10091 +-msgid "<b>Import only fields selected below</b>"
10092 +-msgstr ""
10093 +-
10094 +-#: ../glade/import.glade.h:2
10095 +-msgid "<b>Importing...</b>"
10096 +-msgstr ""
10097 +-
10098 +-#: ../glade/import.glade.h:7
10099 +-msgid "Import window"
10100 +-msgstr ""
10101 +-
10102 +-#: ../glade/import.glade.h:8
10103 +-msgid "Plugin"
10104 +-msgstr ""
10105 +-
10106 +-#: ../glade/import.glade.h:9
10107 +-msgid "Source"
10108 +-msgstr ""
10109 +diff --git a/winpackage.iss b/winpackage.iss
10110 +index 804a421..9c85c77 100644
10111 +--- a/winpackage.iss
10112 ++++ b/winpackage.iss
10113 +@@ -3,7 +3,7 @@
10114 +
10115 + [Setup]
10116 + AppName=Griffith
10117 +-AppVerName=Griffith 0.12.1
10118 ++AppVerName=Griffith 0.13.0
10119 + AppPublisher=Vasco Nunes, Piotr Ożarowski
10120 + AppPublisherURL=http://www.griffith.cc/
10121 + AppSupportURL=http://www.griffith.cc/
10122 +@@ -14,7 +14,7 @@ AllowNoIcons=true
10123 + LicenseFile=COPYING
10124 + InfoAfterFile=README
10125 + OutputDir=installer
10126 +-OutputBaseFilename=griffith-0.12.1-win32.1
10127 ++OutputBaseFilename=griffith-0.13-win32
10128 + SetupIconFile=images\griffith.ico
10129 + UninstallDisplayIcon={app}\griffith.exe
10130 + Compression=lzma
10131 +@@ -23,8 +23,8 @@ WizardImageFile=images\griffith_win32_installer.bmp
10132 + InternalCompressLevel=ultra
10133 + AppCopyright=Vasco Nunes/Piotr Ożarowski
10134 + DisableStartupPrompt=false
10135 +-AppVersion=0.12.1
10136 +-VersionInfoVersion=0.12.1
10137 ++AppVersion=0.13.0
10138 ++VersionInfoVersion=0.13.0
10139 +
10140 + [Languages]
10141 + Name: eng; MessagesFile: compiler:Default.isl
10142 +@@ -66,7 +66,7 @@ Source: dist\share\*; DestDir: {app}\share; Flags: ignoreversion recursesubdir
10143 + Source: dist\lib\*; DestDir: {app}\lib; Flags: ignoreversion
10144 + ; use recursion, no components
10145 + Source: dist\lib\db\*; DestDir: {app}\lib\db; Flags: ignoreversion recursesubdirs createallsubdirs
10146 +-Source: dist\lib\gettext\*; DestDir: {app}\lib\gettext; Flags: ignoreversion recursesubdirs createallsubdirs
10147 ++;Source: dist\lib\gettext\*; DestDir: {app}\lib\gettext; Flags: ignoreversion recursesubdirs createallsubdirs
10148 + Source: dist\lib\glade3\*; DestDir: {app}\lib\glade3; Flags: ignoreversion recursesubdirs createallsubdirs
10149 + ;Source: dist\lib\glib-2.0\*; DestDir: {app}\lib\glib-2.0; Flags: ignoreversion recursesubdirs createallsubdirs
10150 + Source: dist\lib\gtk-2.0\*; DestDir: {app}\lib\gtk-2.0; Flags: ignoreversion recursesubdirs createallsubdirs
10151 +@@ -97,7 +97,6 @@ Source: dist\lib\plugins\movie\PluginMovieDVDPalace.py; DestDir: {app}\lib\p
10152 + Source: dist\lib\plugins\movie\PluginMovieE-Pipoca.py; DestDir: {app}\lib\plugins\movie; Flags: ignoreversion; Components: Movie_Import_Plugins\Brazilian_Portuguese\E_Pipoca
10153 + Source: dist\lib\plugins\movie\PluginMovieFDb.py; DestDir: {app}\lib\plugins\movie; Flags: ignoreversion; Components: Movie_Import_Plugins\Polish\FDb
10154 + Source: dist\lib\plugins\movie\PluginMovieFilmAffinity.py; DestDir: {app}\lib\plugins\movie; Flags: ignoreversion; Components: Movie_Import_Plugins\Spanish\FilmAffinity
10155 +-Source: dist\lib\plugins\movie\PluginMovieFilmDb.py; DestDir: {app}\lib\plugins\movie; Flags: ignoreversion; Components: Movie_Import_Plugins\German\FilmDb
10156 + Source: dist\lib\plugins\movie\PluginMovieFilmeVonAZ.py; DestDir: {app}\lib\plugins\movie; Flags: ignoreversion; Components: Movie_Import_Plugins\German\Filme_von_A_bis_Z
10157 + Source: dist\lib\plugins\movie\PluginMovieFilmtipset.py; DestDir: {app}\lib\plugins\movie; Flags: ignoreversion; Components: Movie_Import_Plugins\Swedish\Film_tip_set
10158 + Source: dist\lib\plugins\movie\PluginMovieFilmweb.py; DestDir: {app}\lib\plugins\movie; Flags: ignoreversion; Components: Movie_Import_Plugins\Polish\Filmweb
10159 +@@ -182,7 +181,6 @@ Name: Movie_Import_Plugins\French\CineMovies; Description: CineMovies / w
10160 +
10161 + Name: Movie_Import_Plugins\German; Description: German Import Plugins; Types: full
10162 + Name: Movie_Import_Plugins\German\DVD_Palace; Description: DVD-Palace / www.dvd-palace.de; Types: full
10163 +-Name: Movie_Import_Plugins\German\FilmDb; Description: FilmDb / www.filmdb.de; Types: full
10164 + Name: Movie_Import_Plugins\German\Filme_von_A_bis_Z; Description: Filme von A-Z / www.filmevona-z.de; Types: full
10165 + Name: Movie_Import_Plugins\German\IMDBde; Description: IMDB.de / german.imdb.com; Types: full
10166 + Name: Movie_Import_Plugins\German\OFDb; Description: OFDb / www.ofdb.de; Types: full
10167 +diff --git a/winsetup.bat b/winsetup.bat
10168 +index 190d911..752313e 100644
10169 +--- a/winsetup.bat
10170 ++++ b/winsetup.bat
10171 +@@ -52,6 +52,8 @@ xcopy "%GTKDIR%\share\themes\MS-Windows\gtk-2.0\*.*" "%GRIFFITHDIR%\dist\" /s /e
10172 + if not "%ERRORLEVEL%" == "0" (pause)
10173 + xcopy "%GTKDIR%\bin\jpeg62.dll" "%GRIFFITHDIR%\dist\" /s /e
10174 + if not "%ERRORLEVEL%" == "0" (pause)
10175 ++xcopy "%GTKDIR%\bin\libxml2-2.dll" "%GRIFFITHDIR%\dist\" /s /e
10176 ++if not "%ERRORLEVEL%" == "0" (pause)
10177 +
10178 + copy "%GRIFFITHDIR%\AUTHORS" "%GRIFFITHDIR%\dist\"
10179 + copy "%GRIFFITHDIR%\COPYING" "%GRIFFITHDIR%\dist\"
10180 +diff --git a/winsetup.py b/winsetup.py
10181 +index cbe718e..9deb73d 100644
10182 +--- a/winsetup.py
10183 ++++ b/winsetup.py
10184 +@@ -1,7 +1,7 @@
10185 + #!/usr/bin/env python
10186 + # -*- coding: utf-8 -*-
10187 +
10188 +-__revision__ = '$Id: winsetup.py 1605 2011-12-18 22:35:25Z piotrek $'
10189 ++__revision__ = '$Id$'
10190 +
10191 + # Copyright © 2005-2010 Vasco Nunes, Piotr Ożarowski
10192 + # This program is free software; you can redistribute it and/or modify
10193 +@@ -45,7 +45,7 @@ import py2exe
10194 +
10195 + opts = {
10196 + "py2exe": {
10197 +- "includes": "pygtk,cairo,pangocairo,gobject,cgi,PIL,pysqlite2,pysqlite2.*,pango,atk,gobject,tempfile,csv,xml.dom,xml.dom.minidom,xml.sax,threading,htmlentitydefs,sqlalchemy,sqlalchemy.*,sqlalchemy.databases.*,sqlalchemy.engine.*,sqlalchemy.ext.*,sqlalchemy.orm.*,sqlalchemy.sql.*,zipfile,webbrowser,shutil,reportlab,reportlab.pdfgen,reportlab.pdfgen.canvas,reportlab.platypus,reportlab.pdfbase.ttfonts,smtplib,win32com,platform,winshell,psycopg2,MySQLdb,chardet,gzip,commands,encodings,encodings.*,ConfigParser,gtk.glade,xmlrpclib,gio",
10198 ++ "includes": "pygtk,cairo,pangocairo,gobject,cgi,PIL,pysqlite2,pysqlite2.*,pango,atk,gobject,tempfile,csv,xml.dom,xml.dom.minidom,xml.sax,threading,htmlentitydefs,sqlalchemy,sqlalchemy.*,sqlalchemy.databases.*,sqlalchemy.engine.*,sqlalchemy.ext.*,sqlalchemy.orm.*,sqlalchemy.sql.*,zipfile,webbrowser,shutil,reportlab,reportlab.pdfgen,reportlab.pdfgen.canvas,reportlab.platypus,reportlab.pdfbase.ttfonts,reportlab.pdfbase.*,smtplib,win32com,platform,winshell,psycopg2,MySQLdb,chardet,gzip,commands,encodings,encodings.*,ConfigParser,gtk.glade,xmlrpclib,gio,lxml.*,simplejson",
10199 + "optimize": 2,
10200 + "dist_dir": "dist",
10201 + }
10202
10203 diff --git a/media-video/griffith/griffith-0.13-r2.ebuild b/media-video/griffith/griffith-0.13-r2.ebuild
10204 new file mode 100644
10205 index 0000000..582b582
10206 --- /dev/null
10207 +++ b/media-video/griffith/griffith-0.13-r2.ebuild
10208 @@ -0,0 +1,76 @@
10209 +# Copyright 1999-2015 Gentoo Foundation
10210 +# Distributed under the terms of the GNU General Public License v2
10211 +# $Id$
10212 +
10213 +EAPI=5
10214 +
10215 +PYTHON_COMPAT=( python2_7 )
10216 +PYTHON_REQ_USE='sqlite'
10217 +
10218 +inherit versionator python-single-r1 multilib git-r3
10219 +
10220 +ARTWORK_PV="0.9.4"
10221 +
10222 +DESCRIPTION="Movie collection manager"
10223 +HOMEPAGE="http://www.griffith.cc/"
10224 +SRC_URI="https://dev.gentoo.org/~hwoarang/distfiles/${PN}-extra-artwork-${ARTWORK_PV}.tar.gz"
10225 +EGIT_REPO_URI="https://github.com/santiavenda2/griffith"
10226 +LICENSE="GPL-2"
10227 +SLOT="0"
10228 +KEYWORDS="~amd64 ~x86 ~x86-fbsd"
10229 +IUSE="doc"
10230 +
10231 +RDEPEND="dev-python/pillow
10232 + gnome-base/libglade
10233 + dev-python/pyxml[${PYTHON_USEDEP}]
10234 + >=dev-python/pygtk-2.6.1:2[${PYTHON_USEDEP}]
10235 + dev-python/pygobject:2[${PYTHON_USEDEP}]
10236 + >=dev-python/sqlalchemy-0.5.2[${PYTHON_USEDEP}]
10237 + >=dev-python/reportlab-1.19[${PYTHON_USEDEP}]"
10238 +DEPEND="${RDEPEND}
10239 + doc? ( app-text/docbook2X )"
10240 +
10241 +pkg_setup() {
10242 + python-single-r1_pkg_setup
10243 +}
10244 +
10245 +src_prepare() {
10246 + use doc || { sed -i -e '/docs/d' Makefile || die ; }
10247 + sed -i \
10248 + -e 's#/pl/#/pl.UTF-8/#' \
10249 + "${S}"/docs/pl/Makefile || die "sed failed"
10250 +
10251 + sed -i \
10252 + -e 's/ISO-8859-1/UTF-8/' \
10253 + "${S}"/lib/gconsole.py || die "sed failed"
10254 +
10255 + # epatch "${FILESDIR}/0.10-fix_lib_path.patch"
10256 +}
10257 +
10258 +src_compile() {
10259 + # Nothing to compile and default `emake` spews an error message
10260 + true
10261 +}
10262 +
10263 +src_install() {
10264 + use doc || { sed -i -e '/docs/d' Makefile || die ; }
10265 +
10266 + emake \
10267 + LIBDIR="${D}/usr/$(get_libdir)/griffith" \
10268 + DESTDIR="${D}" DOC2MAN=docbook2man.pl install
10269 + dodoc AUTHORS ChangeLog README THANKS TODO NEWS TRANSLATORS
10270 +
10271 + cd "${WORKDIR}/${PN}-extra-artwork-${ARTWORK_PV}/"
10272 + emake DESTDIR="${D}" install
10273 + # This carries over from -0.13 but appears to have no effect.
10274 + python_optimize "${D}"usr/share/${PN}
10275 +}
10276 +
10277 +pkg_postinst() {
10278 + einfo
10279 + einfo "${PN} can make use of the following optional dependencies"
10280 + einfo "dev-python/chardet: CSV file encoding detections"
10281 + einfo "dev-python/mysql-python: Python interface for MySQL connectivity"
10282 + einfo ">=dev-python/psycopg-2.4: Python interface for PostgreSQL connectivity"
10283 + einfo
10284 +}
10285
10286 diff --git a/media-video/griffith/metadata.xml b/media-video/griffith/metadata.xml
10287 new file mode 100644
10288 index 0000000..2625db8
10289 --- /dev/null
10290 +++ b/media-video/griffith/metadata.xml
10291 @@ -0,0 +1,15 @@
10292 +<?xml version="1.0" encoding="UTF-8"?>
10293 +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
10294 +<pkgmetadata>
10295 + <maintainer type="person">
10296 + <email>hwoarang@g.o</email>
10297 + <name>Markos Chandras</name>
10298 + </maintainer>
10299 + <maintainer type="project">
10300 + <email>media-video@g.o</email>
10301 + <name>Gentoo Video project</name>
10302 + </maintainer>
10303 + <upstream>
10304 + <remote-id type="launchpad">griffith</remote-id>
10305 + </upstream>
10306 +</pkgmetadata>