DiscordにMusicBotを追加しニコ動を再生させる

Pocket

どうも。

めったに書かないHow-to記事です。

ですまちのコミュニケーションツールを最近障害起きまくってるSkypeから最近流行りのDiscordに移行したことはこの前書きました

それにMusicBotを追加した際に躓いた部分があったのでここに書いておきます。

 

インストールと初期設定は公式wikiに詳しく書いてあるのでそれを見ればできると思います。

どうしても英語が駄目だという人はWindowsの場合しか書かれていませんがここなんかを見ればできるでしょう。

options.iniに書き込むTokenの取得はこのページからbotを作成することでできます。

 

私はDebian Jessieに手順通りインストールしたのですが、実行時にsudoをつけないと起動してくれない問題にぶつかりました。

これは原因はパーミッションでした。

なので、システム領域にインストールするのではなく、pyenvを使ってユーザ領域にインストールすることで回避できます。

pyenvの使い方は様々なサイトにあるので割愛します。

 

もう一つぶち当たった問題が対応サイト一覧にニコニコ動画が有るにも関わらず再生できないというもの。

理由は簡単でした。

ニコ動はログインしないと再生できませんよね。

MusicBotは内部でyoutube-dlというプログラムを呼び出しているのでそれにログイン用のメアドとパスワードを渡してあげれば上手く行きそうです。

それを呼び出しているプログラムがMusicBot/musicbot/downloader.pyです。

このファイルを編集します。

8行目から始まっているytdl_format_optionsの中にusernamepasswordという項目を書き足すだけです。

前行の ‘source_address’: ‘0.0.0.0’, の最後のカンマをつけ忘れないように注意してください。
(これが原因の質問が複数回来ています)

ytdl_format_options = {
    'format': 'bestaudio/best',
    'extractaudio': True,
    'audioformat': 'mp3',
    'outtmpl': '%(extractor)s-%(id)s-%(title)s.%(ext)s',
    'restrictfilenames': True,
    'noplaylist': True,
    'nocheckcertificate': True,
    'ignoreerrors': False,
    'logtostderr': False,
    'quiet': True,
    'no_warnings': True,
    'default_search': 'auto',
    'source_address': '0.0.0.0',
    'username': 'example@example.com',
    'password': 'example'
}

こんな感じに。

もちろんexampleの部分は各々がニコニコ動画に登録しているものに書き換えてくださいね。

注意1: ユーザ名とパスワードを指定するとYouTube等の別サイトでも同じIDでログインしようとします。
なので同じメールアドレス&同じパスワードのYouTubeアカウントを作成してください。

注意2: !search!playコマンドを使って検索をするとエラーが出るようになります。
原因はまだわかっていません。

実を言うとここが怪しいと思ったので適当に書き足したら普通に動いたので逆に驚きましたw

あと、平文でパスワードを書いちゃっているので他のユーザが見れないようにパーミッションを変えておくのを忘れないでください。

以上。

 

ここに書いてあるのでは動かなかったりする場合はコメントください。

私が分かる範囲で答えますが、できれば自分で調べて自力で解決してほしいですね。

ではでは。

The following two tabs change content below.
みどりごけ

みどりごけ

スペシャルエグゼクティブアドバイザーほしい物リスト
どこぞのシェル芸大好き鯖管(自称ではない) / 基本情報技術者 / Linux (LPIC2保有) / C# / PHP / JavaScript / 食べ鉄 / Minecraft / ETS2 / GTAV / Ingress
みどりごけ

最新記事 by みどりごけ (全て見る)

41件のコメント

    1. ご指摘ありがとうございます。
      ニコニコと同じメールアドレス・同じパスワードのYouTubeアカウントを作ることで回避できるかと思います。

  1. runbot.batを起動してもこのようなエラーが出ます

    Traceback (most recent call last):
    File “run.py”, line 162, in main
    from musicbot import MusicBot
    File “C:\Users\jajaja_nosuke\Documents\MusicBot-master\musicbot\__init__.py”, line 1, in
    from .bot import MusicBot
    File “C:\Users\jajaja_nosuke\Documents\MusicBot-master\musicbot\bot.py”, line 32, in
    from . import downloader
    File “C:\Users\jajaja_nosuke\Documents\MusicBot-master\musicbot\downloader.py”, line 22
    ‘username’: ‘*****@gmail.com’,
    ^
    SyntaxError: invalid syntax

    C:\Users\jajaja_nosuke\Documents\MusicBot-master>

    1. 情報が少ないので確証はありませんが、usernameの前の行の最後にカンマが付いていないことが原因だと思います。
      原因が違う場合はまたコメントを下さい。

  2. downloader.pyを下のようにしてみたところNiconico videos now require logging in と出ます
    ytdl_format_options = {
    ‘format’: ‘bestaudio/best’,
    ‘extractaudio’: True,
    ‘audioformat’: ‘mp3’,
    ‘outtmpl’: ‘%(extractor)s-%(id)s-%(title)s.%(ext)s’,
    ‘restrictfilenames’: True,
    ‘noplaylist’: True,
    ‘nocheckcertificate’: True,
    ‘ignoreerrors’: False,
    ‘logtostderr’: False,
    ‘quiet’: True,
    ‘no_warnings’: True,
    ‘default_search’: ‘auto’,
    ‘source_address’: ‘0.0.0.0’,
    ‘username’: ‘***********@gmail.com’,
    ‘password’: ‘*********’
    }

    1. ログインに失敗しているようですね。
      メールアドレスとパスワードはニコニコ動画に登録されているもので、組み合わせは正しいですか?

        1. 申し訳ありません
          上にあったようにYoutubeのアカウントとパスワードを同じにしていないといけないようです
          私の場合はYoutubeは見れるのにNiconicoは見れないといった感じのものでした
          お手数おかけ致しました

        1. MusicBotはPCやサーバで上で動かすことを想定して作られています。
          Android上では動きません。

  3. ニコニコ・youtubeの再生はできるようになったのですが、!play “●●”等のキーワード検索時エラーがでるようになってしまいました。
    下記エラーが表示されてしまいます。
    ERROR: An extractor error has occurred. (caused by KeyError(1,))
    : Error extracting info from search string, youtubedl returned no data. You may need to restart the bot if this continues to happen.

    1. 報告していただきありがとうございます。
      こちらでも同様のエラーが出るのが確認できましたが、原因はわからないです。
      お役に立てず申し訳ありません。
      原因が分かり次第またコメントで返信させていただきます。


  4. You don't have permission to use that command.
    Reason: you cannot use this command when not in the voice channel (General)

    !play ニコニコ動画のURL
    というふうにやると上のような文が出てきて曲が流れません。
    どうすればいいですか?

    1. ボイスチャンネル(General)に参加した状態でコマンドを実行して下さい。
      若し貴方がMusicBotの管理者で在る場合は config/options.iniOwnerID を指定する事でボイスチャンネルに参加していない場合でも再生リストの予約が出来る様に成ります。

      余談ですが其のエラーメッセージに原因がはっきりと書かれています。
      今後理解できない英語に遭遇した時は、先ずは機械翻訳を通してみる様にしてみては如何でしょうか。

  5. sor i made it because you

    ytdl_format_options = {
    ‘format’: ‘bestaudio/best’,
    ‘extractaudio’: True,
    ‘audioformat’: ‘mp3’,
    ‘outtmpl’: ‘%(extractor)s-%(id)s-%(title)s.%(ext)s’,
    ‘restrictfilenames’: True,
    ‘noplaylist’: True,
    ‘nocheckcertificate’: True,
    ‘ignoreerrors’: False,
    ‘logtostderr’: False,
    ‘quiet’: True,
    ‘no_warnings’: True,
    ‘default_search’: ‘auto’,
    ‘source_address’: ‘0.0.0.0’,
    ‘username’: ‘example@example.com’,
    ‘password’: ‘example’
    }

    ‘logtostderr’: , must be changeto

    sor i am taiwanese so use english sor

    1. 通報された(再生前に警告が出る)動画は直接アクセスできないようで、再生することができません。
      申し訳ないですが、これは現状の仕様ではどうすることもできません。

  6. 記事に書いてあるように書き足しをし、書き間違いがないのを確認してから!playをしたのですが
    niconico videos now require logging inとでてきてしまいます、他の記事を見て調べてみたのですがどうもうまくいきませんお手を貸していただけませんか。

    1. 返信が遅れてしまい申し訳ございません。
      もし本当に書き間違いが無いのであれば、それだけではわからないのでもっと情報を頂けますか?

    1. youtube-dlのバージョンは最新でしょうか。
      もし最新でない場合はpipを使ってアップグレードしてみてください。
      もし最新でも同じエラーが出る場合は申し訳ないですが原因はわかりません。

  7. すみません Now playing in Generalまでは行くのですが
    曲が流れないのですが 原因がわかなくて困ってます

  8. ERROR: local variable ‘check_cookie_url’ referenced before assignment

    youtubeの動画を流す事ができず、autoplaylistに入っているyoutubeの曲が消えてしまうようになってしまいました。上記はエラーで消える際に流れるログです。
    ニコニコの曲は流す事ができます。しかしyoutubeの曲が流す事ができないという現象になっています。youtubeのログインとニコニコのログインのメアドは同じになっています。この現象の解決方法を教えていただきたいです。

    1. このページに同様の問題が報告されていました。
      https://github.com/rg3/youtube-dl/issues/13822
      このページによるとログインに失敗しているようです。
      下記のページの「端末のアクティビティと通知」の欄で「不明な端末」(日本語での表記がわからないので似た項目を)承認してみて下さい。
      https://myaccount.google.com/security
      もしそれでも改善しない場合は申し訳ないですがわかりません。

  9. File “C:\Users\maka\Desktop\MusicBot-master\MusicBot-master\musicbot\downloader.py”, line 23
    ‘username’: ‘example@example.com’,
       ^
    というエラーが出てきてmusic botが起動しなくなったんですがこのコロンの下についている^の意味が分かりません。
    どうしたら解決できますか?お手数ですが教えていただきたいです!

    1. すいません ^ の位置が間違っていました。正しくはこの位置です

      File “C:\Users\maka\Desktop\MusicBot-master\MusicBot-master\musicbot\downloader.py”, line 23
      ‘username’: ‘example@example.com’,
         ^

      1. その前の行の最後に,(カンマ)が付いていないのがエラーの原因だと思います。
        ^の記号はそれが付いている文字を解析した時にエラーが確定したという意味です。
        あくまでも確定した文字なのでそこが間違っているとは限らず、今回のようにそれより前で間違えていることが原因でエラーになっている場合もあります。

  10. 初めまして。こちらの記事を参考にさせて頂いてBOTを導入し、12月半ばまで正常に稼働しておりました。しかし先日起動した所、ボイスチャンネルに参加しその後すぐ抜けてしまい、またすぐに参加し直しすぐ抜けると言ったことを数回繰り返した後、参加したままで止まったは良い物の自動の読み込みもなくコマンドも受け付けない状態になってしまいます。アップデートもしておりますしエラー文も見当たりませんでした。方々見て回りましたが解決策が見つからず困り果ててしまいました。半ば諦めていますが何か思い当たる物があればご助力ください。よろしくお願い致します。

    1. 丁寧にコメント頂きありがとうございます。
      アップデートもされているにも関わらず問題が発生しているようですので、設定ファイル等を他の場所に退避した上で、一度MusicBotディレクトリごと削除し再導入されては如何でしょうか。

  11. つい最近英語のwikiを参考にWindows版を導入したものですが、gitでCloneしたMusic Botからdownloader.pyを書き換えるだけで
    youtubeのアカウントを用意しなくてもニコニコ動画・youtube両方再生できました。
    !searchや!playもきちんと動作しています。最新版だと大丈夫なのかな?
    ニコニコ動画の対応の記事参考になりました、ありがとうございます。

    1. 報告していただきありがとうございます。
      私の方でも最新版で最初から導入し直してみましたが、残念ながら!playと!searchの不具合は存在していました。
      引き続き、原因を究明しようと思います。

  12. https://github.com/rg3/youtube-dl

    こちらを参考に.netrcファイルにログイン情報を書き込む形にしたところ、ニコニコの再生と検索コマンドの両方が使えることを確認できました。

    こちらの方法だと、複数のサイトで別々のログイン情報を使うことも可能なので結構便利かもしれません。

コメントを残す