From 65077707b015b25f4f9f76a840ec2592eed6d6e9 Mon Sep 17 00:00:00 2001 From: Kazuyuki2025 Date: Fri, 13 Jun 2025 16:59:16 +0900 Subject: [PATCH] Add karaoke --- lib/swimmy/command/karaoke.rb | 39 ++++++++++++++++++++++ lib/swimmy/service.rb | 1 + lib/swimmy/service/karaoke.rb | 63 +++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 lib/swimmy/command/karaoke.rb create mode 100644 lib/swimmy/service/karaoke.rb diff --git a/lib/swimmy/command/karaoke.rb b/lib/swimmy/command/karaoke.rb new file mode 100644 index 0000000..8861357 --- /dev/null +++ b/lib/swimmy/command/karaoke.rb @@ -0,0 +1,39 @@ +module Swimmy + module Command + class Karaoke < Swimmy::Command::Base + karaoke_service = Swimmy::Service::Karaoke.new("https://www.clubdam.com/ranking/") + + def self.say_ranking(client, data, song_ranking_hash, title) + text = "DAM カラオケ#{title}ランキング\n" + text += "引用元:https://www.clubdam.com/ranking/\n" + song_ranking_hash.each{|i, song| text += "#{i}位: #{song}\n"} + client.say(channel: data.channel, text: text) + end # say_ranking + + command "karaoke" do |client, data, match| + case match[:expression] + when nil, "" + title, api_arg = "", "daily" + when "daily" + title, api_arg = "デイリー", "daily" + when "weekly" + title, api_arg = "ウィークリー", "weekly" + when "monthly" + title, api_arg = "マンスリー", "monthly" + else + client.say(channel: data.channel, text: "引数を間違えています.daily, weekly, monthly のいずれかまたは引数なしを入力してください") + return nil + end + ranking_list = karaoke_service.get_karaoke_info(api_arg) + Karaoke.say_ranking(client, data, ranking_list, title) + end # command do + help do + title "karaoke" + desc "DAMのカラオケデイリーランキングを表示する" + long_desc "karaoke daily - カラオケデイリーランキングを表示する\n" + + "karaoke weekly - カラオケウィークリーランキングを表示する\n" + + "karaoke monthly - カラオケマンスリーランキングを表示する" + end # help do + end # class Karaoke + end # module Command +end # module Swimmy diff --git a/lib/swimmy/service.rb b/lib/swimmy/service.rb index a729e47..1e79996 100644 --- a/lib/swimmy/service.rb +++ b/lib/swimmy/service.rb @@ -19,5 +19,6 @@ module Service autoload :Nomnichi, "#{dir}/nomnichi.rb" autoload :RecipeInfomation, "#{dir}/recipe_information.rb" autoload :Bookmark, "#{dir}/bookmark.rb" + autoload :Karaoke, "#{dir}/karaoke.rb" end end diff --git a/lib/swimmy/service/karaoke.rb b/lib/swimmy/service/karaoke.rb new file mode 100644 index 0000000..5f3ed2d --- /dev/null +++ b/lib/swimmy/service/karaoke.rb @@ -0,0 +1,63 @@ +# スクレイピング対象のwebサイトは例えば以下のようになっている + +#
+#