Debian의 시작 응용 프로그램(그리고 아마도 다른 Debian 및 우분투 기반 배포판)에는 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
일부 웹 서버는 다음을 사용합니다.MaxMind의 GeoIP위치로 변환하지만 사용자가 몇 시간마다 위치를 변경 IP
하면 동일한 문제가 발생합니다 . IP
HTTP 요청을 통해 사용할 수 있거나 정보가 포함된 데이터베이스를 다운로드하여 로컬로 사용할 수 있다는 것을 기억합니다(그러나 때때로 데이터베이스를 업데이트해야 함).