![loudbanner](https://user-images.githubusercontent.com/34389545/120880895-cc64fe80-c592-11eb-963f-068474c916da.jpg) 🔥 Podcast Syndication Feed Format of the Future 💻 [Github](https://github.com/LOUD-feed-format/) 📰 [LOUDReader](https://github.com/LOUD-feed-format/LOUDReader) 🍔 [LOUDFeeder](https://github.com/LOUD-feed-format/LOUDFeeder) # ⚡ LOUD Podcast Feed Format`0.0.2` ## Proposal for a podcasting-first feed syndication protocol - File extensions: `.loud`, `.lff` (LOUD Feed Format) - Publish feeds in JSON - Multiple shows per feed (one feed, one network) - Chaptered episodes - Multiple file formats per episode for high, low, mobile quality - Respectful of creators and guests, credit everyone - Allows for referencing citations ### File Extensions LOUD feeds are published in `.loud` or `.lff` files. LFF stands for **LOUD Feed Format**. The default file extension is `.loud`. ### File Format LOUD feeds are UTF8 and made of JSON. ### Enhanced Discovery Feeds can contain one or more shows for the purposes of show discovery within a podcast network. Podcast networks often have different "shows" or concepts under the same network or publisher, but no good way to foster 'connectivity' between each different show concept. Users have to be told to find and subscribe to the new show, when it could be simply added to their existing subscription, giving you a complete built-in audience with nobody left behind. ### Chaptered Episodes Timestamped chapters with names and descriptions for each segment facilitate labeling the timeline with linked portions of the content. ### Multiple Format Audio Each episode can have multiple listed audio files for different qualities and file formats. ### Credit Everyone Credits for staff, producers, creators and editors have a dedicated field for acknowledging their contributions ### References Citations Sources, citations, and links to further reading are included in the episode object for providing relevant information to the listener # FAQ ### Why not use RSS? The internet is a big place with room for many ideas. RSS and Atom are great general syndication formats, but lack features that matter to podcasts specifically like chapters, proper credits and citations, and multiple format audio. The RSS specification states that it is no longer in development and should be considered to be in a frozen state, and it is suggested to build a new format with a different name if change is desired. https://cyber.harvard.edu/rss/rss.html#roadmap ### Why not improve an existing protocol? RSS and Atom are great formats that provide more value every day to blog articles and news feeds than podcasts. Podcasts are a rapidly growing medium that require a more purposeful solution. Ratifying well-established protocols are an exercise in patience and moderation. Some of these ideas will be radical in nature, and it is this project's goal to thrive in a cooperational and non-confrontational manner with other projects and existing standards. ### Why multiple shows in the same feed? The process of discovery is often limited by the capabilities of the podcast directory. Puttin multiple shows into a parent-network format allows users to be introduced to new shows via the same feed, with one subscription and a single polling for new episodes. ### Is LOUD an IETF standard? No, but that would be nice. ### How can I help? Port `.loud` format feeds to your favorite podcast client! Publish your feeds in LOUD Feed Format along side your RSS or Atom feed! The spec is simple, and easy to implement. # License The MIT License (MIT) Copyright © 2021 The TurtleCoin Developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # Full Example ## JSON ```json= { "Protocol": "LOUD", "Version": 1, "NetworkName": "The LOUD Podcast Network", "NetworkDescription": "A network of LOUD syndicated podcasts", "WebsiteURL": { "URL": "https://readme.loud.so", "Description": "The LOUD feed spec documentation link" }, "FeedURL": { "URL": "https://raw.githubusercontent.com/turtlecoin/podcast.turtlecoin.com/master/public/feed.loud", "Description": "The LOUD Network feed" }, "DateCreated": "2021-06-04", "BannerURL": { "URL": "https://user-images.githubusercontent.com/34389545/120880895-cc64fe80-c592-11eb-963f-068474c916da.jpg", "Description": "Banner graphic for The LOUD Network" }, "AvatarURL": { "URL": "https://avatars.githubusercontent.com/u/85380723", "Description": "Avatar graphic for The LOUD Network" }, "FavIcoURL": { "URL": "https://user-images.githubusercontent.com/34389545/121786753-9671dc80-cb87-11eb-8e76-aef2804e5b21.png", "Description": "Favicon for The LOUD Network" }, "Tags": [ "LOUD", "Feed", "Syndication" ], "FeedCredit": [ { "Name": "RockSteadyTC", "Role": "Creator", "Links": [ { "URL": "https://github.com/rocksteadytc", "Description": "RockSteadyTC's profile page" } ] }, { "Name": "IBurnMyCD", "Role": "Creator, Editor", "Links": [ { "URL": "https://github.com/brandonlehmann", "Description": "IBurnMyCD's profile page" } ] } ], "Shows": [ { "ShowName": "The TurtleCoin Podcast", "ShowDescription": "Discussing cryptocurrency, decentralization, privacy and best of all, TurtleCoin!", "WebsiteURL": { "URL": "https://turtlecoin.com", "Description": "The TurtleCoin website link" }, "DateCreated": "2021-06-01", "BannerURL": { "URL": "https://i.imgur.com/E678Fbp.jpg", "Description": "Banner graphic for The TurtleCoin Podcast" }, "AvatarURL": { "URL": "https://avatars.githubusercontent.com/u/34389551", "Description": "Avatar graphic for The TurtleCoin Podcast" }, "FavIcoURL": { "URL": "https://avatars.githubusercontent.com/u/34389551?s=64\u0026v=4", "Description": "Favicon for The TurtleCoin Podcast" }, "Tags": [ "TurtleCoin", "Cryptocurrency", "Privacy" ], "ShowCredit": [ { "Name": "RockSteadyTC", "Role": "Creator", "Links": [ { "URL": "https://github.com/rocksteadytc", "Description": "RockSteadyTC's profile page" } ] }, { "Name": "IBurnMyCD", "Role": "Creator, Editor", "Links": [ { "URL": "https://github.com/brandonlehmann", "Description": "IBurnMyCD's profile page" } ] } ], "Episodes": [ { "SeriesNumber": 0, "EpisodeName": "How did you hear about TurtleCoin", "EpisodeDescription": "This was our first episode of the podcast, we didn't intend for it to be a podcast, but we had so much fun making it we decided to make podcasting one of the things we do. This one has some rough audio, but if you can stomache it, it's a good show.", "WebsiteURL": { "URL": "https://www.youtube.com/watch?v=0n9bjuEETlM", "Description": "Link to this episode's video" }, "ImageURL": { "URL": "hhttps://avatars.githubusercontent.com/u/34389551", "Description": "Episode art image thumbnail" }, "AudioURL": [ { "URL": "https://gateway.pinata.cloud/ipfs/QmXsz4VSG3a9TdDtMXRd9qpxaFpPBkHzcq1aM1TQZtypF9", "Description": "High quality audio file, mp3" } ], "DateCreated": "2021-05-16", "DateUpdated": "2021-05-16", "DurationSeconds": 5980, "CitedURL": [ { "URL": "https://youtube.com/turtlecoin", "Description": "This is our YouTube channel, subscribe for more podcasts!" } ], "TranscriptionURL": [], "EpisodeCredit": [ { "Name": "RockSteadyTC", "Role": "Creator", "Links": [ { "URL": "https://github.com/rocksteadytc", "Description": "RockSteadyTC's profile page" } ] }, { "Name": "IBurnMyCD", "Role": "Creator, Editor", "Links": [ { "URL": "https://github.com/brandonlehmann", "Description": "IBurnMyCD's profile page" } ] } ], "Chapters": [ { "StartTimeSeconds": 0, "ChapterName": "Intro", "ChapterDescription": "Finding our feet live on stream", "ChapterCredit": null }, { "StartTimeSeconds": 270, "ChapterName": "Metaprinter", "ChapterDescription": "Metaprinters entrance into mining and turtlecoin", "ChapterCredit": null }, { "StartTimeSeconds": 580, "ChapterName": "User stories", "ChapterDescription": "Users describe how they entered the TurtleCoin community", "ChapterCredit": null }, { "StartTimeSeconds": 1650, "ChapterName": "Sektion F", "ChapterDescription": "Or is it Sektion 8? :)", "ChapterCredit": null }, { "StartTimeSeconds": 2790, "ChapterName": "Blue whale", "ChapterDescription": "The blue whales club and the early illuminati origins of TurtleCoin", "ChapterCredit": null }, { "StartTimeSeconds": 3300, "ChapterName": "Raspberry pi mining", "ChapterDescription": "Humble beginnings in mining TurtleCoin", "ChapterCredit": null }, { "StartTimeSeconds": 3850, "ChapterName": "More shilling", "ChapterDescription": "The same gambling site keeps coming up", "ChapterCredit": null }, { "StartTimeSeconds": 3917, "ChapterName": "Forknote", "ChapterDescription": "The humble beginnings of TurtleCoin as a forknote project.", "ChapterCredit": null }, { "StartTimeSeconds": 5727, "ChapterName": "The Truth", "ChapterDescription": "The best story of them all", "ChapterCredit": null } ] }, { "SeriesNumber": 1, "EpisodeName": "Decimals and Dusty Shells", "EpisodeDescription": "A question we get a lot pertains to the 2 digits after the decimal point, and even more now since in v2 we have a supply reduction of 100,000:1. In this episode we address that question and more!", "WebsiteURL": { "URL": "https://www.youtube.com/watch?v=fRRg_vmfchI", "Description": "Link to this episode's video" }, "ImageURL": { "URL": "hhttps://avatars.githubusercontent.com/u/34389551", "Description": "Episode art image thumbnail" }, "AudioURL": [ { "URL": "https://gateway.pinata.cloud/ipfs/QmY1iVSWep8h4ZPyKWihZj2cuneccpT9utANC7zao4ujtZ", "Description": "High quality audio file, mp3" } ], "DateCreated": "2021-05-17", "DateUpdated": "2021-05-17", "DurationSeconds": 6142, "CitedURL": [ { "URL": "https://youtube.com/turtlecoin", "Description": "This is our YouTube channel, subscribe for more podcasts!" } ], "TranscriptionURL": [], "EpisodeCredit": [ { "Name": "RockSteadyTC", "Role": "Creator", "Links": [ { "URL": "https://github.com/rocksteadytc", "Description": "RockSteadyTC's profile page" } ] }, { "Name": "IBurnMyCD", "Role": "Creator, Editor", "Links": [ { "URL": "https://github.com/brandonlehmann", "Description": "IBurnMyCD's profile page" } ] } ], "Chapters": [ { "StartTimeSeconds": 0, "ChapterName": "Intro", "ChapterDescription": "nobody responded when we asked who had questions about TurtleCoin", "ChapterCredit": null }, { "StartTimeSeconds": 105, "ChapterName": "decimals", "ChapterDescription": "the two decimal points thing ", "ChapterCredit": null }, { "StartTimeSeconds": 325, "ChapterName": "dust", "ChapterDescription": "reducing dust through reduction in supply ", "ChapterCredit": null }, { "StartTimeSeconds": 422, "ChapterName": "elders", "ChapterDescription": "technical difficulties on the keyboard of ibmcd ", "ChapterCredit": null }, { "StartTimeSeconds": 463, "ChapterName": "v1", "ChapterDescription": "the cost of a realistic TRTL v1 transaction", "ChapterCredit": null }, { "StartTimeSeconds": 690, "ChapterName": "microtrashin'", "ChapterDescription": "the infeasibility of microtransactions becomes apparent", "ChapterCredit": null }, { "StartTimeSeconds": 750, "ChapterName": "technical break", "ChapterDescription": "this music got us a copyright claim by UMG ", "ChapterCredit": null }, { "StartTimeSeconds": 788, "ChapterName": "we're back", "ChapterDescription": "welcome back craig ", "ChapterCredit": null }, { "StartTimeSeconds": 805, "ChapterName": "reduction", "ChapterDescription": "100,000:1 swap rate", "ChapterCredit": null }, { "StartTimeSeconds": 939, "ChapterName": "Canti", "ChapterDescription": "cantipixels and the pixel era", "ChapterCredit": null }, { "StartTimeSeconds": 1380, "ChapterName": "Mining", "ChapterDescription": "the downfall of herominers", "ChapterCredit": null }, { "StartTimeSeconds": 1570, "ChapterName": "ASIC", "ChapterDescription": "mining fairness, the fight against ASIC ", "ChapterCredit": null }, { "StartTimeSeconds": 1985, "ChapterName": "Old Days", "ChapterDescription": "the hard beginnings of the TRTL software", "ChapterCredit": null }, { "StartTimeSeconds": 2452, "ChapterName": "FAQ", "ChapterDescription": "the v2 FAQ - but pronounced FACK apparently ", "ChapterCredit": null }, { "StartTimeSeconds": 2500, "ChapterName": "Jerks", "ChapterDescription": "speculators abound", "ChapterCredit": null }, { "StartTimeSeconds": 2640, "ChapterName": "commerce", "ChapterDescription": "what is turtleshop", "ChapterCredit": null }, { "StartTimeSeconds": 2880, "ChapterName": "Boats", "ChapterDescription": "Cisions boat that was purchased for 1 billion TurtleCoin", "ChapterCredit": null }, { "StartTimeSeconds": 3121, "ChapterName": "Ideas", "ChapterDescription": "OnlyTurtles", "ChapterCredit": null }, { "StartTimeSeconds": 3300, "ChapterName": "shitcoins", "ChapterDescription": "the rise of shitcoiners", "ChapterCredit": null }, { "StartTimeSeconds": 3450, "ChapterName": "derogold", "ChapterDescription": "forks and fast blocks ", "ChapterCredit": null }, { "StartTimeSeconds": 4020, "ChapterName": "shitcoins, pt 2", "ChapterDescription": "how to identify a shitcoiner", "ChapterCredit": null }, { "StartTimeSeconds": 4605, "ChapterName": "arcturus", "ChapterDescription": "the issue with privacy", "ChapterCredit": null }, { "StartTimeSeconds": 5380, "ChapterName": "V3", "ChapterDescription": "whats in store for v3?", "ChapterCredit": null }, { "StartTimeSeconds": 5640, "ChapterName": "Quantum", "ChapterDescription": "the rise of quantum computers vs crypto", "ChapterCredit": null }, { "StartTimeSeconds": 5970, "ChapterName": "Fin", "ChapterDescription": "wrapping it up ", "ChapterCredit": null } ] } ] } ] } ``` # Minimal Example ## JSON ```json= { "Protocol": "LOUD", "Version": 1, "NetworkName": "The LOUD Podcast Network", "FeedURL": { "URL": "https://raw.githubusercontent.com/turtlecoin/podcast.turtlecoin.com/master/public/feed.loud", "Description": "The LOUD Network feed" }, "Tags": [ "LOUD", "Feed", "Syndication" ], "Shows": [ { "ShowName": "The TurtleCoin Podcast", "Tags": [ "TurtleCoin", "Cryptocurrency", "Privacy" ], "Episodes": [ { "SeriesNumber": 0, "EpisodeName": "How did you hear about TurtleCoin", "AudioURL": [ { "URL": "https://gateway.pinata.cloud/ipfs/QmXsz4VSG3a9TdDtMXRd9qpxaFpPBkHzcq1aM1TQZtypF9", "Description": "High quality audio file, mp3" } ], "DateCreated": "2021-05-16", "DateUpdated": "2021-05-16", "DurationSeconds": 5980, "CitedURL": [ { "URL": "https://youtube.com/turtlecoin", "Description": "This is our YouTube channel, subscribe for more podcasts!" } ], "TranscriptionURL": [], "EpisodeCredit": [ { "Name": "RockSteadyTC", "Role": "Creator", "Links": [ { "URL": "https://github.com/rocksteadytc", "Description": "RockSteadyTC's profile page" } ] }, { "Name": "IBurnMyCD", "Role": "Creator, Editor", "Links": [ { "URL": "https://github.com/brandonlehmann", "Description": "IBurnMyCD's profile page" } ] } ], "Chapters": [ { "StartTimeSeconds": 0, "ChapterName": "Intro", "ChapterDescription": "Finding our feet live on stream", "ChapterCredit": null }, { "StartTimeSeconds": 270, "ChapterName": "Metaprinter", "ChapterDescription": "Metaprinters entrance into mining and turtlecoin", "ChapterCredit": null }, { "StartTimeSeconds": 580, "ChapterName": "User stories", "ChapterDescription": "Users describe how they entered the TurtleCoin community", "ChapterCredit": null }, { "StartTimeSeconds": 1650, "ChapterName": "Sektion F", "ChapterDescription": "Or is it Sektion 8? :)", "ChapterCredit": null }, { "StartTimeSeconds": 2790, "ChapterName": "Blue whale", "ChapterDescription": "The blue whales club and the early illuminati origins of TurtleCoin", "ChapterCredit": null }, { "StartTimeSeconds": 3300, "ChapterName": "Raspberry pi mining", "ChapterDescription": "Humble beginnings in mining TurtleCoin", "ChapterCredit": null }, { "StartTimeSeconds": 3850, "ChapterName": "More shilling", "ChapterDescription": "The same gambling site keeps coming up", "ChapterCredit": null }, { "StartTimeSeconds": 3917, "ChapterName": "Forknote", "ChapterDescription": "The humble beginnings of TurtleCoin as a forknote project.", "ChapterCredit": null }, { "StartTimeSeconds": 5727, "ChapterName": "The Truth", "ChapterDescription": "The best story of them all", "ChapterCredit": null } ] }, { "SeriesNumber": 1, "EpisodeName": "Decimals and Dusty Shells", "EpisodeDescription": "A question we get a lot pertains to the 2 digits after the decimal point, and even more now since in v2 we have a supply reduction of 100,000:1. In this episode we address that question and more!", "WebsiteURL": { "URL": "https://www.youtube.com/watch?v=fRRg_vmfchI", "Description": "Link to this episode's video" }, "ImageURL": { "URL": "hhttps://avatars.githubusercontent.com/u/34389551", "Description": "Episode art image thumbnail" }, "AudioURL": [ { "URL": "https://gateway.pinata.cloud/ipfs/QmY1iVSWep8h4ZPyKWihZj2cuneccpT9utANC7zao4ujtZ", "Description": "High quality audio file, mp3" } ], "DateCreated": "2021-05-17", "DateUpdated": "2021-05-17", "DurationSeconds": 6142, "CitedURL": [ { "URL": "https://youtube.com/turtlecoin", "Description": "This is our YouTube channel, subscribe for more podcasts!" } ], "TranscriptionURL": [], "EpisodeCredit": [ { "Name": "RockSteadyTC", "Role": "Creator", "Links": [ { "URL": "https://github.com/rocksteadytc", "Description": "RockSteadyTC's profile page" } ] }, { "Name": "IBurnMyCD", "Role": "Creator, Editor", "Links": [ { "URL": "https://github.com/brandonlehmann", "Description": "IBurnMyCD's profile page" } ] } ], "Chapters": [ { "StartTimeSeconds": 0, "ChapterName": "Intro", "ChapterDescription": "nobody responded when we asked who had questions about TurtleCoin", "ChapterCredit": null }, { "StartTimeSeconds": 105, "ChapterName": "decimals", "ChapterDescription": "the two decimal points thing ", "ChapterCredit": null }, { "StartTimeSeconds": 325, "ChapterName": "dust", "ChapterDescription": "reducing dust through reduction in supply ", "ChapterCredit": null }, { "StartTimeSeconds": 422, "ChapterName": "elders", "ChapterDescription": "technical difficulties on the keyboard of ibmcd ", "ChapterCredit": null }, { "StartTimeSeconds": 463, "ChapterName": "v1", "ChapterDescription": "the cost of a realistic TRTL v1 transaction", "ChapterCredit": null }, { "StartTimeSeconds": 690, "ChapterName": "microtrashin'", "ChapterDescription": "the infeasibility of microtransactions becomes apparent", "ChapterCredit": null }, { "StartTimeSeconds": 750, "ChapterName": "technical break", "ChapterDescription": "this music got us a copyright claim by UMG ", "ChapterCredit": null }, { "StartTimeSeconds": 788, "ChapterName": "we're back", "ChapterDescription": "welcome back craig ", "ChapterCredit": null }, { "StartTimeSeconds": 805, "ChapterName": "reduction", "ChapterDescription": "100,000:1 swap rate", "ChapterCredit": null }, { "StartTimeSeconds": 939, "ChapterName": "Canti", "ChapterDescription": "cantipixels and the pixel era", "ChapterCredit": null }, { "StartTimeSeconds": 1380, "ChapterName": "Mining", "ChapterDescription": "the downfall of herominers", "ChapterCredit": null }, { "StartTimeSeconds": 1570, "ChapterName": "ASIC", "ChapterDescription": "mining fairness, the fight against ASIC ", "ChapterCredit": null }, { "StartTimeSeconds": 1985, "ChapterName": "Old Days", "ChapterDescription": "the hard beginnings of the TRTL software", "ChapterCredit": null }, { "StartTimeSeconds": 2452, "ChapterName": "FAQ", "ChapterDescription": "the v2 FAQ - but pronounced FACK apparently ", "ChapterCredit": null }, { "StartTimeSeconds": 2500, "ChapterName": "Jerks", "ChapterDescription": "speculators abound", "ChapterCredit": null }, { "StartTimeSeconds": 2640, "ChapterName": "commerce", "ChapterDescription": "what is turtleshop", "ChapterCredit": null }, { "StartTimeSeconds": 2880, "ChapterName": "Boats", "ChapterDescription": "Cisions boat that was purchased for 1 billion TurtleCoin", "ChapterCredit": null }, { "StartTimeSeconds": 3121, "ChapterName": "Ideas", "ChapterDescription": "OnlyTurtles", "ChapterCredit": null }, { "StartTimeSeconds": 3300, "ChapterName": "shitcoins", "ChapterDescription": "the rise of shitcoiners", "ChapterCredit": null }, { "StartTimeSeconds": 3450, "ChapterName": "derogold", "ChapterDescription": "forks and fast blocks ", "ChapterCredit": null }, { "StartTimeSeconds": 4020, "ChapterName": "shitcoins, pt 2", "ChapterDescription": "how to identify a shitcoiner", "ChapterCredit": null }, { "StartTimeSeconds": 4605, "ChapterName": "arcturus", "ChapterDescription": "the issue with privacy", "ChapterCredit": null }, { "StartTimeSeconds": 5380, "ChapterName": "V3", "ChapterDescription": "whats in store for v3?", "ChapterCredit": null }, { "StartTimeSeconds": 5640, "ChapterName": "Quantum", "ChapterDescription": "the rise of quantum computers vs crypto", "ChapterCredit": null }, { "StartTimeSeconds": 5970, "ChapterName": "Fin", "ChapterDescription": "wrapping it up ", "ChapterCredit": null } ] } ] } ] } ``` # Type Objects *Objects are described as Go structs for the purposes of this document.* ### Feed ```go type Feed struct { Protocol string Version int NetworkName string NetworkDescription string WebsiteURL WebURL FeedURL WebURL DateCreated string BannerURL WebURL AvatarURL WebURL FavIcoURL WebURL Tags []string FeedCredit []Credit Shows []Show } ``` ### Show ```go type Show struct { ShowName string ShowDescription string WebsiteURL WebURL DateCreated string BannerURL WebURL AvatarURL WebURL FavIcoURL WebURL Tags []string ShowCredit []Credit Episodes []Episode } ``` ### Episode ```go type Episode struct { SeriesNumber int EpisodeName string EpisodeDescription string WebsiteURL WebURL ImageURL WebURL AudioURL []WebURL DateCreated string DateUpdated string DurationSeconds int CitedURL []WebURL TranscriptionURL []WebURL EpisodeCredit []Credit Chapters []Chapter } ``` ### Chapter ```go type Chapter struct { StartTimeSeconds int ChapterName string ChapterDescription string ChapterCredit []Credit } ``` ### Credit ```go type Credit struct { Name string Role string Links []WebURL } ``` ### WebURL ```go type WebURL struct { URL string Description string } ``` # Type Object Definitions ## Feed Object ```go type Feed struct { Protocol string Version int NetworkName string NetworkDescription string WebsiteURL WebURL FeedURL WebURL DateCreated string BannerURL WebURL AvatarURL WebURL FavIcoURL WebURL Tags []string FeedCredit []Credit Shows []Show } ``` ## Feed Object Description *Feed is the root object. It encapsulates the other types.* ### Protocol #### `string` `required` The protocol identifier string informs any parsers that the following data conforms to the LOUD Syndication Protocol ### Version #### `int` `required` The version identifier corresponds to protocol version revisions. Each new build increments the version. ### NetworkName #### `string` `required` The name of the network ### NetworkDescription #### `string` The network's description ### WebsiteURL #### `WebURL` WebURL hyperlink to this show's webpage ### FeedURL #### `WebURL` `required` WebURL hyperlink to this network's .loud file ### DateCreated #### `string` ISO 8601 Date when the show was created ### BannerURL #### `WebURL` Horizontal header banner, recommended 2:1 aspect ratio ### AvatarURL #### `WebURL` Square network avatar, recommended 1:1 aspect ratio ### FavIcoURL #### `WebURL` Favicon, recommended 1:1 aspect ratio ### FeedCredit #### `[]Credit` Credits for participants of this Feed ### Show #### `[]Show` `required` Show is the last item in the Feed object. Feed can have multiple Shows ## Show Object ```go type Show struct { ShowName string ShowDescription string WebsiteURL WebURL DateCreated string BannerURL WebURL AvatarURL WebURL FavIcoURL WebURL Tags []string ShowCredit []Credit Episodes []Episode } ``` ## Show Object Description *Shows contain episodes and associated metadata.* ### ShowName #### `string` `required` The name of the show ### ShowDescription #### `string` The show's description ### WebsiteURL #### `WebURL` WebURL hyperlink to this show's webpage ### DateCreated #### `string` ISO 8601 Date when the show was created ### BannerURL #### `WebURL` Horizontal header banner, recommended 4000x2000px minimum size, 2:1 aspect ratio ### AvatarURL #### `WebURL` Square show avatar, recommended 2000x2000px minimum size, 1:1 aspect ratio ### FavIcoURL #### `WebURL` Favicon, recommended 512x512px minimum size, 1:1 aspect ratio ### CreatorName #### `[]string` `required` List of show creators, staff, credited help ### Tags #### `[]string` List of associated keywords, related to this show ### ShowCredit #### `[]Credit` Credits for participants of this Show ### Episodes #### `[]Episode` `required` List of episode objects, in series order ## Episode Object ```go type Episode struct { SeriesNumber int EpisodeName string EpisodeDescription string WebsiteURL WebURL ImageURL WebURL AudioURL []WebURL DateCreated string DateUpdated string DurationSeconds int CitedURL []WebURL TranscriptionURL []WebURL EpisodeCredit []Credit Chapters []Chapter } ``` ## Episode Object Description *Episodes contain chapters and metadata* ### SeriesNumber #### `int` `required` This number corresponds to the chronological position of this episode in the show's timeline. ### EpisodeName #### `string` `required` Name of the episode ### EpisodeDescription #### `string` Description of the episode ### WebsiteURL #### `WebURL` WebURL pointing to the webpage for this episode ### ImageURL #### `WebURL` Episode image, 4000x2000px recommended, 2:1 aspect ratio ### AudioURL #### `[]WebURL` `required` List of audio WebURLs, in order of quality or filesize, from first to last with the biggest or highest quality at the top ### DateCreated #### `string` ISO 8601 Date when the show was created ### DateUpdated #### `string` ISO 8601 Date when the show was last updated ### DurationSeconds #### `int` Number of seconds long total for the episode ### EpisodeHost #### `[]string` List of episode hosts ### EpisodeGuest #### `[]string` List of episode guests ### CitedURL #### `[]WebURL` List of WebURLs for citations or references in this episode ### TranscriptionURL #### `[]WebURL` List of transcription WebURLs, with the primary translation / transcription first ### EpisodeCredit #### `[]Credit` Credits for Episode participants ### Chapters #### `[]Chapter` List of episode chapters ## Chapter Object ```go type Chapter struct { StartTimeSeconds int ChapterName string ChapterDescription string ChapterCredit []Credit } ``` ## Chapter Object Description *Chapters are subsections of a show, broken down by topic or segment* ### StartTimeSeconds #### `int` `required in chapters` Start time for this chapter, measured in seconds. If the first chapter listed has a StartTime of greater than 0, the previous chapter will be labeled with a chapter name of 'intro' ### ChapterName #### `string` `required in chapters` Name of this chapter ### ChapterDescription #### `string` Description of this chapter ### ChapterCredit #### `[]Credit` Credits for Chapter participants ## Credit Object ```go type Credit struct { Name string Role string Links []WebURL } ``` ## Credit Object Description *Credits are a way to credit a person with proper attribution* ### Name #### `string` `required` The name of this content creator ### Role #### `string` The role of this content creator within context of this Credit ### Links #### `[]WebURL` A list of contact WebURLs whether they be mailto links or links to social media profiles or personal projects ### WebURL Object ```go type WebURL struct { URL string Description string } ``` ## WebURL Object Description *WebURLs are hyperlinks with a description.* ### URL #### `string` `required` A hyperlink ### Description #### `string` Short description of the content linked to by the URL.