Debianの起動アプリケーション(そしておそらく他のDebianとUbuntuベースのディストリビューション)には、Geoclue Demoエージェントと呼ばれるライブラリがあり、実際のライブラリパスは次のとおりです。
/usr/libexec/geoclue-2.0/demos/agent
これはgeoclue-2.0の一部です。 https://gitlab.freedesktop.org/geoclue/geoclue/wikis/home。
これまで私が知っている唯一の問題は、アプリ/サービスを削除することです。問題を見る~からunix.stackexchange.com 。
それが何を示しているのか、どのように見せているのか理解できれば、もっと興味深いでしょう。 man geoclueのマニュアルページは、一般ユーザーのためのものではありません。
誰でも私を助けることができますか?いくつかの簡単な線を見て、curl wttr.in/$location
その場所の天気出力を得ることができます。一部は相互作用的であり、おそらくそうです。ただ方法を調べるだけです。
答え1
Stackoverflowで質問を見つけました。PythonでGeoclueの位置情報を取得するには?
モジュールを取り付けた後に使用できます。GeoGlue
apt install gir1.2-geoclue-2.0
スクリプトを作成しました。Geolocation.py存在するpython
#!/usr/bin/env python
import gi
gi.require_version('Geoclue', '2.0')
from gi.repository import Geoclue
clue = Geoclue.Simple.new_sync('something', Geoclue.AccuracyLevel.NEIGHBORHOOD, None)
location = clue.get_location()
latitude = location.get_property('latitude')
longitude = location.get_property('longitude')
print('{},{}'.format(latitude, longitude))
これはlatitude,longtiture
あきらめるbash
python getlocation.py
自分で使えますwttr.in
curl wttr.in/$(python getlocation.py)
プロパティを設定するとexecutable
chmod u+x geolocation.py
まあ、なしで実行することができます。 ()の値をpython
使用してください。shebang
#!/usr/bin/env python
拡張子を削除し.py
て名前を保持することもできますgeolocation
。それでは、次のようになります。
curl wttr.in/$(getlocation)
$( )
(別々のプロセスで実行する必要があります)
python
以下を使用してサーバーから直接値を取得することもできます。
#!/usr/bin/env python
import gi
gi.require_version('Geoclue', '2.0')
from gi.repository import Geoclue
clue = Geoclue.Simple.new_sync('something', Geoclue.AccuracyLevel.NEIGHBORHOOD, None)
location = clue.get_location()
latitude = location.get_property('latitude')
longitude = location.get_property('longitude')
#print('latitude :', latitude)
#print('longitude:', longitude)
import requests
url = 'https://wttr.in/{},{}'.format(latitude, longitude)
# to get it as HTML instead of TEXT (see PLAIN_TEXT_AGENTS in https://github.com/chubin/wttr.in/blob/master/lib/globals.py#L75)
#response = requests.get(url, headers={'User-Agent': ''}) #{'User-Agent': 'Mozilla/5.0'}
response = requests.get(url)
print(response.text)
?format=j1
URLの末尾に追加すると
https://wttr.in/{},{}?format=j1
その後、再インポートしてJSON
変換し、データ型を異なる方法で指定できdictionary
ますpython
。
テスト対象Linix Mint 20
:Python 3.8
、、、Python 2.7
ちなみに:
wttr.in
プログラムが必要なようです。行きましょう端末で実行されます。
場所を識別するために他の方法を使用しているようですが、私の場合は場所を識別するためにgeoclue
使用できます。ただし、24時間ごとに変更できます。これはユーザーが別の場所で使用できるため、時には間違った場所を提供します。この時点で、自宅から約30km離れた場所を知らせ、天気も変わりました。IP
Internet Provider
IP
IP
wttr.in
一部のWebサーバーは次のものを使用します。MaxMindのGeoIP場所に変換しますが、ユーザーが数時間ごとに場所を変更するIP
と、同じ問題が発生します。IP
HTTPリクエストを介して利用可能であるか、情報を含むデータベースをダウンロードしてローカルで使用できることを覚えています(たまにデータベースを更新する必要があります)。