artimis 0.1.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.
@@ -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