Skip to content
Personal Bookmark System.
Branch: master
Clone or download
Latest commit 1f38741 Jun 11, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin refactor(create-index): Move updating tags to create-index tools Jun 3, 2019
src
test test: add tests for repository-collection Jun 3, 2019
.gitignore initial commit Jun 2, 2019
.travis.yml initial commit Jun 2, 2019
LICENSE initial commit Jun 2, 2019
README.md Update README Jun 2, 2019
package.json 1.1.3 Jun 10, 2019
tsconfig.json initial commit Jun 2, 2019
yarn.lock fix: Does not update if tags is not changed Jun 8, 2019

README.md

asocial-bookmark

personal bookmark system.

Install

Install with npm:

npm install asocial-bookmark

Requirements:

  • ECMAScript 2017+

Usage

GitHub mode.

import { AsocialBookmark } from "asocial-bookmark";

(async () => {
    if (!process.env.GH_TOKEN) {
        throw new Error("Set env GH_TOKEN=xxx");
    }
    const asocialBookmark = new AsocialBookmark({
        github: {
            owner: "azu",
            repo: "mybookmarks",
            ref: "heads/master",
            token: process.env.GH_TOKEN
        }
    });
    const date = new Date();
    const isoDate = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toISOString();
    await asocialBookmark.updateBookmark({
        title: "example",
        url: "https://example.com",
        content: "description for example",
        date: isoDate,
        tags: ["example"]
    });

    const bookmark = await asocialBookmark.getBookmark({
        url: "https://example.com",
        date: new Date().toUTCString()
    });
    console.log("bookmark", bookmark);
    const tags = await asocialBookmark.getTags();
    console.log("tags", tags);
})();

CLI

RUN following CLI in your bookmark repository.

Migrate はてなブックマーク to asocial-bookmark

$ cd your-bookmarks-repository/
$ migrate-hatenabookmark-to-asocial-bookmark --hatena <user-name>

Create index.json that includes all bookmarks.

$ cd your-bookmarks-repository/
$ asocial-bookmark-create-index

How to create your bookmark repository

WIP: It is complex workflow.

  1. Create your repository.
    • Example: https://github.com/{your}/mybookmarks
  2. Convert existing bookmark like "はてなブックマーク" to asocial-bookmark
  3. Setup CI/CD - Netlify is useful in this case
    • Run $ asocial-bookmark-create-index that create index.json before each deploy
    • Enable CORS for https://<your-bookmark>/index.json
    • All bookmarks: https://<your-bookmark>/index.json
    • All tags: https://<your-bookmark>/tags.json
    • Block bookmarks by month: https://<your-bookmark>/:year/:month/index.json

.netlify.toml in your bookmark repository:

# example netlify.toml
[build]
  command = "asocial-bookmark-create-index"
  functions = "functions"
  publish = "."
  #  status = 200
[[headers]]
  for = "/index.json"
  [headers.values]
    Access-Control-Allow-Origin = "*"
  1. Post bookmark to your repository via postem

src/service.js in postem

const path = require("path");
module.exports = [
    {
        enabled: true,
        name: "twitter",
        indexPath: path.join(__dirname, "services/twitter/index.js")
    },
    {
        enabled: true,
        name: "AsocialBookmark",
        indexPath: path.join(__dirname, "services/asocial-bookmark/index.js")
    }
];
  1. Search Bookmark on はてなブックマーク検索PWA
    • Input https://<your-bookmark>/index.json to "hatena user name"
    • Very Very Hack But Work!
    • Do incremental search!

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu

You can’t perform that action at this time.