{"id":31535,"date":"2016-01-16T15:54:33","date_gmt":"2016-01-16T10:24:33","guid":{"rendered":"http:\/\/www.tothenew.com\/blog\/?p=31535"},"modified":"2016-02-25T14:52:13","modified_gmt":"2016-02-25T09:22:13","slug":"youtube-apiv3-to-fetch-all-videos-on-a-channel-in-asp-net","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/youtube-apiv3-to-fetch-all-videos-on-a-channel-in-asp-net\/","title":{"rendered":"Youtube API(V3) to fetch all videos on a Channel in ASP.NET"},"content":{"rendered":"<p>This Blog explains how to retrieve \u00a0a specific user&#8217;s playlists of videos. This \u00a0does not require any user authorization.<\/p>\n<p>YouTube is widely used in our life. \u00a0Because simplicity and ease of use, <a title=\"youtube channel management services\" href=\"http:\/\/www.tothenew.com\/digital-video-solutions\">YouTube has become the most popular video sharing<\/a> and one of the most popular websites in the world. Some YouTube API allows us to get the specific user&#8217;s playlists.<\/p>\n<p>To work with YouTube data API, we need to generate the Developer Key by following \u00a0the below reference<\/p>\n<p><em>http:\/\/help.dimsemenov.com\/kb\/wordpress-royalslider-tutorials\/wp-how-to-get-youtube-api-key<\/em><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-31531\" src=\"\/blog\/wp-ttn-blog\/uploads\/2016\/01\/Google-API.png\" alt=\"Google API\" width=\"461\" height=\"245\" \/><\/p>\n<p>After generating the Developer key ,Open visual studio and \u00a0create ASP.net empty web site<\/p>\n<ul>\n<li><strong>Add Default Page (Default.aspx):-<\/strong><\/li>\n<\/ul>\n<p>Let\u2019s take one text box for channel name which is entered by user. Once \u00a0user enter the channel name in text box \u00a0and clicked on button after that<strong>\u00a0<\/strong>it will show playlist of video with respect to entered channel name by user.<\/p>\n<p><strong>ASPX \u00a0Code :-<\/strong><\/p>\n<p><strong>User Id:-<\/strong> &lt;asp:TextBox ID=&#8221;TextBox1&#8243; runat=&#8221;server&#8221;&gt;&lt;\/asp:TextBox&gt;<\/p>\n<p>&lt;asp:Button ID=&#8221;btn_Search&#8221; OnClick=&#8221;Button1_Click&#8221; runat=&#8221;server&#8221; Text=&#8221;Search&#8221; \/&gt;<\/p>\n<p>&lt;asp:GridView ID=&#8221;GridView1&#8243; AutoGenerateColumns=&#8221;false&#8221; runat=&#8221;server&#8221;&gt;<\/p>\n<p>&lt;Columns&gt;<\/p>\n<p>&lt;asp:ButtonField Text=&#8221;btn_Select&#8221; CommandName=&#8221;Select&#8221; ItemStyle-Width=&#8221;150&#8243; \/&gt;<\/p>\n<p>&lt;asp:TemplateField&gt;<\/p>\n<p>&lt;ItemTemplate&gt;<\/p>\n<p>&lt;a href='&lt;%# &#8220;Default2.aspx?ListId=&#8221;+Eval(&#8220;videoId&#8221;) %&gt;&#8217;&gt;<\/p>\n<p>&lt;img src='&lt;%# Eval(&#8220;ImageUrl&#8221;) %&gt;&#8217; alt='&lt;%# Eval(&#8220;ImageUrl&#8221;) %&gt;&#8217; \/&gt;<\/p>\n<p>&lt;\/a&gt;<\/p>\n<p>&lt;\/ItemTemplate&gt;<\/p>\n<p>&lt;\/asp:TemplateField&gt;<\/p>\n<p>&lt;asp:TemplateField&gt;<\/p>\n<p>&lt;ItemTemplate&gt;<\/p>\n<p>&lt;asp:Label ID=&#8221;lbltitle&#8221; runat=&#8221;server&#8221; Text='&lt;%# Eval(&#8220;Title&#8221;) %&gt;&#8217;&gt;&lt;\/asp:Label&gt;<\/p>\n<p>&lt;\/ItemTemplate&gt;<\/p>\n<p>&lt;\/asp:TemplateField&gt;<\/p>\n<p>&lt;asp:TemplateField&gt;<\/p>\n<p>&lt;ItemTemplate&gt;<\/p>\n<p>&lt;asp:Label ID=&#8221;lbldiscription&#8221; runat=&#8221;server&#8221; Text=&#8217; &lt;%# Eval(&#8220;discription&#8221;) %&gt;&#8217;&gt;&lt;\/asp:Label&gt;<\/p>\n<p>&lt;\/ItemTemplate&gt;<\/p>\n<p>&lt;\/asp:TemplateField&gt;<\/p>\n<p>&lt;asp:TemplateField&gt;<\/p>\n<p>&lt;ItemTemplate&gt;<\/p>\n<p>&lt;asp:Label ID=&#8221;lblvideoId&#8221; runat=&#8221;server&#8221; Text=&#8217; &lt;%# Eval(&#8220;videoId&#8221;) %&gt;&#8217;&gt;&lt;\/asp:Label&gt;<\/p>\n<p>&lt;\/ItemTemplate&gt;<\/p>\n<p>&lt;\/asp:TemplateField&gt;<\/p>\n<p>&lt;asp:TemplateField&gt;<\/p>\n<p>&lt;ItemTemplate&gt;<\/p>\n<p>&lt;asp:Label ID=&#8221;lblImageUrl&#8221; runat=&#8221;server&#8221; Text=&#8217; &lt;%# Eval(&#8220;ImageUrl&#8221;) %&gt;&#8217;&gt;&lt;\/asp:Label&gt;<\/p>\n<p>&lt;\/ItemTemplate&gt;<\/p>\n<p>&lt;\/asp:TemplateField&gt;<\/p>\n<p>&lt;\/Columns&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/asp:GridView&gt;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>.CS Code:-<\/strong><\/p>\n<p>DataTable dt = new System.Data.DataTable();<\/p>\n<p><strong>\u00a0\u00a0\u00a0 protected void Button1_Click(object sender, EventArgs e)<\/strong><\/p>\n<p><strong>{<\/strong><\/p>\n<p>dt.Columns.Add(new DataColumn(&#8220;Title&#8221;, typeof(string)));<\/p>\n<p>dt.Columns.Add(new DataColumn(&#8220;discription&#8221;, typeof(string)));<\/p>\n<p>dt.Columns.Add(new DataColumn(&#8220;videoId&#8221;, typeof(string)));<\/p>\n<p>dt.Columns.Add(new DataColumn(&#8220;ImageUrl&#8221;, typeof(string)));<\/p>\n<p>readplaylist();<\/p>\n<p>GridView1.DataSource = dt;<\/p>\n<p>GridView1.DataBind();<\/p>\n<p><strong>}<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u00a0\u00a0\u00a0 public void readplaylist()<\/strong><\/p>\n<p><strong>{<\/strong><\/p>\n<p>WebClient wc = new WebClient { Encoding = Encoding.UTF8 };<\/p>\n<p>try<\/p>\n<p>{<\/p>\n<p>string jsonstring = wc.DownloadString(&#8220;https:\/\/www.googleapis.com\/youtube\/v3\/playlists?part=snippet&amp;key=<strong>\u00a0Developer Key<\/strong> &amp;maxResults=50&amp;channelId=&#8221; + CHanelId() + &#8220;&#8221;);<\/p>\n<p>JObject jobj = (JObject)JsonConvert.DeserializeObject(jsonstring);<\/p>\n<p>foreach (var entry in jobj[&#8220;items&#8221;])<\/p>\n<p>{\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 dt.Rows.Add(entry[&#8220;snippet&#8221;][&#8220;title&#8221;].ToString(), entry[&#8220;snippet&#8221;][&#8220;description&#8221;].ToString(), entry[&#8220;id&#8221;].ToString(), entry[&#8220;snippet&#8221;][&#8220;thumbnails&#8221;][&#8220;medium&#8221;][&#8220;url&#8221;].ToString());<\/p>\n<p>}<\/p>\n<p>}\u00a0 \u00a0 \u00a0 \u00a0 catch (Exception ex)<\/p>\n<p>{<\/p>\n<p>throw;<\/p>\n<p>}<\/p>\n<p><strong>\u00a0}<\/strong><\/p>\n<p><strong>public string CHanelId()<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0 {<\/strong><\/p>\n<p>WebClient wc = new WebClient { Encoding = Encoding.UTF8 };<\/p>\n<p>try<\/p>\n<p>{<\/p>\n<p>string jsonstring = wc.DownloadString(&#8220;https:\/\/www.googleapis.com\/youtube\/v3\/channels?key=<strong>Developer Key<\/strong>&amp;forUsername=&#8221; + TextBox1.Text + &#8220;&amp;part=id&#8221;);<\/p>\n<p>JObject jobj = (JObject)JsonConvert.DeserializeObject(jsonstring);<\/p>\n<p>return jobj[&#8220;items&#8221;][0][&#8220;id&#8221;].ToString();<\/p>\n<p>}<\/p>\n<p>catch (Exception ex)<\/p>\n<p>{\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 throw;<\/p>\n<p>}<\/p>\n<p><strong>\u00a0\u00a0\u00a0 }<\/strong><\/p>\n<p>Enter youtube channel name:-<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-31532\" src=\"\/blog\/wp-ttn-blog\/uploads\/2016\/01\/step-1.png\" alt=\"step 1\" width=\"392\" height=\"118\" \/><\/p>\n<p><b>User will enter youtube video channel name in text box and then click on button.After clicking on button,it will show playlist of video with respect to entered channel name.<\/b><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-31533\" src=\"\/blog\/wp-ttn-blog\/uploads\/2016\/01\/step-2.png\" alt=\"step 2\" width=\"392\" height=\"453\" \/><\/p>\n<p><strong>Note:- Click on any thumbnail of video play list ,it will \u00a0show all videos of that particular clicked play list on next page named as default2.aspx.<\/strong><\/p>\n<ul>\n<li><strong>Lets&#8217; Create another page for showing all playlist named as videos.aspx<\/strong><\/li>\n<\/ul>\n<p><strong>videos.aspx Page Code<\/strong><\/p>\n<p>&lt;asp:GridView ID=&#8221;GridView1&#8243;\u00a0 AutoGenerateColumns=&#8221;false&#8221; runat=&#8221;server&#8221;&gt;<\/p>\n<p>&lt;Columns&gt;<\/p>\n<p>&lt;asp:ButtonField Text=&#8221;Select&#8221; CommandName=&#8221;Select&#8221; ItemStyle-Width=&#8221;150&#8243; \/&gt;<\/p>\n<p>&lt;asp:TemplateField&gt;<\/p>\n<p>&lt;ItemTemplate&gt;<\/p>\n<p>&lt;a href='&lt;%# &#8220;Default2.aspx?ListId=&#8221;+Eval(&#8220;videoId&#8221;) %&gt;&#8217;&gt;<\/p>\n<p>&lt;img src='&lt;%# Eval(&#8220;ImageUrl&#8221;) %&gt;&#8217; alt='&lt;%# Eval(&#8220;ImageUrl&#8221;) %&gt;&#8217; \/&gt;<\/p>\n<p>&lt;\/a&gt;<\/p>\n<p>&lt;\/ItemTemplate&gt;<\/p>\n<p>&lt;\/asp:TemplateField&gt;<\/p>\n<p>&lt;asp:TemplateField&gt;<\/p>\n<p>&lt;ItemTemplate&gt;<\/p>\n<p>&lt;asp:Label ID=&#8221;lbltitle&#8221; runat=&#8221;server&#8221; Text='&lt;%# Eval(&#8220;Title&#8221;) %&gt;&#8217;&gt;&lt;\/asp:Label&gt;<\/p>\n<p>&lt;\/ItemTemplate&gt;<\/p>\n<p>&lt;\/asp:TemplateField&gt;<\/p>\n<p>&lt;asp:TemplateField&gt;<\/p>\n<p>&lt;ItemTemplate&gt;<\/p>\n<p>&lt;asp:Label ID=&#8221;lbldiscription&#8221; runat=&#8221;server&#8221; Text=&#8217; &lt;%# Eval(&#8220;discription&#8221;) %&gt;&#8217;&gt;&lt;\/asp:Label&gt;<\/p>\n<p>&lt;\/ItemTemplate&gt;<\/p>\n<p>&lt;\/asp:TemplateField&gt;<\/p>\n<p>&lt;asp:TemplateField&gt;<\/p>\n<p>&lt;ItemTemplate&gt;<\/p>\n<p>&lt;asp:Label ID=&#8221;lblvideoId&#8221; runat=&#8221;server&#8221; Text=&#8217; &lt;%# Eval(&#8220;videoId&#8221;) %&gt;&#8217;&gt;&lt;\/asp:Label&gt;<\/p>\n<p>&lt;\/ItemTemplate&gt;<\/p>\n<p>&lt;\/asp:TemplateField&gt;<\/p>\n<p>&lt;asp:TemplateField&gt;<\/p>\n<p>&lt;ItemTemplate&gt;<\/p>\n<p>&lt;asp:Label ID=&#8221;lblImageUrl&#8221; runat=&#8221;server&#8221; Text=&#8217; &lt;%# Eval(&#8220;ImageUrl&#8221;) %&gt;&#8217;&gt;&lt;\/asp:Label&gt;<\/p>\n<p>&lt;\/ItemTemplate&gt;<\/p>\n<p>&lt;\/asp:TemplateField&gt;<\/p>\n<p>&lt;\/Columns&gt;<\/p>\n<p>&lt;\/asp:GridView&gt;<\/p>\n<p><strong>videos.aspx.CS page code :<\/strong><\/p>\n<p>protected void Page_Load(object sender, EventArgs e)<\/p>\n<p>{\u00a0 \u00a0 \u00a0 \u00a0 dt.Columns.Add(new DataColumn(&#8220;Title&#8221;, typeof(string)));<\/p>\n<p>dt.Columns.Add(new DataColumn(&#8220;discription&#8221;, typeof(string)));<\/p>\n<p>dt.Columns.Add(new DataColumn(&#8220;videoId&#8221;, typeof(string)));<\/p>\n<p>dt.Columns.Add(new DataColumn(&#8220;ImageUrl&#8221;, typeof(string)));<\/p>\n<p>readplaylist(&#8220;&#8221;);<\/p>\n<p>GridView1.DataSource = dt;<\/p>\n<p>GridView1.DataBind();<\/p>\n<p>}<\/p>\n<p>public void readplaylist(string pageid)<\/p>\n<p>{<\/p>\n<p>if (pageid.Length == 0)<\/p>\n<p>{<\/p>\n<p>WebClient wc = new WebClient { Encoding = Encoding.UTF8 };<\/p>\n<p>try<\/p>\n<p>{<\/p>\n<p>string jsonstring = wc.DownloadString(&#8220;https:\/\/www.googleapis.com\/youtube\/v3\/playlistItems?part=snippet&amp;playlistId=&#8221; + Request.QueryString[&#8220;ListId&#8221;].ToString().Trim() + &#8220;&amp;key=<strong>Developer Key<\/strong> &amp;maxResults=50&#8243;);<\/p>\n<p>JObject jobj = (JObject)JsonConvert.DeserializeObject(jsonstring);<\/p>\n<p>Label1.Text = jobj[&#8220;pageInfo&#8221;][&#8220;totalResults&#8221;].ToString();<\/p>\n<p>foreach (var entry in jobj[&#8220;items&#8221;])<\/p>\n<p>{<\/p>\n<p>dt.Rows.Add(entry[&#8220;snippet&#8221;][&#8220;title&#8221;].ToString(), entry[&#8220;snippet&#8221;][&#8220;description&#8221;].ToString(), entry[&#8220;snippet&#8221;][&#8220;resourceId&#8221;][&#8220;videoId&#8221;].ToString(), entry[&#8220;snippet&#8221;][&#8220;thumbnails&#8221;][&#8220;default&#8221;][&#8220;url&#8221;].ToString());<\/p>\n<p>}<\/p>\n<p>if (jobj[&#8220;nextPageToken&#8221;] != null &amp;&amp; jobj[&#8220;nextPageToken&#8221;].ToString() != &#8220;&#8221;)<\/p>\n<p>{<\/p>\n<p>readplaylist(jobj[&#8220;nextPageToken&#8221;].ToString());<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>catch (Exception ex)<\/p>\n<p>{<\/p>\n<p>throw;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>else\u00a0 \u00a0{<\/p>\n<p>WebClient wc = new WebClient { Encoding = Encoding.UTF8 };<\/p>\n<p>try<\/p>\n<p>{<\/p>\n<p>string jsonstring = wc.DownloadString(&#8220;https:\/\/www.googleapis.com\/youtube\/v3\/playlistItems?part=snippet&amp;playlistId=&#8221; + Request.QueryString[&#8220;ListId&#8221;].ToString().Trim() + &#8220;&amp;key=<strong>Developer key<\/strong> &amp;maxResults=50&amp;pageToken=&#8221; + pageid + &#8220;&#8221;);<\/p>\n<p>JObject jobj = (JObject)JsonConvert.DeserializeObject(jsonstring);<\/p>\n<p>foreach (var entry in jobj[&#8220;items&#8221;])<\/p>\n<p>{<\/p>\n<p>dt.Rows.Add(entry[&#8220;snippet&#8221;][&#8220;title&#8221;].ToString(), entry[&#8220;snippet&#8221;][&#8220;description&#8221;].ToString(), entry[&#8220;snippet&#8221;][&#8220;resourceId&#8221;][&#8220;videoId&#8221;].ToString(), entry[&#8220;snippet&#8221;][&#8220;thumbnails&#8221;][&#8220;default&#8221;][&#8220;url&#8221;].ToString());<\/p>\n<p>}<\/p>\n<p>if (jobj[&#8220;nextPageToken&#8221;] != null &amp;&amp; jobj[&#8220;nextPageToken&#8221;].ToString() != &#8220;&#8221;)<\/p>\n<p>{<\/p>\n<p>readplaylist(jobj[&#8220;nextPageToken&#8221;].ToString());<\/p>\n<p>&nbsp;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>catch (Exception ex)<\/p>\n<p>{\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0throw;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p><strong>After clicking \u00a0on thumbnail image of playlist in third row of \u00a0all play list page as given in\u00a0above\u00a0image,it will show all videos of clicked play list as in given below \u00a0image.<\/strong><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-31534\" src=\"\/blog\/wp-ttn-blog\/uploads\/2016\/01\/step-3.png\" alt=\"step 3\" width=\"628\" height=\"301\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This Blog explains how to retrieve \u00a0a specific user&#8217;s playlists of videos. This \u00a0does not require any user authorization. YouTube is widely used in our life. \u00a0Because simplicity and ease of use, YouTube has become the most popular video sharing and one of the most popular websites in the world. Some YouTube API allows us [&hellip;]<\/p>\n","protected":false},"author":855,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":6},"categories":[1814],"tags":[2988,2989],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/31535"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/855"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=31535"}],"version-history":[{"count":0,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/31535\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=31535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=31535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=31535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}