diff --git a/README.md b/README.md index 4fe66ef..221359e 100644 --- a/README.md +++ b/README.md @@ -32,5 +32,6 @@ Optionally, you can pass these options to skip certain emotes: * `--skip-bttv-emotes` (default: `false`) Skips emotes from BetterTTV * `--skip-one-letter-emotes` (default: `true`) Skips single letter emotes, like `D:` +* `--user` Gets all the emotes of the twitch user Enjoy! diff --git a/lib/kappa-slack/cli.rb b/lib/kappa-slack/cli.rb index b724ed6..4e3ddc3 100644 --- a/lib/kappa-slack/cli.rb +++ b/lib/kappa-slack/cli.rb @@ -7,6 +7,7 @@ class CLI < Thor::Group class_option :slack_team_name, default: ENV['SLACK_TEAM_NAME'], required: true, type: :string class_option :skip_bttv_emotes, type: :boolean, default: false class_option :skip_one_letter_emotes, type: :boolean, default: true + class_option :user, type: :string, default: '' def self.banner 'kappa-slack [options]' diff --git a/lib/kappa-slack/uploader.rb b/lib/kappa-slack/uploader.rb index a0d8117..40df051 100644 --- a/lib/kappa-slack/uploader.rb +++ b/lib/kappa-slack/uploader.rb @@ -12,11 +12,13 @@ def initialize( slack_email:, slack_password:, skip_bttv_emotes:, + user:, skip_one_letter_emotes:) @slack_team_name = slack_team_name @slack_email = slack_email @slack_password = slack_password @skip_bttv_emotes = skip_bttv_emotes + @user = user @skip_one_letter_emotes = skip_one_letter_emotes end @@ -69,6 +71,10 @@ def skip_one_letter_emotes? @skip_one_letter_emotes end + def user + @user + end + def browser @browser ||= Mechanize.new end @@ -105,9 +111,22 @@ def twitch_emotes end end + def twitch_sub(user) + response = JSON.parse(http.get_content('https://twitchemotes.com/api_cache/v2/subscriber.json')) + url_template = response['template']['small'] + + response['channels'][user]['emotes'].map do |emote| + { + name: emote['code'].parameterize, + url: url_template.gsub('{image_id}', emote['image_id'].to_s) + } + end + end + def emotes all_emotes = twitch_emotes all_emotes += bttv_emotes unless skip_bttv_emotes? + all_emotes += twitch_sub(user) unless user.eql? "" if skip_one_letter_emotes? all_emotes.select { |e| e[:name].length > 1 }