[SOLUTION] Current Temperature (#68)

S

semmons99

# Author: Shane Emmons
#
# Allows retrieval of current temperature information. Pretty simple
# and straight forward. Uses match to extract data from the xml
document
# that is returned. Sorry about the long lines, but I like putting as
# much code in one line as possible.
#
# usage: ruby current_temp.rb [zipcode|other]
#
# zipcode: US zipcode
# other: country code information. example: SPXX0050 for Madrid,
Spain

require 'net/http'

begin
weather_info = Net::HTTP.get( "xml.weather.yahoo.com",
"/forecastrss?p=".concat( ARGV[ 0 ] ) )
print "The temperature in ", weather_info.match( /Yahoo! Weather
for (.*)</ )[ 1 ], " is ", weather_info.match(
/<yweather:condition.*temp="(\d+)"/ )[ 1 ], " degrees ",
weather_info.match( /<yweather:units temperature="(.)"/ )[ 1 ], ".\n"
rescue
print "Information for ", ARGV[ 0 ], " was not found or
unavailable."
end
 
J

James Edward Gray II

Sorry about the long lines, but I like putting as much code in one
line as possible.

Repeat after me:

"Horizontal scrolling is bad... Horizontal scrolling is bad...
Horizontal scrolling is bad..."

:D

Seriously, thanks you for the submission.

James Edward Gray II
 
S

semmons99

# Author: Shane Emmons
#
# Allows retrieval of current temperature information. Pretty simple
# and straight forward. Uses match to extract data from the xml
# document that is returned. Adjusted for easier horizontal reading.
;-)
#
# usage: ruby current_temp.rb [zipcode|other]
#
# zipcode: US zipcode
# other: country code information.
# example: SPXX0050 for Madrid, Spain

require 'net/http'

ARGV[ 0 ] = '48601'

begin
info = Net::HTTP.get(
"xml.weather.yahoo.com", "/forecastrss?p=".concat( ARGV[ 0 ] )
)

location = info.match( /Yahoo! Weather for (.*)</ )[ 1 ]
temperature = info.match( /<yweather:condition.*temp="(\d+)"/ )[ 1
]
measured_in = info.match( /<yweather:units temperature="(.)"/ )[ 1
]

print "The temperature in ",
location, " is ", temperature, " degrees ", measured_in, ".\n"
rescue
print "Information for #{ ARGV[ 0 ] } was not found or
unavailable.\n"
end
 
S

semmons99

** Sorry had my test code still in there for my location

# Author: Shane Emmons
#
# Allows retrieval of current temperature information. Pretty simple
# and straight forward. Uses match to extract data from the xml
# document that is returned. Adjusted for easier horizontal reading.
;-)
#
# usage: ruby current_temp.rb [zipcode|other]
#
# zipcode: US zipcode
# other: country code information.
# example: SPXX0050 for Madrid, Spain

require 'net/http'

begin
info = Net::HTTP.get(
"xml.weather.yahoo.com", "/forecastrss?p=".concat( ARGV[ 0 ] )
)

location = info.match( /Yahoo! Weather for (.*)</ )[ 1 ]
temperature = info.match( /<yweather:condition.*temp="(\d+)"/ )[ 1
]
measured_in = info.match( /<yweather:units temperature="(.)"/ )[ 1
]

print "The temperature in ",
location, " is ", temperature, " degrees ", measured_in, ".\n"
rescue
print "Information for #{ ARGV[ 0 ] } was not found or
unavailable.\n"
end
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,046
Latest member
Gavizuho

Latest Threads

Top