首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有命令或方法来发现Geo线索演示代理有多好或有多坏?

是否有命令或方法来发现Geo线索演示代理有多好或有多坏?
EN

Unix & Linux用户
提问于 2020-04-17 14:23:26
回答 1查看 2.4K关注 0票数 3

在Debian中的启动应用程序中(可能还有其他基于debian和ubuntu的发行版)。有一个名为Geo线索演示代理的库,具有路径的实际库是

代码语言:javascript
复制
/usr/libexec/geoclue-2.0/demos/agent

这是地理线索-2.0 https://gitlab.freedesktop.org/geoclue/geoclue/wikis/home的一部分。

到目前为止,我所知道的唯一问题是删除应用程序/服务。参见从… unix.stackexchange.com的问题。

我会发现它更有趣,如果我能够理解它显示了什么和它如何显示它。这篇关于人类地理线索的文章并不是针对普通用户的。

有人能帮我吗?我正在查看一些简单的线路,比如curl wttr.in/$location,您可以得到该位置的天气输出。一些互动的东西--很可能是,--只需要弄清楚怎么做。

EN

回答 1

Unix & Linux用户

发布于 2021-04-08 13:11:42

关于堆栈溢出,我发现了问题:我如何在Python中获得地理线索地理位置?

安装模块后使用GeoGlue

代码语言:javascript
复制
apt install gir1.2-geoclue-2.0

我在python中创建了脚本geolocation.py

代码语言:javascript
复制
#!/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,longtiturebash中的应用

代码语言:javascript
复制
python getlocation.py

我可以直接和wttr.in一起使用

代码语言:javascript
复制
curl wttr.in/$(python getlocation.py)

如果设置属性executable

代码语言:javascript
复制
chmod u+x geolocation.py

然后我甚至可以在没有python的情况下运行它-它将使用来自shebang (#!/usr/bin/env python)的值。

我甚至可以删除扩展.py并保留名称geolocation,然后它看起来就像

代码语言:javascript
复制
curl wttr.in/$(getlocation)

(它必须在$( )中才能作为分离的进程执行)

我还可以直接使用python从服务器获取值。

代码语言:javascript
复制
#!/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)

如果我在url末尾添加?format=j1

代码语言:javascript
复制
https://wttr.in/{},{}?format=j1

然后,我将它作为JSON,可以在python中转换为dictionary,并以不同的方式格式化数据。

Linix Mint 20Python 3.8Python 2.7上测试

By方式:

wttr.in似乎使用了运行在终端上的程序瓦戈

geoclue似乎使用不同的方法来识别位置,但在我的情况下,它可能使用IP来识别它--但是我的Internet Provider可以每24小时改变我的IP,这个IP可以被不同地方的用户使用,所以有时它会给出错误的位置。在这一刻,它给我的位置,几乎30公里,我的地方-和后来的wttr.in给不同的天气。

有些web服务器使用GeoIP来自MaxMindIP转换为位置--但当用户IP每隔几个小时更改一次时,也会遇到同样的问题。我记得,HTTP请求可以使用它,也可以下载带有信息的数据库,并在本地使用(但您必须不时更新数据库)

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/580711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档