Fix error when parsing updating feeds without item guids
This commit is contained in:
parent
6f3d18a1ba
commit
ff3d9affe5
|
@ -12,7 +12,7 @@ defmodule Frenzy.Task.CreateItem do
|
||||||
def run(feed, entry) do
|
def run(feed, entry) do
|
||||||
Logger.metadata(item_task_id: generate_task_id())
|
Logger.metadata(item_task_id: generate_task_id())
|
||||||
|
|
||||||
url = get_real_url(entry)
|
{guid, url} = real_guid_and_url(entry)
|
||||||
|
|
||||||
Logger.debug("Creating item for #{url}")
|
Logger.debug("Creating item for #{url}")
|
||||||
|
|
||||||
|
@ -29,8 +29,7 @@ defmodule Frenzy.Task.CreateItem do
|
||||||
end
|
end
|
||||||
|
|
||||||
item_params = %{
|
item_params = %{
|
||||||
# fallback to url if guid isn't present
|
guid: guid,
|
||||||
guid: entry.guid || url,
|
|
||||||
title: entry.title,
|
title: entry.title,
|
||||||
url: url,
|
url: url,
|
||||||
date: date,
|
date: date,
|
||||||
|
@ -132,6 +131,12 @@ defmodule Frenzy.Task.CreateItem do
|
||||||
:ok
|
:ok
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def real_guid_and_url(entry) do
|
||||||
|
url = get_real_url(entry)
|
||||||
|
# fallback to url if guid isn't present
|
||||||
|
{entry.guid || url, url}
|
||||||
|
end
|
||||||
|
|
||||||
defp get_real_url(entry) do
|
defp get_real_url(entry) do
|
||||||
links = Enum.reject(entry.links, fn {_, rel} -> rel == "shorturl" end)
|
links = Enum.reject(entry.links, fn {_, rel} -> rel == "shorturl" end)
|
||||||
|
|
||||||
|
|
|
@ -230,7 +230,9 @@ defmodule Frenzy.UpdateFeeds do
|
||||||
end
|
end
|
||||||
|
|
||||||
Enum.each(rss.items, fn entry ->
|
Enum.each(rss.items, fn entry ->
|
||||||
unless Item.exists?(feed.id, entry.guid) do
|
{guid, _} = CreateItem.real_guid_and_url(entry)
|
||||||
|
|
||||||
|
unless Item.exists?(feed.id, guid) do
|
||||||
CreateItem.start_link(feed, entry)
|
CreateItem.start_link(feed, entry)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
Loading…
Reference in New Issue