54 lines
1.0 KiB
Ruby
54 lines
1.0 KiB
Ruby
module Sources::Strategies
|
|
class Twitter < Base
|
|
def self.url_match?(url)
|
|
url =~ %r!https?://mobile\.twitter\.com/\w+/status/\d+!
|
|
end
|
|
|
|
def tags
|
|
[]
|
|
end
|
|
|
|
def site_name
|
|
"Twitter"
|
|
end
|
|
|
|
def get
|
|
agent.get(url) do |page|
|
|
@artist_name, @profile_url = get_profile_from_page(page)
|
|
@image_url = get_image_url_from_page(page)
|
|
end
|
|
end
|
|
|
|
def get_profile_from_page(page)
|
|
links = page.search("a.profile-link")
|
|
if links.any?
|
|
profile_url = "https://twitter.com" + links[0]["href"]
|
|
artist_name = links[0].search("span")[0].text
|
|
else
|
|
profile_url = nil
|
|
artist_name = nil
|
|
end
|
|
|
|
return [artist_name, profile_url].compact
|
|
end
|
|
|
|
def get_image_url_from_page(page)
|
|
divs = page.search("div.media")
|
|
|
|
if divs.any?
|
|
image_url = divs.search("img")[0]["src"] + ":large"
|
|
else
|
|
image_url = nil
|
|
end
|
|
|
|
return image_url
|
|
end
|
|
|
|
private
|
|
|
|
def agent
|
|
@agent ||= Mechanize.new
|
|
end
|
|
end
|
|
end
|