kevinptt0323 / Ptt Client
Licence: mit
A Node.js/Browser client for fetching data from ptt.cc
Stars: ✭ 78
Programming Languages
javascript
184084 projects - #8 most used programming language
typescript
32286 projects
Labels
Projects that are alternatives of or similar to Ptt Client
Ejdb
🏂 EJDB 2.0 — Embeddable JSON Database engine C library. Simple XPath like query language (JQL). Websockets / Android / iOS / React Native / Flutter / Java / Dart / Node.js bindings. Docker image.
Stars: ✭ 1,187 (+1421.79%)
Mutual labels: websocket
Deps Report
Generate reports about dependencies and dependents of your JavaScript/TypeScript files through an AST. It supports import and require statements.
Stars: ✭ 76 (-2.56%)
Mutual labels: npm-package
Bilibili danmuji
(Bilibili)B站直播礼物答谢、定时广告、关注感谢,自动回复工具,房管工具,自动打卡,Bilibili直播弹幕姬(使用websocket协议),java版B站弹幕姬,基于springboot。
Stars: ✭ 76 (-2.56%)
Mutual labels: websocket
Delay Cli
Delay execution for a given amount of seconds
Stars: ✭ 74 (-5.13%)
Mutual labels: npm-package
Just An Email
App to share files & texts between your devices without installing anything
Stars: ✭ 75 (-3.85%)
Mutual labels: websocket
Minimal Feedback
🗳 minimal-feedback is a blazingly fast and highly customizable component to get user feedback.
Stars: ✭ 78 (+0%)
Mutual labels: npm-package
Vue Scroll Progress Bar
Vue.js plugin for page scroll progress bar
Stars: ✭ 76 (-2.56%)
Mutual labels: npm-package
Deno Websocket
🦕 A simple WebSocket library like ws of node.js library for deno
Stars: ✭ 74 (-5.13%)
Mutual labels: websocket
Incompose
A inferno utility belt for function components and higher-order components
Stars: ✭ 76 (-2.56%)
Mutual labels: npm-package
Github Files Fetcher
Download a specific folder or file from a GitHub repo through command line
Stars: ✭ 73 (-6.41%)
Mutual labels: npm-package
Vue C3
vue-c3 is a reusable vue component for c3 charts
Stars: ✭ 76 (-2.56%)
Mutual labels: npm-package
Gowebsocket
Gorilla websockets based simplified websocket-client implementation in GO.
Stars: ✭ 77 (-1.28%)
Mutual labels: websocket
Noduino
JavaScript and Node.js Framework for controlling Arduino with HTML and WebSockets
Stars: ✭ 1,202 (+1441.03%)
Mutual labels: websocket
ptt-client
ptt-client is an unofficial client to fetch data from PTT (ptt.cc), the famous BBS in Taiwan, over WebSocket. This module works in browser and Node.js.
PTT supports connection with WebSocket by official.
Installation
npm install ptt-client
Example
import Ptt from 'ptt-client';
import {Article, Board, Mail} from 'ptt-client/sites/ptt/model';
// if you are using this module in node.js, 'ws' is required as WebSocket polyfill.
// you don't need this in modern browsers
global.WebSocket = require('ws');
(async function() {
const ptt = new Ptt();
ptt.once('connect', () => {
const kickOther = true;
if (!await ptt.login('username', 'password', kickOther))
return;
// get last 20 articles from specific board. the first one is the latest
let query = ptt.select(Article).where('boardname', 'C_Chat');
let article = await query.get();
// get articles with offset
let offset = articles[article.length-1].id - 1;
query.where('id', offset);
let articles2 = await query.get();
// get articles with search filter (type: 'push', 'author', 'title')
query = ptt.select(Article)
.where('boardname', 'C_Chat')
.where('title', '閒聊')
.where('title', '京阿尼')
.where('push', '20');
articles = await query.get();
// get the content of specific article
query.where('id', articles[articles.length-1].id);
let article = await query.getOne();
// get board list
query = ptt.select(Board).where('entry', 'class');
let classBoards = await query.get();
// get hot board list
query = ptt.select(Board).where('entry', 'hot');
let hotBoards = await query.get();
// get your favorite list
query = ptt.select(Board).where('entry', 'favorite');
let favorites = await query.get();
// search board by prefix
query = ptt.select(Board).where('prefix', 'c_cha');
let boards = await query.get();
// get favorite list in a folder
if (favorites[0].folder) {
query.where('offsets', [favorites[0].id]);
let favorites2 = await query.get();
}
// get mails
query = ptt.select(Mail);
let mails = await query.get();
// get mail
query.where('id', mails[0].sn);
let mail = await query.getOne();
await ptt.logout();
});
})();
Development
npm run test
npm run build
License
MIT
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].