cineworld_uk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>