cineworld_uk 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +17 -0
  3. data/.travis.yml +4 -0
  4. data/CHANGELOG.md +9 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +59 -0
  8. data/Rakefile +15 -0
  9. data/cineworld_uk.gemspec +29 -0
  10. data/lib/cineworld_uk.rb +15 -0
  11. data/lib/cineworld_uk/cinema.rb +218 -0
  12. data/lib/cineworld_uk/film.rb +47 -0
  13. data/lib/cineworld_uk/internal/film_with_screenings_parser.rb +128 -0
  14. data/lib/cineworld_uk/screening.rb +33 -0
  15. data/lib/cineworld_uk/version.rb +6 -0
  16. data/test/fixtures/cinemas.html +420 -0
  17. data/test/fixtures/cinemas/brighton.html +8 -0
  18. data/test/fixtures/cinemas/bristol.html +1206 -0
  19. data/test/fixtures/cinemas/bury-st-edmunds.html +1211 -0
  20. data/test/fixtures/cinemas/chelsea.html +1030 -0
  21. data/test/fixtures/cinemas/the-o2-grenwich.html +1191 -0
  22. data/test/fixtures/whatson/brighton.html +7906 -0
  23. data/test/fixtures/whatson/brighton/autism-friendly-cloudy-2.html +79 -0
  24. data/test/fixtures/whatson/brighton/geethanjali-malayalam.html +71 -0
  25. data/test/fixtures/whatson/brighton/gravity.html +2129 -0
  26. data/test/fixtures/whatson/brighton/take-2-thursday-about-time.html +89 -0
  27. data/test/fixtures/whatson/glasgow-imax-at-gsc-cinema.html +3160 -0
  28. data/test/fixtures/whatson/glasgow-imax-at-gsc/the-hunger-games-catching-fire.html +498 -0
  29. data/test/fixtures/whatson/the-o2-greenwich.html +6854 -0
  30. data/test/fixtures/whatson/the-o2-greenwich/gravity.html +784 -0
  31. data/test/fixtures/whatson/wandsworth.html +13729 -0
  32. data/test/fixtures/whatson/wandsworth/arrambam-tamil.html +126 -0
  33. data/test/fixtures/whatson/wandsworth/bolshoi-ballet-live-lost-illusions.html +80 -0
  34. data/test/fixtures/whatson/wandsworth/frankenstein-nt-50th.html +82 -0
  35. data/test/fixtures/whatson/wandsworth/met-opera-falstaff.html +74 -0
  36. data/test/fixtures/whatson/wandsworth/nt-live-war-horse.html +80 -0
  37. data/test/fixtures/whatson/wandsworth/royal-ballet-live-the-sleeping-beauty.html +79 -0
  38. data/test/fixtures/whatson/wandsworth/royal-opera-live-parsifal-weird-date.html +79 -0
  39. data/test/fixtures/whatson/wandsworth/rsc-live-richard-ii-encore.html +80 -0
  40. data/test/fixtures/whatson/wandsworth/west-end-theatre-series-private-lives.html +80 -0
  41. data/test/lib/cineworld_uk/cinema_test.rb +466 -0
  42. data/test/lib/cineworld_uk/film_test.rb +95 -0
  43. data/test/lib/cineworld_uk/internal/film_with_screenings_parser_test.rb +200 -0
  44. data/test/lib/cineworld_uk/screening_test.rb +31 -0
  45. data/test/lib/cineworld_uk/version_test.rb +9 -0
  46. data/test/test_helper.rb +6 -0
  47. metadata +219 -0
@@ -0,0 +1,128 @@
1
+ module CineworldUk
2
+
3
+ # Internal utility classes: Do not use
4
+ # @api private
5
+ module Internal
6
+
7
+ # Parses a chunk of HTML to derive movie showing data
8
+ class FilmWithScreeningsParser
9
+
10
+ # @param [String] film_html a chunk of html
11
+ def initialize(film_html)
12
+ @nokogiri_html = Nokogiri::HTML(film_html)
13
+ end
14
+
15
+ # The film name
16
+ # @return [String]
17
+ def film_name
18
+ name = @nokogiri_html.css('.span5 h1 a,.span7 h1 a, .span7 h1').children[0].to_s
19
+
20
+ # screening types
21
+ name = name.gsub 'Take 2 Thursday - ', '' # take 2 thursday
22
+ name = name.gsub 'Autism Friendly Screening: ', '' # remove autism friendly
23
+
24
+ # bollywood - remove language from film name
25
+ name = name.gsub ' (Malayalam)', ''
26
+ name = name.gsub ' (Tamil)', ''
27
+
28
+ # special screenings
29
+ name = name.gsub 'Bolshoi Ballet Live -', 'Bolshoi:' # bolshoi ballet
30
+ if name.match /\- NT .+ encore/
31
+ name = 'National Theatre: ' + name.gsub(/\- NT .+ encore/, '')
32
+ end
33
+ name = name.gsub 'MET Opera -', 'Met Opera:' # fill out Met Opera
34
+ name = name.gsub 'NT Live:', 'National Theatre:' # National theatre
35
+ name = name.gsub 'Royal Ballet Live:', 'Royal Ballet:' # Royal Ballet
36
+
37
+ # fill out Royal Opera House
38
+ if pure_name_match = name.match(/Royal Opera Live\: (.+) \-.+/)
39
+ name = 'Royal Opera House: ' + pure_name_match[1]
40
+ end
41
+ name = name.gsub 'Royal Opera Live:', 'Royal Opera House:'
42
+
43
+ name = name.gsub '(Encore Performance)', '' # remove rsc-style encore
44
+ name = name.gsub 'RSC Live:', 'Royal Shakespeare Company:' # globe
45
+
46
+ name = name.gsub /\- \d{1,2}\/\d{1,2}\/\d{2,4}/, '' # remove dates
47
+ name = name.gsub /\- \d{1,2}\/\d{1,2}\/\d{2,4}/, '' # remove dates
48
+ name = name.gsub /\n/, '' # remove newlines
49
+ name = name.gsub /\A\s+/, '' # remove leading spaces
50
+ name = name.gsub /\s+\z/, '' # remove trailing spaces
51
+ name = name.squeeze(' ') # spaces compressed
52
+ end
53
+
54
+ # Showings
55
+ # @return [Hash]
56
+ # @example
57
+ # {
58
+ # "2D" => [Time.utc, Time.utc]
59
+ # }
60
+ def showings
61
+ tz = TZInfo::Timezone.get('Europe/London')
62
+ @nokogiri_html.css('.schedule .performances > li').inject({}) do |result, li|
63
+ key = performance_varient(li)
64
+
65
+ if has_bookable_link_node?(li)
66
+ time_array = performance_date_array(li) + performance_time_array(li)
67
+ time = tz.local_to_utc(Time.utc(*time_array))
68
+ result.merge(key => (result[key] || []) << [time, booking_url(li)])
69
+ else
70
+ result
71
+ end
72
+ end
73
+ end
74
+
75
+ private
76
+
77
+ def booking_url(node)
78
+ 'http://www.cineworld.co.uk' + performance_link(node)['href']
79
+ end
80
+
81
+ def dbox?(node)
82
+ node.css('.tooltip-box .icon-service-dbox').count > 0
83
+ end
84
+
85
+ def dimension(node)
86
+ node.css('.tooltip-box .icon-service-twod, .tooltip-box .icon-service-thrd').text
87
+ end
88
+
89
+ def has_bookable_link_node?(node)
90
+ performance_link(node) != nil
91
+ end
92
+
93
+ def imax?(node)
94
+ node.css('.tooltip-box .icon-service-imax').count > 0
95
+ end
96
+
97
+ def performance_date_array(node)
98
+ if has_bookable_link_node?(node)
99
+ match = performance_link_text(node).match(/date\=(\d{4})(\d{2})(\d{2})/)
100
+ [match[1], match[2], match[3]]
101
+ end
102
+ end
103
+
104
+ def performance_link(node)
105
+ node.css('a.performance').first
106
+ end
107
+
108
+ def performance_link_string(node)
109
+ performance_link(node).to_s
110
+ end
111
+
112
+ def performance_link_text(node)
113
+ has_bookable_link_node?(node) ? performance_link_string(node) : nil
114
+ end
115
+
116
+ def performance_time_array(node)
117
+ if has_bookable_link_node?(node)
118
+ match = performance_link_text(node).match(/time\=(\d{2})\:(\d{2})/)
119
+ [match[1], match[2]]
120
+ end
121
+ end
122
+
123
+ def performance_varient(node)
124
+ dimension(node) + "#{ ' D-BOX' if dbox?(node) }#{ ' IMAX' if imax?(node) }"
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,33 @@
1
+ module CineworldUk
2
+
3
+ # The object representing a single screening on the Cineworld UK website
4
+ class Screening
5
+
6
+ # @return [String] the booking URL on the cinema website
7
+ attr_reader :booking_url
8
+ # @return [String] the cinema name
9
+ attr_reader :cinema_name
10
+ # @return [String] the film name
11
+ attr_reader :film_name
12
+ # @return [Time] the UTC time of the screening
13
+ attr_reader :when
14
+ # @return [String] the type of screening (2D, 3D, IMAX...)
15
+ attr_reader :varient
16
+
17
+ # @param [String] film_name the film name
18
+ # @param [String] cinema_name the cinema name
19
+ # @param [Time] time datetime of the screening (UTC preferred)
20
+ # @param [String] booking_url direct link to the booking page for this screening
21
+ # @param [String] varient the type of showing (e.g. 3d/baby/live)
22
+ def initialize(film_name, cinema_name, time, booking_url=nil, varient=nil)
23
+ @booking_url, @cinema_name, @film_name, @varient = booking_url, cinema_name, film_name, varient
24
+ @when = time.utc? ? time : TZInfo::Timezone.get('Europe/London').local_to_utc(time)
25
+ end
26
+
27
+ # The date of the screening
28
+ # @return [Date]
29
+ def date
30
+ @when.to_date
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,6 @@
1
+ # Ruby interface for http://www.cineworld.co.uk
2
+ # @version 1.0.0
3
+ module CineworldUk
4
+ # Gem version
5
+ VERSION = "1.0.0"
6
+ end
@@ -0,0 +1,420 @@
1
+
2
+ <!DOCTYPE html>
3
+ <html lang="en">
4
+ <head>
5
+ <title>Cineworld Cinemas: Choose Your Local Cinema To See Film Times For The Latest Movies And 3D Performances In Your Area</title>
6
+
7
+ <meta charset="UTF-8" />
8
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
9
+ <meta name="robots" content="index, follow" />
10
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
11
+
12
+ <link type="image/x-icon" rel="shortcut icon" href="/cw/assets/favicon.ico" />
13
+
14
+ <link type="text/css" rel="stylesheet" href="/cw/assets/css/bootstrap.packed.css" media="all" />
15
+ <link type="text/css" rel="stylesheet" href="/cw/assets/css/jquery.fancybox.packed.css" media="all" />
16
+ <link type="text/css" rel="stylesheet" href="/cw/assets/css/nivo.slider.packed.css" media="all" />
17
+ <link type="text/css" rel="stylesheet" href="/cw/assets/css/nivo.slider.default.packed.css" media="all" />
18
+ <link type="text/css" rel="stylesheet" href="/cw/assets/css/zebra.datepicker.packed.css" media="all" />
19
+ <link type="text/css" rel="stylesheet" href="/cw/assets/css/cineworld.typography.packed.css" media="all" />
20
+ <link type="text/css" rel="stylesheet" href="/cw/assets/css/cineworld.layout.packed.css" media="all" />
21
+ <link type="text/css" rel="stylesheet" href="/cw/assets/css/cineworld.print.packed.css" media="print" />
22
+ <!--[if IE]>
23
+ <link type="text/css" rel="stylesheet" href="/cw/assets/css/cineworld.ie.packed.css" media="all" />
24
+ <![endif]-->
25
+ <!--[if lt IE 8]>
26
+ <link type="text/css" rel="stylesheet" href="/cw/assets/css/cineworld.ie7.packed.css" media="all" />
27
+ <![endif]-->
28
+
29
+ <script type="text/javascript" src="/cw/assets/javascript/log4j.packed.js"></script>
30
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.packed.js"></script>
31
+ <!--[if lt IE 8]>
32
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.pseudo.packed.js"></script>
33
+ <![endif]-->
34
+
35
+ <!-- This comment replaces content that was removed due to user's cookie settings -->
36
+
37
+
38
+
39
+ <meta name="Description" content="Cineworld Cinemas have digital screens across the UK: Choose your local cinema to see film times for the latest movies, 3D, IMAX and D-box performances in your area." />
40
+ <meta name="Keywords" content="Cinemas, local cinema branches, local cinema listings, Film times, local multiplex" />
41
+ <link rel="canonical" href="http://www.cineworld.co.uk/cinemas" />
42
+
43
+
44
+
45
+
46
+ <!-- cinwebprweb13.901e.sys.carrenza.net -->
47
+
48
+ <!-- This comment replaces content that was removed due to user's cookie settings -->
49
+ </head>
50
+
51
+ <body class="cineworld gb cinema search">
52
+ <div id="fb-root"></div>
53
+
54
+ <div id="wallpaper">
55
+
56
+ <div id="header" role="banner">
57
+ <div class="container">
58
+ <h1><a href="/">Cineworld Cinemas</a></h1>
59
+
60
+ <div class="account">
61
+ <span class="icon-logo-mycineworld ">mycineworld</span>
62
+ <p>
63
+ <a class="action secondary dark" data-type="login" href="/login?location=">Login</a>
64
+ <a class="action secondary dark" data-type="register" href="/register?location=&amp;source=mycineworld&amp;favouriteCinema=-1">Register</a>
65
+ <a class="action secondary dark" data-type="why" href="/mycineworld">Find out why?</a>
66
+ </p>
67
+ </div>
68
+ </div>
69
+ </div>
70
+
71
+ <div class="navigation" role="navigation">
72
+ <ul>
73
+ <li><a href="/">Home</a></li>
74
+ <li>
75
+ <a href="/whatson">What's On</a>
76
+ <ul>
77
+ <li><a href="/events">Bollywood &amp; Live Events</a></li>
78
+ <li><a href="/whatson/category/junior">Movies for Juniors</a></li>
79
+ </ul>
80
+ </li>
81
+ <li>
82
+ <a href="/cinemas">Our Cinemas</a>
83
+ </li>
84
+ <li>
85
+ <a href="/prices">Prices</a>
86
+ </li>
87
+ <li>
88
+ <a href="/explore">Explore Cineworld</a>
89
+ <ul>
90
+ <li><a href="/explore/reald">RealD 3D</a></li>
91
+ <li><a href="/explore/imax">IMAX</a></li>
92
+ <li><a href="/explore/dbox">D-BOX</a></li>
93
+ <li><a href="/blog">Cineworld Blog</a></li>
94
+ <li><a href="/competitions">Offers &amp; Competitions</a></li>
95
+
96
+ <li><a href="/baftascotland">BAFTA Scotland</a></li>
97
+ <li><a href="/take2">Take 2 Thursdays</a></li>
98
+ <li><a href="/starbucks">Starbucks at Cineworld</a></li>
99
+ </ul>
100
+ </li>
101
+ <li>
102
+ <a href="/unlimited">Unlimited Card</a>
103
+ <ul>
104
+ <li><a href="/unlimited/howitworks">How it works</a></li>
105
+ <li><a href="/unlimited/discounts">Unlimited discounts</a></li>
106
+ <li><a href="/unlimited/premium">Premium Unlimited</a></li>
107
+ <li><a href="https://www.unlimitedcineworld.com/uk/pages/Login.aspx">Apply for Unlimited</a></li>
108
+ </ul>
109
+ </li>
110
+ <li><a href="/giftcards">Gifts</a></li>
111
+ <li>
112
+ <form action="/search" method="get" class="search" role="search" data-ajax-action="/search/suggestions">
113
+ <label class="no-margin inline">
114
+ <span class="accessible-hide-html-self">Search</span>
115
+ <input accesskey="s" autocomplete="off" placeholder="Search" type="search" name="q" />
116
+ </label>
117
+ <ol class="results"></ol>
118
+ <button type="submit">Search</button>
119
+ </form>
120
+ </li>
121
+ </ul>
122
+ </div>
123
+
124
+ <div class="container" role="main">
125
+
126
+ <!-- [SL] Site content layout -->
127
+ <div class="layout">
128
+ <div id="content" >
129
+ <div class="section dark gradient clearfix ">
130
+ <h1>See what's showing at your local Cineworld Cinema</h1>
131
+ </div>
132
+ <div class="section light clearfix ">
133
+ <h1 class="ribbon">Which Cineworld Cinema's film times would you like to see?</h1>
134
+
135
+
136
+ <div class="row">
137
+ <div class="span12">
138
+ <form class="validate auto-submit" id="form-choose" name="form-choose" method="post">
139
+
140
+ <label>
141
+ <span>Choose a cinema:</span>
142
+ <select id="cinemaId" name="cinemaId" >
143
+ <option value="" selected="selected">Select a cinema</option>
144
+ <option value="1">Aberdeen - Queens Links</option>
145
+ <option value="78">Aberdeen - Union Square</option>
146
+ <option value="87">Aldershot</option>
147
+ <option value="12">Ashford</option>
148
+ <option value="23">Ashton-under-Lyne</option>
149
+ <option value="34">Bedford</option>
150
+ <option value="56">Birmingham</option>
151
+ <option value="67">Boldon Tyne and Wear</option>
152
+ <option value="72">Bolton</option>
153
+ <option value="73">Bradford</option>
154
+ <option value="2">Braintree</option>
155
+ <option value="3">Brighton</option>
156
+ <option value="4">Bristol</option>
157
+ <option value="5">Burton upon Trent</option>
158
+ <option value="6">Bury St. Edmunds</option>
159
+ <option value="7">Cambridge</option>
160
+ <option value="8">Cardiff</option>
161
+ <option value="9">Castleford</option>
162
+ <option value="11">Cheltenham</option>
163
+ <option value="14">Chesterfield</option>
164
+ <option value="15">Chichester</option>
165
+ <option value="16">Crawley</option>
166
+ <option value="17">Didcot</option>
167
+ <option value="18">Didsbury</option>
168
+ <option value="19">Dundee</option>
169
+ <option value="20">Eastbourne</option>
170
+ <option value="21">Edinburgh</option>
171
+ <option value="24">Falkirk</option>
172
+ <option value="88">Glasgow - IMAX at GSC</option>
173
+ <option value="27">Glasgow - Parkhead</option>
174
+ <option value="28">Glasgow - Renfrew Street</option>
175
+ <option value="29">Gloucester</option>
176
+ <option value="90">Gloucester Quays</option>
177
+ <option value="31">Harlow</option>
178
+ <option value="76">Haverhill</option>
179
+ <option value="33">High Wycombe</option>
180
+ <option value="35">Hull</option>
181
+ <option value="36">Huntingdon</option>
182
+ <option value="38">Ipswich</option>
183
+ <option value="39">Isle Of Wight</option>
184
+ <option value="40">Jersey</option>
185
+ <option value="83">Leigh</option>
186
+ <option value="41">Liverpool</option>
187
+ <option value="42">Llandudno</option>
188
+ <option value="45">London - Bexleyheath</option>
189
+ <option value="10">London - Chelsea</option>
190
+ <option value="22">London - Enfield</option>
191
+ <option value="25">London - Feltham</option>
192
+ <option value="26">London - Fulham Road</option>
193
+ <option value="30">London - Hammersmith</option>
194
+ <option value="32">London - Haymarket</option>
195
+ <option value="37">London - Ilford</option>
196
+ <option value="53">London - Shaftesbury Avenue</option>
197
+ <option value="60">London - Staples Corner</option>
198
+ <option value="79">London - The O2, Greenwich </option>
199
+ <option value="65">London - Wandsworth</option>
200
+ <option value="89">London - Wembley</option>
201
+ <option value="66">London - West India Quay</option>
202
+ <option value="70">London - Wood Green</option>
203
+ <option value="43">Luton</option>
204
+ <option value="44">Middlesbrough</option>
205
+ <option value="46">Milton Keynes</option>
206
+ <option value="47">Newport Wales</option>
207
+ <option value="48">Northampton</option>
208
+ <option value="49">Nottingham</option>
209
+ <option value="50">Rochester</option>
210
+ <option value="51">Rugby</option>
211
+ <option value="52">Runcorn</option>
212
+ <option value="54">Sheffield</option>
213
+ <option value="55">Shrewsbury</option>
214
+ <option value="57">Solihull</option>
215
+ <option value="58">Southampton</option>
216
+ <option value="59">St Helens</option>
217
+ <option value="61">Stevenage</option>
218
+ <option value="62">Stockport</option>
219
+ <option value="63">Swindon</option>
220
+ <option value="64">Wakefield</option>
221
+ <option value="68">Weymouth</option>
222
+ <option value="77">Witney</option>
223
+ <option value="69">Wolverhampton</option>
224
+ <option value="71">Yeovil</option>
225
+ </select>
226
+ </label>
227
+
228
+ <label class="inline margin-right">
229
+ <span>Search by town or postcode:</span>
230
+ <input type="text" id="location" name="location" value="" placeholder='Town or postcode' />
231
+
232
+ </label>
233
+
234
+ <button class="action primary" type="submit" name="nearest" id="nearest">Search</button>
235
+ </form>
236
+
237
+ <hr />
238
+ </div>
239
+ </div>
240
+
241
+ <div class="row">
242
+ <div class="span12">
243
+ <h2>Your closest suggested cinemas are:</h2>
244
+ </div>
245
+ </div>
246
+
247
+ <ol class="cinemas unstyled clearfix">
248
+ <li >
249
+ <address class="marker">
250
+ <div class="pin primary small">1</div>
251
+ <strong>Cineworld London - Haymarket</strong> (0.62 miles)
252
+ <br />63-65 Haymarket, London, SW1Y 4RL
253
+ </address>
254
+ <a class="action secondary light" href="/whatson?cinema=32" target="_parent">View Cineworld London - Haymarket</a>
255
+ </li>
256
+ <li class="odd">
257
+ <address class="marker">
258
+ <div class="pin primary small">2</div>
259
+ <strong>Cineworld London - Shaftesbury Avenue</strong> (0.77 miles)
260
+ <br />13 Coventry Street, Piccadilly, London, W1D 7DH
261
+ </address>
262
+ <a class="action secondary light" href="/whatson?cinema=53" target="_parent">View Cineworld London - Shaftesbury Avenue</a>
263
+ </li>
264
+ <li >
265
+ <address class="marker">
266
+ <div class="pin primary small">3</div>
267
+ <strong>Cineworld London - Chelsea</strong> (2.13 miles)
268
+ <br />279 Kings Road,Chelsea, London, SW3 5EW
269
+ </address>
270
+ <a class="action secondary light" href="/whatson?cinema=10" target="_parent">View Cineworld London - Chelsea</a>
271
+ </li>
272
+ <li class="odd">
273
+ <address class="marker">
274
+ <div class="pin primary small">4</div>
275
+ <strong>Cineworld London - Fulham Road</strong> (2.3 miles)
276
+ <br />142 Fulham Road, London, SW10 9QR
277
+ </address>
278
+ <a class="action secondary light" href="/whatson?cinema=26" target="_parent">View Cineworld London - Fulham Road</a>
279
+ </li>
280
+ <li >
281
+ <address class="marker">
282
+ <div class="pin primary small">5</div>
283
+ <strong>Cineworld London - Wandsworth</strong> (4.13 miles)
284
+ <br />Southside Shopping Centre, Wandsworth High Street,, SW18 4TF
285
+ </address>
286
+ <a class="action secondary light" href="/whatson?cinema=65" target="_parent">View Cineworld London - Wandsworth</a>
287
+ </li>
288
+ <li class="odd">
289
+ <address class="marker">
290
+ <div class="pin primary small">6</div>
291
+ <strong>Cineworld London - Hammersmith</strong> (4.47 miles)
292
+ <br />207 King Street, Hammersmith, London, W6 9JT
293
+ </address>
294
+ <a class="action secondary light" href="/whatson?cinema=30" target="_parent">View Cineworld London - Hammersmith</a>
295
+ </li>
296
+ </ol>
297
+ </div>
298
+ </div>
299
+
300
+
301
+ <div id="footer" role="contentinfo">
302
+ <div class="section dark clearfix ">
303
+
304
+ <div class="row">
305
+
306
+ <hr class="highlight" />
307
+
308
+ <div class="span4">
309
+ <h3>Venue hire</h3>
310
+ <ul>
311
+ <li><a href="/venuehire">Find out more</a></li>
312
+ </ul>
313
+ </div>
314
+
315
+ <div class="span3">
316
+ <h3>My booking</h3>
317
+ <ul>
318
+ <li><a href="/checkbooking">Check my booking</a></li>
319
+ </ul>
320
+
321
+ <h3>Follow us</h3>
322
+ <ul class="social">
323
+ <li class="twitter"><a href="http://twitter.com/cineworld" target="_blank">Twitter</a></li>
324
+ <li class="facebook"><a href="http://www.facebook.com/cineworld" target="_blank">Facebook</a></li>
325
+ <li class="youtube"><a href="http://www.youtube.com/user/CineworldCinemas" target="_blank">YouTube</a></li>
326
+ </ul>
327
+ </div>
328
+
329
+ <div class="span5">
330
+ <h3>Around Cineworld</h3>
331
+ <ul>
332
+ <li><a href="/contact">Contact us</a></li>
333
+ <li><a href="/terms">Terms &amp; conditions</a></li>
334
+ <li><a href="/policy">Privacy policy</a></li>
335
+ <li><a href="/cw/assets/downloads/cineworld_nutritional_information.pdf">Nutritional information</a></li>
336
+ <li><a href="/cookies/settings">Cookie settings</a></li>
337
+ <li><a href="/faq">FAQs</a></li>
338
+ <li><a href="/careers">Careers</a></li>
339
+ <li><a href="/press">Press</a></li>
340
+ <li><a href="http://www.cineworldplc.com/" target="_blank">Cineworld Group PLC</a></li>
341
+ <li><a href="/accessibility">Accessibility</a></li>
342
+ </ul>
343
+
344
+ <h3>Cineworld apps</h3>
345
+ <ul>
346
+ <li><a href="http://itunes.apple.com/gb/app/cineworld/id377707014">iPhone app</a></li>
347
+ <li><a href="https://play.google.com/store/apps/details?id=com.cineworld">Android app</a></li>
348
+ <li><a href="http://itunes.apple.com/gb/app/cineworld-magazine/id508350271">iPad magazine</a></li>
349
+ </ul>
350
+ </div>
351
+
352
+ </div>
353
+
354
+
355
+ <div class="row">
356
+ <div class="span12 smallprint small">
357
+ <p>All rights reserved Cineworld Cinemas 2013 &copy;</p>
358
+ </div>
359
+ </div>
360
+
361
+ </div>
362
+ </div>
363
+ </div>
364
+ <!-- [SL] end -->
365
+ </div>
366
+ </div>
367
+
368
+ <div id="tooltip-template-performance-unavailable" class="tooltip-box performance unavailable">
369
+ <h3 data-field="title" class="default">This showtime is unavailable</h3>
370
+ <hr class="thin" />
371
+ <p data-field="explanation" class="default">Booking is unavailable for this showtime as it may have already started, finished or been sold out.</p>
372
+ </div>
373
+
374
+ <div class="notification cookie" style="display: none;">
375
+ <h1 class="">Cookies Notification</h1>
376
+ <div>
377
+ <p>This website uses cookies to provide you with a better experience.<br /><br />You can adjust your cookie settings at any time at the bottom of each page.&nbsp; If you do not adjust your settings, you are consenting to us issuing all cookies to you.<br /><br /></p>
378
+ <p>
379
+ <a href="/cookies/settings">Change settings</a><br />
380
+ <a href="/cookies/about" target="_blank">Find out more about Cookies</a>
381
+ </p>
382
+ <p>
383
+ <a class="action primary">No, thanks</a>
384
+ </p>
385
+
386
+ <p>This notification will be automatically dismissed in <span class="remaining">15</span> seconds, <a class="dismiss">dismiss this countdown</a>.</p>
387
+ </div>
388
+ </div>
389
+
390
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.blockui.packed.js"></script>
391
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.lazyload.packed.js"></script>
392
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.validate.packed.js"></script>
393
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.form.packed.js"></script>
394
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.tabs.packed.js"></script>
395
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.masonry.packed.js"></script>
396
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.fancybox.packed.js"></script>
397
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.nivo.slider.packed.js"></script>
398
+ <script type="text/javascript" src="/cw/assets/javascript/zebra.datepicker.packed.js"></script>
399
+ <script type="text/javascript" src="/cw/assets/javascript/jwplayer.packed.js"></script>
400
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.cineworld.quickbook.packed.js"></script>
401
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.cineworld.core.packed.js"></script>
402
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.cineworld.cookies.packed.js"></script>
403
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.cineworld.mycineworld.packed.js"></script>
404
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.cineworld.instant_search.packed.js"></script>
405
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.cineworld.whatson.packed.js"></script>
406
+ <script type="text/javascript" src="/cw/assets/javascript/jquery.cineworld.tooltip.packed.js"></script>
407
+ <script type="text/javascript" src="/cw/assets/javascript/initialise.packed.js"></script>
408
+
409
+
410
+ <!-- This comment replaces content that was removed due to user's cookie settings -->
411
+ <script type="text/javascript">
412
+ //<![CDATA[
413
+ (function() {
414
+ var _analytics_scr = document.createElement('script');
415
+ _analytics_scr.type = 'text/javascript'; _analytics_scr.async = true; _analytics_scr.src = '/_Incapsula_Resource?SWJIYLWA=2977d8d74f63d7f8fedbea018b7a1d05&ns=2';
416
+ var _analytics_elem = document.getElementsByTagName('script')[0]; _analytics_elem.parentNode.insertBefore(_analytics_scr, _analytics_elem);
417
+ })();
418
+ // ]]>
419
+ </script></body>
420
+ </html>