A Slack Bot that pulls Pixiv information and posts the full image(s) into Slack, with iOS shortcuts.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.3 KiB

8 years ago
  1. # coding: utf-8
  2. module SlackMathbot
  3. module Commands
  4. class Pixiv < SlackRubyBot::Commands::Base
  5. match /pixiv\.net(?<url>.*)$/ do |client, _data, _match|
  6. # Initalize Mechanize
  7. agent = Mechanize.new
  8. # Create Pixiv URL
  9. pixiv_url = "http://www.pixiv.net" + _match[:url][0..-2]
  10. puts pixiv_url
  11. # Create iOS Illustration URL
  12. ios_url = "pixiv://illusts/" + pixiv_url.split('=')[-1]
  13. puts ios_url
  14. # Create iOS Member URL
  15. ios_mem_url = "pixiv://member/" + pixiv_url.split('=')[0..-1]
  16. puts ios_mem_url
  17. # Scrape page title
  18. title = Mechanize.new.get(pixiv_url).title
  19. puts title
  20. # Scrape image
  21. image_url = agent.get(pixiv_url).images_with(:src => /600x600\/img-master/)[0].to_s.sub! '600x600','480x960'
  22. puts image_url
  23. client.web_client.chat_postMessage(
  24. channel: _data.channel,
  25. as_user: true,
  26. attachments: [
  27. {
  28. fallback: title + " - " + pixiv_url,
  29. text: "<" + ios_url + "|Open Illustration in App > <" + ios_mem_url + "|Open Member in App>",
  30. title: title,
  31. title_link: pixiv_url,
  32. image_url: image_url,
  33. color: "#2684BD"
  34. }
  35. ].to_json
  36. )
  37. end
  38. end
  39. end
  40. end