проверка погоды с помощью sys.argv - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь создать инструмент поиска погоды, используя sys.argv, и мне нужна помощь. У меня есть текущий код

Проблема в том, что при поиске с использованием командной строки мне нужно ввести страну. Есть ли способ сделать это, ища только город ?:

#! /usr/bin/env python3
import webbrowser
import sys
import pyperclip
import re

if len(sys.argv) > 1:
    #Get address from command line.
    address = ' '.join(sys.argv[1:])
else:
    address = pyperclip.paste()


webbrowser.open('https://www.timeanddate.com/weather/' + address)

командная строка:

./weather.py spain/madrid
./weather.py uk/london

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Как уже упоминалось, вероятно, есть несколько пакетов, которые справятся с задачей, и, вероятно, ни один из них не будет работать для определенных названий городов. Тем не менее, geonamescache очень прост в использовании и поможет добиться уникальных имен. Вот пример (вернет «Канада» для «Торонто» в качестве ввода)

pip install geonamescache
import geonamescache as gnc
gc = gnc.GeonamesCache()
query = 'Toronto'
citykey = list(gc.get_cities_by_name(query)[0])[0]
ccode = gc.get_cities_by_name(query)[0][citykey]['countrycode']
countries = gc.get_countries()
country_name = countries[ccode]['name']
print(country_name)
0 голосов
/ 08 января 2020

1-) Зарегистрируйте geonames для использования API

  • Создайте новую учетную запись пользователя https://www.geonames.org/login
  • Активируйте свою учетную запись из почты
  • На перенаправленной странице после нажатия на ссылку активации активируйте веб-сервисы

2-) Установите геокодер

pip install geocoder

3-) Используйте API

import geocoder
g = geocoder.geonames('madrid', key='YOURUSERNAMEHERE')
...

webbrowser.open('https://www.timeanddate.com/weather/' + g.country + address)

Как упомянул @Kalma, g.country возвращает 'United Kingdom' вместо 'UK'. Возможно, вам потребуется сопоставить эти значения с теми, которые принимает timeanddate.com.

...