Giter Club home page Giter Club logo

xpadev-net / niconicomments Goto Github PK

View Code? Open in Web Editor NEW
67.0 4.0 5.0 10.65 MB

ニコニコ動画の公式プレイヤー互換の高パフォーマンスなコメント描画ライブラリ / High peformance High compatibility comment drawing library

Home Page: https://xpadev-net.github.io/niconicomments/

License: MIT License

JavaScript 1.27% TypeScript 98.34% Shell 0.05% Dockerfile 0.34%
javascript canvas niconico comment-viewer comments npm npm-package video danmaku comment-art

niconicomments's Introduction

主にWeb関係のツールやライブラリをOSSとして公開しています

自宅サーバーは良いぞ

🌐 Socials:

Twitter

💻 Tech Stack:

JavaScript TypeScript React Next JS NodeJS NPM SASS Nginx MariaDB LINUX Kubernetes

📊 GitHub Stats:

🏆 GitHub Trophies

niconicomments's People

Contributors

dependabot[bot] avatar negima1072 avatar rinsuki avatar xpadev-net 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  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  avatar

Watchers

 avatar  avatar  avatar  avatar

niconicomments's Issues

[不具合][全般]v1コメントで投稿者判定が出来ない

概要

legacy apiは投稿者コメントにユーザーidがなかったためコメント単体で判別が出来たが、v1には差異が無いため、threadの名前を見るしか無い
現状thread名とか一切確認していないのでそこを修正する必要がある

[機能][追加]コメント入力形式追加

概要

入力の対応形式を追加
現在対応を考えているフォーマットは以下の通り

  • niconico legacy api format (legacy)
    コメントといえばあれってやつ(legacy/api.json)
  • niconico v1 api format (v1)
    最近変わったやつ(v1/thread)
  • niconico owner comment format (owner)
    投稿者コメントのあれ
  • niconicomments format (formatted)
    sampleのcommentdata以下にあるやつ
  • niconicome xml format (niconicome)
    niconicomeが吐き出すxml形式のやつ

当面このissueは開けとくので他フォーマットの対応要望あればコメントにお願いします

[機能][追加]フォントサイズ補正

概要

Windowsとmacは基本どの環境にも同じフォントが入っているが、モバイル端末だと物によって入っているものが違うため、
予めデータセットを用意しておき、初期化時に表示サイズが同じになるように補正を行う

メモ

設定で有効無効切り替えられるようにしてconstructor内で横幅を元にリサイズする
データセットは全角半角文字と空白、タブ文字などいくつか用意する

[機能][改善]重い処理をWebWorkerに移す

WebWorker上でcanvasが使用できないため、OffscreenCanvasにFirefox及びSafariが対応するまでは保留
ブラウザシェア?そんなもん知らん
少なくともFirefoxが対応してから実装予定

[機能][追加]動的コメント追加

概要

現状コメントを読み込んだタイミングですべてのコメントの配置を決定しているため、
途中からコメントを追加できるように、新たにメゾットを追加する

追加したタイミングから、再計算を初めて、結果がおなじになった時点で処理を停止すれば負荷を最小限に抑えられる

[機能][改善]初期化処理の軽量化

現状すべてのコメントをmeasureTextしているが、
中を流れるコメントは当たり判定的に消費する範囲は必ず一定で、
高さもDRなどが存在しないためある程度絞れる

そこで、nakaのmeasureTextはgetImage時に行い、初期化時はコマンドを処理して高さ計算をするだけに変更する
※ueやshitaのコメントは今まで通りmeasureTextを行う必要がある

[不具合][全般]メモリ食い過ぎ

概要

コメントを大量に読み込むと、コメントのキャッシュが溜まってメモリが爆発する

Brave@m1 macで試したところ12GBを越えたあたりで爆発した

キャッシュの最大保持数を設定する必要があるかも
そもそも50000件も普通読み込まないから問題ないと思うけど

[機能][改善] 非整数vposでの描画の対応

概要

  • なにが:drawCanvas に渡すvposが
  • どうなっていて:整数でないとうまく描画されない
  • どうなってほしい:整数でなくても描画されるようになっていてほしい

とりあえず this.timeline の参照だけ Math.floor したものを使って、それ以外は非整数な vpos を使ったパッチを用意しました (これで何も出ないということはなくなる) rinsuki@9770991

一見ちゃんと動いているように見えますが、適当に一本の動画で試しているだけなので、プラグインとかCA依存で壊れるかもしれません (内部構造に詳しくないのでこれでいいかわからない)

[機能][改善]CA衝突回避のロジック改善

現状同一ユーザーが積みを複数回投稿している場合に衝突が発生してしまうためこれをどうにかしたい

ユーザーを絞った上で投下時間をもとにCAごとのグループを生成してグループ化する?

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.