1
#! /bin/sh /usr/share/dpatch/dpatch-run
2
## 11_fix_allocine_plugin.dpatch by Clément Hermann (nodens) <clement.hermann@free.fr>
4
## All lines beginning with `## DP:' are a description of the patch.
8
diff -urNad gcstar-1.4.3~/lib/gcstar/GCPlugins/GCfilms/GCAllocine.pm gcstar-1.4.3/lib/gcstar/GCPlugins/GCfilms/GCAllocine.pm
9
--- gcstar-1.4.3~/lib/gcstar/GCPlugins/GCfilms/GCAllocine.pm 2008-08-15 13:55:14.000000000 +0200
10
+++ gcstar-1.4.3/lib/gcstar/GCPlugins/GCfilms/GCAllocine.pm 2009-03-01 01:35:05.622195296 +0100
13
###################################################
15
-# Copyright 2005-2007 Tian
16
+# Copyright 2005-2009 Tian
18
# This file is part of GCstar.
24
- if ($tagname eq "h4")
25
+ if ($tagname eq "h3")
27
$self->{insideActors} = 0;
28
$self->{insideDirector} = 0;
29
- if ($attr->{style} =~ /color:#D20000/)
30
+ $self->{insideCast}=0;
31
+ $self->{insideCastLine}=0;
32
+ $self->{insideRole}=0;
33
+ $self->{insideActor}=0;
34
+ $self->{insideDate}=0;
35
+ if ($attr->{style} =~ /color:\s*#D20000/)
37
$self->{insideAge} = 1;
40
elsif ($tagname eq "img")
42
my $src = $attr->{src};
43
- if (!$self->{curInfo}->{image})
44
+ if($self->{insidePressRating} == 1 && $attr->{class}=~/etoile_(\d)/){
45
+ $self->{curInfo}->{ratingpress}=2+2*$1;
46
+ $self->{insidePressRating} = 0;
48
+ elsif (!$self->{curInfo}->{image})
50
if ($src =~ /\/nmedia\//)
54
my $pageUrl = $self->{loadedUrl};
55
$pageUrl =~ s/fichefilm_/galerievignette_/;
56
- my $page = $self->loadPage($pageUrl);
57
+ my $page = $self->loadPage($pageUrl, 0, 1);
58
$page =~ m/<img id='imgNormal' class='photo' src='(.*?)'/ms;
62
$self->{curInfo}->{image} = $src;
68
+ elsif (($tagname eq "table") && ($attr->{cast} eq "1"))
70
+ $self->{insideCast}=1;
72
+ elsif (($tagname eq "tr") && ($self->{insideCast}))
74
+ $self->{insideCastLine}=1;
76
+ elsif (($tagname eq "h5") && ($self->{insideCastLine}))
78
+ $self->{insideRole}=1;
80
+ elsif (($tagname eq "a") && ($self->{insideCastLine}))
82
+ $self->{insideRole}=0;
83
+ $self->{insideActor}=1;
85
elsif ($tagname eq "br")
87
if ($self->{insideSynopsis})
90
$self->{insideSynopsis} = 0;
92
+ elsif (($tagname eq "td") && ($self->{isInfo}))
94
+ #work around bad date for last search result
97
+ elsif (($tagname eq "td") && ($self->{insideCastLine}))
99
+ $self->{insideRole}=0;
100
+ $self->{insideActor}=0;
102
+ elsif (($tagname eq "tr") && ($self->{insideCastLine}))
104
+ $self->{insideCastLine}=0;
106
+ elsif (($tagname eq "table") && ($self->{insideCast}))
108
+ $self->{insideCast}=0;
113
@@ -153,21 +197,46 @@
114
$origtext =~ s/[\r\n]//g;
115
$self->{curInfo}->{title} = $origtext if length($origtext) > 2;
117
- if ($self->{inside}->{h3})
118
+ if ($self->{inside}->{h2})
120
- $self->{insideSynopsis} = 1 if $origtext =~ /Synopsis/
121
+ $self->{insideSynopsis} = 1 if $origtext =~ /Synopsis/;
123
- if ($self->{inside}->{h4})
125
- if ($self->{insideSynopsis})
126
+ if ($self->{inside}->{h4}){
127
+ if ($self->{insideActors})
129
$self->{curInfo}->{synopsis} .= $origtext;
131
- elsif ($self->{insideActors})
132
+ elsif ($self->{insideSynopsis})
134
+ $self->{curInfo}->{synopsis} .= $origtext;
136
+ elsif ( $origtext =~ /^Saga /)
138
+ $origtext =~ s/Saga //;
139
+ $self->{curInfo}->{serie}=$origtext;
142
+ elsif ($self->{inside}->{h3})
144
+ if ($self->{insideActors})
146
+ #Actors from fichefilm page
147
$self->{curInfo}->{actors} .= $origtext;
148
$self->{curInfo}->{actors} =~ s/^\s*//;
150
+ elsif ($self->{insideRole})
152
+ #Roles from casting page
153
+ push @{$self->{curInfo}->{actors}}, [$origtext,$origtext]
154
+ if ($self->{actorsCounter} <= $GCPlugins::GCfilms::GCfilmsCommon::MAX_ACTORS);
156
+ elsif ($self->{insideActor})
158
+ #Actors from casting page
159
+ $self->{curInfo}->{actors}->[$self->{actorsCounter}]->[0]=$origtext
160
+ if ($self->{actorsCounter} <= $GCPlugins::GCfilms::GCfilmsCommon::MAX_ACTORS);
161
+ $self->{actorsCounter}++;
163
elsif ($self->{insideDirector})
165
$self->{curInfo}->{director} .= $origtext;
167
$origtext =~ s/.*?([0-9]+).*/$1/;
168
$self->{curInfo}->{age} = $origtext;
170
+ elsif ($self->{insideDate})
172
+ $origtext =~ s/^[\s\n]*//;
173
+ $origtext =~ s/\s*$//;
174
+ $self->{curInfo}->{date} = $origtext;
175
+ $self->{insideDate}=0;
177
+ elsif (( $origtext =~ /^Date de sortie/ )
178
+ && ( !$self->{curInfo}->{date} ) )
180
+ $self->{insideDate}=1;
182
elsif ( $origtext =~ /^Genre/ )
184
$origtext =~ s/^Genre : //;
186
$origtext =~ s/^Durée : (.*)?/$1/;
187
$self->{curInfo}->{time} = $origtext;
189
- elsif (( $origtext =~ /Date de sortie/ )
190
- && ( !$self->{curInfo}->{date} ) )
192
- $origtext =~ s/Date de sortie : (.*)/$1/;
193
- $origtext =~ s/^[\s\n]*//;
194
- $origtext =~ s/\s*$//;
195
- $self->{curInfo}->{date} = $origtext;
197
elsif ( $origtext =~ /^Titre original/ )
199
$origtext =~ s/^Titre original : .*?/$1/;
200
@@ -208,13 +281,18 @@
202
elsif (($origtext =~ /^Avec/ ) && (! $self->{curInfo}->{actors}))
204
+ #Detecting actors from fichefilm page
205
$self->{insideActors} = 1;
207
elsif ( $origtext =~ /^Réalisé par/ )
209
$self->{insideDirector} = 1;
213
+ elsif ( $origtext =~ /^Presse$/ )
215
+ $self->{insidePressRating} = 1;
221
$self->{isMovie} = 0;
222
$self->{curName} = undef;
223
$self->{curUrl} = undef;
224
+ $self->{actorsCounter}=0;
226
bless ($self, $class);
230
if (!$self->{parsingList})
232
- # Remove link "Plus" in list of actors
233
- $html =~ s|<a href="/film/casting_gen_cfilm=.*?>.*?</a>||gi;
234
+ #Remplacing actor list with cast page list
235
+ my $pageUrl = $self->{loadedUrl};
236
+ $pageUrl =~ s/fichefilm_/casting_/;
237
+ my $page = $self->loadPage($pageUrl, 0, 1);
238
+ if($page =~ m|<h2[^>]*>Acteurs</h2><hr /></td></tr>(.*?)</table>|ms)
241
+ $html =~ s|Avec.*Plus\.\.\.</a>|<table cast=1>$src</table>|i;