Giter Site home page Giter Site logo

github-notion-star's Introduction

github-notion-star

使用 Notion 和 Github Actions 同步和管理你的 Github Star.

Breaking Change

#4 版本开始,增加了 Primary LanguageRepository Topics 两个参数(by @imfycc),需要在原有 database 中增加这两个选项,否则同步会失败。

功能

  • (可选)支持全量同步所有的 star 到 notion
  • (可选)支持使用 Github Actions 定时同步增量的 star 到 notion

设置

  • 在 Notion 上复制这个模板
  • Fork 当前的这个 Repo
  • 在 Repo 的设置里面,新建一个名为 notion-sync 的 Environment,需要设置以下环境变量
    • NOTION_API_KEY 申请的 Notion API 的 Key,注意,你的模板需要被共享给这个 API
    • NOTION_DATABASE_ID 对应的 Notion Database ID
    • TOKEN_OF_GITHUB Github 的用户 token,用于获取当前用户的 API

除此之外,还可以修改环境变量的形式修改当前的配置,例如:

  • FULLSYNC_LIMIT 全量同步的最大 Repo 个数,默认为 2000 个
  • PARTIALSYNC_LIMIT 增量同步的最大 Repo 个数,每次增量同步会从后往前取若干条数据,默认为 10 个
  • REPO_TOPICS_LIMIT Repo 添加的话题数量,默认取前 50 个

需要在 github/workflows/*.yml 中,修改这个配置

如何找到 NOTION_API_KEY? 请参考:https://www.notion.so/Add-and-manage-integrations-with-the-API-910ac902372042bc9da38d48171269cd#eeaa235ffe834d4f9a89a5893398f341
如何找到 NOTION DATABASE ID 请参考:https://stackoverflow.com/questions/67728038/where-to-find-database-id-for-my-database-in-notion
如何申请 Github API TOKEN 请参考:https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token.

这里不需要勾选任何权限。

开始同步

(可选)全量同步

可以在当前的 Github Actions 里面找到 FullSync Notion Star,执行即可全部你之前所有的 Star 信息

(可选)增量同步

  1. (可选)当前默认的轮询时间是十分钟。如果你想要修改增量同步轮询的时间,需要修改 .github/workflows/partial-sync.yml,在 on.schedule.cron 里面设置你的轮询时间。
  2. 在 Github Actions 里面开启 Partial Sync Notion Star (对于 Fork 的 repo,会自动禁用所有轮询的 Actions,所以需要手动开启)

github-notion-star's People

Contributors

imfycc avatar lcjnil avatar louyongjiu avatar panmax avatar zhangnew avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

github-notion-star's Issues

报错

Notion: error from recover cache Error: ENOENT: no such file or directory, open '/home/runner/work/github-notion-star/github-notion-star/.cache/notion-page.json'

/home/runner/work/github-notion-star/github-notion-star/main.ts:30
ENVS.forEach((env) => {
^
AssertionError [ERR_ASSERTION]: NOTION_API_KEY must be added
at /home/runner/work/github-notion-star/github-notion-star/main.ts:31:11
at Array.forEach ()
at Object. (/home/runner/work/github-notion-star/github-notion-star/main.ts:30:6)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Module.m._compile (/home/runner/work/github-notion-star/github-notion-star/node_modules/ts-node/src/index.ts:1225:23)
at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Object.require.extensions. [as .ts] (/home/runner/work/github-notion-star/github-notion-star/node_modules/ts-node/src/index.ts:1228:12)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at Object.openSync (node:fs:585:3)
at Object.readFileSync (node:fs:453:35)
at Object.get (/home/runner/work/github-notion-star/github-notion-star/libs/cache.ts:18:31)
at new Notion (/home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:19:22)
at Object. (/home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:142:23)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Module.m._compile (/home/runner/work/github-notion-star/github-notion-star/node_modules/ts-node/src/index.ts:1225:23)
at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Object.require.extensions. [as .ts] (/home/runner/work/github-notion-star/github-notion-star/node_modules/ts-node/src/index.ts:1228:12)
at Module.load (node:internal/modules/cjs/loader:981:32) {
errno: -2,
syscall: 'open',
code: 'ENOENT',
path: '/home/runner/work/github-notion-star/github-notion-star/.cache/notion-page.json'
}
Notion: restored from cache, count is 0

看起来是因为NOTION_API_KEY 没有添加,但是,我是加了的。可以帮忙看下吗?

报错

`Notion: error from recover cache Error: ENOENT: no such file or directory, open '/home/runner/work/github-notion-star/github-notion-star/.cache/notion-page.json'
at Object.openSync (node:fs:585:3)
at Object.readFileSync (node:fs:453:35)
at Object.get (/home/runner/work/github-notion-star/github-notion-star/libs/cache.ts:18:31)
at new Notion (/home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:19:22)
at Object. (/home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:132:23)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Module.m._compile (/home/runner/work/github-notion-star/github-notion-star/node_modules/ts-node/src/index.ts:1225:23)
at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Object.require.extensions. [as .ts] (/home/runner/work/github-notion-star/github-notion-star/node_modules/ts-node/src/index.ts:1228:12)
at Module.load (node:internal/modules/cjs/loader:981:32) {
errno: -2,
syscall: 'open',
code: 'ENOENT',
path: '/home/runner/work/github-notion-star/github-notion-star/.cache/notion-page.json'
}
Notion: restored from cache, count is 0
Github: Start to get all starred repos, limit is 20
Notion: Start to get all pages
Github: Get all starred repos success, count is 55

/home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:67
pages.forEach((page) => {
^
TypeError: Cannot read properties of undefined (reading 'plain_text')
at /home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:68:54
at Array.forEach ()
at Notion.addPages (/home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:67:15)
at Notion.fullSyncIfNeeded (/home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:55:18)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Promise.all (index 1)
at fullSync (/home/runner/work/github-notion-star/github-notion-star/main.ts:6:5)
Error: Process completed with exit code 1.`

How do I get the valid API token here?

Notion: error from recover cache Error: ENOENT: no such file or directory, open '/home/runner/work/github-notion-star/github-notion-star/.cache/notion-page.json'
at Object.openSync (node:fs:585:3)
at Object.readFileSync (node:fs:453:35)
at Object.get (/home/runner/work/github-notion-star/github-notion-star/libs/cache.ts:18:31)
at new Notion (/home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:19:22)
at Object. (/home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:132:23)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Module.m._compile (/home/runner/work/github-notion-star/github-notion-star/node_modules/ts-node/src/index.ts:1225:23)
at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Object.require.extensions. [as .ts] (/home/runner/work/github-notion-star/github-notion-star/node_modules/ts-node/src/index.ts:1228:12)
at Module.load (node:internal/modules/cjs/loader:981:32) {
errno: -2,
syscall: 'open',
code: 'ENOENT',
path: '/home/runner/work/github-notion-star/github-notion-star/.cache/notion-page.json'
}
Notion: restored from cache, count is 0
Github: Start to get all starred repos, limit is 20
Notion: Start to get all pages
@notionhq/client warn: request fail { code: 'unauthorized', message: 'API token is invalid.' }

/home/runner/work/github-notion-star/github-notion-star/node_modules/@notionhq/client/src/errors.ts:240
return new APIResponseError({
^
APIResponseError: API token is invalid.
at Object.buildRequestError (/home/runner/work/github-notion-star/github-notion-star/node_modules/@notionhq/client/src/errors.ts:240:12)
at Client.request (/home/runner/work/github-notion-star/github-notion-star/node_modules/@notionhq/client/src/Client.ts:157:15)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at Notion.fullSyncIfNeeded (/home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:49:54)
at async Promise.all (index 1)
at fullSync (/home/runner/work/github-notion-star/github-notion-star/main.ts:6:5)
Error: Process completed with exit code 1.

添加新star后 partial-sync 执行出错

今天给两个项目加星:
https://github.com/hashicorp/go-retryablehttp
https://github.com/sony/gobreaker

然后action运行就报错了:

@notionhq/client warn: request fail {
  code: 'validation_error',
  message: 'Primary Language is not a property that exists. Repository Topics is not a property that exists.'
}

/home/runner/work/github-notion-star/github-notion-star/node_modules/@notionhq/client/src/errors.ts:240
    return new APIResponseError({
           ^
APIResponseError: Primary Language is not a property that exists. Repository Topics is not a property that exists.
    at Object.buildRequestError (/home/runner/work/github-notion-star/github-notion-star/node_modules/@notionhq/client/src/errors.ts:240:12)
    at Client.request (/home/runner/work/github-notion-star/github-notion-star/node_modules/@notionhq/client/src/Client.ts:157:15)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at Notion.insertPage (/home/runner/work/github-notion-star/github-notion-star/libs/notion.ts:77:22)
    at partialSync (/home/runner/work/github-notion-star/github-notion-star/main.ts:24:9)
Error: Process completed with exit code 1.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.