Skip to content

changjiong/running_page

 
 

Repository files navigation

<<<<<<< HEAD running_page

简体中文 | English

GIF SHOW

running_page

Runner page App
shaonianche https://run.duangfei.org Nike
yihong0618 https://yihong.run/running Nike
superleeyom https://running.leeyom.top Nike
geekplux https://activities.geekplux.com Nike
guanlan https://grun.vercel.app Strava
tuzimoe https://run.tuzi.moe Nike
ben_29 https://running.ben29.xyz Strava
kcllf https://running-tau.vercel.app Garmin-cn
mq https://running-iota.vercel.app Keep
zhaohongxuan https://running-page-psi.vercel.app Keep
yvetterowe https://run.haoluo.io Strava
love-exercise https://run.kai666666.top Keep
zstone12 https://running-page.zstone12.vercel.app/ Keep
Lax https://lax.github.io/running/ Keep
lusuzi https://running.lusuzi.vercel.app Nike
wh1994 https://run4life.fun Garmin
liuyihui https://run.foolishfox.cn Keep

=======

Github Action Chat on telegram

demo

English | 简体中文 | Wiki

Runner page App
shaonianche https://run.duangfei.org Nike
yihong0618 https://yihong.run/running Nike
superleeyom https://running.leeyom.top Nike
geekplux https://activities.geekplux.com Nike
guanlan https://grun.vercel.app Strava
tuzimoe https://run.tuzi.moe Nike
ben_29 https://running.ben29.xyz Strava
kcllf https://running-tau.vercel.app Garmin-cn
mq https://running-iota.vercel.app Keep
zhaohongxuan https://running-page-psi.vercel.app Keep
yvetterowe https://run.haoluo.io Strava
love-exercise https://run.kai666666.top Keep
zstone12 https://running-page.zstone12.vercel.app Keep
Lax https://lax.github.io/running Keep
lusuzi https://running.lusuzi.vercel.app Nike
wh1994 https://run4life.fun Garmin
liuyihui https://run.foolishfox.cn Keep
FrankSun https://hi-franksun.github.io/running_page Nike
AhianZhang https://running.ahianzhang.com Keep
L1cardo https://run.licardo.cn Nike
luckylele666 https://0000928.xyz Strava
MFYDev https://mfydev.run Garmin-cn
Jim Gao https://run.yidajiabei.xyz/ Keep
Eished https://run.iknow.fun Keep

639228f96d89555b1712b5e5222d11144f4aad98

How it works

image

Features

  1. GitHub Actions manages automatic synchronization of runs and generation of new pages.
  2. Gatsby-generated static pages, fast
  3. Support for Vercel (recommended) and GitHub Pages automated deployment
  4. React Hooks
  5. Mapbox for map display
  6. Supports most sports apps such as nike strava...

automatically backup gpx data for easy backup and uploading to other software.

<<<<<<< HEAD

Note: If you don't want to make the data public, you can choose strava's fuzzy processing, or private repositories.

639228f96d89555b1712b5e5222d11144f4aad98

Support

639228f96d89555b1712b5e5222d11144f4aad98

Download

Clone or fork the repo.

Download

Clone or fork the repo.

639228f96d89555b1712b5e5222d11144f4aad98

git clone https://github.com/yihong0618/running_page.git

Installation and testing

<<<<<<< HEAD

639228f96d89555b1712b5e5222d11144f4aad98

pip3 install -r requirements.txt
yarn install
yarn develop

<<<<<<< HEAD Open your browser and visit http://localhost:8000/

Open your browser and visit http://localhost:8000/

639228f96d89555b1712b5e5222d11144f4aad98

Local sync data

Modifying Mapbox token in src/utils/const.js

If you use English please change IS_CHINESE = false in src/utils/const.js

Suggested changes to your own Mapbox token

<<<<<<< HEAD
const MAPBOX_TOKEN = 'pk.eyJ1IjoieWlob25nMDYxOCIsImEiOiJja2J3M28xbG4wYzl0MzJxZm0ya2Fua2p2In0.PNKfkeQwYuyGOTT_x9BJ4Q';
=======
const MAPBOX_TOKEN =
  'pk.eyJ1IjoieWlob25nMDYxOCIsImEiOiJja2J3M28xbG4wYzl0MzJxZm0ya2Fua2p2In0.PNKfkeQwYuyGOTT_x9BJ4Q';
>>>>>>> 639228f96d89555b1712b5e5222d11144f4aad98

Custom your page

<<<<<<< HEAD

avatar

Modify export const AVATAR = 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQTtc69JxHNcmN1ETpMUX4dozAgAN6iPjWalQ&usqp=CAU'; Replace it with the link to the image you want.

NAVS

Change NAVS in src/utils/const.js to the link you want, just like:

export const NAVS = [
  { text: 'Blog', link: 'https://yihong.run/running' },
  { text: 'About', link: 'https://github.com/yihong0618/running_page/blob/master/README-CN.md' },
];

You can also add multiple links, just like the above.

Title and site link

=======

639228f96d89555b1712b5e5222d11144f4aad98 Find gatsby-config.js in the repository directory, find the following content, and change it to what you want.

siteMetadata: {
<<<<<<< HEAD
  title: 'Running page',
  siteUrl: 'https://yihong.run',
  description: 'Personal site and blog',
=======
  siteTitle: 'Running Page', #website title
  siteUrl: 'https://yihong.run', #website url
  logo: 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQTtc69JxHNcmN1ETpMUX4dozAgAN6iPjWalQ&usqp=CAU', #logo img
  description: 'Personal site and blog',
  navLinks: [
    {
      name: 'Blog', #navigation name
      url: 'https://yihong.run/running', #navigation url
    },
    {
      name: 'About',
      url: 'https://github.com/yihong0618/running_page/blob/master/README-CN.md',
    },
  ],
>>>>>>> 639228f96d89555b1712b5e5222d11144f4aad98
},

Download your running data and do not forget to generate svg in total page.

GPX

Make your GPX data

Copy all your gpx files to GPX_OUT or new gpx files <<<<<<< HEAD

python3(python) scripts/gpx_sync.py

=======

python3(python) scripts/gpx_sync.py

639228f96d89555b1712b5e5222d11144f4aad98

Garmin

Get your Garmin data
<<<<<<< HEAD ======= If you only want to sync `type running` add args --only-run >>>>>>> 639228f96d89555b1712b5e5222d11144f4aad98
python3(python) scripts/garmin_sync.py ${your email} ${your password}

<<<<<<< HEAD example:

python3(python) scripts/garmin_sync.py example@gmail.com example

=======

example:

python3(python) scripts/garmin_sync.py example@gmail.com example
>>>>>>> 639228f96d89555b1712b5e5222d11144f4aad98

Garmin-CN(China)

Get your Garmin-CN data
python3(python) scripts/garmin_sync.py ${your email} ${your password} --is-cn

<<<<<<< HEAD example:

python3(python) scripts/garmin_sync.py example@gmail.com example --is-cn

Runtastic(Adidas Run)

Get your Runtastic data
python3(python) scripts/runtastic_sync.py ${your email} ${your password}

example:

python3(python) scripts/runtastic_sync.py example@gmail.com example

=======

example:

python3(python) scripts/garmin_sync.py example@gmail.com example --is-cn

639228f96d89555b1712b5e5222d11144f4aad98

Nike Run Club

Get your Nike Run Club data

<<<<<<< HEAD Get Nike's refresh_token

Please note: When you choose to deploy running_page on your own server, due to Nike has blocked some IDC's IP band, maybe your server cannot sync Nike Run Club's data correctly and display 403 error, then you have to change another way to host it.

Get Nike's refresh_token

639228f96d89555b1712b5e5222d11144f4aad98

  1. Login Nike website
  2. In Develop -> Application-> Storage -> https:unite.nike.com look for refresh_token

image

  1. Execute in the root directory: <<<<<<< HEAD
python3(python) scripts/nike_sync.py ${nike refresh_token}

example:

python3(python) scripts/nike_sync.py eyJhbGciThiMTItNGIw******

=======

python3(python) scripts/nike_sync.py ${nike refresh_token}

example:

python3(python) scripts/nike_sync.py eyJhbGciThiMTItNGIw******

639228f96d89555b1712b5e5222d11144f4aad98 example img

Strava

Get your Strava data
  1. Sign in/Sign up Strava account

  2. Open after successful Signin Strava Developers -> Create & Manage Your App

  3. Create My API Application: Enter the following information


My API Application Created successfully:


<<<<<<< HEAD 4. Use the link below to request all permissions: Replace ${your_id} in the link with My API Application Client ID

https://www.strava.com/oauth/authorize?client_id=${your_id}&response_type=code&redirect_uri=http://localhost/exchange_token&approval_prompt=force&scope=read_all,profile:read_all,activity:read_all,profile:write,activity:write

get_all_permissions

  1. Get the code value in the link
    =======
  2. Use the link below to request all permissions: Replace ${your_id} in the link with My API Application Client ID
https://www.strava.com/oauth/authorize?client_id=${your_id}&response_type=code&redirect_uri=http://localhost/exchange_token&approval_prompt=force&scope=read_all,profile:read_all,activity:read_all,profile:write,activity:write

get_all_permissions

  1. Get the code value in the link

639228f96d89555b1712b5e5222d11144f4aad98


example: <<<<<<< HEAD

http://localhost/exchange_token?state=&code=1dab37edd9970971fb502c9efdd087f4f3471e6e&scope=read,activity:write,activity:read_all,profile:write,profile:read_all,read_all

code value:

1dab37edd9970971fb502c9efdd087f4f3471e6

get_code

  1. Use Client_idClient_secretCode get refresch_token: Execute in Terminal/iTerm =======
http://localhost/exchange_token?state=&code=1dab37edd9970971fb502c9efdd087f4f3471e6e&scope=read,activity:write,activity:read_all,profile:write,profile:read_all,read_all

code value:

1dab37edd9970971fb502c9efdd087f4f3471e6

get_code

  1. Use Client_idClient_secretCode get refresch_token: Execute in Terminal/iTerm

639228f96d89555b1712b5e5222d11144f4aad98

curl -X POST https://www.strava.com/oauth/token \
-F client_id=${Your Client ID} \
-F client_secret=${Your Client Secret} \
-F code=${Your Code} \
-F grant_type=authorization_code

<<<<<<< HEAD example:

example:

639228f96d89555b1712b5e5222d11144f4aad98

curl -X POST https://www.strava.com/oauth/token \
-F client_id=12345 \
-F client_secret=b21******d0bfb377998ed1ac3b0 \
-F code=d09******b58abface48003 \
-F grant_type=authorization_code

<<<<<<< HEAD get_refresch_token

  1. Sync Strava data
python3(python) scripts/strava_sync.py ${client_id} ${client_secret} ${refresch_token}

get_refresch_token

  1. Sync Strava data
python3(python) scripts/strava_sync.py ${client_id} ${client_secret} ${refresch_token}

References:
https://developers.strava.com/docs/getting-started
https://github.com/barrald/strava-uploader
https://github.com/strava/go.strava

639228f96d89555b1712b5e5222d11144f4aad98

Nike_to_Strava

Get your Nike Run Club data and upload to strava
  1. follow the nike and strava steps
  2. Execute in the root directory: <<<<<<< HEAD
python3(python) scripts/nike_to_strava_sync.py ${nike_refresh_token} ${client_id} ${client_secret} ${strava_refresch_token} 

example:

python3(python) scripts/nike_to_strava_sync.py eyJhbGciThiMTItNGIw******  xxx xxx xxx

=======

python3(python) scripts/nike_to_strava_sync.py ${nike_refresh_token} ${client_id} ${client_secret} ${strava_refresch_token}

example:

python3(python) scripts/nike_to_strava_sync.py eyJhbGciThiMTItNGIw******  xxx xxx xxx

639228f96d89555b1712b5e5222d11144f4aad98

Total Data Analysis

Running data display
python scripts/gen_svg.py --from-db --title "${{ env.TITLE }}" --type github --athlete "${{ env.ATHLETE }}" --special-distance 10 --special-distance2 20 --special-color yellow --special-color2 red --output assets/github.svg --use-localtime --min-distance 0.5
python scripts/gen_svg.py --from-db --title "${{ env.TITLE_GRID }}" --type grid --athlete "${{ env.ATHLETE }}"  --output assets/grid.svg --min-distance 10.0 --special-color yellow --special-color2 red --special-distance 20 --special-distance2 40 --use-localtime

<<<<<<< HEAD Generate year circular svg show

Generate year circular svg show

639228f96d89555b1712b5e5222d11144f4aad98

python3(python) scripts/gen_svg.py --from-db --type circular --use-localtime

<<<<<<< HEAD For more display effects, see:

For more display effects, see:

639228f96d89555b1712b5e5222d11144f4aad98 https://github.com/flopp/GpxTrackPoster

server(recommendation vercel)

<<<<<<< HEAD Use vercel deploy ======= Use Vercel to deploy >>>>>>> 639228f96d89555b1712b5e5222d11144f4aad98
  1. vercel connects to your GitHub repo.

image <<<<<<< HEAD

639228f96d89555b1712b5e5222d11144f4aad98

  1. import repo

image

  1. Awaiting completion of deployment
  2. Visits
<<<<<<< HEAD ======= Use Cloudflare to deploy
  1. Click Create a project in Pages to connect to your Repo.

  2. After clicking Begin setup, modify Project's Build settings.

  3. Select Framework preset to Gatsby

  4. Scroll down, click Environment variables, then variable below:

    Variable name = PYTHON_VERSION, Value = 3.7

  5. Click Save and Deploy

>>>>>>> 639228f96d89555b1712b5e5222d11144f4aad98 Deploy to GitHub Pages
  1. If you are using a custom domain for GitHub Pages, open .github/workflows/gh-pages.yml, change fqdn value to the domain name of your site.

<<<<<<< HEAD 2. (Skip this step if you're NOT using a custom domain) Modify gatsby-config.js, change pathPrefix value to the root path. If the repository name is running_page, the value will be /running_page.

  1. (Skip this step if you're NOT using a custom domain) Modify gatsby-config.js, change pathPrefix value to the root path. If the repository name is running_page, the value will be /running_page.

639228f96d89555b1712b5e5222d11144f4aad98

  1. Go to repository's Actions -> Workflows -> All Workflows, choose Publish GitHub Pages from the left panel, click Run workflow. Make sure the workflow runs without errors, and gh-pages branch is created.

  2. Go to repository's Settings -> GitHub Pages -> Source, choose Branch: gh-pages, click Save.

<<<<<<< HEAD

GitHub Actions

=======

GitHub Actions

639228f96d89555b1712b5e5222d11144f4aad98

Modifying information in GitHub Actions

Actions source code The following steps need to be taken <<<<<<< HEAD

639228f96d89555b1712b5e5222d11144f4aad98

  1. change to your app type and info

image Add your secret in repo Settings > Secrets (add only the ones you need).


image My secret is as follows


<<<<<<< HEAD image 3. add your GitHub secret and have the same name as the GitHub secret in your project.

image 3. add your GitHub secret and have the same name as the GitHub secret in your project.

639228f96d89555b1712b5e5222d11144f4aad98


image

TODO

  • Complete this document.
  • Support Garmin, Garmin China
  • support for nike+strava
  • Support English
  • Refine the code
  • add new features <<<<<<< HEAD =======
  • tests

639228f96d89555b1712b5e5222d11144f4aad98

  • support the world map
  • support multiple types, like hiking, biking~

Contribution

  • Any Issues PR welcome.
  • You can PR share your Running page in README I will merge it.

Before submitting PR: <<<<<<< HEAD

  • Format Python code with Black =======

  • Format Python code with black (black .)

  • Format Python code with isort (isort --profile black //*.py)

639228f96d89555b1712b5e5222d11144f4aad98

Special thanks

Support

No need sponsor, just enjoy it.

639228f96d89555b1712b5e5222d11144f4aad98

About

Make your own running home page

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 54.5%
  • Python 43.5%
  • SCSS 2.0%