try a bit harder at finding a submitted story's real title
Ignore the title presented by the user unless we couldn't find anything, but start out by fetching the URL and trying some <meta> tags first, then <title>, then use the title the user brought.
This commit is contained in:
parent
a16150d8a5
commit
8771afc5f5
|
@ -90,7 +90,9 @@ class StoriesController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:title].present?
|
# ignore what the user brought unless we need it as a fallback
|
||||||
|
@story.title = @story.fetched_title(request.remote_ip)
|
||||||
|
if !@story.title.present? && params[:title].present?
|
||||||
@story.title = params[:title]
|
@story.title = params[:title]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -253,12 +253,34 @@ class Story < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def fetched_title(for_remote_ip = nil)
|
def fetched_title(for_remote_ip = nil)
|
||||||
doc = Nokogiri::HTML(fetched_content(for_remote_ip).to_s)
|
title = ""
|
||||||
if doc
|
|
||||||
return doc.at_css("title").try(:text)
|
if !(doc = Nokogiri::HTML(fetched_content(for_remote_ip).to_s))
|
||||||
else
|
return title
|
||||||
return ""
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# try <meta property="og:title"> first, it probably won't have the site
|
||||||
|
# name
|
||||||
|
begin
|
||||||
|
title = doc.at_css("meta[property='og:title']").
|
||||||
|
attributes["content"].text
|
||||||
|
rescue
|
||||||
|
end
|
||||||
|
|
||||||
|
# then try <meta name="title">
|
||||||
|
if title.to_s == ""
|
||||||
|
begin
|
||||||
|
title = doc.at_css("meta[name='title']").attributes["content"].text
|
||||||
|
rescue
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# then try plain old <title>
|
||||||
|
if title.to_s == ""
|
||||||
|
title = doc.at_css("title").try(:text).to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
return title
|
||||||
end
|
end
|
||||||
|
|
||||||
def generated_markeddown_description
|
def generated_markeddown_description
|
||||||
|
|
Loading…
Reference in a new issue