Coder Social home page Coder Social logo

noriokun4649 / tvtcomment Goto Github PK

View Code? Open in Web Editor NEW

This project forked from silane/tvtcomment

33.0 6.0 7.0 2.31 MB

ニコニコや2chのコメントをオーバーレイ表示するTVTestプラグイン。Twitter実況を実装

Home Page: https://twitter.com/noriokun4649

License: MIT License

C++ 10.74% C 0.03% C# 89.22%
tvtest dtv niconico twitter

tvtcomment's Introduction

TvtComment 過去ログ取得追加版&Twitter実況対応版

TVTest ニコニコ & 5ch コメント表示プラグイン

  • 利用は自己責任で行ってください
  • このプラグインはニコニコのサーバや5chのサーバーとTwitterのサーバーとも通信します。サーバに高負荷を与えるような利用や改変をしないでください。

このプラグインは本家のTvtCommentに非公式過去ログAPIから過去ログを取得する機能を追加した物です。
さらに、Twitterリアルタイム実況の機能も追加しました。

本家との相違点

  • 非公式過去ログ実装 (現在は本家の実装を利用中)
  • 勢いの実装
  • Twitter実況の実装
    • Twitter認証周りのUI実装
    • 自動検索モード実装
    • ツイート投稿実装
    • NG設定にハッシュタグ、メンションの改変実装
    • Annictからハッシュタグを自動取得する機能を実装
  • NG設定に指定文字数以上をNGにする設定の実装
  • 絵文字表示への対応
  • サイドパネルへアイコンの追加
  • ニコニコ動画の2段階認証への対応
  • ニコニコ生放送・実況のコメント受信をWebSocketへ移行
    • コミュニティ・チャンネルにおける自動再接続実装
  • その他バグ修正等(幾つかは本家にマージ済み)

ライセンス

本家同様MITライセンス

ソースコード

GitHub

開発環境

  • TVTest 0.10.0 783c133コミット分 ツールセットv143に再ターゲットしてMSVC 19.33.31630.0でコンパイル
  • LiblSDB 7769294コミット分 ツールセットv143に再ターゲットしてMSVC 19.33.31630.0でコンパイル
  • Microsoft Visual Studio Community 2022

謝辞

このソフトはTvtCommentから改造して作られました。また過去ログの取得は非公式過去ログAPIより取得しております。 これら2つを作られた作者に感謝いたします。silane氏及びtsukumijima氏ありがとうございます。

編集者

noriokun4649

TvtComment

TVTest ニコニコ & 5ch コメント表示プラグイン

  • 利用は自己責任で行ってください
  • このプラグインはニコニコのサーバや5chのサーバーと通信します。サーバに高負荷を与えるような利用や改変をしないでください。

このプラグインは本家のTvtCommentに非公式過去ログAPIから過去ログを取得する機能を追加した物です。

なにこれ?

ニコニコや5chのコメントをTVTestの画面に流すプラグインです。 5chのレスを5chAPIから取得することによる比較的低遅延な表示、録画視聴時の5chの過去ログからの自動でのレス表示、録画視聴時のtsukumijimaさん提供の非公式ニコニコ実況過去ログAPIからの自動でのコメント表示などが特徴です。 また有志によるBSの実況生放送にも対応しています。

機能

  • 2020/12/16からのリニューアル後のニコニコ実況のコメントの表示および投稿
  • 有志によるBS実況コミュニティの生放送のコメントの表示および投稿
  • 指定したニコニコ生放送のコメントの表示および投稿
  • 5chのスレッドのレスの表示
  • 録画視聴時の5chの過去ログからの自動でのレス表示
  • 録画視聴時のtsukumijimaさん提供の非公式ニコニコ実況過去ログAPIからの自動でのコメント表示
  • ニコニココメント形式のXMLファイルからコメントを表示
  • ユーザーNG、単語NG、色コメNGなどのNG機能

導入方法

  1. ソフトを含んだzipファイルをここからダウンロードする
  2. 入ってなければMicrosoft Visual C++ 2015 再頒布可能パッケージをインストールする
  3. zipファイルのx86またはx64フォルダ内のTvtComment.tvtp、TvtComment.iniをTVTestのPluginsフォルダにいれる
  4. TvtCommentフォルダをフォルダごとTVTestのPluginsフォルダにいれる(←重要!
  5. TVTestを起動してこのプラグインを有効にした後表示されるウィンドウから、「設定」タブ->「その他の設定」ボタンでニコニコのユーザーや5chAPIのHMKey、AppKeyの設定する (HMKeyとAppKeyは各自調べてください)。

改造元のNicoJKについて

このソフトはコメント描画部にNicoJK(rev.16)のコードを含んでいます。なのでNicoJK.iniのコメント描画に関する設定はTVTComment.iniでもそのまま使えるはずです。でもほとんどテストしてないので保証はできません。

TvtComment.exeについて

このソフトは、コメント描画を行う実際のTVTestプラグイン部分と、GUI表示やコメント収集をする部分に分かれています。前者がTvtComment.tvtpで後者がTvtComment.exeです。だからTvtComment.exeは怪しいexeじゃないよって一応言っておきます。

使い方の分かりにくい部分

  • ウィンドウの移動は背景部分をドラッグすればできます
  • コメント改行はAlt+Enterで行えます
  • チャンネルリストをダブルクリックでチャンネル変更できます
  • TVTestのキー割り当てでウィンドウを前面に持ってくるキーを割り当てられます
  • コメントログはコメントを選択しないとスクロールできません

バグ

  • 5chが板移転などでURLが変わってるとフリーズしたりするかも
  • TVTestが閉じられてもウィンドウが閉じないことがある
  • 設定ファイルが見つからなかったり内容がおかしいと何も言わずに落ちることがあるかも
  • ニコニコ生放送・実況においてこのソフトで投稿したコメントがニコニコのウェブサイトの画面では表示されないことがある
    • ブラウザと同時ログインしている場合に起こる?
  • NG設定画面で複数のルールを選択して「ルール削除」ボタンを押しても一つしか削除されない

制限

  • 5chへの投稿はできません。スレッドのページをブラウザで開く機能があるのでそこで投稿してください。
  • ニコニコ生放送は運営コメント等には対応していません
  • 5ch過去ログでコメントが最初に表示されるまで数十秒かかる
  • 5ch過去ログで「さかのぼる時間」設定によってはコメントが表示されない。「さかのぼる時間」設定を長くすると表示されますが2ch.scや5ch.netへの接続が増え与える負荷が増加しますし、最初にコメントが表示されるまでの時間も長くなります。

ライセンス

LICENSE参照

開発環境

  • TVTest 0.9.0
  • Microsoft Visual Studio Community 2019

ソースコード

GitHub

謝辞

  • このソフトはNicoJKから改造して作られました。NicoJKの作者様への感謝をここに表します。私はwin32プログラミングはほとんどできないので元のプログラムがなければ決して作れませんでした。ありがとうございます。
  • ニコニコ実況過去ログ機能にはtsukumijimaさん提供の非公式ニコニコ実況過去ログAPIを使わさせていただいています。素晴らしいサービスをありがとうございます。

tvtcomment's People

Contributors

aznhe21 avatar noriokun4649 avatar silane avatar slashnephy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

tvtcomment's Issues

5ch過去ログで522エラーが出る

5ch過去ログを利用すると522エラーが出ることがある
原因:過去ログ内にあるOTHER Serverを参照しようとして出ている
対処:OTHER Serverは今は使われてないっぽいので処理を消す

CoreTweet.V2 等の解決に失敗する

CI がコケていたので手元の環境でも試してみましたが、CoreTweet の解決に失敗してビルドに失敗してしまうようです。

Nuget でインストールできる CoreTweet のバージョンは 1.0.0.483 で、これには CoreTweet.V2 名前空間が含まれていません。
Appveyor 上には 1.0.0.583 (V2 を含むバージョン) が公開されていますが、Nuget レジストリには同期されていないのが原因のようです。

CoreTweet の リポジトリ を Submodule 化して ProjectReference として取り込んでしまうか、Appveyor の nupkg をリポジトリに含んだりして解決できそうです。

ちなみに Submodule を CI 上で含めてビルドする際には https://github.com/SlashNephy/Dalamud.Divination.Template/blob/9ac6878f1558245d4eba01c573a6c9c862b4ba51/.github/workflows/build.yml#L36 のように submodules: recursive のような指定が必要です。

jsonの保存処理を設定変更時に随時行うように変更する

現状はTvTComment終了処理時に変更を一括で保存している

問題点

  • 強制終了等異常終了時に変更点が保持されない
  • 終了と起動を素早く行うと保存処理でロックされて起動に失敗する

改善案

  • 設定変更時に随時保存処理をする

EventInfoを渡してからチャンネル変更時にTvTestが落ちる?

現状EventInfoを渡すように変更しただけだがTvTestが落ちるようになった。
ただ、原因としては今回変更を加えていないTvTest用プラグイン側のEventInfo送信における処理が原因のように見える。
そのため現状対処しようがない。

具体的には番組情報の拡張情報が原因くさいが、時間がint32の範囲外になることもあった。よくわからない。

5chのAPIが死んだので対応する

5chのAPIが死んで、API経由でのdat取得が出来なくなった。
代わりに5ch.netがdatへのアクセスを解禁したので直接取得するように変更

カラム幅を保存して欲しいです。

いつも(ほぼ毎日)利用させてもらってます。更新ありがとうございます!
要望になりますが「ログ」タブと、コメント入力欄のカラム幅を保存して欲しいのですが、難しいでしょうか?出来ればで結構ですのでよろしく願いします!
名称未設定 3

録画済み(録画中含む)TSをTvtPlayで再生すると落ちる

すぐ落ちるTSもあれば数秒再生できるTSもあり、数秒再生できる場合はコメントが流れる事もある
TVTCommentバージョンは恐らくv2.0.1

Application: TvtComment.exe
CoreCLR Version: 5.0.1021.41214
.NET Version: 5.0.10
Description: The process was terminated due to an unhandled exception.
Exception Info: System.InvalidOperationException: Cannot call this method on current state. Current state is 'Disposed'
   at TVTComment.Model.IPCModule.Send(IIPCMessage message)
   at TVTComment.Model.ChatModule.CollectServiceModule_NewChatProduced(IEnumerable`1 newChats)
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__140_0(Object state)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.Run()
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at System.Windows.Application.Run()
   at TVTComment.App.Main()

TwitterAPI v2 GET /2/tweets/search/streamの実装

現在実装しているTwitterAPI v1.1のSearchStreamの場合検索ルールの更新時にストリームを再接続する必要があり、チャンネル切り替え時にすぐにリミットに達してしまう。
そのため現在早期アクセスとしてリリースされているGET /2/tweets/search/streamの実装が有用かもしれない。
GET /2/tweets/search/streamであればストリーム切断せずにルールの追加削除が可能である。

また、確認できていないがv1.1のSearchStreamではCJKのスペースで区切られない言語のサポートがなかったがGET /2/tweets/search/streamではもしかしたら対応されているかも知れない。

数分経つと2chDAT取得エラーが発生する

2chDAT取得後しばらく経つと以下のエラーが発生します

"TVTCommentエラー
2chDATで以下のエラーが発生しました。このコメント元を無効化します。
サーバーからの返信にエラーがあります"

コメント取得における脱XMLSocket

3月25日前後に該当APIが廃止される予定のため。

  • WebSocketへの移行
  • ThreadIDを文字列に移行
  • UserIDの取得と送信
  • エラー処理などの検証

ニコニコ実況においてコメントが投稿できない

nicocasAPIにおけるコメント投稿APIが廃止された影響で現状コメントを投稿できない。
nicocasAPIにおいて代替えのAPIは無いため、コメント受信どうようにWebSocketに移行するか
ほかのAPIを探す。

WebSocketに移行するとなると視聴セッションを張らないといけないので面倒......

OAuth への対応

フロントエンドの実装は終わってるので、API等の差し替え

  • コミュID取得API
  • プログラム情報取得API
  • コメントストリーム取得
  • 視聴セッションストリーム取得

UIがちらつく

UIがちらつく

タスクビューでみるとTvTCommentのexe側のWPFウィンドウが2つ作られており片方が点滅している。
軽く見た感じ視聴中のアイコン点滅と同じ間隔で点滅しているのでこれが原因の可能性がある。

Discord実況

クローズドなコミュニティで実況を出来るようにする
Discordを使ってみる

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.