Wpis z mikrobloga

Ja: napisz kod, który wyciągnie aktywności z JSON i skonwertuje ja na GPX
ChatGPT: drukuje kod
Ja: AttributeError: module 'gpxpy.gpx' has no attribute 'GPXTrackPointExtension'
ChatGPT: Przepraszam za zamieszanie. Faktycznie, biblioteka gpxpy nie dostarcza bezpośredniej klasy GPXTrackPointExtension`. (dalej drukuje kod, gdzie znajduje się nieistniejący atrybut)
Ja: w powyższym kodzie wciąż znajduje się gpxpy.gpx.GPXTrackPointExtension
ChatGPT: Przepraszam za nieścisłość. Po dodatkowych sprawdzeniach faktycznie widzę błąd. (dalej drukuje zły kod)

Dopiero uczę się Pythona i nie wiem, jak to naprawić. Może lepiej ręcznie budować XML niż używać biblioteki gpxpy?

python
import sqlite3
import json
import gpxpy
import gpxpy.gpx
from datetime import datetime

def convert_to_gpx(data):
gpx = gpxpy.gpx.GPX()

track = gpxpy.gpx.GPXTrack()
gpx.tracks.append(track)

segment = gpxpy.gpx.GPXTrackSegment()
track.segments.append(segment)

for entry in data:
point = gpxpy.gpx.GPXTrackPoint(entry['latitude'], entry['longitude'], elevation=entry['elevation'])
point.time = datetime.strptime(entry['time'], "%Y-%m-%dT%H:%M:%S.%fZ")

extensions = gpxpy.gpx.GPXTrackPointExtensions()
extensions.append(gpxpy.gpx.GPXTrackPointExtension('gpxtpx:hr', entry['heart_rate']))
point.extensions = extensions

segment.points.append(point)

return gpx

def save_gpx_to_file(gpx, activity_id):
filename = f'activity_{activity_id}.gpx'
with open(filename, 'w') as f:
f.write(gpx.to_xml())
print(f'Aktualność o ID {activity_id} została zapisana do pliku {filename}')

if __name__ == "__main__":
# Połączenie z bazą danych SQLite
connection = sqlite3.connect('saferide.db')
cursor = connection.cursor()

# Pobranie wszystkich aktywności z kolumny DATA
cursor.execute("SELECT ID, DATA FROM ACTIVITY")
activities = cursor.fetchall()

for activity_id, data_json in activities:
try:
data = json.loads(data_json)
except json.JSONDecodeError:
print(f'Błąd dekodowania danych dla aktywności o ID {activity_id}')
continue

gpx = convert_to_gpx(data)
save_gpx_to_file(gpx, activity_id)

# Zakończenie połączenia z bazą danych
connection.close()

#programowanie #python
  • 4
@MilionoweMultikonto: chatgpt jest dla osób które potrafią już programować. generuje kod (często błędny), przelatujesz go szybko wzrokiem czy ma sens i w razie potrzeby poprawiasz. Taka nauka to jak oglądanie hinduskich filmików na YT gdzie typ klika tylko co trzeba zrobić by uzyskać efekt bez słowa wyjaśnienia. Nigdy się nic w ten sposób nie nauczysz.

jak to naprawić


@SendMeAnAngel: na przykład tak - https://pastebin.pl/view/70cc196b
ale jeśli poważnie myślisz o programowaniu