golang strava bitbar插件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang strava bitbar插件相关的知识,希望对你有一定的参考价值。

package main

/*
# <bitbar.title>Strava</bitbar.title>
# <bitbar.version>v0.0.1</bitbar.version>
# <bitbar.author>Daniel Cook</bitbar.author>
# <bitbar.author.github>danielecook</bitbar.author.github>
# <bitbar.desc>Bitbar Strava tracker</bitbar.desc>
*/

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"os"
	"os/exec"
	"time"

	keychain "github.com/keybase/go-keychain"
	"github.com/tidwall/gjson"
)

const service = "Strava-API-BitBar"
const account = "access_token"
const access_group = "strava.api.bitbar"

var client = &http.Client{Timeout: 10 * time.Second}

type athlete struct {
	Bar string
}

func main() {

	args := os.Args

	/*
	   Set Access Token
	*/
	if len(args) > 1 && args[1] == "set_api_key" {
		fmt.Printf("---\n")
		cmd := exec.Command("osascript", "-e", "display dialog \"Enter Strava-API access_token\" default answer \" \" buttons {\"ok\"} with title \"Enter Strava access_token\" \n set a to the text returned of the result\n")
		out, err := cmd.CombinedOutput()
		store_api_key(out)
		if err != nil {
			log.Fatal(err)
		}

		fmt.Printf("%s\n", out)
		os.Exit(0)
	}

	var access_token = fetch_api_key()
	if access_token == "" {
		fmt.Println("Set Strava Access Token")
		fmt.Println("---")
		access_token_line()
		os.Exit(0)
	}

	// Fetch urls
	var athlete_url = fmt.Sprintf("https://www.strava.com/api/v3/athlete?access_token=%s", access_token)
	athlete := getUrl(athlete_url)
	user_id := gjson.Get(athlete, "id").String()
	url := fmt.Sprintf("https://www.strava.com/api/v3/athletes/%s/stats?access_token=%s", user_id, access_token)
	stats := getUrl(url)
	fmt.Printf("

Strava (GPX) <type></type> 元素是啥意思?

【中文标题】Strava (GPX) <type></type> 元素是啥意思?【英文标题】:What do the Strava (GPX) <type></type> elements mean?Strava (GPX) <type></type> 元素是什么意思? 【发布时间】:2020-09-06 05:58:57 【问题描述】:

起亚欧拉,

我从 Strava 导出了所有 GPX 文件,因此我可以对它们进行一些分析,但我一直试图弄清楚每个文件的活动类型。

我的文件如下所示,例如,&lt;type&gt; 元素似乎定义了活动类型。

<?xml version="1.0" encoding="UTF-8"?>
<gpx creator="StravaGPX iPhone" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" xmlns="http://www.topografix.com/GPX/1/1">
 <metadata>
  <time>2014-03-21T22:44:39Z</time>
 </metadata>
 <trk>
  <name>Sugar Loaf</name>
  <type>9</type>
  <trkseg>
    ...

我知道(在我的脑海中)该活动是一次跑步,但我找不到所有数字及其相应活动类型的任何文档。

Strava says:

Strava 努力遵守官方 FIT SDK 中定义的 FIT 活动文件 (FIT_FILE_TYPE = 4) 规范。

这很好,但如果我查询 FIT SDK,我可以在 fit_profile.hpp 文件中找到以下内容:

typedef FIT_ENUM FIT_SPORT;
#define FIT_SPORT_INVALID                             FIT_ENUM_INVALID
#define FIT_SPORT_GENERIC                             ((FIT_SPORT)0)
#define FIT_SPORT_RUNNING                             ((FIT_SPORT)1)
#define FIT_SPORT_CYCLING                             ((FIT_SPORT)2)
#define FIT_SPORT_TRANSITION                          ((FIT_SPORT)3) // Mulitsport transition
#define FIT_SPORT_FITNESS_EQUIPMENT                   ((FIT_SPORT)4)
#define FIT_SPORT_SWIMMING                            ((FIT_SPORT)5)
#define FIT_SPORT_BASKETBALL                          ((FIT_SPORT)6)
#define FIT_SPORT_SOCCER                              ((FIT_SPORT)7)
#define FIT_SPORT_TENNIS                              ((FIT_SPORT)8)
#define FIT_SPORT_AMERICAN_FOOTBALL                   ((FIT_SPORT)9)
#define FIT_SPORT_TRAINING                            ((FIT_SPORT)10)
#define FIT_SPORT_WALKING                             ((FIT_SPORT)11)
...

我也可以在同一个fit_profile.hpp 文件中找到:

#define FIT_FILE_ACTIVITY                             ((FIT_FILE)4) // Read/erase, multiple files. Directory=Activities

这将向我确认它确实是一个活动文件。

有谁知道我在哪里可以找到这些整数的参考资料?

【问题讨论】:

【参考方案1】:

通过实验,我制作了这个列表。

 1: Ride
 2: Alpine Ski
 3: Backcountry Ski
 4: Hike
 5: Ice Skate
 6: Inline Skate
 7: Nordic Ski
 8: Roller Ski
 9: Run
10: Walk
11: Workout
12: Snowboard
13: Snowshoe
14: Kitesurf
15: Windsurf
16: Swim
17: Virtual Ride
18: E-Bike Ride
19: Velomobile
21: Canoe
22: Kayaking
23: Rowing
24: Stand Up Paddling
25: Surfing
26: Crossfit
27: Elliptical
28: Rock Climb
29: Stair-Stepper
30: Weight Training
31: Yoga
51: Handcycle
52: Wheelchair
53: Virtual Run

我怀疑 20 是用于航海,但 Strava 不允许我将任何活动设置为航海检查。

【讨论】:

以上是关于golang strava bitbar插件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Strava 提供程序进行 Firebase 身份验证

Strava - 具有纬度、经度和时间的团体路线接近度

ubuntu 16.04 i386 安装 ruby + bundler + rails ; 搭建简单的网站bitbar

ubuntu 16.04 i386 安装 ruby + bundler + rails ; 搭建简单的网站bitbar

使用来自 bitbar.com 设备农场服务的 Detox e2e 测试库将所有测试用例日志通过电子邮件发送到我的电子邮件

Elasticsearch:如何将 Strava 数据导入 Elastic Stack