معرفة توقعات الطقس بإستخدام الـ Yahoo APIs

29 يوليه 2016     639 مشاهدة    0 تعليق
تم النشر في #ASP.NET  #APIs  #YQL 

تعتبر شركة ياهو من أكبر الشركات المعروفة لدى الجميع, وغالباً ما يذكر المستخدمون هذه الشركه, عند ذكر البريد الإلكتروني. فتعتبر خدمة البريد الإلكتروني هي إحدى الخدمات التي توفرها هذه الشركه, اليوم سوف نتعرف على كيفية التعرف على توقعات الطقس من قبل خدمة Yahoo Waether.

هناك الكثير من التطبيقات أو المواقع الإلكترونية التي تحتاج لعرض توقعات الطقس لمدينة معينة, مثال على ذلك مواقع الأحوال الجوية, الأخبار .. إلخ. اليوم سنحاول إستعراض كيفية التعرف على توقعات الطقس لمدينة معينة وذلك بإستخدام خدمة ياهو للطقس.

تقدم شركة ياهو Web Service خاصة للحصول على معلومات الطقس وذلك من خلال YQL وهي لغة الإستعلام الخاصة بشركة ياهو للإستعلام على طقس مدينة معينة. وتوفر هذه الخدمة البيانات على شكل JSON و XML.

سنقوم في مثالنا بالتعرف على توقعات الطقس لمدينة المكلا - اليمن, بالطبع يمكن تطبيق المثال بمدينتك أو مدينة يتم إختيارها من قائمه منسدلة من موقعك الخاص. فبعد البحث عن المدينة المعنية سيكون لها رابط مثل https://www.yahoo.com/news/weather/country/state/city-1958973/ وتساعدنا النتيجة المعروضه في الرابط من التحقق من البيانات التي سيتم جلبها وعرضها في البرنامج.

لنلقي نظرة على الإستعلام التالي
select * from weather.forecast where woeid in (select woeid from geo.places(1) where text="mukalla")
فقد تم وضع المدينة المراد إيجاد توقعات الطقس تبعها في الإستعلام أعلاه, طبعاً تخيلوا أن الإستعلام بـ YQL شبيه نوعأ ما بالـ SQL. بعدها سنقوم بإستخدام الشيفرة المصدرية التالية لجلب معلومات الطقس للمدينة المختارة على النحو التالي:

Private Sub _Default_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim city As String = "mukalla"
Dim url As String = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text=%22" & city & "%22)&format=xml"
Dim doc As XDocument = XDocument.Load(url)
rptForecast.DataSource = doc...<yweather:forecast>
rptForecast.DataBind()
End Sub

وبالنسبة لأداة العرض Repeater يمكننا إستخدام التالي:

<asp:Repeater ID="rptForecast" runat="server">
<HeaderTemplate>
<table>
<thead>
<tr>
<th>Day</th>
<th>High</th>
<th>Low</th>
</tr>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#CType(Container.DataItem, XElement).Attribute("day").Value%></td>
<td><%#CType(Container.DataItem, XElement).Attribute("high").Value%></td>
<td><%#CType(Container.DataItem, XElement).Attribute("low").Value%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>

فنلاحظ من الشيفرة أعلاة أنه سيتم عرض اليوم, درجة الحرارة الكبرى والصغرى, طبعاً الدرجة بالفهرنهايت, فيمكننا بالدالة التالية تحويلها إلى درجة مئوية

Public Function FarenheitToCelcius(ByVal f As Integer) As Integer
Dim c As Integer = 5.0 / 9.0 * (f - 32)
Return c
End Function

و لعرض صور مخصصه بأحوال الطقس أنصح بزيارة هذا الرابط.

في الختام فأنت كمطور يمكنك التعرف على الكثير على خدمة الطقس المقدمة من ياهو من خلال الرابط.

تويتر فيسبوك قوقل + لينكد إن


اكتب تعليقك