Geoclueデモエージェントが良いか悪いかを判断するコマンドや方法はありますか?

Geoclueデモエージェントが良いか悪いかを判断するコマンドや方法はありますか?

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=j1URLの末尾に追加すると

https://wttr.in/{},{}?format=j1

その後、再インポートしてJSON変換し、データ型を異なる方法で指定できdictionaryますpython


テスト対象Linix Mint 20Python 3.8、、、Python 2.7


ちなみに:

wttr.inプログラムが必要なようです。行きましょう端末で実行されます。


場所を識別するために他の方法を使用しているようですが、私の場合は場所を識別するためにgeoclue使用できます。ただし、24時間ごとに変更できます。これはユーザーが別の場所で使用できるため、時には間違った場所を提供します。この時点で、自宅から約30km離れた場所を知らせ、天気も変わりました。IPInternet ProviderIPIPwttr.in


一部のWebサーバーは次のものを使用します。MaxMindのGeoIP場所に変換しますが、ユーザーが数時間ごとに場所を変更するIPと、同じ問題が発生します。IPHTTPリクエストを介して利用可能であるか、情報を含むデータベースをダウンロードしてローカルで使用できることを覚えています(たまにデータベースを更新する必要があります)。

関連情報