色とか、

言葉ってめんどくさい。色とか、気持ちで伝えればいいのに。

f:id:Amesiorine271108:20210413192952p:plain
考えたこと


この時点で思いつく問題点

  • データベースどうやってつくるんだっけ?
  • 未知の単語とかありそう。

とりあえず前回のメモを見つつ単語、読み、品詞にバラすものを作

from sudachipy import tokenizer
from sudachipy import dictionary
tokenizer_obj = dictionary.Dictionary().create()

def tokenize(x):
    sen = []
    voidwordlist = ("補助記号","記号","空白")
    dic = {"w":"<BOS>","pron":"","PoSp":["BOS/EOS", "*", '*', '*', '*', '*', "BOS/EOS"]}
    sen.append(dic)
    for y in tokenizer_obj.tokenize(x, tokenizer.Tokenizer.SplitMode.C):
        dic = {}
        dic["w"] = y.surface()
        if y.part_of_speech()[0] in voidwordlist:
            dic["pron"] = ""
        else:
            dic["pron"] = y.reading_form()
            
        dic["PoSp"] = y.part_of_speech()
        sen.append(dic)
    dic = {"w":"<EOS>","pron":"","PoSp":["BOS/EOS", "*", '*', '*', '*', '*', "BOS/EOS"]}
    sen.append(dic)
    
    return sen

った。
見覚えのあるコードだ・・・。

テスト1
固有名詞多いかな~って思ったけどそんなでもないかも。

f:id:Amesiorine271108:20210413200142p:plain
テスト1:Zoe-1

「オレリオン・ソル」が分かれてしまったがまあ問題ないような気もしないこともないような・・・?

f:id:Amesiorine271108:20210413200559p:plain
テスト1:Zoe-2

って思ったけど品詞見たらダメでした。他にもパンテオン(人名)が地名扱いされているなど細かいものがちょこちょこ見つかった。
スト2

f:id:Amesiorine271108:20210413201553p:plain
スト2:AbyssCode02

こっちはまあ良さそう?


やること
ユーザー辞書登録
github.com
量が量なのでGUI作ってやったほうがいいかも?



んじゃ、次にデータベースをつくるやつやりますか。
参考資料
SQLとかいうものは記憶のどこかにあったようななかったような気がするので必要があれば記事に書くでしょう。


メモ

  • ID被らないようにしたいけど既に読み品詞一致で登録されていればその番号で………ってする必要がある

Kyashow-1.0.0

Discordサーバーで動かしている、カーヤことKyashowの1.0.0を完成させるにあたって参考にしたサイトのメモです。
コードは……うん、需要ない気がする。もしあるならここにコメントするなりして連絡してください。正直、コードとしてはそんなにいいものじゃないので期待しないでください。


機能:全てうちのDiscord鯖内でのものです
YouTubeの音楽の再生
・音楽の連続再生(正直、これを作るのがしんどかった)


モチベに応じて追加予定

  1. 一定時間ごとにテキストチャンネルのkyashows-roomのログ削除
  2. 連続(ランダム)再生機能
  3. とりあえず天気について喋らせる?
  4. 同じ動画を再度再生するときの挙動がとても愚かなのでそれの修繕
  5. and so-on (できれば自然言語処理的なのなんかやりたいよね。Amyにも実装できてないけど。


参考
discord.py入門(3) 音声を使用する - Qiita
Pythonで始める録音機能付きDiscord Bot: (4) 音楽ファイルを再生する - Qiita
Pythonにおける非同期処理: asyncio逆引きリファレンス - Qiita
[Python] 🐰 なんとなく理解するasyncio 🐢 - くろのて

Hello,Kyashow!

ここ数日、無響室という船井が作ったディスコードサーバーを荒らしに荒らして、DiscordBotを育てておりました。
最低限と思われるものだけはできたので、今後加えたいなっていう機能をメモするためのブログ記事となります。


初めにお詫び。
名前を出す許可を得ていないので伏せますが、無響室に所属している5人の方、+船井合わせて6人の方、先日まで無響室を荒らしてすみませんでした。
知らなかったんですが特定ロール以外の人にテキストチャンネルを見せないってこともできたんですね。
今後の糧とさせていただきますのでどうかお許しください。
本当に申し訳ないと思っています。マジで。


さて、一番大事なことは終えたましたわ。

Q.Kyashowってなんやねん?
A.DiscordBotですわ。Amesiorineの妹分的なつもりで作りましたわ。Amesiorineのモチーフカラーが紫(初言級)であるように、Kyashowにもモチーフカラーを決めていますわ。もちろん呼び名も考えておりますわ。カーヤと呼んでいますのよ!

Q.そのbotは何をするん?
A.音楽再生をメインにやってもらうつもりでしてよ。



以降、今後の実装希望コンテンツ

  • 一定時間ごとにテキストチャンネルのkyashows-roomのログ削除

なぜならカーヤの部屋はカーヤへの指示以外の用途がないので。

  • 連続(ランダム)再生機能

過去に再生した曲+いくつかでランダム連続再生させたい。無響室をもっと使うかどうかによっても変わるけれど、待機中に音楽でも聴こうかなってのがメインのつもりで作っているのでこれがないとお話にならない。
正直、プレイリスト作りたい気もするけれど、そんなの入力するのが面倒です。

  • それはそれとしてコマンドどうする?

とりあえず暫定でいくつかつけてるけど面白くない。一般的なbotと違うのか知らないけど、コマンド受け取る専用の部屋用意しているつもりなので1文字とかでもいいかも?

☆ここまで出来たら無響室にカーヤを公開できるかなって思う
というかここまでやらないとしょぼい。

  • とりあえず天気について喋らせる?

要る?



Q.世にあるbotじゃダメなんですか?
A.楽しくないじゃないですか。

Q.で、そのカーヤは役に立つんか?
A.しばくぞ。

原因未解明:記憶域プールが吹き飛んだお話

えーっと、昨日か一昨日当たりにHDDが吹き飛んだといいました。
正確には嘘ですが。


0.何があったの?

何が起きたのかといいますと、記憶域プールがエラーを吐きました。
win10でパリティを使っています。

この記事はそれで四苦八苦したときの記憶です。現状解決していませんが書いておこうかなって思いましてね。ほら、このブログ記憶貯蔵庫だからさ。

もし検索等でここに来た人がいるなら同じ現象に見舞われているかもしれないので参考になれば幸い。

1.記憶にあるタイムライン

2021/4/17 3:48~
身内とゲームをやっていた最後の試合の時刻
この時点では該当記憶域プールのソフトウェア(OBS:配信・録画ソフト)を使用し、問題は起きていないものと思われる。

4/17 4:13
新規ゲームのインストール
身内とゲームやったあと、眠れずぐでぐでしていた。面白そうなゲームがあったのでインストールを終えた。おそらく該当記憶域プールの最期の姿の可能性。

4/17 4:30頃
そのゲームが起動しなかった
初回起動だけしようかなと思いつけたがどうやらうまくいかない。おそらくこのあたりから記憶域プールが吹き飛んでいる。

4/17 5:30頃
スクリーンセーバーがうまく動いていない。世界的にバグで有名なゲームLoLの公式のスクリーンセーバーなので「ま、LoL関連だし………」と流す。

4/18 15:43
異常を確認、再起動をかけるが異常に時間がかかる

2-A.現状を確認

まず、該当ドライブ(私の場合はR:としていた)にエクスプローラーでアクセスできませんでした。

あ~、そろそろハードディスクがどれか壊れちゃったかなぁ~と軽い気持ちでいました。

記憶域プールの死?

あれ?ハードディスクそのものは死んでないじゃん。分からん。

Get-VirtualDisk

仮想ディスクの状態を確認する?
docs.microsoft.com

OperationalStatus:Degraded
HealthStatus:Unhealthy

※{Degraded,なんか}だったような気がする。このブログの執筆時点ではDegradedのみ。詳細は3章で。

Get-PhysicalDisk

全部Healthy

分からん。

Get-StoragePool

これまたHealthy

分からん。
とりあえずこれ↓とは違う症状であることは確か。
satsumahomeserver.com

それから、これ↓とも違ってどれかのハードディスクを交換すれば何とかなりそうというわけでもなさそう。
detail.chiebukuro.yahoo.co.jp

Repair-VirtualDisk

よく分からなかったが2段階構成で修復しようとしていた。1/2は完了したが2/2は終わらないどころか進展がない。
中途半端な修復は絶対によくないことはわかるが諦めた。

2.2章まとめ

Get-VirtualDisk

OperationalStatus:Degraded
HealthStatus:Unhealthy
VirtualDiskに異常。

Get-PhysicalDisk
Get-StoragePool

全てHealthy、異常なし。

Repair-VirtualDisk

進まない。諦め。

3.類似例(?)

www.code-lab.net
類似例を見つけた。
が、この人と違って、私の場合は該当ドライブ内のファイルすら開けない。
もうこの時点である種無敵の存在になっていたのでギャンブルに出ました。

diskpart
DISKPART> list disk
DISKPART> select disk [ディスク番号(今回は5)]
DISKPART> online disk

無理矢理かどうかは知らないけれど、記憶域プールをオンラインに。
で、オンラインにしたところでデータの回収を行います。
参考
shinoe8d3d1.blog.fc2.com

これで問題なくファイルの読み取りはできるようになりました。

4.やろうとしたけどやっぱりだめだったこと

  1. ファイルの回収(進行中)
  2. Get-VirtualDisk | ?{ $_.ObjectId -Match "{ディスクのID?}" } | Get-Disk | Set-Disk -IsReadOnly $false
  3. Get-VirtualDisk | ?{ $_.ObjectId -Match "{ディスクのID?}" } | Get-Disk | Set-Disk -IsOffline $false
  4. 新たな記憶域スペースを作成してデータを移動したあと、既存の記憶域スペースを削除する
  5. 精神が死んでなければこれの続きについて書き残す

※2,3
http://shinoe8d3d1.blog.fc2.com/blog-entry-24.html
※4
https://www.code-lab.net/?p=20801

5.結局

結論から言うとHDDは死んでなかった。なんで?
記憶域プールを再構成して、とったバックアップからファイルコピーで何とかなった。なってしまった。
数日使っていても問題ないくらいに何も起きていない。

どうして………

YouTubeから音声のダウンロードをしたい気持ちになった

はじめに

身内でクソ動画作ることってあるじゃないですか。
それのために、つべとかで音声素材欲しいことあるじゃないですか。
というわけで音声をダウンロードできるやつ軽く作れたら便利じゃない?って思ったんですよ。
最初の前提が異なる?そう・・・。

いやまあ世の中にそんな感じのもの無限にあるらしいんですけど、自称有識者に聞いたらなんちゃらかんちゃらエクスプローラー2ってやつが2になって使いにくくなったって聞いたんですよ。
名前ですか?忘れましたよ。

前にどこかで「ふつうになんやかんやすれば簡単にダウンロードするためのコードくらいかけましてよ!!」と耳に挟みましたの。
ってわけで書きました。

もっと本気で探せばダウンロードできるコードくらいネットに転がってるんじゃないかなぁって思った。

ついでにそのままmp3にしたいなぁって思ったのでmp3にしてます。
ffmpegは神っていうワード、とても理解をした。
それからダウンロードしたそのものはwebm形式らしいからそのファイルも勝手に捨ててくれるようになってます。
そうならなかったらごめんね。

解説

  1. pytubeってやつ使います。インストールしとけ。PytubeDocs
  2. ffmpeg使います。インストールしてるよね?
  3. 160kbpsにしてるけどここいじるとエラー吐いた。参考にしたサイト別のもの使ってたような気もするけど忘れた。
  4. Q「PAUSEってなに?」A「続行するには何かキーを押してください」

f:id:Amesiorine271108:20210402122121p:plain

from pytube import YouTube
import os
import subprocess

if not os.path.exists("audio"):
    os.mkdir("audio")
if not os.path.exists("mp3"):
    os.mkdir("mp3")

def DL_audio(DL_URL, abr="160kbps"):
    y = YouTube(DL_URL)
    q = y.streams.filter(abr=abr).all()
    q[0].download("audio")

URL = input("YouTubeURL:")

try:
    DL_audio(URL)
except Exception as e:
    print(e)
    subprocess.call('PAUSE', shell=True)


try:
    path = "audio"
    files = os.listdir(path)
    for file in files:
        print(file)
        fp = file.replace(".webm",".mp3")
        print(fp)
        cmd = 'ffmpeg -i "audio\\{}" "mp3\\{}"'.format(file,fp)
        print(cmd)
        returncode = subprocess.call(cmd)
        subprocess.call('PAUSE', shell=True)
        os.remove("audio\\{}".format(file))

except Exception as e:
    print("Error")
    print(e)
    subprocess.call('PAUSE', shell=True)


参考:
https://qiita.com/pycys/items/4ac9c80be216401eb68b
など

メモ:エミィの今後の展望

Amesiorineことエミィをherokuに送り込んだのでメモ書きの更新です。
エミィとかAmesiorineって何?って人は私のブログ全部読んできてください。きっと無駄な時間を過ごすことができるでしょう。そもそもこのブログ、あまり他人に読ませるように作っていません。まあ読ませないようにも作ってないんだけどさ。


エミィに関するメモ

  • 現在の状態では天気や時報をエミィが受け取っているかの情報が分からないのでふぁぼるなどして以来を確認させたい。

→やった。えらい。

  • 不定期的にそれっぽい何らかの発言をしてほしい。

→できそうだけどなにやるん?

  • 基本的にもうエミィのアカウントに船井がログインすることがないので自動でフォロバだったり、フォロー切られたらこっちも解除することをやってほしい。

→比較的簡単そうだからやりなさい。

  • アイコンを船井またはエミィの気分で変えたい。

→アイコン用意してないが?

  • クソすごろく作るって話はいずこへ?

→は?

  • 現在のエミィではコマンド通りにリプをしないと実行してくれない。自然言語分類(Watson Natural Language Classifier)みたいなのを実装して「エミィ、[地名]の天気を教えて。」と言ったら返してくれるものを実装したい。

→いちいち「天気」って打つの面倒だったので地名を送るだけで天気をおしえてくれるようになった。

  • 自然言語分類が実装できるならTLのツイートに対してある程度のリプライができるようになるはず。それの実装が上の次かな?

自然言語処理に詳しい人に聞いてみてもいいかもね。最近喋ってないからアレ。
自然言語処理の本、そういえば前に八重洲でいいの見たような気がする。なんてタイトルだったっけ?

→wakarimi


ここまでは前回のメモ(に今の船井が一言入れたもの)
271108.hatenablog.com

  • 知人に話したところコード見せる話になったのでそのあとなんか機能足したいよね。

  • というか予定表とかエミィに要る?どうせ私しか使わなさそうだから外部に使わせないようにしてるし、それだったら船井の管轄じゃないのでは?

→ぶっちゃけ他人の予定の把握くらいエミィにできそうだけどデータ飛んでも責任取れんし・・・というアレ。

  • 地名認定してくれない地名がある(例:東京スカイツリー、鹿島田)。そもそも地名であるっていう判定をしていないが本当にどうしようもないの?

  • 通知機能を実装したい。

→どのタイミングで通知をするべきなのかの(私の)判断がつかないので一律前日とかになってしまいそう。

  • heroku、本当に無料で使えるんでしょうね?という疑い。

→知らんわ。

  • コマンド一覧くらい用意しておきなさい。

→すぐできそう。やりなさい。