Giter VIP home page Giter VIP logo

livedl's Introduction

livedl

新配信(HTML5)に対応したニコ生録画ツール。ニコ生以外のサイトにも対応予定

使い方

https://himananiito.hatenablog.jp/entry/livedl を参照

Windowsでのビルド(exeを作成するためにDockerを利用)

Step1

docker-compose が実行できるようにDocker Desktop for Windowsをインストールする。

Step2

ターミナルで

build\windows

に移動する。

Step3

docker-compose up --build

を実行するとプロジェクトのトップディレクトリに livedl.exe が作成される。

Linux(Ubuntu)でのビルド方法

cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"

Go実行環境のインストール (無い場合)

https://golang.org/doc/install
に従う

gitをインストール (無い場合)

sudo apt-get install git

gccなどのビルドツールをインストール (無い場合)

sudo apt-get install build-essential

livedlのソースを取得

git clone https://github.com/himananiito/livedl.git

livedlのコンパイル

ディレクトリを移動

cd livedl

(オプション)最新のコードをビルドする場合

git checkout master

ビルドする

go build src/livedl.go
./livedl -h
livedl (20180807.22-linux)

Windows(32bit及び64bit上での32bit向け)コンパイル方法

gccのインストール

gcc には必ず以下を使用すること。

http://tdm-gcc.tdragon.net/download

環境変数で(例)C:\TDM-GCC-64\binが他のgccより優先されるように設定すること。

必要なgoのモジュール

linuxの説明に倣ってインストールする。

コンパイル

PowerSellで、build-386.ps1 を実行する。または以下を実行する。

set-item env:GOARCH -value 386
set-item env:CGO_ENABLED -value 1
go build -o livedl.x86.exe src/livedl.go

32bit環境でx509: certificate signed by unknown authorityが出る

動けばいいのであればオプションで以下を指定する。

-http-skip-verify=on

コンテナで実行

livedlのソースを取得

git clone https://github.com/himananiito/livedl.git
cd livedl
git checkout master # Or another version that supports docker (contains Dockerfile)

イメージ作成

docker build -t livedl .

イメージの使い方

  • 出力フォルダを/livedlにマウント
docker run --rm -it -v "$(pwd):/livedl" livedl "https://live.nicovideo.jp/watch/..."

以上

livedl's People

Contributors

himananiito avatar jasonszang avatar nnn-revo2012 avatar sangwon-jung-work avatar sarami55 avatar tellowkrinkle 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

livedl's Issues

[ツイキャス] リトライ機能中に途中でエラーとなる

  • ログ
panic: runtime error: invalid memory address or nil pointer dereference
        panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x727d09]

goroutine 1 [running]:
github.com/gorilla/websocket.(*Conn).Close(0x0, 0x0, 0x0)
        *********************/github.com/gorilla/websocket/conn.go:348 +0x29
panic(0xa75ba0, 0xf586d0)
        *********/runtime/panic.go:505 +0x237
github.com/gorilla/websocket.(*Conn).SetReadDeadline(0x0, 0xbee208fcdc517fe0, 0x53c5df8dd45, 0xf86cc0, 0xbee208fcdc517fe0, 0x53c5df8dd45)
        *********************/github.com/gorilla/websocket/conn.go:1035 +0x29
*********/livedl/src/twitcas.TwitcasRecord(0xc0420160e0, 0xa, 0x0, 0x0, 0xffffffffffff0000)
        *******/livedl/src/twitcas/twicas.go:229 +0x4cc
main.main()
        *******/livedl/src/livedl.go:60 +0x478

[YouTubeライブ] 録画したファイルが再生できない

下記、ブログコメントから

しばらくぶりになりますが、YouTubeライブのシークバーが動かせない件について分かったことがありました。
streamlinkで生録画をした場合にのみ上記の現象が起こります。アーカイブ録画では起こりません。
シークバーが動かせないのはWindowsmediaplayerなどです。厳密に言えば再生時間などのメタデータが壊れているか、書き込まれていないようです。例えば、プロパティを見ても再生時間などの情報が何も出ません。(mediainfoを使えば確認できます。)

[ニコ生TS] セグメント抜けが発生する

ブログのコメントより。

ニコ生側の仕様変更か20181107.34更新の影響か判りませんが
これまで一度も発生していないニコ生のTSでのセグメント抜けが発生します
抜けている部分に対して-nico-ts-startオプションで再度落とし直す事は出来るので
一時的というか瞬間的な現象のようです
対象番組等に規則性は無いのですがログを見た限りでは
websocket read: read tcp ~: use of closed network connection
が発生した際にに取得し直さずそのまま進行してしまっている気がします

websocketの誤った使い方でpanicで落ちる

panic: concurrent write to websocket connection

goroutine 51 [running]:
github.com/gorilla/websocket.(*messageWriter).flushFrame(0xc04237a180, 0xad8301, 0x0, 0x0, 0x0, 0xacb760, 0xa25100)
	*********************/github.com/gorilla/websocket/conn.go:588 +0x681
github.com/gorilla/websocket.(*messageWriter).Close(0xc04237a180, 0xa76840, 0xc04237a150)
	*********************/github.com/gorilla/websocket/conn.go:702 +0x66
github.com/gorilla/websocket.(*Conn).WriteJSON(0xc042062c80, 0xa76840, 0xc04237a150, 0x4, 0xc0422a81b8)
	*********************/github.com/gorilla/websocket/json.go:29 +0x119
_/C_/work/livedl/src/niconico.(*NicoHls).startMain.func1(0xc0422ac1e0, 0x0)
	*******/livedl/src/niconico/nico_hls.go:1605 +0x1e12
_/C_/work/livedl/src/niconico.(*NicoHls).startGoroutine2.func1(0xc04222ea00, 0xc0422ac1e0, 0xc0422a6000, 0x0)
	*******/livedl/src/niconico/nico_hls.go:592 +0x3b
created by _/C_/work/livedl/src/niconico.(*NicoHls).startGoroutine2
	*******/livedl/src/niconico/nico_hls.go:590 +0x9d

ログイン後のINVALID_MESSAGEメッセージについて

ニコ生タイムシフト録画中に下記のようなエラーが発生しました。
(Docker使いました)

(略) livedl --no-chdir -nico-login "(ID),(PW)" -nico-auto-convert=on -nico-login-only=on (nicolive-ID)

niconico account saved.
Conf(NicoLoginOnly): true
Conf(NicoFormat): ""
Conf(NicoLimitBw): 0
Conf(NicoHlsOnly): false
Conf(NicoRtmpOnly): false
Conf(NicoFastTs): false
Conf(NicoAutoConvert): true
Conf(NicoAutoDeleteDBMode): 0
Conf(ExtractChunks): false
Conf(ConvExt): ""
Conf(NicoForceResv): false
Conf(NicoSkipHb): false
Conf(HttpSkipVerify): false
not_login
login success
2020/06/07 07:27:23 Unknown error: map[string]interface {}{"type":"error", "data":map[string]interface {}{"code":"INVALID_MESSAGE"}}

nico.goのログインAPIにPOSTリクエストを送ってみたら、cookieでセッションキーが出てきました(bodyはなし)
何かの代替や方法があるでしょうか?

[ニコ生] ログイン判定ができていない

  • 現象と原因
    未ログイン判定条件の漏れにより、user_sessionがnullである場合に、必要となるログイン処理をしないままプログラム終了となる場合がある。

livedl-win64.zip にReadme.txtを同梱して欲しい

コマンドプロンプトで開いて確認するのが少し手間なので、
livedl.exe に引数を与えずに実行した場合に表示されるヘルプをReadme.txtとして同梱して欲しいです。

可能なら更新履歴も載せてほしいです。

パスワードに記号が入っていたらログインできない

ランダム生成のパスワードを使っていましたが -nico-login で使うと login failed: session_key not found のエラーが帰ってくる。数回失敗したらアカウントがロックされてしまい、サイトからアンロックとパスワード変更しないと行けなかった。今回は記号なしのパスワードを試したら一発おkでした。

ちなみに前のパスワードは 9l$KZQdrs%eZNOLN でした。

コンパイルが終わらないonOSX

OSX10.11(MacbookPro2015)にてコンパイルを行っていますが1週間経ってもビルドが終わりません。もし原因や対策がありましたらご教授ください。

windows10 x86 コンパイルできませ

こんにちは、このプロジェクトは便利なんですが。私の VPSのストレージが足りませんから、sqlite3からtsに転換できませ。ですからwindowsで転換したいですが、今エラーが発生しました。
助けてください

COMMAND: .\build-386.ps1
OUTPUT:
unexpected directory layout:
import path: /C/Users/95611/go/src/github.com/himananiito/livedl/src/buildno
root: C:\Users\95611\go\src
dir: C:\Users\95611\go\src\github.com\himananiito\livedl\src\buildno
expand root: C:\Users\95611\go
expand dir: C:\Users\95611\go\src\github.com\himananiito\livedl\src\buildno
separator: \

[ニコ生新配信] 途中から一部の帯域のプレイリストが500エラーとなる

  • ログ
Current SeqNo: 1371, Pos: 01:54:15
BANDWIDTH: 3600000
Current SeqNo: 1374, Pos: 01:54:30
BANDWIDTH: 3600000
playlist error
BANDWIDTH: 3600000
playlist error
BANDWIDTH: 3600000
playlist error
BANDWIDTH: 3600000
playlist error
BANDWIDTH: 3600000
playlist error

1時間58分の放送(lv315451967)で、01:54:30以降あたりからプレイリストが500 Internal Server Errorとなり
最高画質のプレイリストが取れない。

playlist500
実際にウェブブラウザでの視聴においても、最高画質のプレイリストが500 Internal Server Errorとなっている。

  • 対策
    帯域を下げれば取得できるようになるのでそうする。

livedl2 kigengire

この前までlivedl2を立ち上げることができていましたが、最近起動後すぐ落ちるようになりました。コマンドプロンプトからlivedl2を実行するとkigengireと出ます。
kigengireの意味は何でしょうか?またどうすればまたlivedl2を起動できるでしょうか?

[ニコ生] コメントが一部抜ける

コメントより。

恐らくニコ側の問題だと思いますが、コメントが一部抜けることがあるので、
二回落として一致しなかったらもう一度というようにしています。
ただ、kakorokuRecorder と違い全部落とすまで .xml が見えないので
長い番組で発生するとかなりしんどいです。
そもそもデフォで二回落とすこと自体がサーバへの負担を考えると心苦しいのですが……。
自動的に上記のような比較を行い抜けを防ぐようにはできないでしょうか?
コメント番号がある番組ならそれで判断すればスマートだと思います。

[ニコ生コメント] 出力をCRLFに+/hbコマンドを出さないで欲しい

ブログコメントより。

  1. Windowsのメモ帳でファイルを開くと、コメントが改行されず表示されてしまい見にくいので、標準改行に対応してほしい。
  2. 視聴者数の多い放送だと追い出しコマンド(/hb ifseetno)が大量に発生するのでこれをNG処理してほしい。元のコメント数の数倍にもなることもありました。

Is it not working now?

Hello.

I have successfully used livedl to download from Niconico Timeshift before. But today when I try to use it

D:\Users\user\Downloads\livedl-2alpha\livedl-2alpha
λ livedl.exe -nico-login "見せられないよ,見せられないよ" lv見せられないよ
niconico account saved.
Conf(NicoLoginOnly): false
Conf(NicoFormat): ""
Conf(NicoLimitBw): 0
Conf(NicoHlsOnly): false
Conf(NicoRtmpOnly): false
Conf(NicoFastTs): false
Conf(NicoAutoConvert): false
Conf(NicoForceResv): false
Conf(NicoSkipHb): false
Conf(HttpSkipVerify): false
chdir: D:\Users\user\Downloads\livedl-2alpha\livedl-2alpha

It just hangs there. The download never starts. Just want to ask that is it not working now or am I missing something? Thank you.

★緊急 [ニコ生] 新配信録画のプレイリスト取得にウェイトが入らない

  • 対象バージョン
    20180925.31
    コミット番号 a5eb220

  • 影響範囲
    ニコ生新配信のライブ配信(非タイムシフト)

条件文ミスにより、ウェイトが0となっていた。

if (! hls.isTimeshift) && (! hls.fastTimeshift) {

  • 修正内容
    • 該当の箇所の修正
    • プレイリスト取得に対してデバッグ用途(-nicoufastts)含めてどのような条件でも最低1秒のウェイトが入るようにする

Cannot download channel member only timeshifted videos

./livedl -nico -nico-login "xxx,xxx" -nico-login-only=on lvxxx
Given this error:

niconico account saved.
Conf(NicoLoginOnly): true
Conf(NicoFormat): ""
Conf(NicoLimitBw): 0
Conf(NicoHlsOnly): false
Conf(NicoRtmpOnly): false
Conf(NicoFastTs): false
Conf(NicoAutoConvert): false
Conf(NicoForceResv): false
Conf(NicoSkipHb): false
Conf(HttpSkipVerify): false
chdir: /home/ken/livedl
broadcastId not found
Error code: tsarchive

Platform: ubuntu 20.04 v2alpha

Error Message "対応していません"

[ENV]
Windows 10 22H2
livedl2 a0.1

@explo ➜ livedl2 .\livedl2.exe
open action-track-id.txt: The system cannot find the file specified.
{"meta":{"status":201},"data":"wiXcbG5dv1_1672710433115"}
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] Loaded HTML Templates (3):
        - index.html
        - template1.html
        -

[GIN-debug] GET    /                         --> main.main.func5 (1 handlers)
[GIN-debug] POST   /register                 --> main.main.func6 (1 handlers)
[GIN-debug] POST   /close                    --> main.main.func7 (1 handlers)
[GIN-debug] GET    /get-list                 --> main.main.func8 (1 handlers)
[GIN-debug] POST   /nico-finder              --> main.main.func9 (1 handlers)
[GIN-debug] GET    /pprof/:name              --> main.main.func10 (1 handlers)
[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on :8080

main.register{Target:"lv338385557", NicocasArchive:true, StartPositionEn:false, StartPosition:0, ArchiveWait:2}
lv338385557
対応していません:https://live.nicovideo.jp/watch/lv338385557

So the parser doesn't the new site?

[YouTubeライブ] streamlinkに--hls-live-restartが渡せるようにする

ブログコメントより

・以前他の方のコメントで出ていた、 streamlinkで放送を遡って取得するオプションを搭載してほしい。--hls-live-restart を加えるだけで、その放送の遡れる限界まで遡って取得してくれます。(超低遅延放送を除く) コメントの処理方法は分かりません。。

[ニコ生] MP4への変換に失敗する(write |1: The pipe has been ended.)

以下、コメントより

ときどき、ダウンロードは行われるものの、
.mp4 への変換時に次のようになり失敗することがあります。

Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (copy)
Last message repeated 1 times
write |1: The pipe has been ended.

ffmpeg.exe は ffmpeg-4.0.2-win64-static.zip 内のものを使っています。
初めて遭遇したのは 11/23 で、
問題なかった番組が失敗するようになったりと変動するようですが、
現時点では lv316965027 lv317016927 あたりで発生します。

How to download from YouTube?

Thank you for livedl. I've been using it for a long time. It helps me a lot.

I used to only download from Nico TS. Today I tried to download from YouTube it says:

C:\PortableApps (CLI)\livedl
λ livedl -yt LKRCEx1Z0PE
Conf(YtNoStreamlink): false
Conf(YtNoYoutubeDl): false
Conf(HttpSkipVerify): false
Conf(HttpTimeout): 5
chdir: C:\PortableApps (CLI)\livedl
Selen Tatsuki 【NIJISANJI EN】-【PUYO PUYO TETRIS 2】T-spin time【NIJISANJI EN | Selen Tatsuki】_LKRCEx1Z0PE.mp4
[Streamlink for Windows v1.0.0 - Git f7ac894]
comment pos: 00:00:33
[cli][info] Found matching plugin youtube for URL https://www.youtube.com/watch?v=LKRCEx1Z0PE
[cli][error] Unable to open URL: https://youtube.com/get_video_info (410 Client Error: Gone for url: https://www.youtube.com/get_video_info?video_id=LKRCEx1Z0PE&el=detailpage)

waiting comment
comment pos: 00:07:45
comment pos: 00:15:59
comment pos: 00:23:44
comment pos: 00:32:22
comment pos: 00:44:05
comment pos: 00:57:49
comment pos: 01:11:37
comment pos: 01:21:32
comment pos: 01:30:19
comment pos: 01:34:56
comment pos: 01:39:25
comment pos: 01:52:09
comment pos: 02:02:37
comment pos: 02:10:13
comment pos: 02:12:59
comment pos: 02:16:28
comment pos: 02:20:44

comment done

Is the YouTube download feature not working now? Or am I missing something? Thank you.

[YouTubeLive] コメント取得が最後まで行われない。コメント自動変換機能追加

コメントより。

YouTubeのコメント取得において、最後まで取得しないまま終了することが度々起こります。再取得すると正常に取得されるのですが、再取得用にコメントのみ取得できるようなオプションがあると便利だと感じました。
ついでに、YouTubeの録画終了後のコメント自動変換の機能も欲しいです。

[ニコ生新配信] 録画中に落ちることがある(panic: sync: negative WaitGroup counter)

  • 原因
    sync.WaitGroupのAdd(1)される前にDone()が実行される場合があることによる

  • ログ
    ブログのコメントより。

ニコ生公式の新配信を生録画中に以下のログが出て切断され再接続もしないようです
使用オプションは -nico-hls-only=on -nico-fast-ts=on

Current SeqNo: 7466
Current SeqNo: 7468
panic: sync: negative WaitGroup counter

goroutine 29167 [running]:
sync.(*WaitGroup).Add(0xc0420619e0, 0xffffffffffffffff)
*********/sync/waitgroup.go:73 +0x13a
sync.(*WaitGroup).Done(0xc0420619e0)
*********/sync/waitgroup.go:98 +0x3b

********/livedl/src/niconico.(*NicoHls).startGoroutine2.func1(0xc0421d29c0, 0xc0422bd8c0, 0xc0421b0000, 0x3)
*******/livedl/src/niconico/nico_hls.go:640 +0xd1
created by *********/livedl/src/niconico.(*NicoHls).startGoroutine2
*******/livedl/src/niconico/nico_hls.go:627 +0x9d

I can not download videos from timeshift

Hello, this program is very convenient and it helps me much. But today it does not work, here are information, thanks in advance.

COMMAND: livedl/livedl -nico-login-only=on -nico-fast-ts -nico-login "mymail,mypassword" -nico-format xxx -nico lvxxxxxxxxxx
OUTPUT:
niconico account saved.
Conf(NicoLoginOnly): true
Conf(NicoFormat): "xxx"
Conf(NicoLimitBw): 0
Conf(NicoHlsOnly): false
Conf(NicoRtmpOnly): false
Conf(NicoFastTs): true
Conf(NicoAutoConvert): false
Conf(NicoForceResv): true
Conf(NicoSkipHb): false
Conf(HttpSkipVerify): false
chdir: /root/livedl
2020/06/05 03:08:12 Unknown error: map[string]interface {}{"data":map[string]interface {}{"code":"INVALID_MESSAGE"}, "type":"error"}

[ニコ生新配信] まれに途中で404となることがある

原因調査中。
本現象はまれに発生する。

  • ログ
2018/09/19-10:33:30.48:saveMedia: seqno=1998, code=200, err=<nil>, neterr=<nil>, 34(ms), len=387280
2018/09/19-10:33:30.51:saveMedia: seqno=1999, code=200, err=<nil>, neterr=<nil>, 34(ms), len=315276
2018/09/19-10:33:30.51:time.After()=1.9315995(sec)
2018/09/19-10:33:32.45:getPlaylist: code=200, err=<nil>, neterr=<nil>, 0(ms) >>><<<
Current SeqNo: 1998
2018/09/19-10:33:32.48:saveMedia: seqno=2000, code=200, err=<nil>, neterr=<nil>, 35(ms), len=286888
2018/09/19-10:33:32.48:time.After()=1.9647998(sec)
2018/09/19-10:33:34.45:getPlaylist: code=200, err=<nil>, neterr=<nil>, 0(ms) >>><<<
Current SeqNo: 1999
2018/09/19-10:33:45.09:saveMedia: seqno=2001, code=404, err=<nil>, neterr=<nil>, 0(ms), len=13

プレイリスト取得(10:33:34:getPlaylist)から
チャンクダウンロード(ただし404)(10:33:45:saveMedia)までに9秒程度の遅延があるせいで404となっている。

nico VPOS の値

nicoのコメントデータでVPOSがマイナス値になっているところがあるのですが、
これが悪さしてコメントをassにうまく変換できないときがあります。
ほとんどがaddpointです。
今は手作業でXMLファイルを編集してマイナス値部分を削除して対処しています。

NicoConvAss.exeを利用しています。
GOMplayerなどでみると動画とコメントはそんなにずれているようなことはないと私は感じます。

vposはopentime基準なので、基本的にマイナス値はとらないはずです。
これはなにかの仕様なのでしょうか。

sqlite3転換できない

livedl -d2m xxxxx.sqlite3入力後、pipe:: Invalid data found when processing inputのエラーが発生しました。
解決方法ありますか?

Any future updates?

nnn-revo2012と申します。
今後、livedlもしくはlivedl2をアップデートすることはあるのでしょうか?
それと、あれから2年ぐらい経ってニコ生もいろいろ変わったりサーバーも当時よりはましになってるかと思いますが、実行ファイルの配布を再開されるとかありますでしょうか?

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.