require 'sinatra' require 'mechanize' # Find a description from tags def meta_description(page) description_meta_tag = page.search("meta[property='og:description']")[0] || page.search("meta[property='twitter:description']")[0] || page.search("meta[name='description']")[0] description_meta_tag&.attribute("content")&.value end # Truncate the text of the first
def article_description(page) article = page.search("article")[0] article.text[0..500] if article end get '/summary' do url = params[:url] mech = Mechanize.new page = mech.get(url) title = page.title description = meta_description(page) || article_description(page) content_type :json {url: url, title: title, description: description}.to_json end