artimis 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ vendor/ruby
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.2
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ group :test do
6
+ gem 'webmock'
7
+ gem 'turn'
8
+ end
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+ require 'rake/testtask'
4
+ Rake::TestTask.new(:test) do |test|
5
+ test.libs << 'lib' << 'test'
6
+ test.pattern = 'test/**/*.rb'
7
+ #test.verbose = true
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "artimis/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "artimis"
7
+ s.version = Artimis::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Chris Moore"]
10
+ s.email = ["chris@26webs.com"]
11
+ s.homepage = "http://github.com/cdmwebs/artimis"
12
+ s.summary = %q{A DSL for scraping the ARTIMIS website.}
13
+ s.description = %q{A DSL for scraping the ARTIMIS website.}
14
+
15
+ s.rubyforge_project = "artimis"
16
+
17
+ s.add_runtime_dependency "mechanize"
18
+
19
+ s.files = `git ls-files`.split("\n").collect { |f| f unless f =~ /version/ }.compact
20
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
+ s.require_paths = ["lib"]
23
+ end
@@ -0,0 +1,5 @@
1
+ require 'mechanize'
2
+ require 'artimis/camera'
3
+
4
+ module Artimis
5
+ end
@@ -0,0 +1,70 @@
1
+ module Artimis
2
+ class Camera
3
+ class << self
4
+ attr_writer :url
5
+
6
+ def url
7
+ @url ||= list_url
8
+ end
9
+
10
+ def all
11
+ page.links_with(:href => /\/camera\//)
12
+ end
13
+
14
+ def find(params = {})
15
+ if params[:description]
16
+ cameras = []
17
+ page.links_with(:text => params[:description]).each do |link|
18
+ camera_page = link.click
19
+ cameras << new(camera_page, :url => link.href, :description => link.text)
20
+ end
21
+ cameras
22
+ elsif params[:id]
23
+ link = page.link_with(:href => /camera#{params[:id]}/)
24
+ return nil unless link
25
+ camera_page = link.click
26
+ new(camera_page, :url => link.href, :description => link.text)
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def list_url
33
+ url = 'http://www.artimis.org/cameraselect.php'
34
+ end
35
+
36
+ def agent
37
+ @agent ||= Mechanize.new
38
+ end
39
+
40
+ def page
41
+ @page ||= agent.get(url)
42
+ end
43
+ end
44
+
45
+ attr_reader :url, :description, :image_url
46
+
47
+ def initialize(page, params = {})
48
+ self.description = params[:description] || page.to_s
49
+ self.url = params[:url] || page.href
50
+
51
+ page.images.each do |i|
52
+ self.image_url = i.url if i.node.attributes["name"]
53
+ end
54
+ end
55
+
56
+ private
57
+
58
+ def url=(url)
59
+ @url = url
60
+ end
61
+
62
+ def description=(description)
63
+ @description = description
64
+ end
65
+
66
+ def image_url=(image_url)
67
+ @image_url = image_url
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,70 @@
1
+ require 'helper'
2
+
3
+ describe Artimis::Camera do
4
+ describe ".all" do
5
+ before do
6
+ @cameras = Artimis::Camera.all
7
+ end
8
+
9
+ it "returns a list of cameras" do
10
+ @cameras.wont_be_nil
11
+ end
12
+
13
+ it "must include links to camera only" do
14
+ @cameras.first.href.must_match /\/camera\//
15
+ end
16
+ end
17
+
18
+ describe ".find" do
19
+ describe "by description" do
20
+ before do
21
+ @cameras = Artimis::Camera.find(:description => /Hamilton/)
22
+ end
23
+
24
+ it "returns an array of cameras" do
25
+ @cameras.must_be_instance_of Array
26
+ end
27
+
28
+ it "returns only cameras that match 'Hamilton'" do
29
+ @cameras.first.description.must_match /Hamilton/i
30
+ end
31
+ end
32
+
33
+ describe "by number" do
34
+ before do
35
+ @camera = Artimis::Camera.find(:id => 23)
36
+ end
37
+
38
+ it "returns a single camera" do
39
+ @camera.description.must_match /brent spence/i
40
+ end
41
+ end
42
+ end
43
+
44
+ describe "creating a camera" do
45
+ before do
46
+ @agent = Mechanize.new
47
+ @page = @agent.get("http://www.artimis.org/camera/camera23.php")
48
+ @camera = Artimis::Camera.new(@page)
49
+ end
50
+
51
+ it "assigns the image_url" do
52
+ @camera.image_url.wont_be_nil
53
+ end
54
+ end
55
+
56
+ describe "an instance" do
57
+ before do
58
+ @camera = Artimis::Camera.find(:id => 23)
59
+ end
60
+
61
+ it "has a URL" do
62
+ @camera.url.must_match /\/camera/
63
+ end
64
+
65
+ it "has an image_url" do
66
+ @camera.image_url.wont_be_nil
67
+ @camera.image_url.must_match /\.jpg$/
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,417 @@
1
+ HTTP/1.1 200 OK
2
+ Date: Sat, 02 Jul 2011 03:03:37 GMT
3
+ Server: Apache/2.0.52 (Red Hat)
4
+ X-Powered-By: PHP/4.3.9
5
+ Connection: close
6
+ Transfer-Encoding: chunked
7
+ Content-Type: text/html; charset=UTF-8
8
+
9
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
10
+ <HTML lang="en-US">
11
+ <HEAD>
12
+
13
+ <TITLE>ARTIMIS Camera Page</TITLE>
14
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
15
+ <meta http-equiv="REFRESH" CONTENT="60">
16
+ <meta name="classification" content="Traffic Management Systems, Intelligent Transportation Systems" />
17
+ <meta name="keywords" content="ARTIMIS, Cincinnati, Northern Kentucky, CCTV, Camera" />
18
+ <meta name="generator" content="Greater Cincinnati-Northern Kentucky Traffic Information" />
19
+ <meta name="author" content="R. Scott Evans" />
20
+ <link rel="shortcut icon" type="image/ico" href="/favicon.ico" />
21
+ <script type="text/javascript" language="Javascript">
22
+ <!--
23
+ image_name = "http://cmhimg01.dot.state.oh.us/images/artimis/CCTV099.jpg";
24
+ // -->
25
+ </script>
26
+ <script type="text/javascript" src="/ReloadImage.js"></script>
27
+ <script language="javascript">
28
+ function nwpage(cpage) {
29
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
30
+ var thePageName = cpage;
31
+ var theWindowName = cpage;
32
+ myWindow = window.open(thePageName,"nwpage",someFeatures);
33
+ myWindow.location = thePageName;
34
+ }
35
+ function nwpage1(cpage) {
36
+ var win_left = (screen.width);
37
+ var win_top = (screen.height);
38
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
39
+ var thePageName = cpage;
40
+ var theWindowName = cpage;
41
+ myWindow = window.open(thePageName,"nwpage1",someFeatures);
42
+ myWindow.location = thePageName;
43
+ }
44
+ function nwpage2(cpage) {
45
+ var win_left = (screen.width);
46
+ var win_top = (screen.height);
47
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
48
+ var thePageName = cpage;
49
+ var theWindowName = cpage;
50
+ myWindow = window.open(thePageName,"nwpage2",someFeatures);
51
+ myWindow.location = thePageName;
52
+ }
53
+ function nwpage3(cpage) {
54
+ var win_left = (screen.width);
55
+ var win_top = (screen.height);
56
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
57
+ var thePageName = cpage;
58
+ var theWindowName = cpage;
59
+ myWindow = window.open(thePageName,"nwpage3",someFeatures);
60
+ myWindow.location = thePageName;
61
+ }
62
+ function nwpage4(cpage) {
63
+ var win_left = (screen.width);
64
+ var win_top = (screen.height);
65
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
66
+ var thePageName = cpage;
67
+ var theWindowName = cpage;
68
+ myWindow = window.open(thePageName,"nwpage4",someFeatures);
69
+ myWindow.location = thePageName;
70
+ }
71
+ function nwpage5(cpage) {
72
+ var win_left = (screen.width);
73
+ var win_top = (screen.height);
74
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
75
+ var thePageName = cpage;
76
+ var theWindowName = cpage;
77
+ myWindow = window.open(thePageName,"nwpage5",someFeatures);
78
+ myWindow.location = thePageName;
79
+ }
80
+ function poppage(cpage) {
81
+ var someFeatures = 'resizable=no,toolbar=no,location=0,screenX=100,screenY=100,directories=0,width=300,height=500,status=no,menubar=no,scrollbars=yes,copyhistory=0';
82
+ var thePageName = cpage;
83
+ var theWindowName = cpage;
84
+ myWindow = window.open(thePageName,"nwpage",someFeatures);
85
+ myWindow.location = thePageName;
86
+ }
87
+ function poppage1(cpage) {
88
+ var someFeatures = 'resizable=no,toolbar=no,location=0,screenX=300,screenY=300,directories=0,width=440,height=330,status=no,menubar=no,scrollbars=no,copyhistory=0';
89
+ var thePageName = cpage;
90
+ var theWindowName = cpage;
91
+ myWindow = window.open(thePageName,"nwpage",someFeatures);
92
+ myWindow.location = thePageName;
93
+ }
94
+ </script>
95
+
96
+ </HEAD>
97
+ <BODY BGCOLOR=WHITE TEXT=BLACK ALINK=GREEN VLINK=BLUE LINK=RED onLoad="reloadImage()">
98
+
99
+ <TABLE WIDTH=630 CELLSPACING=0 CELLPADDING=0 BORDER=0 ALIGN=CENTER>
100
+ <TR>
101
+ <TD WIDTH=75 ALIGN=LEFT VALIGN=TOP BGCOLOR=ccccff><IMG SRC=/images/tleft.gif></TD>
102
+ <TD WIDTH=75 ALIGN=RIGHT VALIGN=TOP BGCOLOR=ccccff><IMG SRC=/images/tright.gif></TD>
103
+ <TD WIDTH=480 ALIGN=CENTER ROWSPAN=2><IMG SRC=/images/small.gif></TD>
104
+ </TR>
105
+ <TR>
106
+ <TD COLSPAN=2 WIDTH=150 VALIGN=TOP BGCOLOR=ccccff ALIGN=CENTER VALIGN=CENTER>
107
+ July 01, 2011<BR>11:03 PM </TD>
108
+ </TR>
109
+ <TR>
110
+ <TD COLSPAN=2 WIDTH=150 VALIGN=TOP BGCOLOR=ccccff ALIGN=CENTER>
111
+ <TABLE WIDTH=100% CELLPADDING=2 BORDER=0 CELLSPACING=0>
112
+ <TR><TD ALIGN=LEFT><A HREF=/index.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Home</FONT></A></TD></TR>
113
+ <TR><TD HEIGHT=10></TD></TR>
114
+ <TR><TD ALIGN=LEFT><A HREF=/traffic.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Traffic Conditions</FONT></A></TD></TR>
115
+ <TR><TD ALIGN=LEFT><A HREF="javascript:nwpage1('/cgi/constructionnew.cgi')"><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Construction Zones</FONT></A></TD></TR>
116
+ <TR><TD ALIGN=LEFT><A HREF="javascript:nwpage2('/cgi/accidentnew.cgi')"><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Accidents/Other Activity</FONT></A></TD></TR>
117
+ <TR><TD ALIGN=LEFT><A HREF=/stadium.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Stadium Complex Info</FONT></A></TD></TR>
118
+ <TR><TD HEIGHT=10></TD></TR>
119
+ <TR>
120
+ <TD ALIGN=CENTER><A HREF="javascript:nwpage3('/camaccess1.html')" BORDER=0><IMG SRC=/images/snapshots.gif BORDER=0><FONT SIZE=2 FACE=ARIAL COLOR=RED><BR>Camera Images (Map)!</FONT></A></TD>
121
+ <!-- <TD><A HREF="javascript:nwpage('/streamaccess.html')"><IMG SRC=/images/newstreams.gif></A></TD>-->
122
+ </TR>
123
+ <TR>
124
+ <TD ALIGN=CENTER><A HREF=/cameraselect.php BORDER=0><IMG SRC=/images/snapshots.gif BORDER=0><FONT SIZE=2 FACE=ARIAL COLOR=RED><BR>Camera Images (List)!</FONT></A></TD>
125
+ </TR><TR><TD HEIGHT=10></TD></TR>
126
+ <TR>
127
+ <TD ALIGN=CENTER><A HREF="javascript:nwpage4('/segaccess1.html')" BORDER=0><IMG SRC=/images/sysmap.bmp BORDER=0><FONT SIZE=2 FACE=ARIAL COLOR=RED><BR>Segment Map!</FONT></A></TD>
128
+ </TR>
129
+ </TR><TR><TD HEIGHT=10></TD></TR>
130
+ <TR>
131
+ <TD ALIGN=CENTER><A HREF="javascript:nwpage5('/dmsaccess.html')" BORDER=0><IMG SRC=/images/dmssign.jpg BORDER=0><FONT SIZE=2 FACE=ARIAL COLOR=RED><BR>Sign Msgs!</FONT></A></TD>
132
+ </TR>
133
+ <TR><TD HEIGHT=10></TD></TR>
134
+ <TR><TD ALIGN=LEFT><A HREF=/about.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>About Us/Content</FONT></A></TD></TR>
135
+ <TR><TD ALIGN=LEFT><A HREF=/system.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>System Components/511 Codes</FONT></A></TD></TR>
136
+ <TR><TD ALIGN=LEFT><A HREF=/faq.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>ARTIMIS FAQ</FONT></A></TD></TR>
137
+ <TR><TD ALIGN=LEFT><A HREF=/award.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>ARTIMIS Awards</FONT></A></TD></TR>
138
+ <TR><TD ALIGN=LEFT><A HREF=/contact.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Contact Us</FONT></A></TD></TR>
139
+ <TR><TD HEIGHT=25></TD></TR>
140
+ <TR><TD ALIGN=CENTER><A HREF="javascript:nwpage('http://www.dot.state.oh.us')" BORDER=0><IMG SRC=/images/odotseal.gif BORDER=0><BR><FONT SIZE=-2 FACE=ARIAL COLOR=000000>Ohio Department of Transportation</FONT></A></TD></TR>
141
+ <TR><TD ALIGN=CENTER><A HREF="javascript:nwpage('http://www.kytc.state.ky.us')" BORDER=0><IMG SRC=/images/kytcnewlogo.jpg VSPACE=10 BORDER=0><BR><FONT SIZE=-2 FACE=ARIAL COLOR=000000>Kentucky Transportation Cabinet</FONT></A></TD></TR>
142
+ <TR><TD ALIGN=CENTER><A HREF="javascript:nwpage('http://www.ci.cincinnati.oh.us')" BORDER=0><IMG SRC=/images/cseal.gif BORDER=0><BR><FONT SIZE=-2 FACE=ARIAL COLOR=000000>City of Cincinnati</FONT></A></TD></TR>
143
+ <TR><TD ALIGN=CENTER><A HREF="javascript:nwpage('http://www.fhwa.dot.gov')" BORDER=0><IMG SRC=/images/dotseal.gif BORDER=0><BR><FONT SIZE=-2 FACE=ARIAL COLOR=000000>Federal Highway Administration</FONT></A></TD></TR>
144
+ <TR><TD ALIGN=CENTER><A HREF="javascript:nwpage('http://www.oki.org')" BORDER=0><IMG SRC=/images/okilogo.jpg BORDER=0 VSPACE=10><BR><FONT SIZE=-2 FACE=ARIAL COLOR=000000>Ohio, Kentucky, Indiana Regional Council of Governments</FONT></A></TD></TR>
145
+ <TR><TD HEIGHT=10></TD></TR>
146
+ <TR><TD ALIGN=CENTER><FONT SIZE=-2 FACE=ARIAL COLOR=000000><a href="mailto:Susan.Springer@dot.state.oh.us">ARTIMIS Operations Control Center</a></FONT><BR>
147
+ <TR><TD HEIGHT=10></TD></TR>
148
+ <TR><TD ALIGN=CENTER><FONT SIZE=-2 FACE=ARIAL COLOR=000000>508 W. Third Street<br>Cincinnati, Ohio 45202-3410<br>USA<br><br>(513) 564-6100<br>(513) 564-6127 (FAX)</FONT></TD></TR>
149
+ <TR><TD ALIGN=CENTER><A HREF=/copyright.php><FONT SIZE=-2 FACE=ARIAL>Copyright &copy; 1997-2008 ARTIMIS</FONT></A></TD></TR>
150
+ <TR><TD HEIGHT=10></TD></TR>
151
+ </TABLE>
152
+ </TD>
153
+ <TD WIDTH=454 VALIGN=TOP ALIGN=CENTER>
154
+ <img name="refimage" src="http://cmhimg01.dot.state.oh.us/images/artimis/CCTV099.jpg" width=454 height=292 border=1 alt="Kentucky: I-275 at Airport Exit">
155
+ <TABLE WIDTH=454 CELLSPACING=0 CELLPADDING=0 BORDER=0>
156
+ <TR><TD ALIGN=CENTER WIDTH=100%><FONT FACE=ARIAL><B>Ohio: I-275 at Hamilton Ave.</B></FONT></TD></TR>
157
+ <TR><TD ALIGN=CENTER WIDTH=100%><FONT SIZE=-1 FACE=ARIAL><B>Mile 36.5, located on South side of I-275</B></FONT></TD></TR>
158
+ <TR><TD WIDTH=30><SPACER TYPE=horizontal SIZE=30></TD></TR>
159
+ </TABLE>
160
+ <TABLE WIDTH=455 CELLSPACING=0 CELLPADDING=0 BORDER=0>
161
+ <TR><TD ALIGN=CENTER WIDTH=100%><FONT COLOR=959595 SIZE=-2 FACE=ARIAL>New images are available approximately every 2-5 seconds.</FONT></TD></TR>
162
+ <TR><TD WIDTH=30><SPACER TYPE=horizontal SIZE=30></TD>
163
+ <TR><TD WIDTH=30></TD></TR>
164
+ </TABLE>
165
+ <BR>
166
+ <TABLE WIDTH=455 CELLSPACING=0 CELLPADDING=0 BORDER=0>
167
+ <TR<TD ALIGN=LEFT WIDTH=100%><FONT FACE=ARIAL><B>Select a camera from the list below.</B></FONT></TD></TR>
168
+ <TR><TD WIDTH=30><SPACER TYPE=horizontal SIZE=30></TD></TR>
169
+ </TABLE>
170
+ <BR>
171
+ <TABLE WIDTH=455 CELLSPACING=0 CELLPADDING=0 BORDER=0>
172
+ <TR><TD>&nbsp;</TD><TD ALIGN=LEFT><FONT FACE=ARIAL><B>Ohio:</B></FONT></TD></TR>
173
+ <TR><TD WIDTH=30></TD></TR>
174
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
175
+ <a href="/camera/camera112.php">I-275 at Colerain Ave.</a></TD></TR>
176
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
177
+ <a href="/camera/camera99.php">I-275 at Hamilton Ave.</a></TD></TR>
178
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
179
+ <a href="/camera/camera108.php">I-275 at Winton Rd.</a></TD></TR>
180
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
181
+ <a href="/camera/camera40.php">I-275 at S. R. 4</a></TD></TR>
182
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
183
+ <a href="/camera/camera3.php">I-275 at S. R. 747</a></TD></TR>
184
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
185
+ <a href="/camera/camera2.php">I-275 at I-75</a></TD></TR>
186
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
187
+ <a href="/camera/camera101.php">I-275 at Mosteller Rd.</a></TD></TR>
188
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
189
+ <a href="/camera/camera1.php">I-275 at U.S. 42</a></TD></TR>
190
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
191
+ <a href="/camera/camera39.php">I-275 at Reed Hartman Highway</a></TD></TR>
192
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
193
+ <a href="/camera/camera41.php">I-275 at I-71</a></TD></TR>
194
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
195
+ <a href="/camera/camera38.php">I-275 at Montgomery Rd.</a></TD></TR>
196
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
197
+ <a href="/camera/camera107.php">I-275 North of Wards Corner Rd.</a></TD></TR>
198
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
199
+ <a href="/camera/camera105.php">I-275 at S. R. 131</a></TD></TR>
200
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
201
+ <a href="/camera/camera109.php">I-275 at S. R. 32</a></TD></TR>
202
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
203
+ <a href="/camera/camera110.php">I-275 at Kellogg Ave.</a></TD></TR>
204
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
205
+ </TD></TR>
206
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
207
+ <a href="/camera/camera92.php">I-71 at Kings Mills Rd.</a></TD></TR>
208
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
209
+ <a href="/camera/camera96.php">I-71 at Mason-Montgomery Rd.</a></TD></TR>
210
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
211
+ <a href="/camera/camera41.php">I-71 at I-275</a></TD></TR>
212
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
213
+ <a href="/camera/camera71.php">I-71 at Deerfield Rd.</a></TD></TR>
214
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
215
+ <a href="/camera/camera72.php">I-71 at Pfeiffer Rd.</a></TD></TR>
216
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
217
+ <a href="/camera/camera73.php">I-71 at Ronald Reagan Hwy (SR 126)</a></TD></TR>
218
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
219
+ <a href="/camera/camera74.php">I-71 at Montgomery Rd. (Kenwood)</a></TD></TR>
220
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
221
+ <a href="/camera/camera75.php">I-71 at Euclid Ave.</a></TD></TR>
222
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
223
+ <a href="/camera/camera76.php">I-71 just North of Stewart</a></TD></TR>
224
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
225
+ <a href="/camera/camera77.php">I-71 at Red Bank Rd.</a></TD></TR>
226
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
227
+ <a href="/camera/camera78.php">I-71 at Kennedy</a></TD></TR>
228
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
229
+ <a href="/camera/camera79.php">I-71 at S.R. 562 (Norwood Lateral)</a></TD></TR>
230
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
231
+ <a href="/camera/camera80.php">I-71 at Robertson</a></TD></TR>
232
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
233
+ <a href="/camera/camera81.php">I-71 at Smith Rd.</a></TD></TR>
234
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
235
+ <a href="/camera/camera82.php">I-71 at Dana Ave.</a></TD></TR>
236
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
237
+ <a href="/camera/camera83.php">I-71 at Montgomery Rd. (Cinti)</a></TD></TR>
238
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
239
+ <a href="/camera/camera84.php">I-71 over Victory Parkway</a></TD></TR>
240
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
241
+ <a href="/camera/camera85.php">I-71 at Martin Luther King Jr. Dr.</a></TD></TR>
242
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
243
+ <a href="/camera/camera86.php">I-71 at William Howard Taft</a></TD></TR>
244
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
245
+ <a href="/camera/camera87.php">I-71 at McGregor</a></TD></TR>
246
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
247
+ <a href="/camera/camera36.php">I-71 at Elsinore</a></TD></TR>
248
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
249
+ <a href="/camera/camera37.php">I-71 at I-471</a></TD></TR>
250
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
251
+ <a href="/camera/camera43.php">I-71 East Tunnel, North End</a></TD></TR>
252
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
253
+ <a href="/camera/camera44.php">I-71 Center Tunnel, North End</a></TD></TR>
254
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
255
+ <a href="/camera/camera45.php">I-71 West Tunnel, North End</a></TD></TR>
256
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
257
+ <a href="/camera/camera46.php">I-71 West Tunnel, South End</a></TD></TR>
258
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
259
+ <a href="/camera/camera47.php">I-71 Center Tunnel, South End</a></TD></TR>
260
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
261
+ <a href="/camera/camera48.php">I-71 East Tunnel, South End</a></TD></TR>
262
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
263
+ <a href="/camera/camera42.php">I-71 at US 50</a></TD></TR>
264
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
265
+ <a href="/camera/camera100.php">I-71 in Downtown Cincinnati</a></TD></TR>
266
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
267
+ <a href="/camera/camera35.php">I-71 at I-75</a></TD></TR>
268
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
269
+ </TD></TR>
270
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
271
+ <a href="/camera/camera90.php">I-74 at Montana Ave.</a></TD></TR>
272
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
273
+ <a href="/camera/camera49.php">I-74 at I-75</a></TD></TR>
274
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
275
+ </TD></TR>
276
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
277
+ <a href="/camera/camera70.php">I-75 just South of SR 129</a></TD></TR>
278
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
279
+ <a href="/camera/camera69.php">I-75 at Tylersville Rd.</a></TD></TR>
280
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
281
+ <a href="/camera/camera68.php">I-75 at Cincinnati-Dayton Rd.</a></TD></TR>
282
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
283
+ <a href="/camera/camera67.php">I-75 just North of Union Centre Blvd.</a></TD></TR>
284
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
285
+ <a href="/camera/camera66.php">I-75 at Allen Rd.</a></TD></TR>
286
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
287
+ <a href="/camera/camera2.php">I-75 at I-275</a></TD></TR>
288
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
289
+ <a href="/camera/camera4.php">I-75 at Sharon Rd.</a></TD></TR>
290
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
291
+ <a href="/camera/camera104.php">I-75 at Glendale-Milford</a></TD></TR>
292
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
293
+ <a href="/camera/camera5.php">I-75 at Neumann Way</a></TD></TR>
294
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
295
+ <a href="/camera/camera6.php">I-75 at Lockland Split</a></TD></TR>
296
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
297
+ <a href="/camera/camera7.php">I-75 at Davis St. in Lockland.</a></TD></TR>
298
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
299
+ <a href="/camera/camera8.php">I-75 at Galbraith Rd. in Arlington Heights</a></TD></TR>
300
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
301
+ <a href="/camera/camera9.php">I-75 at Ronald Reagan Hwy (SR 126)</a></TD></TR>
302
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
303
+ <a href="/camera/camera10.php">I-75 at Paddock Rd.</a></TD></TR>
304
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
305
+ <a href="/camera/camera11.php">I-75 at Towne St.</a></TD></TR>
306
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
307
+ <a href="/camera/camera12.php">I-75 at S.R. 562 (Norwood Lateral)</a></TD></TR>
308
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
309
+ <a href="/camera/camera13.php">I-75 at Vine St. in St. Bernard</a></TD></TR>
310
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
311
+ <a href="/camera/camera14.php">I-75 just North of Mitchell Ave.</a></TD></TR>
312
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
313
+ <a href="/camera/camera15.php">I-75 at Mitchell Ave.</a></TD></TR>
314
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
315
+ <a href="/camera/camera16.php">I-75 at Ludlow Viaduct</a></TD></TR>
316
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
317
+ <a href="/camera/camera49.php">I-75 at I-74</a></TD></TR>
318
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
319
+ <a href="/camera/camera93.php">I-75 South of I-74</a></TD></TR>
320
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
321
+ <a href="/camera/camera18.php">I-75 at Hopple St.</a></TD></TR>
322
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
323
+ <a href="/camera/camera19.php">I-75 at Western Hills Viaduct</a></TD></TR>
324
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
325
+ <a href="/camera/camera20.php">I-75 at Ezzard Charles Dr.</a></TD></TR>
326
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
327
+ <a href="/camera/camera91.php">I-75 at Linn St.</a></TD></TR>
328
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
329
+ <a href="/camera/camera21.php">I-75 at Sixth St. in Cincinnati</a></TD></TR>
330
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
331
+ <a href="/camera/camera22.php">I-75 at the Ohio River</a></TD></TR>
332
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
333
+ <a href="/camera/camera35.php">I-75 at I-71</a></TD></TR>
334
+ <TR><TD WIDTH=30></TD></TR>
335
+ </TABLE>
336
+ <BR>
337
+ <TABLE WIDTH=405 CELLSPACING=0 CELLPADDING=0 BORDER=0>
338
+ <TR><TD>&nbsp;</TD><TD ALIGN=LEFT><FONT FACE=ARIAL><B>Kentucky:</B></FONT></TD></TR>
339
+ <TR><TD WIDTH=30></TD></TR>
340
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
341
+ <a href="/camera/camera132.php">I-275 on US 27 Bridge</a></TD></TR>
342
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
343
+ <a href="/camera/camera131.php">I-275 at I-471</a></TD></TR>
344
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
345
+ <a href="/camera/camera130.php">I-275 at KY 16 (Taylor Mill)</a></TD></TR>
346
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
347
+ <a href="/camera/camera129.php">I-275 South of Dixie Highway (Taylor Mill)</a></TD></TR>
348
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
349
+ <a href="/camera/camera30.php">I-275 at I-71/I-75</a></TD></TR>
350
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
351
+ <a href="/camera/camera51.php">I-275 at Mineola Pike.</a></TD></TR>
352
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
353
+ <a href="/camera/camera52.php">I-275 approaching KY 20/Airport</a></TD></TR>
354
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
355
+ <a href="/camera/camera53.php">I-275 West of Airport</a></TD></TR>
356
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
357
+ <a href="/camera/camera54.php">I-275 between KY 20 & KY 237</a></TD></TR>
358
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
359
+ <a href="/camera/camera55.php">I-275 at KY 237</a></TD></TR>
360
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
361
+ <a href="/camera/camera56.php">I-275 at between Hebron & Petersburg</a></TD></TR>
362
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
363
+ <a href="/camera/camera57.php">I-275 at Petersburg Exit</a></TD></TR>
364
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
365
+ <a href="/camera/camera58.php">I-275 at between Petersburg & Indiana Line</a></TD></TR>
366
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
367
+ </TD></TR>
368
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
369
+ <a href="/camera/camera37.php">I-471 at I-71</a></TD></TR>
370
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
371
+ <a href="/camera/camera103.php">I-471 at Grand Ave.</a></TD></TR>
372
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
373
+ </TD></TR>
374
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
375
+ <a href="/camera/camera23.php">I-71/I-75 on lower deck of Brent Spence Bridge</a></TD></TR>
376
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
377
+ <a href="/camera/camera24.php">I-71/I-75 at 12th St. in Covington</a></TD></TR>
378
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
379
+ <a href="/camera/camera25.php">I-71/I-75 at Cut-in-the-hill</a></TD></TR>
380
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
381
+ <a href="/camera/camera26.php">I-71/I-75 at Kyles Lane</a></TD></TR>
382
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
383
+ <a href="/camera/camera27.php">I-71/I-75 at Dixie Highway</a></TD></TR>
384
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
385
+ <a href="/camera/camera28.php">I-71/I-75 just North of Buttermilk Pike</a></TD></TR>
386
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
387
+ <a href="/camera/camera29.php">I-71/I-75 at Buttermilk Pike</a></TD></TR>
388
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
389
+ <a href="/camera/camera30.php">I-71/I-75 at I-275</a></TD></TR>
390
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
391
+ <a href="/camera/camera31.php">I-71/I-75 at Donaldson Rd.</a></TD></TR>
392
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
393
+ <a href="/camera/camera32.php">I-71/I-75 at Turfway Rd.</a></TD></TR>
394
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
395
+ <a href="/camera/camera33.php">I-71/I-75 at Burlington Pike</a></TD></TR>
396
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
397
+ <a href="/camera/camera34.php">I-71/I-75 at U.S. 42</a></TD></TR>
398
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
399
+ <a href="/camera/camera59.php">I-71/I-75 at Mt. Zion Rd.</a></TD></TR>
400
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
401
+ <a href="/camera/camera60.php">I-71/I-75 just North of the Richwood Exit</a></TD></TR>
402
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
403
+ <a href="/camera/camera61.php">I-71/I-75 Split</a></TD></TR>
404
+ <TR><TD WIDTH=30></TD></TR>
405
+ </TABLE>
406
+ </td>
407
+ </TR>
408
+ <TR>
409
+ <TD COLSPAN=2 WIDTH=150 VALIGN=TOP BGCOLOR=ccccff ALIGN=CENTER>
410
+ <TR><TD WIDTH=75 ALIGN=LEFT VALIGN=BOTTOM BGCOLOR=ccccff><IMG SRC=/images/bleft.gif></TD><TD WIDTH=75 ALIGN=RIGHT VALIGN=BOTTOM BGCOLOR=ccccff><IMG SRC=/images/bright.gif></TD><TD WIDTH=480 ALIGN=CENTER><BR><A HREF=/copyright.php><FONT COLOR=959595 SIZE=-2 FACE=ARIAL>Copyright &copy; 1997-2008 ARTIMIS</FONT></A></TD></TR>
411
+
412
+ </TD>
413
+ </TR>
414
+ </TABLE>
415
+
416
+ </body>
417
+ </html>
@@ -0,0 +1,396 @@
1
+ HTTP/1.1 200 OK
2
+ Date: Sat, 02 Jul 2011 03:03:46 GMT
3
+ Server: Apache/2.0.52 (Red Hat)
4
+ X-Powered-By: PHP/4.3.9
5
+ Connection: close
6
+ Transfer-Encoding: chunked
7
+ Content-Type: text/html; charset=UTF-8
8
+
9
+ <HTML>
10
+ <!-- This is the camera page for the ARTIMIS site. -->
11
+ <!-- Rehosted on 20 Apr 2001 -->
12
+ <!-- R.S. Evans, TRW with excellent support from -->
13
+ <!-- Jerry Behrendt from Voyager. -->
14
+ <HEAD>
15
+ <script language="javascript">
16
+ function nwpage(cpage) {
17
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
18
+ var thePageName = cpage;
19
+ var theWindowName = cpage;
20
+ myWindow = window.open(thePageName,"nwpage",someFeatures);
21
+ myWindow.location = thePageName;
22
+ }
23
+ function nwpage1(cpage) {
24
+ var win_left = (screen.width);
25
+ var win_top = (screen.height);
26
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
27
+ var thePageName = cpage;
28
+ var theWindowName = cpage;
29
+ myWindow = window.open(thePageName,"nwpage1",someFeatures);
30
+ myWindow.location = thePageName;
31
+ }
32
+ function nwpage2(cpage) {
33
+ var win_left = (screen.width);
34
+ var win_top = (screen.height);
35
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
36
+ var thePageName = cpage;
37
+ var theWindowName = cpage;
38
+ myWindow = window.open(thePageName,"nwpage2",someFeatures);
39
+ myWindow.location = thePageName;
40
+ }
41
+ function nwpage3(cpage) {
42
+ var win_left = (screen.width);
43
+ var win_top = (screen.height);
44
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
45
+ var thePageName = cpage;
46
+ var theWindowName = cpage;
47
+ myWindow = window.open(thePageName,"nwpage3",someFeatures);
48
+ myWindow.location = thePageName;
49
+ }
50
+ function nwpage4(cpage) {
51
+ var win_left = (screen.width);
52
+ var win_top = (screen.height);
53
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
54
+ var thePageName = cpage;
55
+ var theWindowName = cpage;
56
+ myWindow = window.open(thePageName,"nwpage4",someFeatures);
57
+ myWindow.location = thePageName;
58
+ }
59
+ function nwpage5(cpage) {
60
+ var win_left = (screen.width);
61
+ var win_top = (screen.height);
62
+ var someFeatures = 'resizable=yes,toolbar=yes,location=0,directories=0,status=no,menubar=no,scrollbars=yes,copyhistory=0';
63
+ var thePageName = cpage;
64
+ var theWindowName = cpage;
65
+ myWindow = window.open(thePageName,"nwpage5",someFeatures);
66
+ myWindow.location = thePageName;
67
+ }
68
+ function poppage(cpage) {
69
+ var someFeatures = 'resizable=no,toolbar=no,location=0,screenX=100,screenY=100,directories=0,width=300,height=500,status=no,menubar=no,scrollbars=yes,copyhistory=0';
70
+ var thePageName = cpage;
71
+ var theWindowName = cpage;
72
+ myWindow = window.open(thePageName,"nwpage",someFeatures);
73
+ myWindow.location = thePageName;
74
+ }
75
+ function poppage1(cpage) {
76
+ var someFeatures = 'resizable=no,toolbar=no,location=0,screenX=300,screenY=300,directories=0,width=440,height=330,status=no,menubar=no,scrollbars=no,copyhistory=0';
77
+ var thePageName = cpage;
78
+ var theWindowName = cpage;
79
+ myWindow = window.open(thePageName,"nwpage",someFeatures);
80
+ myWindow.location = thePageName;
81
+ }
82
+ </script>
83
+ <TITLE>Current Cincinnati Cameras</TITLE>
84
+ <META NAME=REFRESH CONTENT=100>
85
+ </HEAD>
86
+
87
+ <BODY BGCOLOR=WHITE TEXT=BLACK ALINK=GREEN VLINK=BLUE LINK=RED>
88
+
89
+
90
+ <TABLE WIDTH=630 CELLSPACING=0 CELLPADDING=0 BORDER=0 ALIGN=CENTER>
91
+ <TR><TD WIDTH=75 ALIGN=LEFT VALIGN=TOP BGCOLOR=ccccff><IMG SRC=/images/tleft.gif></TD>
92
+ <TD WIDTH=75 ALIGN=RIGHT VALIGN=TOP BGCOLOR=ccccff><IMG SRC=/images/tright.gif></TD>
93
+ <TD WIDTH=480 ALIGN=CENTER ROWSPAN=2><IMG SRC=/images/small.gif></TD></TR>
94
+ <TR><TD COLSPAN=2 WIDTH=150 VALIGN=TOP BGCOLOR=ccccff ALIGN=CENTER VALIGN=CENTER>
95
+ July 01, 2011<BR>11:03 PM</TD></TR>
96
+ <TR><TD COLSPAN=2 WIDTH=150 VALIGN=TOP BGCOLOR=ccccff ALIGN=CENTER>
97
+ <TABLE WIDTH=100% CELLPADDING=2 BORDER=0 CELLSPACING=0>
98
+ <TR><TD ALIGN=LEFT><A HREF=/index.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Home</FONT></A></TD></TR>
99
+ <TR><TD HEIGHT=10></TD></TR>
100
+ <TR><TD ALIGN=LEFT><A HREF=/traffic.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Traffic Conditions</FONT></A></TD></TR>
101
+ <TR><TD ALIGN=LEFT><A HREF="javascript:nwpage1('/cgi/constructionnew.cgi')"><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Construction Zones</FONT></A></TD></TR>
102
+ <TR><TD ALIGN=LEFT><A HREF="javascript:nwpage2('/cgi/accidentnew.cgi')"><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Accidents/Other Activity</FONT></A></TD></TR>
103
+ <TR><TD ALIGN=LEFT><A HREF=/stadium.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Stadium Complex Info</FONT></A></TD></TR>
104
+ <TR><TD HEIGHT=10></TD></TR>
105
+ <TR>
106
+ <TD ALIGN=CENTER><A HREF="javascript:nwpage3('/camaccess1.html')" BORDER=0><IMG SRC=/images/snapshots.gif BORDER=0><FONT SIZE=2 FACE=ARIAL COLOR=RED><BR>Camera Images (Map)!</FONT></A></TD>
107
+ <!-- <TD><A HREF="javascript:nwpage('/streamaccess.html')"><IMG SRC=/images/newstreams.gif></A></TD>-->
108
+ </TR>
109
+ <TR>
110
+ <TD ALIGN=CENTER><A HREF=/cameraselect.php BORDER=0><IMG SRC=/images/snapshots.gif BORDER=0><FONT SIZE=2 FACE=ARIAL COLOR=RED><BR>Camera Images (List)!</FONT></A></TD>
111
+ </TR><TR><TD HEIGHT=10></TD></TR>
112
+ <TR>
113
+ <TD ALIGN=CENTER><A HREF="javascript:nwpage4('/segaccess1.html')" BORDER=0><IMG SRC=/images/sysmap.bmp BORDER=0><FONT SIZE=2 FACE=ARIAL COLOR=RED><BR>Segment Map!</FONT></A></TD>
114
+ </TR>
115
+ </TR><TR><TD HEIGHT=10></TD></TR>
116
+ <TR>
117
+ <TD ALIGN=CENTER><A HREF="javascript:nwpage5('/dmsaccess.html')" BORDER=0><IMG SRC=/images/dmssign.jpg BORDER=0><FONT SIZE=2 FACE=ARIAL COLOR=RED><BR>Sign Msgs!</FONT></A></TD>
118
+ </TR>
119
+ <TR><TD HEIGHT=10></TD></TR>
120
+ <TR><TD ALIGN=LEFT><A HREF=/about.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>About Us/Content</FONT></A></TD></TR>
121
+ <TR><TD ALIGN=LEFT><A HREF=/system.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>System Components/511 Codes</FONT></A></TD></TR>
122
+ <TR><TD ALIGN=LEFT><A HREF=/faq.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>ARTIMIS FAQ</FONT></A></TD></TR>
123
+ <TR><TD ALIGN=LEFT><A HREF=/award.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>ARTIMIS Awards</FONT></A></TD></TR>
124
+ <TR><TD ALIGN=LEFT><A HREF=/contact.php><FONT SIZE=-1 FACE=ARIAL COLOR=000000>Contact Us</FONT></A></TD></TR>
125
+ <TR><TD HEIGHT=25></TD></TR>
126
+ <TR><TD ALIGN=CENTER><A HREF="javascript:nwpage('http://www.dot.state.oh.us')" BORDER=0><IMG SRC=/images/odotseal.gif BORDER=0><BR><FONT SIZE=-2 FACE=ARIAL COLOR=000000>Ohio Department of Transportation</FONT></A></TD></TR>
127
+ <TR><TD ALIGN=CENTER><A HREF="javascript:nwpage('http://www.kytc.state.ky.us')" BORDER=0><IMG SRC=/images/kytcnewlogo.jpg VSPACE=10 BORDER=0><BR><FONT SIZE=-2 FACE=ARIAL COLOR=000000>Kentucky Transportation Cabinet</FONT></A></TD></TR>
128
+ <TR><TD ALIGN=CENTER><A HREF="javascript:nwpage('http://www.ci.cincinnati.oh.us')" BORDER=0><IMG SRC=/images/cseal.gif BORDER=0><BR><FONT SIZE=-2 FACE=ARIAL COLOR=000000>City of Cincinnati</FONT></A></TD></TR>
129
+ <TR><TD ALIGN=CENTER><A HREF="javascript:nwpage('http://www.fhwa.dot.gov')" BORDER=0><IMG SRC=/images/dotseal.gif BORDER=0><BR><FONT SIZE=-2 FACE=ARIAL COLOR=000000>Federal Highway Administration</FONT></A></TD></TR>
130
+ <TR><TD ALIGN=CENTER><A HREF="javascript:nwpage('http://www.oki.org')" BORDER=0><IMG SRC=/images/okilogo.jpg BORDER=0 VSPACE=10><BR><FONT SIZE=-2 FACE=ARIAL COLOR=000000>Ohio, Kentucky, Indiana Regional Council of Governments</FONT></A></TD></TR>
131
+ <TR><TD HEIGHT=10></TD></TR>
132
+ <TR><TD ALIGN=CENTER><FONT SIZE=-2 FACE=ARIAL COLOR=000000><a href="mailto:Susan.Springer@dot.state.oh.us">ARTIMIS Operations Control Center</a></FONT><BR>
133
+ <TR><TD HEIGHT=10></TD></TR>
134
+ <TR><TD ALIGN=CENTER><FONT SIZE=-2 FACE=ARIAL COLOR=000000>508 W. Third Street<br>Cincinnati, Ohio 45202-3410<br>USA<br><br>(513) 564-6100<br>(513) 564-6127 (FAX)</FONT></TD></TR>
135
+ <TR><TD ALIGN=CENTER><A HREF=/copyright.php><FONT SIZE=-2 FACE=ARIAL>Copyright &copy; 1997-2008 ARTIMIS</FONT></A></TD></TR>
136
+ <TR><TD HEIGHT=10></TD></TR>
137
+ </TABLE>
138
+ </TD>
139
+ <TD WIDTH=480>
140
+ <HR WIDTH=75%>
141
+ <BR>
142
+ <TABLE WIDTH=455 CELLSPACING=0 CELLPADDING=0 BORDER=0>
143
+ <TR><TD ALIGN=CENTER WIDTH=100%><FONT COLOR=959595 SIZE=-2 FACE=ARIAL>New images are available approximately every 2-5 seconds.</FONT></TD></TR>
144
+ <TR><TD WIDTH=30><SPACER TYPE=horizontal SIZE=30></TD>
145
+ <TR><TD WIDTH=30></TD></TR>
146
+ </TABLE>
147
+ <BR>
148
+ <TABLE WIDTH=455 CELLSPACING=0 CELLPADDING=0 BORDER=0>
149
+ <TR<TD ALIGN=LEFT WIDTH=100%><FONT FACE=ARIAL><B>Select a camera from the list below.</B></FONT></TD></TR>
150
+ <TR><TD WIDTH=30><SPACER TYPE=horizontal SIZE=30></TD></TR>
151
+ </TABLE>
152
+ <BR>
153
+ <TABLE WIDTH=455 CELLSPACING=0 CELLPADDING=0 BORDER=0>
154
+ <TR><TD>&nbsp;</TD><TD ALIGN=LEFT><FONT FACE=ARIAL><B>Ohio:</B></FONT></TD></TR>
155
+ <TR><TD WIDTH=30></TD></TR>
156
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
157
+ <a href="/camera/camera112.php">I-275 at Colerain Ave.</a></TD></TR>
158
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
159
+ <a href="/camera/camera99.php">I-275 at Hamilton Ave.</a></TD></TR>
160
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
161
+ <a href="/camera/camera108.php">I-275 at Winton Rd.</a></TD></TR>
162
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
163
+ <a href="/camera/camera40.php">I-275 at S. R. 4</a></TD></TR>
164
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
165
+ <a href="/camera/camera3.php">I-275 at S. R. 747</a></TD></TR>
166
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
167
+ <a href="/camera/camera2.php">I-275 at I-75</a></TD></TR>
168
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
169
+ <a href="/camera/camera101.php">I-275 at Mosteller Rd.</a></TD></TR>
170
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
171
+ <a href="/camera/camera1.php">I-275 at U.S. 42</a></TD></TR>
172
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
173
+ <a href="/camera/camera39.php">I-275 at Reed Hartman Highway</a></TD></TR>
174
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
175
+ <a href="/camera/camera41.php">I-275 at I-71</a></TD></TR>
176
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
177
+ <a href="/camera/camera38.php">I-275 at Montgomery Rd.</a></TD></TR>
178
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
179
+ <a href="/camera/camera107.php">I-275 North of Wards Corner Rd.</a></TD></TR>
180
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
181
+ <a href="/camera/camera105.php">I-275 at S. R. 131</a></TD></TR>
182
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
183
+ <a href="/camera/camera109.php">I-275 at S. R. 32</a></TD></TR>
184
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
185
+ <a href="/camera/camera110.php">I-275 at Kellogg Ave.</a></TD></TR>
186
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
187
+ </TD></TR>
188
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
189
+ <a href="/camera/camera92.php">I-71 at Kings Mills Rd.</a></TD></TR>
190
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
191
+ <a href="/camera/camera96.php">I-71 at Mason-Montgomery Rd.</a></TD></TR>
192
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
193
+ <a href="/camera/camera41.php">I-71 at I-275</a></TD></TR>
194
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
195
+ <a href="/camera/camera71.php">I-71 at Deerfield Rd.</a></TD></TR>
196
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
197
+ <a href="/camera/camera72.php">I-71 at Pfeiffer Rd.</a></TD></TR>
198
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
199
+ <a href="/camera/camera73.php">I-71 at Ronald Reagan Hwy (SR 126)</a></TD></TR>
200
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
201
+ <a href="/camera/camera74.php">I-71 at Montgomery Rd. (Kenwood)</a></TD></TR>
202
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
203
+ <a href="/camera/camera75.php">I-71 at Euclid Ave.</a></TD></TR>
204
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
205
+ <a href="/camera/camera76.php">I-71 just North of Stewart</a></TD></TR>
206
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
207
+ <a href="/camera/camera77.php">I-71 at Red Bank Rd.</a></TD></TR>
208
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
209
+ <a href="/camera/camera78.php">I-71 at Kennedy</a></TD></TR>
210
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
211
+ <a href="/camera/camera79.php">I-71 at S.R. 562 (Norwood Lateral)</a></TD></TR>
212
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
213
+ <a href="/camera/camera80.php">I-71 at Robertson</a></TD></TR>
214
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
215
+ <a href="/camera/camera81.php">I-71 at Smith Rd.</a></TD></TR>
216
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
217
+ <a href="/camera/camera82.php">I-71 at Dana Ave.</a></TD></TR>
218
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
219
+ <a href="/camera/camera83.php">I-71 at Montgomery Rd. (Cinti)</a></TD></TR>
220
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
221
+ <a href="/camera/camera84.php">I-71 over Victory Parkway</a></TD></TR>
222
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
223
+ <a href="/camera/camera85.php">I-71 at Martin Luther King Jr. Dr.</a></TD></TR>
224
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
225
+ <a href="/camera/camera86.php">I-71 at William Howard Taft</a></TD></TR>
226
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
227
+ <a href="/camera/camera87.php">I-71 at McGregor</a></TD></TR>
228
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
229
+ <a href="/camera/camera36.php">I-71 at Elsinore</a></TD></TR>
230
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
231
+ <a href="/camera/camera37.php">I-71 at I-471</a></TD></TR>
232
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
233
+ <a href="/camera/camera43.php">I-71 East Tunnel, North End</a></TD></TR>
234
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
235
+ <a href="/camera/camera44.php">I-71 Center Tunnel, North End</a></TD></TR>
236
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
237
+ <a href="/camera/camera45.php">I-71 West Tunnel, North End</a></TD></TR>
238
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
239
+ <a href="/camera/camera46.php">I-71 West Tunnel, South End</a></TD></TR>
240
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
241
+ <a href="/camera/camera47.php">I-71 Center Tunnel, South End</a></TD></TR>
242
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
243
+ <a href="/camera/camera48.php">I-71 East Tunnel, South End</a></TD></TR>
244
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
245
+ <a href="/camera/camera42.php">I-71 at US 50</a></TD></TR>
246
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
247
+ <a href="/camera/camera100.php">I-71 in Downtown Cincinnati</a></TD></TR>
248
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
249
+ <a href="/camera/camera35.php">I-71 at I-75</a></TD></TR>
250
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
251
+ </TD></TR>
252
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
253
+ <a href="/camera/camera90.php">I-74 at Montana Ave.</a></TD></TR>
254
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
255
+ <a href="/camera/camera49.php">I-74 at I-75</a></TD></TR>
256
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
257
+ </TD></TR>
258
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
259
+ <a href="/camera/camera70.php">I-75 just South of SR 129</a></TD></TR>
260
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
261
+ <a href="/camera/camera69.php">I-75 at Tylersville Rd.</a></TD></TR>
262
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
263
+ <a href="/camera/camera68.php">I-75 at Cincinnati-Dayton Rd.</a></TD></TR>
264
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
265
+ <a href="/camera/camera67.php">I-75 just North of Union Centre Blvd.</a></TD></TR>
266
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
267
+ <a href="/camera/camera66.php">I-75 at Allen Rd.</a></TD></TR>
268
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
269
+ <a href="/camera/camera2.php">I-75 at I-275</a></TD></TR>
270
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
271
+ <a href="/camera/camera4.php">I-75 at Sharon Rd.</a></TD></TR>
272
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
273
+ <a href="/camera/camera104.php">I-75 at Glendale-Milford</a></TD></TR>
274
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
275
+ <a href="/camera/camera5.php">I-75 at Neumann Way</a></TD></TR>
276
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
277
+ <a href="/camera/camera6.php">I-75 at Lockland Split</a></TD></TR>
278
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
279
+ <a href="/camera/camera7.php">I-75 at Davis St. in Lockland.</a></TD></TR>
280
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
281
+ <a href="/camera/camera8.php">I-75 at Galbraith Rd. in Arlington Heights</a></TD></TR>
282
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
283
+ <a href="/camera/camera9.php">I-75 at Ronald Reagan Hwy (SR 126)</a></TD></TR>
284
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
285
+ <a href="/camera/camera10.php">I-75 at Paddock Rd.</a></TD></TR>
286
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
287
+ <a href="/camera/camera11.php">I-75 at Towne St.</a></TD></TR>
288
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
289
+ <a href="/camera/camera12.php">I-75 at S.R. 562 (Norwood Lateral)</a></TD></TR>
290
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
291
+ <a href="/camera/camera13.php">I-75 at Vine St. in St. Bernard</a></TD></TR>
292
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
293
+ <a href="/camera/camera14.php">I-75 just North of Mitchell Ave.</a></TD></TR>
294
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
295
+ <a href="/camera/camera15.php">I-75 at Mitchell Ave.</a></TD></TR>
296
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
297
+ <a href="/camera/camera16.php">I-75 at Ludlow Viaduct</a></TD></TR>
298
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
299
+ <a href="/camera/camera49.php">I-75 at I-74</a></TD></TR>
300
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
301
+ <a href="/camera/camera93.php">I-75 South of I-74</a></TD></TR>
302
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
303
+ <a href="/camera/camera18.php">I-75 at Hopple St.</a></TD></TR>
304
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
305
+ <a href="/camera/camera19.php">I-75 at Western Hills Viaduct</a></TD></TR>
306
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
307
+ <a href="/camera/camera20.php">I-75 at Ezzard Charles Dr.</a></TD></TR>
308
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
309
+ <a href="/camera/camera91.php">I-75 at Linn St.</a></TD></TR>
310
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
311
+ <a href="/camera/camera21.php">I-75 at Sixth St. in Cincinnati</a></TD></TR>
312
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
313
+ <a href="/camera/camera22.php">I-75 at the Ohio River</a></TD></TR>
314
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
315
+ <a href="/camera/camera35.php">I-75 at I-71</a></TD></TR>
316
+ <TR><TD WIDTH=30></TD></TR>
317
+ </TABLE>
318
+ <BR>
319
+ <TABLE WIDTH=405 CELLSPACING=0 CELLPADDING=0 BORDER=0>
320
+ <TR><TD>&nbsp;</TD><TD ALIGN=LEFT><FONT FACE=ARIAL><B>Kentucky:</B></FONT></TD></TR>
321
+ <TR><TD WIDTH=30></TD></TR>
322
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
323
+ <a href="/camera/camera132.php">I-275 on US 27 Bridge</a></TD></TR>
324
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
325
+ <a href="/camera/camera131.php">I-275 at I-471</a></TD></TR>
326
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
327
+ <a href="/camera/camera130.php">I-275 at KY 16 (Taylor Mill)</a></TD></TR>
328
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
329
+ <a href="/camera/camera129.php">I-275 South of Dixie Highway (Taylor Mill)</a></TD></TR>
330
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
331
+ <a href="/camera/camera30.php">I-275 at I-71/I-75</a></TD></TR>
332
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
333
+ <a href="/camera/camera51.php">I-275 at Mineola Pike.</a></TD></TR>
334
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
335
+ <a href="/camera/camera52.php">I-275 approaching KY 20/Airport</a></TD></TR>
336
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
337
+ <a href="/camera/camera53.php">I-275 West of Airport</a></TD></TR>
338
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
339
+ <a href="/camera/camera54.php">I-275 between KY 20 & KY 237</a></TD></TR>
340
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
341
+ <a href="/camera/camera55.php">I-275 at KY 237</a></TD></TR>
342
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
343
+ <a href="/camera/camera56.php">I-275 at between Hebron & Petersburg</a></TD></TR>
344
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
345
+ <a href="/camera/camera57.php">I-275 at Petersburg Exit</a></TD></TR>
346
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
347
+ <a href="/camera/camera58.php">I-275 at between Petersburg & Indiana Line</a></TD></TR>
348
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
349
+ </TD></TR>
350
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
351
+ <a href="/camera/camera37.php">I-471 at I-71</a></TD></TR>
352
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
353
+ <a href="/camera/camera103.php">I-471 at Grand Ave.</a></TD></TR>
354
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
355
+ </TD></TR>
356
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
357
+ <a href="/camera/camera23.php">I-71/I-75 on lower deck of Brent Spence Bridge</a></TD></TR>
358
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
359
+ <a href="/camera/camera24.php">I-71/I-75 at 12th St. in Covington</a></TD></TR>
360
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
361
+ <a href="/camera/camera25.php">I-71/I-75 at Cut-in-the-hill</a></TD></TR>
362
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
363
+ <a href="/camera/camera26.php">I-71/I-75 at Kyles Lane</a></TD></TR>
364
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
365
+ <a href="/camera/camera27.php">I-71/I-75 at Dixie Highway</a></TD></TR>
366
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
367
+ <a href="/camera/camera28.php">I-71/I-75 just North of Buttermilk Pike</a></TD></TR>
368
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
369
+ <a href="/camera/camera29.php">I-71/I-75 at Buttermilk Pike</a></TD></TR>
370
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
371
+ <a href="/camera/camera30.php">I-71/I-75 at I-275</a></TD></TR>
372
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
373
+ <a href="/camera/camera31.php">I-71/I-75 at Donaldson Rd.</a></TD></TR>
374
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
375
+ <a href="/camera/camera32.php">I-71/I-75 at Turfway Rd.</a></TD></TR>
376
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
377
+ <a href="/camera/camera33.php">I-71/I-75 at Burlington Pike</a></TD></TR>
378
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
379
+ <a href="/camera/camera34.php">I-71/I-75 at U.S. 42</a></TD></TR>
380
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
381
+ <a href="/camera/camera59.php">I-71/I-75 at Mt. Zion Rd.</a></TD></TR>
382
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
383
+ <a href="/camera/camera60.php">I-71/I-75 just North of the Richwood Exit</a></TD></TR>
384
+ <TR><TD WIDTH=30 HEIGHT=20><SPACER TYPE=horizontal SIZE=30></TD><TD ALIGN=LEFT WIDTH=375>
385
+ <a href="/camera/camera61.php">I-71/I-75 Split</a></TD></TR>
386
+ <TR><TD WIDTH=30></TD></TR>
387
+ </TABLE>
388
+ <BR><BR>
389
+
390
+ </TD></TR>
391
+ <TR><TD WIDTH=75 ALIGN=LEFT VALIGN=BOTTOM BGCOLOR=ccccff><IMG SRC=/images/bleft.gif></TD><TD WIDTH=75 ALIGN=RIGHT VALIGN=BOTTOM BGCOLOR=ccccff><IMG SRC=/images/bright.gif></TD><TD WIDTH=480 ALIGN=CENTER><BR><A HREF=/copyright.php><FONT COLOR=959595 SIZE=-2 FACE=ARIAL>Copyright &copy; 1997-2008 ARTIMIS</FONT></A></TD></TR>
392
+
393
+ </TABLE>
394
+
395
+ </body>
396
+ </html>
@@ -0,0 +1,26 @@
1
+ require 'bundler/setup'
2
+ require 'minitest/spec'
3
+ require 'turn'
4
+ require 'artimis'
5
+ require 'webmock'
6
+ include WebMock::API
7
+
8
+ # Fetch a page with:
9
+ # `curl -is www.example.com > /tmp/example_curl_-is_output.txt`
10
+
11
+ class MiniTest::Unit::TestCase
12
+ def setup
13
+ stub_camera_list
14
+ stub_camera
15
+ end
16
+
17
+ def stub_camera_list
18
+ all_cameras = File.new('test/fixtures/cameraselect.txt')
19
+ stub_request(:get, "http://www.artimis.org/cameraselect.php").to_return(all_cameras)
20
+ end
21
+
22
+ def stub_camera(id = 99)
23
+ single_camera = File.new("test/fixtures/camera#{id}.txt")
24
+ stub_request(:get, %r|http://www.artimis.org/camera/camera\d{1,3}.php|).to_return(single_camera)
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: artimis
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Chris Moore
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-07-01 00:00:00.000000000 -04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: mechanize
17
+ requirement: &2152957740 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *2152957740
26
+ description: A DSL for scraping the ARTIMIS website.
27
+ email:
28
+ - chris@26webs.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - .gitignore
34
+ - .rvmrc
35
+ - Gemfile
36
+ - Rakefile
37
+ - artimis.gemspec
38
+ - lib/artimis.rb
39
+ - lib/artimis/camera.rb
40
+ - test/camera_test.rb
41
+ - test/fixtures/camera99.txt
42
+ - test/fixtures/cameraselect.txt
43
+ - test/helper.rb
44
+ has_rdoc: true
45
+ homepage: http://github.com/cdmwebs/artimis
46
+ licenses: []
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ requirements: []
64
+ rubyforge_project: artimis
65
+ rubygems_version: 1.6.2
66
+ signing_key:
67
+ specification_version: 3
68
+ summary: A DSL for scraping the ARTIMIS website.
69
+ test_files:
70
+ - test/camera_test.rb
71
+ - test/fixtures/camera99.txt
72
+ - test/fixtures/cameraselect.txt
73
+ - test/helper.rb