{"id":13832425,"url":"https://github.com/ktmud/doubanj","last_synced_at":"2025-04-06T08:14:41.520Z","repository":{"id":7004934,"uuid":"8271922","full_name":"ktmud/doubanj","owner":"ktmud","description":"Visualize your reading history.","archived":false,"fork":false,"pushed_at":"2022-12-09T09:06:44.000Z","size":2193,"stargazers_count":337,"open_issues_count":34,"forks_count":71,"subscribers_count":29,"default_branch":"master","last_synced_at":"2025-03-30T07:08:37.703Z","etag":null,"topics":["douban","javascript","visualization"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ktmud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-02-18T16:12:19.000Z","updated_at":"2024-11-18T05:25:05.000Z","dependencies_parsed_at":"2023-01-11T20:10:12.596Z","dependency_job_id":null,"html_url":"https://github.com/ktmud/doubanj","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ktmud%2Fdoubanj","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ktmud%2Fdoubanj/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ktmud%2Fdoubanj/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ktmud%2Fdoubanj/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ktmud","download_url":"https://codeload.github.com/ktmud/doubanj/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247451667,"owners_count":20940944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["douban","javascript","visualization"],"created_at":"2024-08-04T10:02:02.937Z","updated_at":"2025-04-06T08:14:41.500Z","avatar_url":"https://github.com/ktmud.png","language":"JavaScript","readme":"# [豆瓣酱] [![repo dependency](https://david-dm.org/ktmud/doubanj.png)](https://david-dm.org/ktmud/doubanj)\n\n## This repo has been deprecated. 由于豆瓣关闭了 API 通道，本网站已下线。\n\n[豆瓣](http://www.douban.com) 私人收藏数据可视化。\n\n## 依赖\n\n### 数据库服务器\n\n同时依赖 mongodb 和 redis ，配置参数参见 `conf/default.conf.js` 。\n\n### 工具包\n\n    npm install forever -g\n    npm install component -g\n    npm install grunt-cli -g\n    npm install\n\n## 开始开发\n\n    make init\n    make grunt\n    make\n\nmake 的默认命令是使用 `forever` 执行 `app.js` 。\n\n如果需要修改静态文件，请执行 `make watch` ，利用 `grunt` 监视静态文件改动。\n\n## 一点说明\n\n### MongoDB 的用处\n\n  1. 存储用户账户信息、收藏信息、条目信息\n  2. 利用 [aggregation](http://docs.mongodb.org/manual/applications/aggregation/) 生成统计结果\n\n### redis 的用处\n\n  1. 替代 memcached 的缓存服务\n  2. 存储统计结果（计划中）\n\n### 队列管理\n\n使用 [node-pool](https://github.com/coopernurse/node-pool)，数据库请求、API请求、统计请求，都有分别的队列。\n\n### 静态文件\n\n  - 依赖的开源库都用 component 来管理。 \n  - 使用 grunt 来打包。具体配置参见 `Gruntfile.js` 。\n  - 服务器递送的总是 `/static/dist` 目录下的文件，调试时也要保证 dist 目录下有所有需要的文件。没有 fallback 。因此请保证修改静态文件时，watch 有运行。\n\n#### 客户端JS的模块化\n\n  - static/js/do.core.js 是由豆瓣的 do.js 修改而来的文件加载器\n  - 用了 component-build 的一套东西，参看 static/js/do.cmd.js\n  - Gruntfile.js 里定义了对 js 文件包裹 CommonJS `require` 定义的命令\n  - 使用模版配套的 `#{urlmap()}` 方法为 Do 生成所需文件的真实地址\n  - 使用 `Do('module1', 'module2', ...` 显式延时加载你需要的模块，模块名即文件名，在 Do 内部安全地使用 `require('xxx')`\n    具体使用实例参见 static/js/people/booter.js\n\n#### 版本管理\n\n发布上线前执行 `grunt build` ，将为压缩后的文件生成一个 hashmap (即 static/hash.json )，并重命名文件为 static/dist/js/xx\\_HASH.js 格式。\n为了保证这套机制的顺利运行，请保证新加的静态文件名中不包括下划线（\\_）。\n\n#### 提供 API Key\n\n采集豆瓣数据需要使用豆瓣 API。请配置一下环境变量来制定豆瓣 API KEY：\n\n- DOUBAN_APP_KEY\n- DOUBAN_APP_SECRET\n- DOUBAN_APP_MORE    - 格式：key1:secret1, key2:secret2\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fktmud%2Fdoubanj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fktmud%2Fdoubanj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fktmud%2Fdoubanj/lists"}