Spotify.NET/docs/next/iplayableitem/index.html

32 lines
16 KiB
HTML
Raw Normal View History

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="generator" content="Docusaurus v2.0.0-alpha.56">
<title data-react-helmet="true">IPlayableItem | SpotifyAPI-NET</title><meta data-react-helmet="true" name="docsearch:version" content="next"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:title" content="IPlayableItem | SpotifyAPI-NET"><meta data-react-helmet="true" name="description" content="When working with playlists or the current playing context, you will encounter a type IPlayableItem, which only contains a Type property. Spotify recently introduced shows/episodes to the API, and thus had to adapt API endpoints which previously just returned track objects. Now, playlists and the current playing context can include two types, tracks and episodes. To reflect this in our models, we introduced IPlayableItem."><meta data-react-helmet="true" property="og:description" content="When working with playlists or the current playing context, you will encounter a type IPlayableItem, which only contains a Type property. Spotify recently introduced shows/episodes to the API, and thus had to adapt API endpoints which previously just returned track objects. Now, playlists and the current playing context can include two types, tracks and episodes. To reflect this in our models, we introduced IPlayableItem."><meta data-react-helmet="true" property="og:url" content="https://johnnycrazy.github.io/SpotifyAPI-NET/docs/next/iplayableitem"><link data-react-helmet="true" rel="shortcut icon" href="/SpotifyAPI-NET/img/favicon.ico"><link data-react-helmet="true" rel="canonical" href="https://johnnycrazy.github.io/SpotifyAPI-NET/docs/next/iplayableitem"><link rel="stylesheet" href="/SpotifyAPI-NET/styles.8a053330.css">
<link rel="preload" href="/SpotifyAPI-NET/styles.c98ed224.js" as="script">
<link rel="preload" href="/SpotifyAPI-NET/runtime~main.ddd67aa1.js" as="script">
<link rel="preload" href="/SpotifyAPI-NET/main.8fe0ef86.js" as="script">
<link rel="preload" href="/SpotifyAPI-NET/1.bdac6bbf.js" as="script">
<link rel="preload" href="/SpotifyAPI-NET/2.42925100.js" as="script">
<link rel="preload" href="/SpotifyAPI-NET/3.b4daa266.js" as="script">
<link rel="preload" href="/SpotifyAPI-NET/1be78505.27464577.js" as="script">
<link rel="preload" href="/SpotifyAPI-NET/ad407b76.1ef16d59.js" as="script">
<link rel="preload" href="/SpotifyAPI-NET/fbd836ef.f60af36f.js" as="script">
</head>
<body>
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=window.matchMedia("(prefers-color-scheme: dark)"),n=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();null!==n?t(n):e.matches&&t("dark")}()</script><div id="__docusaurus">
<nav class="navbar navbar--light navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/SpotifyAPI-NET/"><img class="navbar__logo" src="/SpotifyAPI-NET/img/logo.svg" alt="SpotifyAPI-NET"><strong class="navbar__title">SpotifyAPI-NET</strong></a><div class="navbar__item dropdown dropdown--hoverable dropdown--left"><a activeclassname="navbar__link--active" class="navbar__item navbar__link">Docs</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/SpotifyAPI-NET/docs/next/introduction">Latest/Next</a></li><li><a class="dropdown__link" href="/SpotifyAPI-NET/docs/home">5.1.1</a></li></ul></div><a class="navbar__item navbar__link" href="/SpotifyAPI-NET/news">News</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/JohnnyCrazy/SpotifyAPI-NET" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_1gtM"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_keGJ moon_1gwN"></span></div><div class="react-toggle-track-x"><span class="toggle_keGJ sun_3CPA"></span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/SpotifyAPI-NET/"><img class="navbar__logo" src="/SpotifyAPI-NET/img/logo.svg" alt="SpotifyAPI-NET"><strong class="navbar__title">SpotifyAPI-NET</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a activeclassname="navbar__link--active" class="menu__link menu__link--sublist">Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/SpotifyAPI-NET/docs/next/introduction">Latest/Next</a></li><li class="menu__list-item"><a class="menu__link" href="/SpotifyAPI-NET/docs/home">5.1.1</a></li></ul></li><li class="menu__list-item"><a class="menu__link" href="/SpotifyAPI-NET/news">News</a></li><li class="menu__list-item"><a href="https://github.com/JohnnyCrazy/SpotifyAPI-NET" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_1kjD"><div class="docSidebarContainer_1cYp"><div class="sidebar_1kLs"><div class="menu menu--responsive menu_w2sC"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_2vk4" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 32 32" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">SpotifyAPI-NET</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/SpotifyAPI-NET/docs/next/introduction">Introduction</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/SpotifyAPI-NET/docs/next/getting_started">Getting Started</a></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Guides</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/SpotifyAPI-NET/docs/next/error_handling">Error Handling</a></li><li class
</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">var playlist = await spotify.Playlists.Get(&quot;37i9dQZEVXbMDoHDwVN2tF&quot;);</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">foreach (PlaylistTrack&lt;IPlayableItem&gt; item in playlist.Tracks.Items)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> // When was it added</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> Console.WriteLine(item.AddedAt);</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> // The only propety on item is item.Type, it&#x27;s a IPlayableItem</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> Console.WriteLine(item.Track.Type);</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div></div></div></div></div><p>Now, this type per se is probably useless to you. You&#x27;re interested in the name, uri or artist of the episode/track. To get that info, you have to type cast the <code>IPlayableItem</code> to the respective type:</p><div class="mdxCodeBlock_iHAB"><div class="codeBlockContent_32p_"><button type="button" aria-label="Copy code to clipboard" class="copyButton_1BYj">Copy</button><div tabindex="0" class="prism-code language-csharp codeBlock_19pQ"><div class="codeBlockLines_2n9r" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">foreach (PlaylistTrack&lt;IPlayableItem&gt; item in playlist.Tracks.Items)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> if (item.Track is FullTrack track)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> // All FullTrack properties are available</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> Console.WriteLine(track.Name);</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> if (item.Track is FullEpisode episode)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> // All FullTrack properties are available</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> Console.WriteLine(episode.Name);</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div></div></div></div></div><p>To this day, <code>IPlayableItem</code> can only be <code>FullTrack</code> or <code>FullEpisode</code>.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/JohnnyCrazy/SpotifyAPI-NET/edit/master/SpotifyAPI.Docs/docs/iplayableitem.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 40 40" style="margin-right:0.3em;vertical-align:sub"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col text--right"><em><small>Last updated on <time datetime="2020-06-15T20:37:11.000Z" class="docLastUpdatedAt_1sqk">6/15/2020</time> by <strong>Jonas Dellinger</strong></small></em></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/SpotifyAPI-NET/docs/next/retry_handling"><div c
<script src="/SpotifyAPI-NET/styles.c98ed224.js"></script>
<script src="/SpotifyAPI-NET/runtime~main.ddd67aa1.js"></script>
<script src="/SpotifyAPI-NET/main.8fe0ef86.js"></script>
<script src="/SpotifyAPI-NET/1.bdac6bbf.js"></script>
<script src="/SpotifyAPI-NET/2.42925100.js"></script>
<script src="/SpotifyAPI-NET/3.b4daa266.js"></script>
<script src="/SpotifyAPI-NET/1be78505.27464577.js"></script>
<script src="/SpotifyAPI-NET/ad407b76.1ef16d59.js"></script>
<script src="/SpotifyAPI-NET/fbd836ef.f60af36f.js"></script>
</body>
</html>