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 <%s>)</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(' ', '') |
4009 |
+ self.director = self.director.replace('•', '') |
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(' ', '') |
4043 |
+ self.cast = self.cast.replace('•', '') |
4044 |
+ self.cast = self.cast.replace('•', '') |
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(' ', '') |
4114 |
+ self.screenplay = self.screenplay.replace('•', '') |
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, ' ', ' ') |
4170 |
++ tmp_title = string.replace(tmp_title, '&', '&') |
4171 |
++ tmp_title = string.replace(tmp_title, '"', '"') |
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>'), ' ', '') |
4304 |
+ |
4305 |
+ def get_studio(self): |
4306 |
+- self.studio = string.replace(string.replace(gutils.trim(self.page, 'Label', '</td>'), ' ', ''), ':', '') |
4307 |
++ self.studio = string.replace(string.replace(gutils.trim(self.page, 'Label</b>', '</td>'), ' ', ''), ':', '') |
4308 |
++ if not self.studio: |
4309 |
++ self.studio = string.replace(string.replace(gutils.trim(self.page, 'Vertrieb</b>', '</td>'), ' ', ''), ':', '') |
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(' <a title="[^"]+" href="(/dvd-datenbank/|/datenbank/blu-ray/)', self.page) |
4353 |
++ elements = re.split(' <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Í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í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ÑO</th>', '</td>') |
4595 |
++ self.year = gutils.trim(self.page, '<dt>Añ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ÓN</th>', ' min.') |
4600 |
+- self.runtime = gutils.after(self.runtime[-10:], '<td>') |
4601 |
++ self.runtime = gutils.trim(self.page, '<dt>Duració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ÉNERO</th>', '</tr>') |
4607 |
+- tmp = gutils.after(tmp, '<td>') |
4608 |
++ tmp = gutils.trim(self.page, '<dt>Gé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Í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í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ÍA</th>','</td>') |
4654 |
++ self.cameraman = gutils.trim(self.page, '<dt>Fotografía</dt>','</dd>') |
4655 |
+ |
4656 |
+ def get_screenplay(self): |
4657 |
+- self.screenplay = gutils.trim(self.page, '<th>GUIÓN</th>', '</td>') |
4658 |
++ self.screenplay = gutils.trim(self.page, '<dt>Guió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ä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ä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å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à:</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 ', '</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: ', '</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 ', '</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änge|Lä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> |