Walkyst / lavaplayer-fork

Apache License 2.0
173 stars 68 forks source link

[Broken] Niconico #85

Closed JellyBrick closed 7 months ago

JellyBrick commented 1 year ago

console

com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something broke when playing the track.
        at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:45) ~[lavaplayer-fork.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:117) ~[lavaplayer-fork.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:364) ~[lavaplayer-fork.jar!/:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
        at java.base/java.lang.Thread.run(Thread.java:1573) ~[na:na]
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.String.length()" because "this.input" is null
        at java.base/java.net.URI$Parser.parse(URI.java:3161) ~[na:na]
        at java.base/java.net.URI.<init>(URI.java:620) ~[na:na]
        at com.sedmelluq.discord.lavaplayer.source.nico.NicoAudioTrack.process(NicoAudioTrack.java:54) ~[lavaplayer-fork.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:105) ~[lavaplayer-fork.jar!/:na]
        ... 4 common frames omitted

branch

custom - ef07585

to reproduce

Play the niconico video.

video URL

https://www.nicovideo.jp/watch/sm41678600

Additional comment

I also found a problem with the regular expression. This regular expression that detects Niconico's video is invalid.

Current regex: ^(?:http://|https://|)(?:www\\.|)nicovideo\\.jp/watch/(sm[0-9]+)(?:\\?.*|)$

The current regular expression only detects the http(s)?://(www.)?nico.../watch/sm + number form.

But, niconico's video-id can be nm + number, so + number, etc.

example: https://www.nicovideo.jp/watch/nm7806214

check this: https://www.wikidata.org/wiki/Property:P11176 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14146404849 (Japanese) https://dic.nicovideo.jp/a/id (Japanese)

Related issues

https://github.com/yt-dlp/yt-dlp/issues/171

book000 commented 1 year ago

I encountered the same problem. This is because the getflv endpoint is no longer available (http://flapi.nicovideo.jp/api/getflv/).
Related official announcement: https://blog.nicovideo.jp/niconews/182541.html

As there is no alternative API, it may be necessary to adjust the acquisition of video data with reference to implementations such as yt-dlp.