-
-
Save anonymous/9abc8d9c376bbc6aa853b477a50e8932 to your computer and use it in GitHub Desktop.
// based entirely on this blog post: | |
// http://druss.co/2016/04/export-all-workouts-from-sports-tracker/ | |
// unfortunately the original script no longer works, moslty because jQuery is | |
// no longer available on sports-tracker pages. | |
// | |
// I've compiled the changes proposed in the comments in the script below. | |
// to use the script, login to your sports-tracker account | |
// change URL to http://www.sports-tracker.com/diary/workout-list | |
// open browser console (Cmd-Shift-I) | |
// paste the script, hit enter - it'll run and print something like this to the cosole: | |
// curl -o SportsTracker-<..id..>.gpx "http://www.sports-tracker.com/apiserver....." | |
// right-click on the colsole and save the contents to a file, call it download-all-workouts.sh | |
// open terminal, change to the directory where you saved the contents of the console | |
// edit the file - remove the javascript at the beginning of the file leaving only curl commands | |
// fix permissions: | |
// $>chmod +x download-all-workouts.sh | |
// run the script: | |
// $>./download-all-workouts.sh | |
var key = "sessionkey="; | |
var valueStartIndex = document.cookie.indexOf(key) + key.length; | |
var token = document.cookie.substring(valueStartIndex, document.cookie.indexOf(';', valueStartIndex)); | |
function downloadOne(item) { | |
var href = item.href; | |
var id = href.substr(href.lastIndexOf('/') + 1, 24); | |
var url = 'http://www.sports-tracker.com/apiserver/v1/workout/exportGpx/' + id + '?token=' + token; | |
var filename = 'SportsTracker-' + id + '.gpx'; | |
console.log('curl -o ' + filename + ' "' + url + '";sleep 2'); | |
} | |
function loopThroughItems(items) | |
{ | |
var i = 0; | |
for (i = 0; i < items.length; i++) { | |
downloadOne(items[i]); | |
} | |
} | |
var items = document.querySelectorAll("ul.diary-list__workouts li a"); | |
document.body.innerHtml = ''; | |
loopThroughItems(items); | |
yes - thank you!
I converted your script to generate the PowerShell equivalent... just change line 33
from:
console.log('curl -o ' + filename + ' "' + url + '";sleep 2');
to:
console.log('Invoke-WebRequest -Uri ' + ' "' + url + '" -OutFile "' + filename + '"');
Excellent job, thanks!
Thanks for the code, works like a charm!
Hello
Sorry, I do not know where I put code on the page?
Thank you
Awesome, thank you!
Thanks!
got to the point when I have the workouts in the console with byobi's change like, what should I do now? if
Invoke-WebRequest -Uri "http://www.sports-tracker.com/apiserver/v1/workout/exportGpx/51f015ace4b07b2c0b8f38ad?token=5k9r27le21f05q423t8okbip3m4d2klo" -OutFile "SportsTracker-51f015ace4b07b2c0b8f38ad.gpx"
I open a Windows powershell and copy paste the url's I am getting error messages
_VM4110:33 : The term 'VM4110:33' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:2 char:1
- VM4110:33 Invoke-WebRequest -Uri "http://www.sports-tracker.com/apis ...
-
+ CategoryInfo : ObjectNotFound: (VM4110:33:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException_
You need to remove VM4110:33 from the command. This is information from the google console that is superfluous.
Thanks very much for providing this script!
Hi !
Great script! It saved my day from multiple manual downloads.
However, Sports Tracker changed the way to access the files. Now it uses https instead of raw http.
So, in order the script to work, you have to change line 31 by the following :
var url = 'https://www.sports-tracker.com/apiserver/v1/workout/exportGpx/' + id + '?token=' + token;
Hope that helps!
I noticed that the token parsing doesn't work (for me), there is no trailing ;.
Another thing I found annoying was that I needed to click "Load More" multiple times (and it relies too much on html structure). There is a apiserver/v1/workouts/ api that can give you all workouts in JSON format.
I've applied both to my fork: https://gist.github.com/rjvdboon/54b9bbb8c56471fd864c00422b92a722
Please change API url from http://www.sports-tracker.com/apiserver/
to https://sports-tracker.com/apiserver/
Otherwise all downloaded files are the same size and contain this:
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.10.3 (Ubuntu)</center>
</body>
</html>
Thank you!!! Excellent work ;-)
Great, many thanks!
I fixed some bugs and added activity images downloading:
https://gist.github.com/Bilan/33770ecb8160ee1a79864bd3d37c0f03
Thank you, this was very useful!