google weather api not working

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • gamer2d
    New Member
    • Jul 2014
    • 10

    #1

    google weather api not working

    I need some help created a google weather api using vb .net.

    I found the code online and there are no errors. Problem is that I can't seem to display wether information. Nothing shows up on screen and I am not sure what I did wrong. any ideas?



    Code:
    Imports System.Net
    
    Partial Class UI_MasterPage
        Inherits System.Web.UI.MasterPage
    
    
        Protected Sub SearchIB_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles SearchIB.Click
            Dim WeatherData As New Weather.WeatherInfo_Typed
            WeatherData = Weather.Grab_Weather("albany")
            temp.InnerHtml &= WeatherData.location & "--" & WeatherData.forcast_date & "--" & WeatherData.checked_time_date & "--" & WeatherData.humidity & "--" & WeatherData.forcast_date 
        End Sub
    End Class
    
    
    <Runtime.CompilerServices.Extension()>
    Module Weather
    
        Public Structure WeatherInfo_Forecast
            Dim DayOfWeek As String
            Dim low As Double
            Dim high As Double
            Dim icon As String
        End Structure
    
        Public Structure WeatherInfo_Wind
            Dim direction As String
            Dim speed As Double
            Dim unit As String
        End Structure
    
        Public Structure WeatherInfo_Typed
            Dim Failed As Boolean
            Dim errormessage As Exception
            Dim location As String
            Dim forcast_date As DateTime
            Dim checked_time_date As DateTime
            Dim humidity As Double
            Dim highf As Double
            Dim lowf As Double
            Dim highc As Double
            Dim lowc As Double
            Dim currenttempC As Double
            Dim currenttempF As Double
            Dim predicted_icon As String
            Dim current_icon As String
            Dim current_condition As String
            Dim predicted_condition As IEnumerable(Of WeatherInfo_Forecast)
            Dim wind_condition As WeatherInfo_Wind
            Dim day As String
        End Structure
    
        <Runtime.CompilerServices.Extension()> _
        Public Function ToC(ByVal F As Double) As Double
            Return ((F - 32) / 9) * 5
        End Function
    
        <Runtime.CompilerServices.Extension()> _
        Public Function TryParseAsDouble(ByVal s As String) As Double
            Dim rv As Double
            If Double.TryParse(s, rv) = False Then rv = Double.NaN
            Return rv
        End Function
    
        <Runtime.CompilerServices.Extension()> _
        Public Function TryParseAsDate(ByVal s As String) As DateTime
            Dim rv As DateTime
            If DateTime.TryParse(s, rv) = False Then rv = Nothing
            Return rv
        End Function
    
        Private Function ParseHumidity(ByVal s As String) As Double
            If Not s Is Nothing Then
                Dim humRegEx As New System.Text.RegularExpressions.Regex("Humidity: (?<Value>\d+)\w*\%")
                Dim m = humRegEx.Match(s)
                If m.Length = 0 Then Return Double.NaN
                Return Double.Parse(m.Groups("Value").Value)
            End If
        End Function
    
        Private Function ParseWind(ByVal s As String) As WeatherInfo_Wind
            Dim rv As New WeatherInfo_Wind
            If Not s Is Nothing Then
                Dim humRegEx As New System.Text.RegularExpressions.Regex("Wind\:\s+(?<Direction>[NEWSnews]{1,2})\s+at\s+(?<speed>(?<value>\d+)\s(?<units>\w+)){1}")
                Dim m = humRegEx.Match(s)
                rv.speed = Double.NaN
                If m.Length = 0 Then Return rv
                With rv
                    .direction = m.Groups("Direction").Value
                    If Double.TryParse(m.Groups("value").Value, .speed) = False Then .speed = Double.NaN
                    .unit = m.Groups("units").Value
                End With
            End If
            Return rv
        End Function
    
    
        Public Function Grab_Weather(ByVal Location As String) As WeatherInfo_Typed
            Dim GrabWeather As New WeatherInfo_Typed
            With GrabWeather
                .Failed = True
                Try
                    Dim xml As XDocument = XDocument.Load("http://www.google.com/ig/api?weather=" & Location)
                    Dim xp = xml.<problem_cause>
                    If xp.Any Then Return GrabWeather
                    .location = xml...<city>.@data
                    .forcast_date = xml...<forecast_date>.@data.TryParseAsDate
                    .checked_time_date = xml...<current_date_time>.@data.TryParseAsDate
                    .humidity = ParseHumidity(xml...<humidity>.@data)
                    .highf = xml...<high>.@data.TryParseAsDouble
                    .lowf = xml...<low>.@data.TryParseAsDouble
                    .highc = GrabWeather.highf.ToC
                    .lowc = GrabWeather.highc.ToC
                    .currenttempC = xml...<temp_c>.@data.TryParseAsDouble
                    .currenttempF = xml...<temp_f>.@data.TryParseAsDouble
                    '.current_icon = "http://www.google.com" & xml...<icon>.@data
                    '.predicted_icon = "http://www.google.com" & xml...<high>.@data
                    .current_condition = xml...<condition>.@data
                    .predicted_condition = From f In xml...<forecast_conditions> _
                                        Select New WeatherInfo_Forecast With { _
                                          .DayOfWeek = f.<day_of_week>.Value, _
                                          .high = f.<high>.@data.TryParseAsDouble, _
                                          .low = f.<low>.@data.TryParseAsDouble}
                    '.icon = "http://www.google.com" & f.<icon>.@data}
                    .wind_condition = ParseWind(xml...<wind_condition>.@data)
                    .day = xml...<day_of_week>.@data
                    .Failed = False
    
                    Return GrabWeather
                Catch ex As Exception
                    .errormessage = ex
    
                    Return GrabWeather
                End Try
            End With
        End Function
    End Module
Working...