Wpis z mikrobloga

Witajcie kwadratowe mireczki!

UWAGA ŚCIANA TEKSTU (σ ͜ʖσ)

Po ponad miesiącu dłubania udało mi się chyba ( ͡~ ͜ʖ ͡°) skleić szkielet apki zintegrowanej z API Stravy.
Nasza kwadratowa mapa będzie odchodzić pomału od żulenia na danych ze statshunters, w związku z tym napisałem prosty serwer który potrafi zautoryzować użytkownika stravy, sczytać TYLKO PUBLICZNE aktywności tego użytkownika i wygenerować linka do mapy.

Mapa po załadowaniu wszystkich aktywności wyświetla uproszczone ślady GPS na zielono,
zdobyte kwadraty wygenerowane na podstawie mojego algorytmu (nieco inny niż w statshunters) na czerwono,
i dodatkowo na żółto nałożone są gminy które zostały zdobyte śladami GPS.
Lista gmin w formie tekstowej znajduje się także z lewej strony mapy, także jak ktoś zbiera gminy to sobie może porównać ( ͡ ͜ʖ ͡).
Niebieskie kwadraty to całość danych zebranych do tej pory starą metodą przez wszystkich - na razie włączone jako opcja debug - żeby wygenerowana mapa nie była taka pusta ( ͡° ͜ʖ ͡°).

Kilka kwestii na początek:
- Apka potrzebuje dostępu do ODCZYTU twojego profilu w stravie - jest to potrzebne, aby powiązać tokeny autoryzacyjne z właściwym kontem,
- Apka potrzebuje dostępu do ODCZYTU informacji o PUBLICZNYCH aktywnościach - potrzebne do wygenerowania indywidualnej mapy,
- Jeżeli nie przyznasz odpowiednich przywilejów apce prawdopodobnie coś się #!$%@? ¯\_(ツ)_/¯ (...na serwerze - wasze dane na stravie są bezpieczne - apka może je tylko odczytywać).
- Apka obsługuje podstawowe webhooki, czyli jeżeli np. usuniesz lub dodasz aktywność lub zmieni się widoczność aktywności po jakimś czasieto samo stanie się w twojej wygenerowanej mapce. Reszta będzie zaimplementowana w przyszłości.

Obsługiwane webhooki:
activity create
activity delete
update athlete (tylko authorized:false - używane do de autoryzacji apki i usuwania danych użytkownika)

- Apka podlega limitom dotyczącym API stravy czyli 100 zapytań/15 minut, max 1000/dzień - oznacza to tyle że jeżeli apka przekroczy limit zapytań przestanie generować nowe mapy do czasu wygaśnięcia limitu - niezbyt dobrze przetestowane bo mam tylko jedno konto na stravie z aktywnościami ( ͡° ͜ʖ ͡°) - należy pamiętać jednak że JEDNO zapytanie to MAX 200 AKTYWNOŚCI - więc jeśli ktoś ma 2-3k aktywności to zrobienie jednej mapy to 10-15 zapytań. Plusem jest to że raz wygenerowana mapka sama się odświeża wraz z dodaniem aktywności na stravie (z niewielkim opóźnieniem).

- Serwer obsługujący apkę to raspberry pi więc nie będzie to na razie działać super szybko, albo pewnie wcale ( ͡~ ͜ʖ ͡°). Teoretycznie powinien obsłużyć generowanie wielu mapek na raz, jak będzie w praktyce się przekonamy. Wyświetlanie mapy jest trochę mniej obciążające bo serwuje tylko plik przetworzonymi danymi.

- Nie ponoszę odpowiedzialności za działanie tej apki - jak zdechną ci rybki w akwarium po jej użyciu - sorry, taki mamy klimat. Apka to tzw. proof of concept i ma prawo przestać funkcjonować w KAŻDEJ chwili.

Dobra dosyć #!$%@?, o co tu chodzi:

Wchodzisz na https://strava.rowerowyrownik.tk
Zostajesz przekierowany do strony autoryzacji aplikacji (być może będziesz musiał zalogować się do stravy), na ekranie autoryzacyjnym klikasz Authorize i w tym momencie serwer zaczyna wczytywać wszystkie aktywności z autoryzowanego konta. Postęp powinien być widoczny na ekranie - zależnie od ilości aktywności może to długo potrwać (apka ładuje ok 200 aktywności na minutę przy jednym wątku).

Po wczytaniu wszystkich aktywności na dole strony pojawi się komunikat: Przetworzono: X treningów powiększoną czcionką.
Od pojawienia się tego komunikatu link widoczny u góry strony ładowania staje się aktywny i można wyświetlić wygenerowaną indywidualną mapę. Jeżeli zamkniesz kartę przed końcem ładowania mapa się NIE WYŚWIETLI!
Ten link do mapy jest jedynym źródłem dostępu - tylko z nim można ją wyświetlić.
Jeżeli chcesz sprawdzić działanie, a nie chcesz autoryzować stravy, oto mój link:
https://rowerowyrownik.tk/strava_test?id=21939498

Aby nie zaśmiecać innych ogólnorównikowych tematów chciałbym żeby wszystkie sprawy techniczne i nie tylko związane z tą apką tagować #rownikowetesty - sam na razie nie chcę dużych zasięgów żeby w spokoju móc zdebugować to co się pewnie #!$%@?, dlatego nie użyłem równika roweru itp. #kwadraty mają relatywnie mało obserwujących więc może nie #!$%@? mi serwera od razu ( ͡º ͜ʖ͡º).

Mapa była testowana na firefoksie i chrome.

Enjoy i proszę o zrozumienie bo apka przynajmniej na razie częściej będzie offline niż online, należy się też spodziewać bugów - duuużo bugów. Jest to tylko szkielet na którym będzie budowana nowa iteracja globalnej mapy.

#kwadraty
Pobierz kapitantaca - Witajcie kwadratowe mireczki!

UWAGA ŚCIANA TEKSTU (╭☞σ ͜ʖσ)╭☞

Po ...
źródło: comment_1611000789aGJNlPX2RIgYjK8HQEdJNr.jpg
  • 29
via Wykop Mobilny (Android)
  • 0
@westu: jakbym miał coś takiego to bym miał o pół miesiąca roboty mniej ( ͡~ ͜ʖ ͡°). Tutaj bardziej chodziło o wytestowanie generowania kwadratów, gminy to taki bonus, bo widzę że zbieraczy gmin też tu mamy.
@uysy: @AbaddonLincoln: co do stref prywatności nie wiem czy działają bo nie testowałem ich jeszcze, według dokumentacji API nie powinny bo scope dla apki to activity:read, czyli:

read public segments, public routes, public profile data, public posts, public events, club feeds, and leaderboards
a dostęp do danych o strefach prywatności jest teoretycznie przy scope:read_all

the same access as activity:read, plus privacy zone data and access to read the user's activities
@kapitantaca: żeby działało jak statshunter.
Ludzie widzą moje tracki ale z private zone (wycięta moja dzielnica/ osiedle).
Ja mam wszytko na stravie wystawione dla Followers only, nie mam nic publicznego.
Jeżeli możesz, to skasuj moje dane bo je zassałem, zobacże jednak jak to się bedzie rozwijać i dołączę :).
Potrzebujesz ID?
@uysy: możesz sam skasować, wystarczy że cofniesz autoryzację dla apki z https://www.strava.com/settings/apps
jak dojdzie webhook do serwa to dane się usuną i link z mapką przestaje działać. Jak chcesz to możesz próbować podać inny scope dla autoryzacji np. [https://www.strava.com/oauth/authorize?client_id=59593&redirect_uri=http://strava.rowerowyrownik.tk/authorization&approval_prompt=auto&response_type=code&scope=activity:read_all,profile:read_all](https://www.strava.com/oauth/authorize?client_id=59593&redirect_uri=http://strava.rowerowyrownik.tk/authorization&approval_prompt=auto&response_type=code&scope=activity:read_all,profile:read_all)
@Cymerek: trochę źle to zaprojektowałem, pliki generują się dopiero po przetworzeniu całej listy, jak klikniesz na link przed zakończeniem ładowania to mapa dostaje 404, bo nie ma jeszcze pliku do wyświetlenia. Poprawię to niebawem na coś bardziej czytelnego.
widzę po logach serwera już co najmniej jednego buga do naprawy, zrobiłem jakiś błąd w kodzie przy generowaniu timestampów dla tokenów autoryzacyjnych, muszę się temu przyjrzeć - może objawiać się to tym, że mapa nie będzie się automatycznie odświeżać po dodaniu/usunieciu nowej aktywności na stravie. Deautoryzacja powinna działać ok.