Skip to content

Commit

Permalink
feat(live-mini): add monorepo live-mini
Browse files Browse the repository at this point in the history
  • Loading branch information
ddiu8081 committed Oct 17, 2022
1 parent 181bdc3 commit 5a903ed
Show file tree
Hide file tree
Showing 16 changed files with 215 additions and 11 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"author": "ddiu8081 <ddiu8081@gmail.com>",
"devDependencies": {
"@types/node": "^18.8.3",
"tsup": "^6.2.3",
"typescript": "^4.8.4"
}
}
8 changes: 3 additions & 5 deletions packages/bilicli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,9 @@
],
"author": "ddiu8081 <ddiu8081@gmail.com>",
"license": "MIT",
"devDependencies": {
"tsup": "^6.2.3"
},
"dependencies": {
"cac": "^6.7.14",
"@bilicli/live": "workspace:*"
"@bilicli/live": "workspace:*",
"@bilicli/live-mini": "workspace:*",
"cac": "^6.7.14"
}
}
15 changes: 15 additions & 0 deletions packages/bilicli/src/actions/live-mini.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { startApp } from '@bilicli/live-mini'

interface ArgOptions {
badge: boolean
rank: boolean
}

const mini = async(roomId: string, options: ArgOptions) => {
startApp(~~roomId, {
badge: options.badge,
rank: options.rank,
})
}

export { mini }
10 changes: 9 additions & 1 deletion packages/bilicli/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,24 @@ import { name, version } from '../package.json'
import { cac } from 'cac'

import { live } from './actions/live'
import { mini } from './actions/live-mini'

const cli = cac(name)

// create
// live
cli
.command('live <room_id>', 'Open live console in full mode')
.option('--no-badge', 'Hide badge of user')
.option('--no-rank', 'Hide rank of user')
.action(live)

// mini
cli
.command('mini <room_id>', 'Open live console in mini mode')
.option('--no-badge', 'Hide badge of user')
.option('--no-rank', 'Hide rank of user')
.action(mini)

cli.help()
cli.version(version)

Expand Down
37 changes: 37 additions & 0 deletions packages/live-mini/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"name": "@bilicli/live-mini",
"version": "0.0.1",
"description": "Bili-Live danmu client, lite version",
"main": "dist/index.js",
"module": "dist/index.mjs",
"types": "dist/index.d.ts",
"scripts": {
"dev": "tsup --watch",
"build": "tsup"
},
"exports": {
".": {
"require": "./dist/index.js",
"import": "./dist/index.mjs"
}
},
"files": [
"dist"
],
"keywords": [
"bilibili",
"bilibili-live",
"danmaku",
"danmu",
"terminal",
"cli",
"tui"
],
"author": "ddiu8081 <ddiu8081@gmail.com>",
"license": "MIT",
"dependencies": {
"blive-message-listener": "^0.3.0",
"colorette": "^2.0.19",
"ohmyfetch": "^0.4.19"
}
}
4 changes: 4 additions & 0 deletions packages/live-mini/src/app.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface AppOptions {
badge: boolean
rank: boolean
}
7 changes: 7 additions & 0 deletions packages/live-mini/src/component/msg/danmu.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import type { DanmuMsg } from 'blive-message-listener'
import { username } from '../username'

export const danmuMsg = (msg: DanmuMsg) => {
const userCom = username(msg.user)
return `${userCom}: ${msg.content}`
}
1 change: 1 addition & 0 deletions packages/live-mini/src/component/msg/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './danmu'
6 changes: 6 additions & 0 deletions packages/live-mini/src/component/username.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { blue } from 'colorette'
import type { User } from 'blive-message-listener'

export const username = (user: User) => {
return blue(user.uname)
}
14 changes: 14 additions & 0 deletions packages/live-mini/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { startInstance } from './instance'
import { getRoomInfo } from './utils/getInfo'

const startApp = async (roomId: number, options: AppOptions) => {
const roomInfo = await getRoomInfo(roomId)
if (!roomInfo) {
console.log('房间不存在')
return process.exit(1)
}
console.log(roomId, `(${roomInfo.parent_area_name}·${roomInfo.area_name})`, roomInfo.title)
startInstance(roomInfo.room_id, options)
}

export { startApp }
15 changes: 15 additions & 0 deletions packages/live-mini/src/instance.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { startListen } from 'blive-message-listener'
import type {
MsgHandler, Message,
DanmuMsg, SuperChatMsg, GiftMsg, GuardBuyMsg, UserActionMsg
} from 'blive-message-listener'
import { danmuMsg } from './component/msg'

export const startInstance = (roomId: number, options: AppOptions) => {
const handler: MsgHandler = {
onIncomeDanmu: (msg) => {
console.log(danmuMsg(msg.body))
},
}
startListen(roomId, handler)
}
34 changes: 34 additions & 0 deletions packages/live-mini/src/utils/getInfo.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { $fetch } from 'ohmyfetch'

export interface RoomInfo {
uid: number
room_id: number
short_id: number
attention: number
online: number
is_portrait: boolean
description: string
live_status: number
area_id: number
parent_area_id: number
parent_area_name: string
background: string
title: string
user_cover: string
keyframe: string
live_time: string
area_name: string
}

interface RoomInfoResponse {
code: number
msg: string
message: string
data: RoomInfo
}

export const getRoomInfo = async (roomId: number) => {
const url = `https://api.live.bilibili.com/room/v1/Room/get_info?room_id=${roomId}`
const response = await $fetch<RoomInfoResponse>(url)
return response.code === 0 ? response.data : null
}
13 changes: 13 additions & 0 deletions packages/live-mini/tsup.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { defineConfig } from 'tsup'

export default defineConfig({
format: ['cjs', 'esm'],
entry: [
'src/index.ts',
],
dts: {
resolve: true,
entry: './src/index.ts',
},
clean: true,
})
2 changes: 1 addition & 1 deletion packages/live/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@bilicli/live",
"version": "0.3.2",
"description": "",
"description": "Bili-Live danmu client",
"scripts": {
"dev": "temir src/index.ts",
"build": "temir build src/index.ts"
Expand Down
2 changes: 1 addition & 1 deletion packages/live/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { render } from '@temir/core'
import { h } from 'vue'
import App from './App.vue'

import { getRoomInfo, type RoomInfo } from './utils/getInfo'
import { getRoomInfo } from './utils/getInfo'

const startApp = async (roomId: number, options: AppOptions) => {
const roomInfo = await getRoomInfo(roomId)
Expand Down
57 changes: 54 additions & 3 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 5a903ed

Please sign in to comment.