diff --git a/lib/frenzy/task/create_item.ex b/lib/frenzy/task/create_item.ex index c71f0e2..99f31bc 100644 --- a/lib/frenzy/task/create_item.ex +++ b/lib/frenzy/task/create_item.ex @@ -12,7 +12,7 @@ defmodule Frenzy.Task.CreateItem do def run(feed, entry) do 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}") @@ -29,8 +29,7 @@ defmodule Frenzy.Task.CreateItem do end item_params = %{ - # fallback to url if guid isn't present - guid: entry.guid || url, + guid: guid, title: entry.title, url: url, date: date, @@ -132,6 +131,12 @@ defmodule Frenzy.Task.CreateItem do :ok 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 links = Enum.reject(entry.links, fn {_, rel} -> rel == "shorturl" end) diff --git a/lib/frenzy/update_feeds.ex b/lib/frenzy/update_feeds.ex index fccd189..34e6f6d 100644 --- a/lib/frenzy/update_feeds.ex +++ b/lib/frenzy/update_feeds.ex @@ -230,7 +230,9 @@ defmodule Frenzy.UpdateFeeds do end 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) end end)