このブログを検索

2026年3月5日木曜日

個人用Live配信 Timestamp DataBaseの作り方

# 推しの配信タイムスタンプをローカルで検索できるようにした話

Chrome拡張「CommentTimeline for YouTube」v.1.2.0に実装されたタイムスタンプ一覧の書き出し機能を使い、タイムスタンプのHTMLファイルを集めて、全文検索できるデータベースにするスクリプトを作ったので公開する。

## できること

- 配信年ごとにタブ分けされた一覧ページの生成
- 全ファイル横断の瞬間テキスト検索(曲名・ゲーム名など)
- タイムスタンプのリンクから該当動画の該当時間に直接ジャンプ
- バックエンド不要。HTMLとJSだけで動く。

## 必要なもの

- Python 3.x

## タイムスタンプのダウンロード手順

Chrome拡張「CommentTimeline for YouTube」を使う。

### 1. 拡張機能のインストール

Chromeウェブストアから「CommentTimeline for YouTube」をインストールする。

### 2. 動画ページを開く

YouTube上で、タイムスタンプを保存したい動画のページを開く。

### 3. タイムスタンプを収集する

動画の右側に「⏱︎ タイムスタンプ」というボタンが出る。表示されなかった時はリロードする。クリックするとパネルが開き、コメント欄にあるタイムスタンプ付きコメントが一覧表示される。

コメントがまだ全部読み込まれていない場合は、パネル上部の「**自動読込**」ボタンを押す。自動でページをスクロールして全コメントを読み込んでくれる。完了すると自動で止まる。


### 4. HTMLとしてダウンロード

パネル上部の「**DL**」ボタンをクリックすると、`txt` と `html` の選択肢が出る。

**`html` を選ぶ。**

ファイルが自動でダウンロードされる。ファイル名は `チャンネル名_YYYYMMDD_動画タイトル.html` の形式。

ダウンロードされたHTMLには以下が含まれる:

- 動画タイトル(`<h1>`タグ)
- 動画URL
- 配信日・ダウンロード日
- 全タイムスタンプ(再生時間リンク+テキスト)

### 5. 繰り返す

保存したい配信すべてについて、手順2〜4を繰り返す。
ダウンロードしたHTMLファイルは1つのフォルダにまとめておく。

## データベースの構築

### 1. フォルダ構成

```
MyTimestampDB/
├──
├── チャンネル名_20240315_配信タイトル.html
├── チャンネル名_20240320_配信タイトル.html
├── チャンネル名_20240401_配信タイトル.html
└── ...(HTMLファイルをどんどん追加)
```

### 2. を実行

```powershell
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; python
```

`index.html` と `search_data.js` が生成される。

### 3. 確認

`index.html` をブラウザで開く。

- 上部の検索ボックスにキーワードを入力すると、全ファイルから該当するタイムスタンプが瞬時にリストアップされる
- 年別タブで一覧を切り替えられる
- タイムスタンプのリンクをクリックするとYouTubeの該当時間に飛ぶ


## 別チャンネルで使う場合

`` を別フォルダにコピーして、そのフォルダにHTMLファイルを入れて実行するだけで動く。
titleとh1はスクリプト内にハードコードされているので、必要に応じて書き換える。

よければご利用ください。

2017年5月3日水曜日

夜時間の超過時に生存者が喋れるようにする四条劇場カスタマイズ


かつて運営していた人狼鯖である、式神研スクリプトを利用した、四条劇場のカスタマイズで
夜時間の超過時間に生存者が喋れるようにしたものです。


編集するファイルは古いバージョンだと \include\controller\game_play_class.php ですが
2017年5月3日現在では\include\talk\game_play_talk_class.php になるようです。
現在のバージョンは使ったことないのでもしかしたら下記のコードどおりに変更しても動かないかもしれません。

まず、制限時間判定のところにある
if ($left_time < 1) return false; //制限時間外ならスキップ (ここに来るのは生存者のみのはず)


if (DB::$ROOM->IsDay()) { //昼はそのまま発言
if ($left_time < 1) return false; //制限時間外ならスキップ (ここに来るのは生存者のみのはず)

と昼シーンの処理に入った最初移動します。


//ここからは夜の処理 (役職毎に分ける)
$location = RoleTalk::GetLocation(DB::$SELF->GetVirtual(), DB::$SELF); //仮想ユーザで判定
if ($left_time < 1){//超過発言 $update = false; if (DB::$SELF->IsMainGroup(CampGroup::WOLF)) {
$location = 'self_talk';
}
}else{
$update = DB::$SELF->IsMainGroup(CampGroup::WOLF); //時間経過するのは人狼の発言のみ (本人判定)
}
return RoleTalk::Save($say, DB::$ROOM->scene, $location, $update ? $spend_time : 0, $update);



夜シーンは発言者の役職を求めたあとに、超過時間の時に発言による残り時間処理をしないようにして狼の発言を独り言に変更します。会話を続けて噛みを実行するのを忘れないように、狼は会話が出来ないようにしてあります。

超過時間は本来会話時間ではないので喋れるようにする必要は無いのですが、霊界サービスの一環として四条劇場では実装していました。

2016年8月3日水曜日

kindle本のサブスクリプションサービスがついに始動。

Kindle本の月額980円の支払いで読み放題となるKindle Unlimitedがついに日本でも始まりました。

Kindle Unlimited

全ての本が読み放題となる訳ではありませんが「12万冊以上の本、コミック、雑誌および120万冊以上の洋書」と対象範囲はかなり広いようです。発売して二ヶ月ぐらい前の作品はまだ対象になってないようなので、既刊をKindle Unlimitedで発掘して最新刊は個別に購入するという使い方がメインになりますか。

Kindle端末を持ってない人も、PCやスマホでも無料の公式アプリがあるのでこれを機会にKindle使い始めてみませんか?

PC用の読書アプリはこちらからダウンロードできます。
https://www.amazon.co.jp/gp/digital/fiona/kcp-landing-page/ref=s9_acss_bw_cg_kufaq_md1?ie=utf8&pf_rd_m=AN1VRQENFRJN5&pf_rd_s=merchandised-search-top-1&pf_rd_r=2ED34S5464WRBRHMVF5A&pf_rd_t=101&pf_rd_p=344352589&pf_rd_i=4488502051

ざっと見た感じ、元を取るのはすぐだと思います。なんといったって月額980円ですからね。時間制限のない漫画喫茶のようなものですし。ただ対象作品がわかりにくかったり、ジャンルを細かく絞って探すのができなかったり、一言でいうととても探しにくいです。それでも過去セール対象になったような作品は基本Unlimited対象に入ってるように思います。

Kindle Unlimited:読み放題ストア :"小説家になろう"
個人的には小説家になろうの書籍化作品を最近よく読んでるのでそちらの作品が充実してるのは嬉しいですね。編集の手も入ってるので誤字脱字が少なくなってて読みやすくなってますし。

最初の30日は無料で利用することができますので、ちょうと8月、夏休みに試しに使ってみて、気に入ったら解約せずそのまま利用するのがいいかなと思います。