پروژه اطلاع رسانی زمان طلوع و غروب آفتاب با استفاده از پایتون، Flask و SQLite - Blog Post (قسمت 2)
چهارشنبه, 17 آبان 1396
در قسمت اول کلیات رو بررسی کردیم. در این قسمت کدها رو بررسی میکنیم. فالیهای پروژه رو میتونید از قسمت دانلود بگیرید. پروژه رو من با PyCharm ایجاد کردم ولی طبیعتا الزامی به استفاده از اون نیست. با هر محیطی که معمولا کار میکنید میتونید ابنجا هم کار کنید.
پروژه کلا از سه تا فایل پایتون تشکیل شده:
- py که فایل اصلی هست و route های flask اونجا تعریف شده
- py که کارهای مربوط به مختصات ها رو انجام میده و کارهای دیتابیسی هم اینجاست
- py هم اتصال به سایت sunrise-sunset.org رو انجام میده
برنامه رو می تونید به دو صورت فراخونی کنید:
http://[server address]/[city name]
http://[server address]/cities
که اولی اسم شهر رو میگیره اطلاعات امروز اون شهر رو نمایش میده و دومی هم لیست تمام شهرها رو از دیتایس میخونه و نمایش میده تا کاربر بفهمه چه شهرهایی ساپورت میشن.
نکته دیگه ای که هست تابع _nomalize_geolocation توی geolocation.py هست. اطلاعاتی که از Wikipedia گرفتم متخصاتها رو به فرمت 8°07′S نشون میده (این مثال یعنی 8 درجه و 7 دقیقه جنوبی). این رو باید به فرمت اعشاری به api ها داد (این مثال میشه 8.116666).
در فایل sunrise_sunset_api.py یک تابع داریم به نام _utc_to_local که یک زمان برحسب utc و نام یک منطقه زمانی میگیره (مثلا Asia/Tehran) و زمان ورودی رو به زمان محلی اون منطقه زمانی تبدیل می کنه. برای به دست آوردن نام منطقه زمانی از روی مختصات جغرافیایی از ماجول timezonefinder استفاده کردم که باید جداگانه نصب بشه. روش استفاده از اون هم ساده هست:
tz_name = timezonefinder.TimezoneFinder().timezone_at(lat=lat, lng=lng)
برای ارتباط با برنامه، در فایل main.py دو تا route برای flask تعریف شده که با فراخوانیشون اطلاعات رو میگرین و html درست میکنن و میفرستند برای کلاینت. html ها هم خیلی ساده هستند.
دیگه فکر نکنم نیازی به توضیح اضافه باشه. خوش باشید