[{"data":1,"prerenderedAt":1261},["ShallowReactive",2],{"/blog/spotify-baglantisindan-youtube-videosu-bulma":3,"/blog/spotify-baglantisindan-youtube-videosu-bulma-surround":1252},{"id":4,"title":5,"body":6,"createdAt":1237,"description":1238,"extension":1239,"header":1240,"indicatorsHidden":207,"meta":1241,"navigation":207,"path":1242,"related":1243,"seo":1244,"special":1245,"stem":1246,"tags":1247},"posts/blog/spotify-baglantisindan-youtube-videosu-bulma.md","Spotify Bağlantısından YouTube Videosu Bulma (Node)",{"type":7,"value":8,"toc":1232},"minimal",[9,13,26,31,54,58,66,70,77,97,112,116,120,129,132,135,144,266,272,374,380,457,463,480,486,489,496,518,521,588,591,704,707,1126,1133,1220,1228],[10,11,12],"p",{},"Eğer yakın zamanda benim gibi YouTube (veya başka bir) müzik sağlayıcısından Spotify'a geçiş yaptıysanız YouTube'da dinlediğiniz şarkıyı arkadaşlarınızla paylaşmanın biraz daha kolay olduğunu düşünüyor olabilirsiniz. Peki size Spotify'a geçseniz bile müziklerinizi paylaşmadan önce Node.js ile Spotify bağlantılarınızdan YouTube bağlantılarına ulaşabileceğinizi söylesem?",[14,15,17,18,25],"blog-notification",{"title":16},"Ben nerede ihtiyaç duyuyorum?","\nBu sitede önceden bulunan Günlük Müzik sayfasında herkesin dinleyebilmesi için müzikleri YouTube üzerinden paylaşıyorum. Spotify'a geçince oraya Spotify koymam, birçok kişi için can sıkıcı olabilirdi fakat GitHub'da bulunan \n",[19,20,24],"a",{"href":21,"rel":22},"https://github.com/eggsy/firestore-checker",[23],"nofollow","firestore-checker","\n projemi buna göre düzenleyip artık Spotify bağlantılarını YouTube'a dönüştürüp siteme müzikleri eklemeye devam edebiliyorum!\n",[27,28,30],"h3",{"id":29},"i̇htiyacınız-olanlar","İhtiyacınız olanlar",[32,33,34,43,51],"ul",{},[35,36,37,42],"li",{},[19,38,41],{"href":39,"rel":40},"https://nodejs.org",[23],"Node.js"," yüklü olan bir bilgisayar",[35,44,45,50],{},[19,46,49],{"href":47,"rel":48},"https://code.visualstudio.com/",[23],"Visual Studio Code"," veya tercih ettiğiniz bir editör",[35,52,53],{},"Hazırda bekleyen bir CMD/Terminal",[27,55,57],{"id":56},"başlangıç","Başlangıç",[10,59,60,61,65],{},"Öncelikle projenizi oluşturacağınız bir klasör oluşturun, bu klasörü VS Code içerisinde açın ve bu klasörün içinde bir ",[62,63,64],"code",{},"index.js"," dosyası oluşturun. Gerekli kodları bu dosyanın içerisine yazacağız.",[67,68],"smart-figure",{"src":69},"https://i.imgur.com/8x5B3Sr.png",[10,71,72,73,76],{},"Dosyayı oluşturduktan sonra kullandığınız terminalden ",[62,74,75],{},"cd /Klasörünüzün/Konumu"," komutu ile açık olan dizini projenizin klasörü olarak değiştirin. Doğru konuma girdikten sonra şu iki modülü yüklemelisiniz:",[32,78,79,88],{},[35,80,81],{},[19,82,85],{"href":83,"rel":84},"https://github.com/thelinmichael/spotify-web-api-node",[23],[62,86,87],{},"spotify-web-api-node",[35,89,90],{},[19,91,94],{"href":92,"rel":93},"https://github.com/valeriangalliat/spotify-to-youtube",[23],[62,95,96],{},"spotify-to-youtube",[10,98,99,100,103,104,107,108,111],{},"Modülleri yüklemek için ",[62,101,102],{},"npm install modul-ismi"," komutunu terminalinize girebilirsiniz. Eğer ",[62,105,106],{},"yarn"," paket yöneticisini kullanıyorsanız ",[62,109,110],{},"yarn add modul-ismi"," komutunu da kullanabilirsiniz.",[14,113,115],{"type":114},"warning","\nBu işlemleri herhangi bir modül kullanmadan, tamamen kendi kodunuzu yazarakta gerçekleştirebilirsiniz fakat bu yazının bu işlemlerin tüm ayrıntılara girmeyerek, kolay yoldan size bu işlemi göstermesi hedefiyle bu modülleri kullanacağınızı unutmayın.\n",[27,117,119],{"id":118},"kodu-yazmaya-giriş","Kodu yazmaya giriş",[10,121,122,123,128],{},"Kodu yazmaya başlayabilmek için öncelik bir Spotify geliştirici hesabı oluşturarak bir Spotify uygulaması oluşturmalısınız. Bu işlemi ",[19,124,127],{"href":125,"rel":126},"https://developer.spotify.com/dashboard/",[23],"buradaki"," sayfadan yapabilirsiniz. Bu sayfaya girdikten sonra mevcut Spotify hesabınız ile giriş yapacak ve açılan panelden \"Create an App\" tuşuna basarak bir uygulama oluşturacaksınız.",[10,130,131],{},"Uygulamayı oluşturduktan sonra aynı sayfadan uygulamanızın isminin olduğu kutucuğa tıklayın ve açılan sayfada hemen göreceğiniz \"Client ID\" bilgisinin altındaki \"Show Client Secret\" yazısına basarak o bilgiyi de alın. Bu iki bilgi Spotify'ın API'ı ile bağlantı kurmanızı sağlayacak.",[67,133],{"src":134},"https://i.imgur.com/Fg2HcNp.png",[10,136,137,138,140,141,143],{},"Bu bilgilere eriştikten sonra buradan gerisi, kullanacağınız modüller sayesinde oldukça basit aslında. Spotify bağlantılarından YouTube videosunu bulan ",[62,139,96],{}," modülü, ",[62,142,87],{}," modülü ile sizin hesabınızı kullanarak Spotify bağlantısından şarkı ismi ve sanatçı bilgilerini alıp o bilgilere denk gelen YouTube videosunu bulacaktır. Her şeyden önce dosyanın en başında bu iki modülü içe aktarmalısınız ki kod içerisinde kullanabilesiniz.",[145,146,151],"pre",{"className":147,"code":148,"filename":64,"language":149,"meta":150,"style":150},"language-js shiki shiki-themes vitesse-dark vitesse-light vitesse-dark","// ES\nimport SpotifyWebApi from \"spotify-web-api-node\"\nimport SpotifyToYoutube from \"spotify-to-youtube\"\n\n// CommonJS\nconst SpotifyWebApi = require(\"spotify-web-api-node\")\nconst SpotifyToYoutube = require(\"spotify-to-youtube\")\n","js","",[62,152,153,162,186,202,209,215,245],{"__ignoreMap":150},[154,155,158],"span",{"class":156,"line":157},"line",1,[154,159,161],{"class":160},"spXst","// ES\n",[154,163,165,169,173,176,180,183],{"class":156,"line":164},2,[154,166,168],{"class":167},"sUzrN","import",[154,170,172],{"class":171},"s1GM7"," SpotifyWebApi",[154,174,175],{"class":167}," from",[154,177,179],{"class":178},"swKaR"," \"",[154,181,87],{"class":182},"s0Jez",[154,184,185],{"class":178},"\"\n",[154,187,189,191,194,196,198,200],{"class":156,"line":188},3,[154,190,168],{"class":167},[154,192,193],{"class":171}," SpotifyToYoutube",[154,195,175],{"class":167},[154,197,179],{"class":178},[154,199,96],{"class":182},[154,201,185],{"class":178},[154,203,205],{"class":156,"line":204},4,[154,206,208],{"emptyLinePlaceholder":207},true,"\n",[154,210,212],{"class":156,"line":211},5,[154,213,214],{"class":160},"// CommonJS\n",[154,216,218,222,224,228,232,235,238,240,242],{"class":156,"line":217},6,[154,219,221],{"class":220},"sZknO","const",[154,223,172],{"class":171},[154,225,227],{"class":226},"sjt0J"," =",[154,229,231],{"class":230},"shS2O"," require",[154,233,234],{"class":226},"(",[154,236,237],{"class":178},"\"",[154,239,87],{"class":182},[154,241,237],{"class":178},[154,243,244],{"class":226},")\n",[154,246,248,250,252,254,256,258,260,262,264],{"class":156,"line":247},7,[154,249,221],{"class":220},[154,251,193],{"class":171},[154,253,227],{"class":226},[154,255,231],{"class":230},[154,257,234],{"class":226},[154,259,237],{"class":178},[154,261,96],{"class":182},[154,263,237],{"class":178},[154,265,244],{"class":226},[10,267,268,269,271],{},"Sonrasında da ",[62,270,87],{}," modülünden yeni bir örnek (instance) oluşturmanız gerekiyor. Modülün GitHub sayfasındaki kod bloğunda da belirtildiği gibi, bu işlemi aşağıda gördüğünüz şekilde yapabiliriz.",[145,273,275],{"className":147,"code":274,"filename":64,"language":149,"meta":150,"style":150},"/*\n// Bu iki bilgiyi Spotify panelinizden biraz önce aldığınız bilgiler\n// ile değiştirin. Buradaki bilgilerin herhangi bir geçerliliği yoktur.\n*/\nconst clientId = \"838383u288l12an898213eg8829gsy22\"\nconst clientSecret = \"n2234e19239ad23189am237283sın333\"\n\nconst spotifyApi = new SpotifyWebApi({\n  clientId,\n  clientSecret,\n})\n",[62,276,277,282,287,292,297,313,329,333,351,360,368],{"__ignoreMap":150},[154,278,279],{"class":156,"line":157},[154,280,281],{"class":160},"/*\n",[154,283,284],{"class":156,"line":164},[154,285,286],{"class":160},"// Bu iki bilgiyi Spotify panelinizden biraz önce aldığınız bilgiler\n",[154,288,289],{"class":156,"line":188},[154,290,291],{"class":160},"// ile değiştirin. Buradaki bilgilerin herhangi bir geçerliliği yoktur.\n",[154,293,294],{"class":156,"line":204},[154,295,296],{"class":160},"*/\n",[154,298,299,301,304,306,308,311],{"class":156,"line":211},[154,300,221],{"class":220},[154,302,303],{"class":171}," clientId",[154,305,227],{"class":226},[154,307,179],{"class":178},[154,309,310],{"class":182},"838383u288l12an898213eg8829gsy22",[154,312,185],{"class":178},[154,314,315,317,320,322,324,327],{"class":156,"line":217},[154,316,221],{"class":220},[154,318,319],{"class":171}," clientSecret",[154,321,227],{"class":226},[154,323,179],{"class":178},[154,325,326],{"class":182},"n2234e19239ad23189am237283sın333",[154,328,185],{"class":178},[154,330,331],{"class":156,"line":247},[154,332,208],{"emptyLinePlaceholder":207},[154,334,336,338,341,343,346,348],{"class":156,"line":335},8,[154,337,221],{"class":220},[154,339,340],{"class":171}," spotifyApi",[154,342,227],{"class":226},[154,344,345],{"class":220}," new",[154,347,172],{"class":230},[154,349,350],{"class":226},"({\n",[154,352,354,357],{"class":156,"line":353},9,[154,355,356],{"class":171},"  clientId",[154,358,359],{"class":226},",\n",[154,361,363,366],{"class":156,"line":362},10,[154,364,365],{"class":171},"  clientSecret",[154,367,359],{"class":226},[154,369,371],{"class":156,"line":370},11,[154,372,373],{"class":226},"})\n",[10,375,376,377,379],{},"Böylece bu modül neredeyse Spotify API'si ile iletişime geçmeye hazır. Hatta görünen o ki, eğer ",[62,378,96],{}," modülünü kullanmasaydık, bu modülü bu hâlde çalıştırabilir ve Spotify'dan veri çekebilirdik. Fakat bize bu işlemleri yapacak bu modül GitHub sayfasında belirttiği gibi bir erişim anahtarına (access token) ihtiyaç duyduğu için bu bilgiyi almalı ve sonra o modülü kurmalıyız. Bu bilgiyi almak için ise aşağıdaki gibi bir fonksiyon oluşturabiliriz.",[145,381,383],{"className":147,"code":382,"filename":64,"language":149,"meta":150,"style":150},"await spotifyApi.clientCredentialsGrant().then(({ body }) => {\n  const accessToken = body.access_token\n  spotifyApi.setAccessToken(accessToken)\n})\n",[62,384,385,419,436,453],{"__ignoreMap":150},[154,386,387,390,392,395,398,401,404,407,410,413,416],{"class":156,"line":157},[154,388,389],{"class":167},"await",[154,391,340],{"class":171},[154,393,394],{"class":226},".",[154,396,397],{"class":230},"clientCredentialsGrant",[154,399,400],{"class":226},"().",[154,402,403],{"class":230},"then",[154,405,406],{"class":226},"(({",[154,408,409],{"class":171}," body",[154,411,412],{"class":226}," })",[154,414,415],{"class":226}," =>",[154,417,418],{"class":226}," {\n",[154,420,421,424,427,429,431,433],{"class":156,"line":164},[154,422,423],{"class":220},"  const",[154,425,426],{"class":171}," accessToken",[154,428,227],{"class":226},[154,430,409],{"class":171},[154,432,394],{"class":226},[154,434,435],{"class":171},"access_token\n",[154,437,438,441,443,446,448,451],{"class":156,"line":188},[154,439,440],{"class":171},"  spotifyApi",[154,442,394],{"class":226},[154,444,445],{"class":230},"setAccessToken",[154,447,234],{"class":226},[154,449,450],{"class":171},"accessToken",[154,452,244],{"class":226},[154,454,455],{"class":156,"line":204},[154,456,373],{"class":226},[10,458,459,460,462],{},"Bu kodda dikkatiniz çektiği üzere ",[62,461,389],{}," operatörünü kullandık, bu da Node'da asenkron fonksiyonların dışında çalışmayacağı için aslında bu kısmı asenkron bir fonksiyon içine almanız gerekecek. Fakat bu işlemi yazının en sonundaki tüm kodun olduğu kısımda daha iyi anlayacağınız için şimdilik böyle bırakıyorum.",[10,464,465,466,469,470,473,474,476,477,479],{},"Bu kod ise Spotify API'a bir istek gönderecek ve oradan bize bir erişim anahtarı vermesini isteyecek, dönen verinin içinde bulunan ",[62,467,468],{},"body"," objesinin içinde de bu ",[62,471,472],{},"access_token"," bilgisine ulaşabileceğiz. Daha sonra modülün dokümanlarında belirtildiği ",[62,475,445],{}," metodu ile bu bilgiyi kaydedeceğiz, ",[62,478,96],{}," modülü de buradan bu anahtara ulaşacak.",[10,481,482,483,485],{},"Şimdi ise ",[62,484,96],{}," modülünü kullanmaya geçebiliriz. Bu modül yukarıda belirttiğimiz Spotify bilgilerimizi kullanarak Spotify'dan şarkı bilgisini alacak ve bu şarkıyı YouTube'da aratacak.",[14,487,488],{"type":114},"\nSizin bildiğiniz veya ortada bu işlemleri yapmak için farklı, hatta daha iyi modüller olabilir, ben işimi hemen görecek bir modül aradığım için ilk karşıma çıkan ve sorunsuz çıkan bu iki modülü kullanarak bu işi hallediyorum, size de bunları tarif edeceğim. Bu modülleri kullanmayacak olsanız bile bu yazıyı okuyup birkaç fikir edinebilirsiniz, veya farklı modüller ile yolunuza devam edebilirsiniz.\n",[10,490,491,492,495],{},"Şimdi ise bu modülden bir örnek (instance) oluşturuyoruz, burada yapacağınız tek şey daha önce belirttiğimiz ",[62,493,494],{},"spotifyApi"," değişkenini referans olarak göstermek.",[145,497,499],{"className":147,"code":498,"filename":64,"language":149,"meta":150,"style":150},"const spotifyToYoutube = SpotifyToYoutube(spotifyApi)\n",[62,500,501],{"__ignoreMap":150},[154,502,503,505,508,510,512,514,516],{"class":156,"line":157},[154,504,221],{"class":220},[154,506,507],{"class":171}," spotifyToYoutube",[154,509,227],{"class":226},[154,511,193],{"class":230},[154,513,234],{"class":226},[154,515,494],{"class":171},[154,517,244],{"class":226},[10,519,520],{},"Oldukça basit, değil mi? Buradan sonra aslında işimiz bitiyor. Tek yapmanız gereken şimdi oluşturduğumuz örneği kullanarak fonksiyonu çağırmak ve bir Spotify şarkı kimliği (ID) vermek.",[145,522,524],{"className":147,"code":523,"filename":64,"language":149,"meta":150,"style":150},"// İsterseniz ID'nin başına spotify:track: ekleyebilir,\nconst trackId = await spotifyToYoutube(\"spotify:track:1r9xUipOqoNwggBpENDsvJ\")\n\n// İsterseniz sadece ID'yi de yazabilirsiniz\nconst trackId = await spotifyToYoutube(\"1r9xUipOqoNwggBpENDsvJ\")\n",[62,525,526,531,556,560,565],{"__ignoreMap":150},[154,527,528],{"class":156,"line":157},[154,529,530],{"class":160},"// İsterseniz ID'nin başına spotify:track: ekleyebilir,\n",[154,532,533,535,538,540,543,545,547,549,552,554],{"class":156,"line":164},[154,534,221],{"class":220},[154,536,537],{"class":171}," trackId",[154,539,227],{"class":226},[154,541,542],{"class":167}," await",[154,544,507],{"class":230},[154,546,234],{"class":226},[154,548,237],{"class":178},[154,550,551],{"class":182},"spotify:track:1r9xUipOqoNwggBpENDsvJ",[154,553,237],{"class":178},[154,555,244],{"class":226},[154,557,558],{"class":156,"line":188},[154,559,208],{"emptyLinePlaceholder":207},[154,561,562],{"class":156,"line":204},[154,563,564],{"class":160},"// İsterseniz sadece ID'yi de yazabilirsiniz\n",[154,566,567,569,571,573,575,577,579,581,584,586],{"class":156,"line":211},[154,568,221],{"class":220},[154,570,537],{"class":171},[154,572,227],{"class":226},[154,574,542],{"class":167},[154,576,507],{"class":230},[154,578,234],{"class":226},[154,580,237],{"class":178},[154,582,583],{"class":182},"1r9xUipOqoNwggBpENDsvJ",[154,585,237],{"class":178},[154,587,244],{"class":226},[10,589,590],{},"Bu kimliği (ID) nasıl aldığımız ise oldukça basit, örnek bir şarkı bağlantısını ele aldığınızda bağlantının içerisindeki karmaşık duran kısım şarkının kimliği oluyor. Bir Spotify bağlantısından ID'yi ayrıştırmak için bir fonksiyon da oluşturabilirsiniz.",[145,592,594],{"className":147,"code":593,"filename":64,"language":149,"meta":150,"style":150},"function idAyristirici(url) {\n  return new URL(url).pathname.split(\"/\")[2]\n}\n\nconsole.log(\n  idAyristirici(\"https://open.spotify.com/track/1r9xUipOqoNwggBpENDsvJ\"),\n) // 1r9xUipOqoNwggBpENDsvJ\n",[62,595,596,614,658,663,667,680,697],{"__ignoreMap":150},[154,597,598,601,604,606,609,612],{"class":156,"line":157},[154,599,600],{"class":220},"function",[154,602,603],{"class":230}," idAyristirici",[154,605,234],{"class":226},[154,607,608],{"class":171},"url",[154,610,611],{"class":226},")",[154,613,418],{"class":226},[154,615,616,619,621,624,626,628,631,634,636,639,641,643,646,648,651,655],{"class":156,"line":164},[154,617,618],{"class":167},"  return",[154,620,345],{"class":220},[154,622,623],{"class":230}," URL",[154,625,234],{"class":226},[154,627,608],{"class":171},[154,629,630],{"class":226},").",[154,632,633],{"class":171},"pathname",[154,635,394],{"class":226},[154,637,638],{"class":230},"split",[154,640,234],{"class":226},[154,642,237],{"class":178},[154,644,645],{"class":182},"/",[154,647,237],{"class":178},[154,649,650],{"class":226},")[",[154,652,654],{"class":653},"sQWA3","2",[154,656,657],{"class":226},"]\n",[154,659,660],{"class":156,"line":188},[154,661,662],{"class":226},"}\n",[154,664,665],{"class":156,"line":204},[154,666,208],{"emptyLinePlaceholder":207},[154,668,669,672,674,677],{"class":156,"line":211},[154,670,671],{"class":171},"console",[154,673,394],{"class":226},[154,675,676],{"class":230},"log",[154,678,679],{"class":226},"(\n",[154,681,682,685,687,689,692,694],{"class":156,"line":217},[154,683,684],{"class":230},"  idAyristirici",[154,686,234],{"class":226},[154,688,237],{"class":178},[154,690,691],{"class":182},"https://open.spotify.com/track/1r9xUipOqoNwggBpENDsvJ",[154,693,237],{"class":178},[154,695,696],{"class":226},"),\n",[154,698,699,701],{"class":156,"line":247},[154,700,611],{"class":226},[154,702,703],{"class":160}," // 1r9xUipOqoNwggBpENDsvJ\n",[10,705,706],{},"Böyle bir fonksiyona da sahip olduktan sonra herhangi bir Spotify URL'sinden artık YouTube bağlantısını alabileceksiniz. Son olarak yazdıklarımızın tamamını birleştirip gerekli düzenlemeleri yaptığımızda ise şöyle bir dosya bizi karşılayacaktır.",[145,708,710],{"className":147,"code":709,"filename":64,"language":149,"meta":150,"style":150},"// Modülleri içe aktar\nconst SpotifyWebApi = require(\"spotify-web-api-node\")\nconst SpotifyToYoutube = require(\"spotify-to-youtube\")\n\n// Panelden alınan bilgileri değişkenlere ata\nconst clientId = \"838383u288l12an898213eg8829gsy22\"\nconst clientSecret = \"n2234e19239ad23189am237283sın333\"\n\n// Yeni bir SpotifyWebApi örneği (instance) oluştur\nconst spotifyApi = new SpotifyWebApi({\n  clientId,\n  clientSecret,\n})\n\n// Asenkron işlemler için asenkron bir fonksiyon\nasync function main() {\n  // Spotify API'a ulaşıp bir erişim anahtarı iste\n  await spotifyApi.clientCredentialsGrant().then(({ body }) => {\n    const accessToken = body.access_token\n    spotifyApi.setAccessToken(accessToken)\n  })\n\n  // Bir SpotifyToYoutube örneği oluştur\n  const spotifyToYoutube = SpotifyToYoutube(spotifyApi)\n\n  // Oluşturulan örneği kullanarak Spotify bağlantısından\n  // YouTube bağlantısını al\n  const trackId = await spotifyToYoutube(\n    // Kendi yaptığımız Spotify bağlantısından ID'yi ayrıştırıcı\n    // fonksiyonunu kullanarak ID'yi al\n    idAyristirici(\"https://open.spotify.com/track/1r9xUipOqoNwggBpENDsvJ\"),\n  )\n\n  // Sonucu YouTube bağlantısı olarak döndür\n  return `https://youtu.be/${trackId}`\n}\n\nfunction idAyristirici(url) {\n  return new URL(url).pathname.split(\"/\")[2]\n}\n",[62,711,712,717,737,757,761,766,780,794,798,803,817,823,830,835,840,846,863,869,895,911,927,933,938,944,961,966,972,978,993,999,1005,1021,1027,1032,1038,1061,1066,1071,1086,1121],{"__ignoreMap":150},[154,713,714],{"class":156,"line":157},[154,715,716],{"class":160},"// Modülleri içe aktar\n",[154,718,719,721,723,725,727,729,731,733,735],{"class":156,"line":164},[154,720,221],{"class":220},[154,722,172],{"class":171},[154,724,227],{"class":226},[154,726,231],{"class":230},[154,728,234],{"class":226},[154,730,237],{"class":178},[154,732,87],{"class":182},[154,734,237],{"class":178},[154,736,244],{"class":226},[154,738,739,741,743,745,747,749,751,753,755],{"class":156,"line":188},[154,740,221],{"class":220},[154,742,193],{"class":171},[154,744,227],{"class":226},[154,746,231],{"class":230},[154,748,234],{"class":226},[154,750,237],{"class":178},[154,752,96],{"class":182},[154,754,237],{"class":178},[154,756,244],{"class":226},[154,758,759],{"class":156,"line":204},[154,760,208],{"emptyLinePlaceholder":207},[154,762,763],{"class":156,"line":211},[154,764,765],{"class":160},"// Panelden alınan bilgileri değişkenlere ata\n",[154,767,768,770,772,774,776,778],{"class":156,"line":217},[154,769,221],{"class":220},[154,771,303],{"class":171},[154,773,227],{"class":226},[154,775,179],{"class":178},[154,777,310],{"class":182},[154,779,185],{"class":178},[154,781,782,784,786,788,790,792],{"class":156,"line":247},[154,783,221],{"class":220},[154,785,319],{"class":171},[154,787,227],{"class":226},[154,789,179],{"class":178},[154,791,326],{"class":182},[154,793,185],{"class":178},[154,795,796],{"class":156,"line":335},[154,797,208],{"emptyLinePlaceholder":207},[154,799,800],{"class":156,"line":353},[154,801,802],{"class":160},"// Yeni bir SpotifyWebApi örneği (instance) oluştur\n",[154,804,805,807,809,811,813,815],{"class":156,"line":362},[154,806,221],{"class":220},[154,808,340],{"class":171},[154,810,227],{"class":226},[154,812,345],{"class":220},[154,814,172],{"class":230},[154,816,350],{"class":226},[154,818,819,821],{"class":156,"line":370},[154,820,356],{"class":171},[154,822,359],{"class":226},[154,824,826,828],{"class":156,"line":825},12,[154,827,365],{"class":171},[154,829,359],{"class":226},[154,831,833],{"class":156,"line":832},13,[154,834,373],{"class":226},[154,836,838],{"class":156,"line":837},14,[154,839,208],{"emptyLinePlaceholder":207},[154,841,843],{"class":156,"line":842},15,[154,844,845],{"class":160},"// Asenkron işlemler için asenkron bir fonksiyon\n",[154,847,849,852,855,858,861],{"class":156,"line":848},16,[154,850,851],{"class":220},"async",[154,853,854],{"class":220}," function",[154,856,857],{"class":230}," main",[154,859,860],{"class":226},"()",[154,862,418],{"class":226},[154,864,866],{"class":156,"line":865},17,[154,867,868],{"class":160},"  // Spotify API'a ulaşıp bir erişim anahtarı iste\n",[154,870,872,875,877,879,881,883,885,887,889,891,893],{"class":156,"line":871},18,[154,873,874],{"class":167},"  await",[154,876,340],{"class":171},[154,878,394],{"class":226},[154,880,397],{"class":230},[154,882,400],{"class":226},[154,884,403],{"class":230},[154,886,406],{"class":226},[154,888,409],{"class":171},[154,890,412],{"class":226},[154,892,415],{"class":226},[154,894,418],{"class":226},[154,896,898,901,903,905,907,909],{"class":156,"line":897},19,[154,899,900],{"class":220},"    const",[154,902,426],{"class":171},[154,904,227],{"class":226},[154,906,409],{"class":171},[154,908,394],{"class":226},[154,910,435],{"class":171},[154,912,914,917,919,921,923,925],{"class":156,"line":913},20,[154,915,916],{"class":171},"    spotifyApi",[154,918,394],{"class":226},[154,920,445],{"class":230},[154,922,234],{"class":226},[154,924,450],{"class":171},[154,926,244],{"class":226},[154,928,930],{"class":156,"line":929},21,[154,931,932],{"class":226},"  })\n",[154,934,936],{"class":156,"line":935},22,[154,937,208],{"emptyLinePlaceholder":207},[154,939,941],{"class":156,"line":940},23,[154,942,943],{"class":160},"  // Bir SpotifyToYoutube örneği oluştur\n",[154,945,947,949,951,953,955,957,959],{"class":156,"line":946},24,[154,948,423],{"class":220},[154,950,507],{"class":171},[154,952,227],{"class":226},[154,954,193],{"class":230},[154,956,234],{"class":226},[154,958,494],{"class":171},[154,960,244],{"class":226},[154,962,964],{"class":156,"line":963},25,[154,965,208],{"emptyLinePlaceholder":207},[154,967,969],{"class":156,"line":968},26,[154,970,971],{"class":160},"  // Oluşturulan örneği kullanarak Spotify bağlantısından\n",[154,973,975],{"class":156,"line":974},27,[154,976,977],{"class":160},"  // YouTube bağlantısını al\n",[154,979,981,983,985,987,989,991],{"class":156,"line":980},28,[154,982,423],{"class":220},[154,984,537],{"class":171},[154,986,227],{"class":226},[154,988,542],{"class":167},[154,990,507],{"class":230},[154,992,679],{"class":226},[154,994,996],{"class":156,"line":995},29,[154,997,998],{"class":160},"    // Kendi yaptığımız Spotify bağlantısından ID'yi ayrıştırıcı\n",[154,1000,1002],{"class":156,"line":1001},30,[154,1003,1004],{"class":160},"    // fonksiyonunu kullanarak ID'yi al\n",[154,1006,1008,1011,1013,1015,1017,1019],{"class":156,"line":1007},31,[154,1009,1010],{"class":230},"    idAyristirici",[154,1012,234],{"class":226},[154,1014,237],{"class":178},[154,1016,691],{"class":182},[154,1018,237],{"class":178},[154,1020,696],{"class":226},[154,1022,1024],{"class":156,"line":1023},32,[154,1025,1026],{"class":226},"  )\n",[154,1028,1030],{"class":156,"line":1029},33,[154,1031,208],{"emptyLinePlaceholder":207},[154,1033,1035],{"class":156,"line":1034},34,[154,1036,1037],{"class":160},"  // Sonucu YouTube bağlantısı olarak döndür\n",[154,1039,1041,1043,1046,1049,1052,1055,1058],{"class":156,"line":1040},35,[154,1042,618],{"class":167},[154,1044,1045],{"class":178}," `",[154,1047,1048],{"class":182},"https://youtu.be/",[154,1050,1051],{"class":167},"${",[154,1053,1054],{"class":182},"trackId",[154,1056,1057],{"class":167},"}",[154,1059,1060],{"class":178},"`\n",[154,1062,1064],{"class":156,"line":1063},36,[154,1065,662],{"class":226},[154,1067,1069],{"class":156,"line":1068},37,[154,1070,208],{"emptyLinePlaceholder":207},[154,1072,1074,1076,1078,1080,1082,1084],{"class":156,"line":1073},38,[154,1075,600],{"class":220},[154,1077,603],{"class":230},[154,1079,234],{"class":226},[154,1081,608],{"class":171},[154,1083,611],{"class":226},[154,1085,418],{"class":226},[154,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119],{"class":156,"line":1088},39,[154,1090,618],{"class":167},[154,1092,345],{"class":220},[154,1094,623],{"class":230},[154,1096,234],{"class":226},[154,1098,608],{"class":171},[154,1100,630],{"class":226},[154,1102,633],{"class":171},[154,1104,394],{"class":226},[154,1106,638],{"class":230},[154,1108,234],{"class":226},[154,1110,237],{"class":178},[154,1112,645],{"class":182},[154,1114,237],{"class":178},[154,1116,650],{"class":226},[154,1118,654],{"class":653},[154,1120,657],{"class":226},[154,1122,1124],{"class":156,"line":1123},40,[154,1125,662],{"class":226},[10,1127,1128,1129,1132],{},"Böyle bir dosya oluşturmak kendi başına bir şey yapmayacak olsa da buradan gerisini siz, projenize göre uydurmalı ve çalıştırmalısınız. Benim Firestore Checker projemdeki gibi terminal arayüzü ile interaktif bir program yapabilir, hatta Electron gibi kütüphanelerle görsel arayüze sahip bir uygulama da yapabilirsiniz. Bu dosyayı ",[62,1130,1131],{},"node index.js"," komutu ile çalıştırdığınızda hiçbir şey olmayacaktır, eğer konsola bir çıktı almak istiyorsanız şu değişiklikleri yapmak isteyebilirsiniz, ama burası dediğim gibi, tamamen size kalmış.",[145,1134,1136],{"className":147,"code":1135,"filename":64,"language":149,"meta":150,"style":150},"// ...\n\nasync function main() {\n  // ...\n\n  return console.log(`https://youtu.be/${trackId}`)\n}\n\nmain()\n\n// ...\n",[62,1137,1138,1143,1147,1159,1164,1168,1196,1200,1204,1212,1216],{"__ignoreMap":150},[154,1139,1140],{"class":156,"line":157},[154,1141,1142],{"class":160},"// ...\n",[154,1144,1145],{"class":156,"line":164},[154,1146,208],{"emptyLinePlaceholder":207},[154,1148,1149,1151,1153,1155,1157],{"class":156,"line":188},[154,1150,851],{"class":220},[154,1152,854],{"class":220},[154,1154,857],{"class":230},[154,1156,860],{"class":226},[154,1158,418],{"class":226},[154,1160,1161],{"class":156,"line":204},[154,1162,1163],{"class":160},"  // ...\n",[154,1165,1166],{"class":156,"line":211},[154,1167,208],{"emptyLinePlaceholder":207},[154,1169,1170,1172,1175,1177,1179,1181,1184,1186,1188,1190,1192,1194],{"class":156,"line":217},[154,1171,618],{"class":167},[154,1173,1174],{"class":171}," console",[154,1176,394],{"class":226},[154,1178,676],{"class":230},[154,1180,234],{"class":226},[154,1182,1183],{"class":178},"`",[154,1185,1048],{"class":182},[154,1187,1051],{"class":167},[154,1189,1054],{"class":182},[154,1191,1057],{"class":167},[154,1193,1183],{"class":178},[154,1195,244],{"class":226},[154,1197,1198],{"class":156,"line":247},[154,1199,662],{"class":226},[154,1201,1202],{"class":156,"line":335},[154,1203,208],{"emptyLinePlaceholder":207},[154,1205,1206,1209],{"class":156,"line":353},[154,1207,1208],{"class":230},"main",[154,1210,1211],{"class":226},"()\n",[154,1213,1214],{"class":156,"line":362},[154,1215,208],{"emptyLinePlaceholder":207},[154,1217,1218],{"class":156,"line":370},[154,1219,1142],{"class":160},[10,1221,1222,1223,1227],{},"Bu değişiklikleri yaptıktan sonra bu dosyayı her çalıştırdığınızda yukarıda belirttiğiniz Spotify bağlantısına sahip şarkının YouTube bağlantısını konsola yansıtacaktır. Buradan gerisi size, ve projenize kalmış. Bu dosyanın tamamına ",[19,1224,127],{"href":1225,"rel":1226},"https://github.com/eggsy/examples/tree/main/blog/spotify-baglantisindan-youtube-videosu-bulma",[23]," bağlantıdan ulaşabilirsiniz.",[1229,1230,1231],"style",{},"html pre.shiki code .spXst, html code.shiki .spXst{--shiki-default:#758575DD;--shiki-light:#A0ADA0;--shiki-dark:#758575DD}html pre.shiki code .sUzrN, html code.shiki .sUzrN{--shiki-default:#4D9375;--shiki-light:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s1GM7, html code.shiki .s1GM7{--shiki-default:#BD976A;--shiki-light:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .swKaR, html code.shiki .swKaR{--shiki-default:#C98A7D77;--shiki-light:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .s0Jez, html code.shiki .s0Jez{--shiki-default:#C98A7D;--shiki-light:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sZknO, html code.shiki .sZknO{--shiki-default:#CB7676;--shiki-light:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sjt0J, html code.shiki .sjt0J{--shiki-default:#666666;--shiki-light:#999999;--shiki-dark:#666666}html pre.shiki code .shS2O, html code.shiki .shS2O{--shiki-default:#80A665;--shiki-light:#59873A;--shiki-dark:#80A665}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sQWA3, html code.shiki .sQWA3{--shiki-default:#4C9A91;--shiki-light:#2F798A;--shiki-dark:#4C9A91}",{"title":150,"searchDepth":164,"depth":211,"links":1233},[1234,1235,1236],{"id":29,"depth":188,"text":30},{"id":56,"depth":188,"text":57},{"id":118,"depth":188,"text":119},"2021-11-22T00:00:00.000Z","Spotify'daki müziklerin YouTube bağlantılarına ulaşmak istiyorsanız, bu işlemi Node.js ile otomatikleştirebilirsiniz!","md","https://i.imgur.com/JsG6PF1.jpg",{},"/blog/spotify-baglantisindan-youtube-videosu-bulma",null,{"title":5,"description":1238},false,"blog/spotify-baglantisindan-youtube-videosu-bulma",[1248,1249,1250,1251],"yazılım","node","youtube","spotify",[1253,1257],{"title":1254,"path":1255,"stem":1256,"children":-1},"10 Gün, 4 Ülke: Hangi Balkan Ülkesi Daha İyi?","/blog/on-gun-dort-farkli-ulke","blog/on-gun-dort-farkli-ulke",{"title":1258,"path":1259,"stem":1260,"children":-1},"SLOWLY: Yeni Köye Eski Adet?","/blog/slowly-yeni-koye-eski-adet","blog/slowly-yeni-koye-eski-adet",1739633135280]