I need help. I’m making a program using the youtube library, for c#.
For songs it works perfect. The problem is in the playlist I want to recover "videoId" to add it to a database, to put the videos in "queue".
I am using this method:
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&key= {API key} & maxResults = 50 & playlistId = {id}
which returns a json, but the problem is when I want to retrieve the "videoId" field.
I’ve tried a lot of things and can’t get it to work. For example:
var json = wc.DownloadString ("https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&key=API_KEY&playlistId=PL-PXKb5jSjwbU0wzAuEooBvkZ9jnmXR7N");
dynamic data = JObject.Parse (json);
Console.WriteLine ("playlist" + data.items.snippet.resourceId.videoId);
Console.WriteLine ("playlist" + data.items.snippet.videoId);
Console.WriteLine ("playlist" + data.items.videoId);
Console.WriteLine ("playlist" + data.videoId);
The json that it returns is like this:
[
{
"kind": "youtube#playlistItem",
"etag": "_ON9HZaMSViWcbtKBRrSkH8D43Y",
"id": "UEwtUFhLYjVqU2p3YlUwd3pBdUVvb0J2a1o5am5tWFI3Ti4xMjNBNTA2NDBDODU0QTE1",
"snippet": {
"publishedAt": "2021-05-17T09:33:13Z",
"channelId": "UCn3uYZIYTMSvJraGKW2Blhw",
"title": "C. Tangana, Niño de Elche, La Hungara - Tú Me Dejaste De Querer",
"description": "C. Tangana – Tú me dejaste de querer ft La Húngara y Niño de Elche nnMERCHANDISING: https://www.ctangana.com nIG: https://www.instagram.com/c.tangana/nTW: https://twitter.com/c_tangananFB: https://www.facebook.com/ctanganaoficial/nnnLyrics Tú Me Dejaste De QuerernnTú me dejaste de querer nCuando te necesitabanCuando más falta hacíanTú me diste la espaldannTú me dejaste de querernCuando menos lo esperabanCuando más te quería nSe te fueron las ganas nnYo me creía que era el más cabrón nPero me estoy notando el corazónnEstás apretando mucho mami déjalonSi quieres te doy la razón nYo lo único que quiero es largarme de aquí nMe da igual dónde, puedes elegir nAlgún día dentro de poco me voy a arrepentir nDe haberte confesado lo que me haces sufrirnnTú me dejaste de querernCuando menos lo esperabanCuando más te quería nSe te fueron las ganas n nDe punta en blanco para ir a tu fiestanHe pasado tres días con la misma ropa puestanAndo loco por ti, perdiendo apuestas nDime en quién piensas cuando te acuestas. nPorque yo pienso en ti (son ilusiones)nYo pienso en ti (son ilusiones)nPorque yo pienso en ti (son ilusiones)nYo pienso en ti (son ilusiones)nnTú me dejaste de querer nCuando te necesitabanCuando más falta hacíanTú me diste la espaldannTú me dejaste de querernCuando menos lo esperabanCuando más te quería nSe te fueron las ganasnnn(C) 2020 Sony Music Entertainment España, S.L",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/ltmO9XQVdSg/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/ltmO9XQVdSg/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/ltmO9XQVdSg/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/ltmO9XQVdSg/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/ltmO9XQVdSg/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Redlist - Las Mejores Canciones",
"playlistId": "PL-PXKb5jSjwbU0wzAuEooBvkZ9jnmXR7N",
"position": 0,
"resourceId": {
"kind": "youtube#video",
"videoId": "ltmO9XQVdSg"
},
"videoOwnerChannelTitle": "CTanganaVEVO",
"videoOwnerChannelId": "UCPTQlbt5SZO_SpYvC4Ygl-A"
}
},
{
"kind": "youtube#playlistItem",
"etag": "4oVVxxoagCYATigtGVg53WXm2ak",
"id": "UEwtUFhLYjVqU2p3YlUwd3pBdUVvb0J2a1o5am5tWFI3Ti5BRDA1REM4NDZFOEZFOEZF",
"snippet": {
"publishedAt": "2021-04-16T05:51:54Z",
"channelId": "UCn3uYZIYTMSvJraGKW2Blhw",
"title": "Omar Montes, Ana Mena, Maffio - Solo",
"description": "“Familia, espero que os guste mi nuevo video “Solo” con mi hermanita Ana Mena y mi amigo Maffio y que todos lo bailéis y mandéis a todos y todas pa´ la Isla de las Tentaciones!!!! OS CAMELO”nnOMAR MONTESnIG: https://www.instagram.com/omarmontesofficial/nFB: https://www.facebook.com/omarmontessr/nYOUTUBE: https://www.youtube.com/channel/UC-1BnbAPgInTpJiEi3z2d4A?sub_confirmation=1nnnMusic video by Omar Montes, Ana Mena, Maffio performing Solo. (C) 2021 Sony Music Entertainment España, S.L.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/u12F1RY3WJQ/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/u12F1RY3WJQ/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/u12F1RY3WJQ/hqdefault.jpg",
"width": 480,
"height": 360
}
},
"channelTitle": "Redlist - Las Mejores Canciones",
"playlistId": "PL-PXKb5jSjwbU0wzAuEooBvkZ9jnmXR7N",
"position": 1,
"resourceId": {
"kind": "youtube#video",
"videoId": "u12F1RY3WJQ"
},
"videoOwnerChannelTitle": "OmarMontesVEVO",
"videoOwnerChannelId": "UCC9RzPoJumhh839VKwGBy6Q"
}
},
{
"kind": "youtube#playlistItem",
"etag": "5zp32QT_yZ4pGN90Y7OKL2weCYU",
"id": "UEwtUFhLYjVqU2p3YlUwd3pBdUVvb0J2a1o5am5tWFI3Ti42OTMwOTQzM0Q0ODU3QkFC",
"snippet": {
"publishedAt": "2021-06-04T19:39:36Z",
"channelId": "UCn3uYZIYTMSvJraGKW2Blhw",
"title": "BRYAN BAUTISTA - PARA MÍ (Official Video)",
"description": "",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/cU_JGIuYsi0/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/cU_JGIuYsi0/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/cU_JGIuYsi0/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/cU_JGIuYsi0/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/cU_JGIuYsi0/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Redlist - Las Mejores Canciones",
"playlistId": "PL-PXKb5jSjwbU0wzAuEooBvkZ9jnmXR7N",
"position": 2,
"resourceId": {
"kind": "youtube#video",
"videoId": "cU_JGIuYsi0"
},
"videoOwnerChannelTitle": "Bryan Bautista",
"videoOwnerChannelId": "UCxCwpWTTehfcG0wmleUrReg"
}
},
{
"kind": "youtube#playlistItem",
"etag": "t2UOHEo3irk0z4ollZOzB1H3eHE",
"id": "UEwtUFhLYjVqU2p3YlUwd3pBdUVvb0J2a1o5am5tWFI3Ti41RUJCMkQ1ODk1RkI4NDg1",
"snippet": {
"publishedAt": "2021-05-14T19:46:26Z",
"channelId": "UCn3uYZIYTMSvJraGKW2Blhw",
"title": "Juhn, Jay Wheeler - Fragancia (Official Video)",
"description": "Juhn, Jay Wheeler - Fragancia (Official Video)nEncuéntrala en todas las plataformas: https://juhn.lnk.to/FraganciaYDnnSigue a Juhnn➖ Facebook: https://smarturl.it/Juhn_fbn➖ Instagram: https://smarturl.it/Juhn_ign➖ YouTube: https://smarturl.it/Juhn_ytn➖ Spotify: https://smarturl.it/Juhn_spnnLyrics/LetrannNo sé que hago buscándotenSi nadie me dice en donde estasnTu recuerdo jugando con mi mentenCuando te tengo, ahí mismo tú te vasnPero ya yo lo entendí nNo siempre en la vida uno tiene lo que quierenTal vez no eras para minPero si supieras lo loco que me tienesnnNo hay quien te sustituyanDesde que tu olor en mi cama me dejastenTan rico me lo hicistenQue por siempre en mi mente te quedastennNo hay quien te sustituyanDesde que tu olor en mi cama me dejastenTan rico me lo hicistenQue por siempre en mi mente te quedastennBebecita, yo no olvido la fragancia de tu olornEl primer polvo fue riconY el segundo fue mejornY tú...nComo media me virastenAbusadora, te subiste y no bajastenDe la machina, nEmpieza otro siempre que terminanQue le hablen sucio, dice que eso le fascinanDe una mujer así, dime quien se olvidannY no te niego que detrás tengo unas cuantasnPero eres tú la que me dominas y me encantasnLa que se lo lleva completo a la gargantanSoy egoísta, no pidas que te compartanSi tú sabes quennEse cuerpito tuyo es míonAunque yo no te hice mujernYo sé bien que te acuerdas de minEn donde quiera que estésnnNo hay quien te sustituyanDesde que tu olor en mi cama me dejastenTan rico me lo hicistenQue por siempre en mi mente te quedastennNo hay quien te sustituyanDesde que tu olor en mi cama me dejastenTan rico me lo hicistenQue por siempre en mi mente te quedastennTe veo por TwitternY rápido me da con escribirte indirectasnSinPuedo tener otros culosnPero pa' mi tú siempre serás la correctanY, si me dejan como Pina, te comprometonY es que me enchulo ma' cada vez que te lo metonBaby yo soy tuyo completonPensándote no me puedo estar quietonNo, No, No...nnTe llamo pero no contestasnDime si todavía estas dispuestanMi cama no es la misma si tú no te acuestasnY sigo aquí...nnTe llamo pero no contestasnDime si todavía estas dispuestanMi cama no es la misma si tú no te acuestasnnNo hay quien te sustituyanDesde que tu olor en mi cama me dejastenTan rico me lo hicistenQue por siempre en mi mente te quedastennNo hay quien te sustituyanDesde que tu olor en mi cama me dejastenTan rico me lo hicistenQue por siempre en mi mente te quedastennLa voz favorita babynEste ES Juhn nJay Wheeler Jay WheelernEl All StarnJay Wheeler Jay WheelernBabynnHoy ando con Jay WheelernLas estrellas siempre andan juntasnUstedes lo saben yanMontana The ProducernJonnielnNosotros tenemos la coneccion directa con Willy WonkanLos dulces están de este laonn#Juhn #JayWheeler #Fragancia",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/vN8un8VoPoQ/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/vN8un8VoPoQ/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/vN8un8VoPoQ/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/vN8un8VoPoQ/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/vN8un8VoPoQ/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Redlist - Las Mejores Canciones",
"playlistId": "PL-PXKb5jSjwbU0wzAuEooBvkZ9jnmXR7N",
"position": 3,
"resourceId": {
"kind": "youtube#video",
"videoId": "vN8un8VoPoQ"
},
"videoOwnerChannelTitle": "Juhn",
"videoOwnerChannelId": "UCTeE0q8xCsbCBL4npUWDPFg"
}
},
{
"kind": "youtube#playlistItem",
"etag": "9me0qaU5MYsZOaBTIqwnxgBpqP4",
"id": "UEwtUFhLYjVqU2p3YlUwd3pBdUVvb0J2a1o5am5tWFI3Ti4xQTlCRURGNEY0QUEyODdD",
"snippet": {
"publishedAt": "2021-06-04T19:39:36Z",
"channelId": "UCn3uYZIYTMSvJraGKW2Blhw",
"title": "Nobeat, KHEA - Medio Crazy (Official Video)",
"description": "Nobeat, KHEA - Medio Crazy (Official Video)nnEncuéntrala en todas las plataformas https://Nobeat.lnk.to/mediocrazyIDnnSigue a Nobeat: nInstagram: https://www.instagram.com/nobeat/ nTwitter: https://twitter.com/nobeatmusic nFacebook: https://www.facebook.com/nobeatmusicnMailing List: https://Nobeat.lnk.to/MailingListIDnnnLyrics/LetranYa NobeatnSon of Godn nSé que te pasa igual que yonte han roto el corazónnAmigos pocos los que sonnNo sé ni lo que somos pero sobra la pasiónnTú eres la que manda siempre te doy la razónn nTe dedico esta canciónnPa’ que veas que yonMe pongo romántico de vez en cuandonMe encanta ver la cara que pones cuando dicesnTú solito no te mandas ayn nTú eres como medio crazynPero mejor que muchas por ahínQue delicia como bailas pam pam pamnEl booty te hace asín nTú eres como medio crazynPero mejor que muchas por ahínQue delicia como bailas pam pam pamn nEs una loca pero ya no me manda snapnAhora la tengo bailando como Addison RaenSe convirtió en mi favorito snacknCuando está estresada soy su spanSiempre que le caigonSe la encesto como MichaelnElla es medio psycho y hace lo que quierenCon ese booty me distraigonSabe lo que tiene todo naturalnParece que te hicieron pa’ minNo paramos de hablar desde que te conocínComo Ester Expósito tu eres elitenTodos quieren tirarte pero son Mr. Beann nY dale muévelo abusalonTú tienes poderes así que úsalosnBaby excusas nonPor favornTratando de entenderte me graduén nPorque yeahn nTu eres medio crazynPero mejor que muchas por ahínQue delicia como baila pam pam pamnEl booty te hace asín nTú eres como medio crazynPero mejor que muchas por ahínQue delicia como bailas pam pam pamn nElla no juega call of duty pero siempre me matanHeadshotnQue rica que está no es intensanMedio crazy no es fácil entenderlanEs como el algebra de Baldor heynNi si fueras un meme te compartonTú no eres segundo platonBaby please no me preguntes por mi ex no non nNo invoques a VoldemortnSi confías baby todo es más sencillonA mi no me preocupan los demásnYo los piso y los apago como un cigarrillonY dale muévelo abúsalonTú tienes poderes así que úsalosnBaby excusas no por favornTratando de entenderte me gradué porquen nTú eres como medio crazynPero mejor que muchas por ahínQue delicia como bailas pam pam pamnEl booty te hace asínTú eres com medio crazynPero mejor que muchas por ahínQue delicia como baila pam pam pamnEl booty te hace asín nKHEAnYoung Flex Argentina en la casanYeahnNobeatnDimelo KHEAnNobeatn2080’snn#Nobeat #KHEA #MedioCrazy",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/eBwb5BA-stw/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/eBwb5BA-stw/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/eBwb5BA-stw/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/eBwb5BA-stw/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/eBwb5BA-stw/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "Redlist - Las Mejores Canciones",
"playlistId": "PL-PXKb5jSjwbU0wzAuEooBvkZ9jnmXR7N",
"position": 4,
"resourceId": {
"kind": "youtube#video",
"videoId": "eBwb5BA-stw"
},
"videoOwnerChannelTitle": "Nobeat",
"videoOwnerChannelId": "UCW56a1VqbINaFC50Es_EYvg"
}
}
]
I can’t get it to return each video "videoId".
If anyone knows how to solve it, I will be very grateful.
Thank you.
5
Answers
Instead of going to every path you can use below code :
You can serialize your json file through a class and pull the data in a more practical way. See the Microsoft Documentation
I would highly recommend that you use the Google APIs Client Library for .NET for which you can look at samples in the dotnet folder on the official GitHub repo or alternatively parse your Json into strongly typed classess.
The basic issue with your code is you are parsing as a
JObject
instead of aJArray
. For details see: Difference between array and object in javascript? or Array Vs Object/If you intend to continue using raw json. You can parse the Json as a
JArray
and select the videoIds from it.Or you can make your code more formal and use strongly type classes to deserialize your json to.
Edit -> Paste Special -> Paste Json as Classes
NewtonSoft.Json
which I assume you are using from theJObject.Parse
method in your question.JObject.Parse
, identify the strongly typed classes in theRootobject
properties generated from pasting your json as classes. You can then deserialize the json as that type. In this case it is simply an array ofClass1[]
.Putting it all together:
For reference, here are the class generated using Paste Json as Classes:
As noted, you can disregard
Rootobject
.Additionally, feel free to refactor Class1 (or any of the other classes or Rootobject when using Json of a different schema) to something more intuitive. For example:
With that refactoring you would have:
For Net 5.0, the Microsoft Documentation outlines in more detail what is described above, as pointed out in the answer from Gökdeniz Çetin
You can use JSON Path to get the video id.
Token to fetch all video id is
$...videoId
.Check this fiddle – https://dotnetfiddle.net/nyngkK
You can use this portal to validate the JSON path token – https://jsonpath.com/
The below code demostrates the whole program which returns the output as
Code
the returned json from youtube is a array so you must convert that with JArray
its worked with your json
for understand what is returned json use this website