jser-stat v4.0.3
jser-stat 
JSer.info stat library
Installation
npm install jser-stat
Data Source
- http://jser.info/source-data/items.json
- jser/source-data
- jser/jser.infoの記事元となるサイトのデータを一つのJSONとして固めたもの
- http://jser.info/posts.json
- jser.infoの投稿した記事のデータ
Usage
API Document: http://jser.info/stat-js/
Constructor
new JSerStat(rawItems, rawPosts);
Automatically load rawItems
and rawPosts
in Node.js.
var DefaultData = require("jser-stat").DefaultData;
var JSerStat = require("jser-stat").JSerStat;
var stat = new JSerStat(DefaultData.items, DefaultData.posts);
var startTime = Date.now();
var firstWeek = stat.findJSerWeek(1);
var weeks = stat.findJSerWeeksBetween(new Date("2013-01-31T15:00:00.000Z"), new Date("2015-06-01T13:22:37.167Z"));
var theItem = stat.findItemWithURL("http://d.hatena.ne.jp/brazil/20110131/1296419283");
console.log(theItem);
/*
JSerItem {
title: '実行間隔を調整する - はてなダイアリー - 無料で簡単。広告のないシンプルなブログをはじめよう!',
url: 'http://d.hatena.ne.jp/brazil/20110131/1296419283',
content: '一定間隔内で一度のみ実行する throttle、\n一定間隔に呼び出され無ければ実行する debounce についての解説。\nそれぞれ用途や図解も付いていて大変わかりやすい。',
tags: [],
date: Sat Jan 01 2011 00:00:00 GMT+0900 (JST),
relatedLinks: [] }
*/
Manually load rawItems
and rawPosts
in Browser.
function fetchURL(URL) {
return new Promise(function (resolve, reject) {
var req = new XMLHttpRequest();
req.open('GET', URL);
req.onload = function () {
if (req.status == 200) {
resolve(req.response);
} else {
reject(Error(req.statusText));
}
};
req.onerror = function () {
reject(Error(req.statusText));
};
req.send();
});
}
function getStat() {
return Promise.all([
fetchURL("http://jser.info/posts.json"),
fetchURL("http://jser.info/source-data/items.json")
]).then(([postString. itemsString]) => {
var posts = JSON.parse(postString).reverse();
var items = JSON.parse(itemsString);
var jSerStat = new JSerStat(items, posts);
return jSerStat;
});
}
Models
jser-stat has these model.
- src/models/JSerItem.js from jser/source-data
- src/models/JSerItemRelatedLink.js is sub model of JSerItem.
- src/models/JSerPost.js from jser/jser.github.io
- src/models/JSerWeek.js is JSerItem + JSerPost
findItemsBetween(beginDate, endDate): JSerItem[]
return JSerItems between two dates
getJSerWeeks(): JSerWeek[]
return all JSerWeeks
findJSerWeeksBetween(beginDate, endDate): JSerWeek[]
return JSerWeeks between two dates
findJSerWeek(number): JSerWeek
number start with 1.
return JSerWeek at the number.
findWeekWithItem(itemObject): JSerWeek
return JSerWeek contain the itemObject.
findItemWithURL(URL): JSerItem
return JSerItem match the URL
.
findRelatedItems(item, limit = 10): JSerItem[]
return JSerItems that related the argument item
.
CLI
Update stat data
Install jser-stat and add update-jser-stat
command
$(npm bin)/update-jser-stat
Update data/items.json
adn data/posts.json
Tests
npm test
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
License
MIT
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago