orium / strava-pr Goto Github PK
View Code? Open in Web Editor NEWAnalysis of your Strava personal records
License: GNU Lesser General Public License v3.0
Analysis of your Strava personal records
License: GNU Lesser General Public License v3.0
See #1 (comment)
This is due to a bug in scrava (activities' ids are represented with an Int
and the number of runs crossed the 2³¹ boundary).
I will probably replace scrava with a java library.
Hi!
Set up my api access token and fetching runs for the first time. Encountering the following exception:
Exception in thread "main" java.lang.RuntimeException: Could not parse list of activities
at kiambogo.scrava.ScravaClient.$anonfun$listAthleteActivities$1(ScravaClient.scala:346)
at kiambogo.scrava.ScravaClient.$anonfun$listAthleteActivities$1$adapted(ScravaClient.scala:321)
at scala.collection.immutable.Stream.map(Stream.scala:415)
at kiambogo.scrava.ScravaClient.listAthleteActivities(ScravaClient.scala:321)
at stravapr.Strava.$anonfun$populateRunCache$1(Strava.scala:75)
at stravapr.RateLimiter.run(RateLimiter.scala:26)
at stravapr.RateLimiter.apply(RateLimiter.scala:39)
at stravapr.Strava.populateRunCache(Strava.scala:75)
at stravapr.Main$.stravaFetch(Main.scala:69)
at stravapr.Main$.$anonfun$main$1(Main.scala:317)
at stravapr.Main$.$anonfun$main$1$adapted(Main.scala:316)
at scala.Option.foreach(Option.scala:257)
at stravapr.Main$.main(Main.scala:316)
at stravapr.Main.main(Main.scala)
Caused by: net.liftweb.json.MappingException: Expected collection but got JObject(List(JField(message,JString(Authorization Error)), JField(errors,JArray(List(JObject(List(JField(resource,JString(AccessToken)), JField(field,JString(activity:read_permission)), JField(code,JString(missing))))))))) for root JObject(List(JField(message,JString(Authorization Error)), JField(errors,JArray(List(JObject(List(JField(resource,JString(AccessToken)), JField(field,JString(activity:read_permission)), JField(code,JString(missing))))))))) and mapping Constructor(TypeInfo(class kiambogo.scrava.models.PersonalActivitySummary,None),List(DeclaredConstructor(public kiambogo.scrava.models.PersonalActivitySummary(int,int,scala.Option,scala.Option,scala.collection.immutable.Map,java.lang.String,float,int,int,float,java.lang.String,java.lang.String,java.lang.String,java.lang.String,scala.collection.immutable.List,scala.Option,scala.Option,scala.Option,scala.Option,int,int,int,int,int,kiambogo.scrava.models.Polyline,boolean,boolean,boolean,boolean,boolean,scala.Option,float,float,scala.Option,scala.Option,scala.Option,scala.Option,scala.Option,scala.Option,scala.Option,int,boolean,scala.Option),List(Arg(id,Value(int),false), Arg(resource_state,Value(int),false), Arg(external_id,Value(class java.lang.String),true), Arg(upload_id,Value(int),true), Arg(athlete,Dict(Value(int)),false), Arg(name,Value(class java.lang.String),false), Arg(distance,Value(float),false), Arg(moving_time,Value(int),false), Arg(elapsed_time,Value(int),false), Arg(total_elevation_gain,Value(float),false), Arg(type,Value(class java.lang.String),false), Arg(start_date,Value(class java.lang.String),false), Arg(start_date_local,Value(class java.lang.String),false), Arg(timezone,Value(class java.lang.String),false), Arg(start_latlng,Col(TypeInfo(class scala.collection.immutable.List,Some(scala.collection.immutable.List<java.lang.Object>)),Value(float)),false), Arg(end_latlng,Col(TypeInfo(class scala.collection.immutable.List,Some(scala.collection.immutable.List<java.lang.Object>)),Value(float)),true), Arg(location_city,Value(class java.lang.String),true), Arg(location_state,Value(class java.lang.String),true), Arg(location_country,Value(class java.lang.String),true), Arg(achievement_count,Value(int),false), Arg(kudos_count,Value(int),false), Arg(comment_count,Value(int),false), Arg(athlete_count,Value(int),false), Arg(photo_count,Value(int),false), Arg(map,Constructor(TypeInfo(class kiambogo.scrava.models.Polyline,None),List(DeclaredConstructor(public kiambogo.scrava.models.Polyline(java.lang.String,scala.Option,scala.Option,int),List(Arg(id,Value(class java.lang.String),false), Arg(polyline,Value(class java.lang.String),true), Arg(summary_polyline,Value(class java.lang.String),true), Arg(resource_state,Value(int),false))))),false), Arg(trainer,Value(boolean),false), Arg(commute,Value(boolean),false), Arg(manual,Value(boolean),false), Arg(private,Value(boolean),false), Arg(flagged,Value(boolean),false), Arg(gear_id,Value(class java.lang.String),true), Arg(average_speed,Value(float),false), Arg(max_speed,Value(float),false), Arg(average_cadence,Value(float),true), Arg(average_temp,Value(int),true), Arg(average_watts,Value(float),true), Arg(kilojoules,Value(float),true), Arg(device_watts,Value(boolean),true), Arg(average_heartrate,Value(float),true), Arg(max_heartrate,Value(float),true), Arg(total_photo_count,Value(int),false), Arg(has_kudoed,Value(boolean),false), Arg(workout_type,Value(int),true)))))
at net.liftweb.json.Meta$.fail(Meta.scala:201)
at net.liftweb.json.Extraction$.newCollection$1(Extraction.scala:309)
at net.liftweb.json.Extraction$.build$1(Extraction.scala:331)
at net.liftweb.json.Extraction$.extract0(Extraction.scala:375)
at net.liftweb.json.Extraction$.extract0(Extraction.scala:200)
at net.liftweb.json.Extraction$.extract(Extraction.scala:43)
at net.liftweb.json.JsonAST$JValue.extract(JsonAST.scala:703)
at kiambogo.scrava.ScravaClient.$anonfun$listAthleteActivities$2(ScravaClient.scala:344)
at scala.util.Try$.apply(Try.scala:209)
at kiambogo.scrava.ScravaClient.$anonfun$listAthleteActivities$1(ScravaClient.scala:344)
... 13 more
i encountered an exception when trying to strava-pr strava fetch :
./strava-pr strava fetch
Fetched run of 2014-07-17.
Exception in thread "main" java.lang.IndexOutOfBoundsException: 1
at scala.collection.LinearSeqOptimized.apply(LinearSeqOptimized.scala:63)
at scala.collection.LinearSeqOptimized.apply$(LinearSeqOptimized.scala:61)
at scala.collection.immutable.List.apply(List.scala:86)
at stravapr.Strava.activityToRun(Strava.scala:50)
at stravapr.Strava.$anonfun$populateRunCache$6(Strava.scala:69)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
at scala.collection.immutable.Set$Set1.foreach(Set.scala:95)
at scala.collection.TraversableLike.map(TraversableLike.scala:234)
at scala.collection.TraversableLike.map$(TraversableLike.scala:227)
at scala.collection.AbstractSet.scala$collection$SetLike$$super$map(Set.scala:47)
at scala.collection.SetLike.map(SetLike.scala:101)
at scala.collection.SetLike.map$(SetLike.scala:101)
at scala.collection.AbstractSet.map(Set.scala:47)
at stravapr.Strava.$anonfun$populateRunCache$5(Strava.scala:69)
at scala.Option.orElse(Option.scala:289)
at stravapr.Strava.$anonfun$populateRunCache$4(Strava.scala:68)
at stravapr.Strava.$anonfun$populateRunCache$4$adapted(Strava.scala:67)
at scala.collection.immutable.List.flatMap(List.scala:335)
at stravapr.Strava.populateRunCache(Strava.scala:67)
at stravapr.Main$.stravaFetch(Main.scala:69)
at stravapr.Main$.$anonfun$main$1(Main.scala:315)
at stravapr.Main$.$anonfun$main$1$adapted(Main.scala:314)
at scala.Option.foreach(Option.scala:257)
at stravapr.Main$.main(Main.scala:314)
at stravapr.Main.main(Main.scala)
I can send you my personnal access token if you'd like to debug it. My scala skills are too weak to debug it myself. Your project seems to be exactly what I was looking for , great job.
Olivier Duhart
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.