Metalove v0.2.2 Metalove.Episode View Source
Defines a Metalove.Episode
struct reprsenting Episodes. Belongs to a Metalove.PodcastFeed
. Provides functions to access the data.
Link to this section Summary
Functions
Returns a list of all known enclosures for that Episode (e.g. if podcast has multiple feeds, all enclosures of the episodes with the same guid)
Returns either {:image, %{data: binary(), type: String.t()}}
if a parsed metadata episode image exists, otherwise {:image_url, String.t()}
if a known image url exists, :not_found
otherwise
Return eipsode of this ID if existing (episode IDs are of style {:episode, feed_url, episode_guid}
)
Link to this section Types
t()
View Source
t() :: %Metalove.Episode{
author: nil | String.t(),
chapters: [map()],
content_encoded: nil | String.t(),
contributors: [map()],
description: nil | String.t(),
duration: nil | String.t(),
enclosure: nil | Metalove.Enclosure.t(),
episode: nil | String.t(),
feed_url: String.t(),
guid: String.t(),
image_url: nil | String.t(),
link: nil | String.t(),
pub_date: nil | DateTime.t(),
season: nil | String.t(),
subtitle: nil | String.t(),
summary: nil | String.t(),
title: nil | String.t()
}
t() :: %Metalove.Episode{ author: nil | String.t(), chapters: [map()], content_encoded: nil | String.t(), contributors: [map()], description: nil | String.t(), duration: nil | String.t(), enclosure: nil | Metalove.Enclosure.t(), episode: nil | String.t(), feed_url: String.t(), guid: String.t(), image_url: nil | String.t(), link: nil | String.t(), pub_date: nil | DateTime.t(), season: nil | String.t(), subtitle: nil | String.t(), summary: nil | String.t(), title: nil | String.t() }
All information for an Episode.
Field information:
chapters
A list of maps for the chapters, fields arestart
,title
,href
,image
- image can either be an url or adata
,type
map if parsed from metadatacontributors
A list of maps containing the contributors, fields arename
,uri
%Metalove.Episode{
author: "ATP",
chapters: [],
content_encoded: nil,
contributors: [],
description: "<ul>
<li>Follow-up:<ul>
<li>Hosting a podcast for free on <a href="https://anchor.fm/">Anchor</a> or <a href="https://soundcloud.com/">SoundCloud</a></li>
<li>Contacts syncing <a href="https://support.apple.com/en-us/HT202158">limits</a></li>
</ul>
</li>
<li>Mojave stability<ul>
<li><a href="https://mjtsai.com/blog/2019/02/19/t2-macs-have-a-serious-audio-glitching-bug/">Possible T2 Mac audio glitching bug</a></li>
</ul>
</li>
<li>Rumor explosion from Ming-Chi Kuo and Mark Gurman<ul>
<li><a href="https://www.macrumors.com/2019/02/17/16-inch-macbook-pro-2019-kuo/">16-inch MacBook Pro</a><ul>
<li><a href="http://drops.caseyliss.com/M3VSNM">iBook G4</a></li>
</ul>
</li>
<li><a href="https://www.macrumors.com/2019/02/17/apple-31-inch-6k-display-mini-led-kuo/">31.6" 6K3K display with Mini-LED-like backlight</a></li>
<li><a href="https://www.macrumors.com/2019/02/20/apple-mulling-preview-mac-pro-wwdc/">Apple Mulling Preview of New Modular Mac Pro at WWDC in June</a></li>
<li><a href="https://www.bloomberg.com/news/articles/2019-02-20/apple-is-said-to-target-combining-iphone-ipad-mac-apps-by-2021">Marzipan rumors</a><ul>
<li><a href="https://en.wikipedia.org/wiki/Overton_window">Overton window</a></li>
</ul>
</li>
</ul>
</li>
<li><code>#askatp</code>:<ul>
<li>Could the next Apple TV be wireless? (via <a href="https://twitter.com/ecormany/status/1085287581166768128">Ed Cormany</a>)</li>
<li>Is wireless CarPlay a deal-breaker? (via <a href="https://twitter.com/eddielee6/status/1095434200155672577">Eddie Lee</a>)</li>
<li>How is season 3 of <a href="https://www.amazon.com/thegrandtour">The Grand Tour</a>? (via <a href="https://twitter.com/syllabub69/status/1097808914907770880">Paul Walker</a> (not that one))</li>
</ul>
</li>
<li>Post-show: Apple ID Management<ul>
<li><a href="https://developer.apple.com/support/account/authentication/">Two factor requirements</a></li>
</ul>
</li>
</ul>
<p>Sponsored by:</p>
<ul>
<li><a href="https://www.boxysuite.com/">BoxySuite</a>: A beautiful suite of Mac apps for Gmail and Google Calendar. Get a 30% lifetime discount on all plans with code <strong>atp30</strong>.</li>
<li><a href="http://fractureme.com/atp">Fracture</a>: Photos printed in vivid color directly on glass. Get a special discount off your first order.</li>
</ul>",
duration: "02:05:44",
enclosure: %Metalove.Enclosure{
created_at: #DateTime<2019-02-23 15:27:19.946286Z>,
fetched_metadata_at: #DateTime<2019-02-24 13:55:23.001144Z>,
metadata: %{
chapters: [
%{start: "00:00:00.000", title: "Free podcast hosting"},
%{start: "00:04:06.457", title: "Gmail misspellings"},
%{
href: "https://support.apple.com/en-us/HT202158",
start: "00:07:01.432",
title: "Contacts syncing"
},
%{
href: "https://www.fractureme.com/atp",
start: "00:16:24.975",
title: "Sponsor: Fracture"
},
%{start: "00:18:31.475", title: "Mojave stability"},
%{
href: "https://mjtsai.com/blog/2019/02/19/t2-macs-have-a-serious-audio-glitching-bug/",
start: "00:22:58.350",
title: "USB audio bug?"
},
%{
href: "https://www.boxysuite.com/",
start: "00:36:14.975",
title: "Sponsor: Boxy Suite (code ATP30)"
},
%{
href: "https://www.macrumors.com/2019/02/17/16-inch-macbook-pro-2019-kuo/",
start: "00:37:33.600",
title: "16" MBP rumor"
},
%{
href: "https://www.macrumors.com/2019/02/17/apple-31-inch-6k-display-mini-led-kuo/",
start: "00:50:34.975",
title: "31.6" 6K3K display rumor"
},
%{
href: "https://www.macrumors.com/2019/02/20/apple-mulling-preview-mac-pro-wwdc/",
start: "01:07:52.475",
title: "Mac Pro rumor"
},
%{
href: "https://www.bloomberg.com/news/articles/2019-02-20/apple-is-said-to-target-combining-iphone-ipad-mac-apps-by-2021",
start: "01:14:43.475",
title: "Marzipan rumor"
},
%{start: "01:36:13.975", title: "#askatp: Cheap Apple TV"},
%{start: "01:42:49.475", title: "#askatp: Wireless CarPlay"},
%{start: "01:46:43.975", title: "#askatp: The Grand Tour"},
%{
href: "http://jonathanmann.net/",
start: "01:51:12.975",
title: "Ending theme"
},
%{start: "01:52:15.475", title: "John's Apple ID"}
],
cover_art: %{
data: <<255, 216, 255, 225, 0, 24, 69, 120, 105, 102, 0, 0, 73, 73, 42,
0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 236, 0, 17, 68, 117, 99,
107, 121, ...>>,
type: "image/jpeg"
}
},
size: 60482143,
type: "audio/mpeg",
url: "http://traffic.libsyn.com/atpfm/atp314.mp3"
},
episode: nil,
feed_url: "http://atp.fm/episodes?format=RSS",
guid: "513abd71e4b0fe58c655c105:513abd71e4b0fe58c655c111:5c6e2706c830252a16aaa9ff",
image_url: "http://static1.squarespace.com/static/513abd71e4b0fe58c655c105/t/52c45a37e4b0a77a5034aa84/1388599866232/1500w/Artwork.jpg",
link: "http://atp.fm/episodes/314",
pub_date: #DateTime<2019-02-21 19:25:00+00:00 GMT Etc/GMT+0>,
season: nil,
subtitle: "Hopeful rumors for 2019 Macs, the state of Mojave, and a tale of Apple ID woe.",
summary: nil,
title: "314: Kernel Panic in the Night"
}
Link to this section Functions
all_enclosures(episode) View Source
Returns a list of all known enclosures for that Episode (e.g. if podcast has multiple feeds, all enclosures of the episodes with the same guid)
episode_image(episode) View Source
Returns either {:image, %{data: binary(), type: String.t()}}
if a parsed metadata episode image exists, otherwise {:image_url, String.t()}
if a known image url exists, :not_found
otherwise
get_by_episode_id(episode_id)
View Source
get_by_episode_id({:episode, String.t(), String.t()}) ::
Metalove.Episode.t() | nil
get_by_episode_id({:episode, String.t(), String.t()}) :: Metalove.Episode.t() | nil
Return eipsode of this ID if existing (episode IDs are of style {:episode, feed_url, episode_guid}
)