{"id":396007,"date":"2024-06-29T12:34:17","date_gmt":"2024-06-29T12:34:17","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=396007"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=396007","title":{"rendered":"<span>\u0418\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0443 \u0432 Visual Studio Code<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u043f\u0435\u0441\u043d\u0438 \u043d\u0430 \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0435, \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u043b\u044e\u0431\u0438\u043c\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u042d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u043c\u0435\u0447\u0442\u0430, \u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0443 \u0432 Visual Studio Code \u0438 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043b\u044e\u0431\u0438\u043c\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u043f\u0440\u044f\u043c\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<ul>\n<li>\n<p><a href=\"#overview\" rel=\"noopener noreferrer nofollow\">\u041e\u0431\u0437\u043e\u0440 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#yandex-music-api\" rel=\"noopener noreferrer nofollow\">API \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#authorization\" rel=\"noopener noreferrer nofollow\">\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#playlists\" rel=\"noopener noreferrer nofollow\">\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#personal-playlists\" rel=\"noopener noreferrer nofollow\">\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#playlist-my-wave\" rel=\"noopener noreferrer nofollow\">\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u201c\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f\u201d<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#user-playlists\" rel=\"noopener noreferrer nofollow\">\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#radio\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0434\u0438\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#queues\" rel=\"noopener noreferrer nofollow\">\u041e\u0447\u0435\u0440\u0435\u0434\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#create-queue\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#get-current-playing-track\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0442\u0440\u0435\u043a\u0430<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#download-track\" rel=\"noopener noreferrer nofollow\">\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#swagger-anc-cors\" rel=\"noopener noreferrer nofollow\">Swagger \u0438 CORS<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#vs-code-extension\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 VS Code \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#base-components\" rel=\"noopener noreferrer nofollow\">\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#treeview\" rel=\"noopener noreferrer nofollow\">TreeView<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#confirm-dialog\" rel=\"noopener noreferrer nofollow\">\u0414\u0438\u0430\u043b\u043e\u0433 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#password-settings\" rel=\"noopener noreferrer nofollow\">\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#play-music\" rel=\"noopener noreferrer nofollow\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0443\u0437\u044b\u043a\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#background\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#live-share-audio\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c Microsoft Live Share Audio<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#electron-architecture\" rel=\"noopener noreferrer nofollow\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 Electron<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#play-track\" rel=\"noopener noreferrer nofollow\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#download-electron\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 Electron \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#result\" rel=\"noopener noreferrer nofollow\">\u0418\u0442\u043e\u0433<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"overview\" id=\"overview\"><\/a><\/p>\n<h2>\u041e\u0431\u0437\u043e\u0440 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/h2>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043a\u0440\u0430\u0435\u043c \u0433\u043b\u0430\u0437\u0430 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=acherkashin.yandex-music-extension\" rel=\"noopener noreferrer nofollow\">\u0441\u0430\u043c\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435<\/a> \u0438 \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/534\/2e3\/b75\/5342e3b7507c651b125d121bc13376cf.png\" alt=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\" title=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\" width=\"2000\" height=\"1232\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/534\/2e3\/b75\/5342e3b7507c651b125d121bc13376cf.png\"\/><\/p>\n<div><figcaption>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u042f \u0434\u0443\u043c\u0430\u044e, \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043b\u0435\u0432\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u0447\u0451\u0442\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438. \u0417\u0434\u0435\u0441\u044c \u0432\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/p>\n<\/li>\n<li>\n<p>\u0438 \u0432\u0430\u0448\u0438 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u043f\u0435\u0441\u043d\u0438 \u0438 \u043f\u043e\u0434\u043a\u0430\u0441\u0442\u044b<\/p>\n<\/li>\n<li>\n<p>\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>\u0438 \u043f\u043e\u0438\u0441\u043a<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442, \u043d\u043e \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0438 \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0435\u0449\u0451 \u0447\u0435\u0433\u043e-\u0442\u043e \u2014 <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-extension\/issues\/new\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u0439\u0442\u0435 \u0437\u043d\u0430\u0442\u044c<\/a> ?).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f07\/de9\/0d7\/f07de90d75af5dc6911101772e852498.png\" width=\"2000\" height=\"1003\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f07\/de9\/0d7\/f07de90d75af5dc6911101772e852498.png\"\/><\/figure>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u2014 \u043b\u0438\u0448\u044c \u0443\u0440\u0435\u0437\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u042f.\u041c\u0443\u0437\u044b\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u0442\u0440\u0435\u043a\u0443, \u0430\u043b\u044c\u0431\u043e\u043c\u0443 \u0438\u043b\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043a\u0438 \u201c\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435\u201d.<\/p>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0443 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u0438, \u044d\u0442\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0440\u0430\u0437\u0431\u043e\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0430 \u043d\u0435 \u0434\u0435\u043c\u043e. \u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0431\u043b\u0438\u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u2014 <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=acherkashin.yandex-music-extension\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u0430\u043a \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e \u0442\u043e\u043a\u0435\u043d\u0443<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e \u043b\u043e\u0433\u0438\u043d\u0443 \u0438 \u043f\u0430\u0440\u043e\u043b\u044e<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/003\/448\/567\/003448567feb9756ea0313c444a23d3e.png\" alt=\"\u0421\u043f\u043e\u0441\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438\" title=\"\u0421\u043f\u043e\u0441\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438\" width=\"2000\" height=\"1317\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/003\/448\/567\/003448567feb9756ea0313c444a23d3e.png\"\/><\/p>\n<div><figcaption>\u0421\u043f\u043e\u0441\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a? \u042f\u043d\u0434\u0435\u043a\u0441 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e \u043b\u043e\u0433\u0438\u043d\u0443 \u0438 \u043f\u0430\u0440\u043e\u043b\u044e, \u0432\u0435\u0434\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439, \u0438 \u0432\u0441\u0451 \u043c\u0435\u043d\u044c\u0448\u0435 \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0432\u0432\u0435\u043b\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0432\u0438\u0434\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443, \u0442\u043e \u0432\u0430\u043c \u0441\u0442\u043e\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u0432\u0445\u043e\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u043e\u043a\u0435\u043d\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/695\/eaa\/a0b\/695eaaa0b4749461c7c840cb742d0eab.png\" alt=\"\u041e\u0448\u0438\u0431\u043a\u0430, \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e \u043b\u043e\u0433\u0438\u043d\u0443 \u0438 \u043f\u0430\u0440\u043e\u043b\u044e\" title=\"\u041e\u0448\u0438\u0431\u043a\u0430, \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e \u043b\u043e\u0433\u0438\u043d\u0443 \u0438 \u043f\u0430\u0440\u043e\u043b\u044e\" width=\"2000\" height=\"645\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/695\/eaa\/a0b\/695eaaa0b4749461c7c840cb742d0eab.png\"\/><\/p>\n<div><figcaption>\u041e\u0448\u0438\u0431\u043a\u0430, \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e \u043b\u043e\u0433\u0438\u043d\u0443 \u0438 \u043f\u0430\u0440\u043e\u043b\u044e<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 3 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d:<\/p>\n<ol>\n<li>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f <\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/chrome.google.com\/webstore\/detail\/yandex-music-token\/lcbjeookjibfhjjopieifgjnhlegmkib\" rel=\"noopener noreferrer nofollow\">\u0414\u043b\u044f Google Chrome<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/yandex-music-token\/\" rel=\"noopener noreferrer nofollow\">\u0414\u043b\u044f Firefox<\/a><\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/github.com\/MarshalX\/yandex-music-token\/tree\/main\/android-app\" rel=\"noopener noreferrer nofollow\">Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/a>. \u041e\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 SDK \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0434\u043b\u044f \u0430\u043d\u0434\u0440\u043e\u0438\u0434\u0430.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/MarshalX\/yandex-music-api\/discussions\/513#discussioncomment-2729781\" rel=\"noopener noreferrer nofollow\">\u0412\u0440\u0443\u0447\u043d\u0443\u044e<\/a>, \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0442\u043e\u043a\u0435\u043d \u0438\u0437 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0431\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0442\u043e\u043a\u0435\u043d \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0436\u0435 \u0431\u044b\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0432 \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0435. \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0432\u0441\u0435\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u043e\u0431\u0440\u0430\u043d\u044b <a href=\"https:\/\/github.com\/MarshalX\/yandex-music-token\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a> (<a href=\"https:\/\/t.me\/MarshalX\" rel=\"noopener noreferrer nofollow\">\u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0418\u043b\u044c\u0435<\/a>, \u0447\u0442\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0441\u043e\u0431\u0440\u0430\u043b \u0432\u043c\u0435\u0441\u0442\u0435).<\/p>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 <a href=\"https:\/\/chrome.google.com\/webstore\/detail\/yandex-music-token\/lcbjeookjibfhjjopieifgjnhlegmkib\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0425\u0440\u043e\u043c\u0430<\/a>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0433\u043e \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u201c\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u201d.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/164\/dcd\/57f\/164dcd57fc8a7e3f26f5260f88412afa.png\" alt=\"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0425\u0440\u043e\u043c\u0430, \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430\" title=\"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0425\u0440\u043e\u043c\u0430, \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430\" width=\"2000\" height=\"1347\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/164\/dcd\/57f\/164dcd57fc8a7e3f26f5260f88412afa.png\"\/><\/p>\n<div><figcaption>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0425\u0440\u043e\u043c\u0430, \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 3-\u0445 \u0447\u0430\u0441\u0442\u0435\u0439:<\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 API \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 VS Code \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0435\u0435 \u0442\u0440\u0435\u043a\u0438 \u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/p>\n<\/li>\n<li>\n<p>\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Electron<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"yandex-music-api\" id=\"yandex-music-api\"><\/a><\/p>\n<h2>API \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438<\/h2>\n<p>\u042f \u0434\u0443\u043c\u0430\u044e \u0431\u0443\u0434\u0435\u0442 \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u0441 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0432\u0435\u0449\u0438, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u043b\u043e \u0431\u044b \u0441\u0432\u0435\u0442 \u2014 \u0441 API. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u043d\u044e, \u043d\u043e \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u043e \u0431\u044b\u043b\u043e \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0433\u0443\u0433\u043b\u0438\u043b, \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 API<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/yandex\/audio-js\/issues\/4\" rel=\"noopener noreferrer nofollow\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e API \u043d\u0435\u0442<\/a>, \u043d\u0430\u0448\u0451\u043b <a href=\"https:\/\/github.com\/itsmepetrov\/yandex-music-api\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 API<\/a><\/p>\n<\/li>\n<li>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0437\u0430\u0431\u0440\u043e\u0448\u0435\u043d\u0430, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0432 \u043d\u0435\u0439 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u043d\u0435 \u043c\u0435\u0442\u043e\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0442\u044b\u043a\u0430\u044e\u0441\u044c \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u201c<a href=\"https:\/\/habr.com\/ru\/post\/462607\/\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u00ab\u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0430\u00bb \u043f\u0438\u0441\u0430\u043b\u201d<\/a> \u0438 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/MarshalX\/yandex-music-api\" rel=\"noopener noreferrer nofollow\">\u043d\u0430 \u043f\u0438\u0442\u043e\u043d\u0435<\/a> (\u0418\u043b\u044c\u044f, \u0435\u0441\u043b\u0438 \u0442\u044b \u0447\u0438\u0442\u0430\u0435\u0448\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u2014 \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0442\u0435\u0431\u0435, \u044f \u043d\u0435 \u0437\u0430\u0431\u044b\u043b \u043f\u0440\u043e \u0442\u0435\u0431\u044f!).<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u044e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442 \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/www.ieinspector.com\/httpanalyzer\/\" rel=\"noopener noreferrer nofollow\">HTTP Analyzer<\/a> \u0438 \u0432\u0438\u043d\u0434\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0438\u0448\u0443 <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-open-api\" rel=\"noopener noreferrer nofollow\">OpenAPI \u0441\u0445\u0435\u043c\u0443<\/a><\/p>\n<\/li>\n<li>\n<p>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e <a href=\"https:\/\/t.me\/cherkashindev\/75\" rel=\"noopener noreferrer nofollow\">JavaScript-\u043a\u043b\u0438\u0435\u043d\u0442 yandex-music-client \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 OpenAPI \u0441\u0445\u0435\u043c\u044b<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u043d\u0430\u0434 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f, \u0438 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u2014 \u044f \u043d\u0430\u043f\u0438\u0448\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b.<\/p>\n<p><a class=\"anchor\" name=\"authorization\" id=\"authorization\"><\/a><\/p>\n<h3>\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 API \u2014 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f. \u0412\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u0438\u043b\u0438 \u0436\u0435 \u0432\u0430\u0448\u0438 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u0442\u0440\u0435\u043a\u0438, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0442\u043e\u043a\u0435\u043d\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0445\u043e\u0434 \u043f\u043e \u043b\u043e\u0433\u0438\u043d\u0443 \u0438 \u043f\u0430\u0440\u043e\u043b\u044e \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043c\u0435\u0442\u043e\u0434 <code>getToken<\/code> \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435, \u0438\u043d\u0430\u0447\u0435 \u2014 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0442\u043e\u043a\u0435\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/chrome.google.com\/webstore\/detail\/yandex-music-token\/lcbjeookjibfhjjopieifgjnhlegmkib\" rel=\"noopener noreferrer nofollow\">Google Chrome Extension<\/a>.<\/p>\n<pre><code class=\"typescript\">import { getToken } from 'yandex-music-client\/token'; import { YandexMusicClient } from 'yandex-music-client\/YandexMusicClient'  \/\/ \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \/\/ \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 Google Chrome Extension: \/\/ https:\/\/chrome.google.com\/webstore\/detail\/yandex-music-token\/lcbjeookjibfhjjopieifgjnhlegmkib const token = await getToken('your email', 'your password');  const client = new YandexMusicClient({     BASE: \"https:\/\/api.music.yandex.net:443\",     HEADERS: {         'Authorization': `OAuth ${config.token}`,     }, });<\/code><\/pre>\n<p><a class=\"anchor\" name=\"playlists\" id=\"playlists\"><\/a><\/p>\n<h3>\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/h3>\n<p><a class=\"anchor\" name=\"personal-playlists\" id=\"personal-playlists\"><\/a><\/p>\n<h4>\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/h4>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 <code>client.landing.getLandingBlocks<\/code> (GET <code>\/landing3<\/code>)<\/p>\n<p>\u0415\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043b\u0435\u043d\u0434\u0438\u043d\u0433 \u0431\u043b\u043e\u043a\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u201c\u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u0434\u043d\u044f\u201d,  \u201c\u0434\u0435\u0436\u0430\u0432\u044e\u201d, \u201c\u043f\u0440\u0435\u043c\u044c\u0435\u0440\u0430\u201d \u0438 \u0442.\u0434. \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0431\u043b\u043e\u043a \u0442\u0438\u043f\u0430 <em>personalplaylists<\/em> \u2014 <code>client.landing.getLandingBlocks(\"personalplaylists\")<\/code><\/p>\n<\/li>\n<li>\n<p>\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u0441 \u043d\u043e\u0432\u0438\u043d\u043a\u0430\u043c\u0438 \u2014 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a <em>new-releases<\/em><\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0440\u0442 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438 \u2014 <em>chart<\/em><\/p>\n<\/li>\n<li>\n<p>\u041d\u043e\u0432\u044b\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u2014 <em>new-playlists<\/em><\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u043a\u0430\u0441\u0442\u044b \u2014 <em>podcasts<\/em><\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u2014  <em>promotions<\/em><\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043b\u043e\u043a\u043e\u0432, \u0443\u043a\u0430\u0437\u0430\u0432 \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e:<\/p>\n<pre><code class=\"typescript\">client.landing.getLandingBlocks(   \"personalplaylists,promotions,new-releases,new-playlists,podcasts\" )<\/code><\/pre>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ea\/f0f\/b03\/6eaf0fb031a9ad7e949048f6a3587611.png\" alt=\"\u0417\u0430\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043b\u0435\u043d\u0434\u0438\u043d\u0433 \u0431\u043b\u043e\u043a\u043e\u0432\" title=\"\u0417\u0430\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043b\u0435\u043d\u0434\u0438\u043d\u0433 \u0431\u043b\u043e\u043a\u043e\u0432\" width=\"2000\" height=\"455\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ea\/f0f\/b03\/6eaf0fb031a9ad7e949048f6a3587611.png\"\/><\/p>\n<div><figcaption>\u0417\u0430\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043b\u0435\u043d\u0434\u0438\u043d\u0433 \u0431\u043b\u043e\u043a\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"playlist-my-wave\" id=\"playlist-my-wave\"><\/a><\/p>\n<h4>\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u201c\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f\u201d<\/h4>\n<p>\u0412\u0441\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0442\u0440\u0435\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0432 2 \u0437\u0430\u0445\u043e\u0434\u0430:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u0442\u0440\u0435\u043a\u043e\u0432 \u2014 (GET <code>\/users\/{userId}\/likes\/tracks<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u043e\u0432 \u043f\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c \u2014 (POST <code>\/tracks<\/code>). \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0430 \u201c&lt;trackId>:&lt;albumId>\u201d.<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"typescript\">const result = await client.tracks.getLikedTracksIds(userId); const ids = result.result.library.tracks.map(track => `${track.id}:${track.albumId}`); const tracks = await client.tracks.getTracks({ \"track-ids\": ids });<\/code><\/pre>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c 2 \u0437\u0430\u043f\u0440\u043e\u0441\u0430? \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b \u043d\u0430\u043b\u0430\u0439\u043a\u0430\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u044b\u0441\u044f\u0447 \u0442\u0440\u0435\u043a\u043e\u0432 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u0445 \u0432\u0441\u0435 \u043e\u0434\u043d\u0438\u043c \u043c\u0430\u0445\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0436\u0438\u0440\u043d\u043e. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044e \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u0440\u0435\u043a\u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e.<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u041b\u0430\u0439\u043a\u043d\u0443\u0442\u044c \u0442\u0440\u0435\u043a \u2014 <code>client.tracks.likeTracks<\/code> (POST <code>\/users\/{userId}\/likes\/tracks\/add-multiple<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0423\u0431\u0440\u0430\u0442\u044c \u043b\u0430\u0439\u043a \u2014 <code>client.tracks.removeLikedTracks<\/code> (POST <code>\/users\/{userId}\/likes\/tracks\/remove<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0442\u0440\u0435\u043a\u043e\u0432 \u0441 \u0434\u0438\u0437\u043b\u0430\u0439\u043a\u0430\u043c\u0438 \u2014  <code>client.tracks.getDislikedTracksIds<\/code> (GET <code>\/users\/{userId}\/likes\/tracks\/remove<\/code>)<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"user-playlists\" id=\"user-playlists\"><\/a><\/p>\n<h4>\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/h4>\n<p>\u0422\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u2014 <code>client.playlists.createPlaylist<\/code> (POST <code>\/users\/{userId}\/playlists\/create<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u2014 <code>client.playlists.renamePlaylist<\/code> (POST <code>\/users\/{userId}\/playlists\/{kind}\/name<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u2014 <code>client.playlists.deletePlaylist<\/code> (POST <code>\/users\/{userId}\/playlists\/{kind}\/delete<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c\/\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0440\u0435\u043a\u0438 \u0438\u0437 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u2014 <code>client.playlists.changePlaylistTracks<\/code> (POST <code>\/users\/{userId}\/playlists\/{kind}\/change-relative<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u2014 <code>client.playlists.getPlayLists<\/code> (GET <code>\/users\/{userId}\/playlists\/list<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u043f\u043e \u043f\u043e\u043b\u044e <code>kind<\/code> (\u0442\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u0430\u0439\u0434\u0438\u0448\u043a\u0438) \u2014  <code>client.playlists.getPlaylistById(userId, playlistKind)<\/code> (GET <code>\/users\/{userId}\/playlists\/{kind}<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e <code>kind<\/code>, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0440\u0435\u043a\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c <code>rich-tracks<\/code>  \u043a\u0430\u043a <code>true<\/code> \u2014 <code>client.playlists.getUserPlaylistsByIds<\/code> (GET <code>\/users\/{userId}\/playlists<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u043f\u043e <code>kind<\/code> \u2014 <code>client.playlists.getPlaylistById<\/code> (GET <code>\/users\/{userId}\/playlists\/{kind}<\/code>)<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"radio\" id=\"radio\"><\/a><\/p>\n<h3>\u0420\u0430\u0434\u0438\u043e<\/h3>\n<p>\u041c\u0435\u0442\u043e\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0430\u0434\u0438\u043e:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u2014 <code>client.rotor.getStationInfo<\/code> (GET <code>\/rotor\/station\/{stationId}\/info<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0440\u0435\u043a\u0438 \u0434\u043b\u044f \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u2014 <code>client.rotor.getStationTracks<\/code> (GET <code>\/rotor\/station\/{stationId}\/tracks<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043a\u0430 \u0440\u0430\u0434\u0438\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0439 \u2014 <code>client.rotor.getStationsList<\/code> (GET <code>\/rotor\/stations\/list<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u0446\u0438\u0439 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u2014 <code>client.rotor.getRotorStationsDashboard<\/code> (GET <code>\/rotor\/stations\/dashboard<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0444\u0438\u0434\u0431\u044d\u043a \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445 \u0441\u0442\u0430\u043d\u0446\u0438\u0438. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0434\u0438\u043e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f\/\u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f\/\u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0442\u0440\u0435\u043a \u2014 (GET <code>\/rotor\/station\/{stationId}\/feedback<\/code>)<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u043b \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0442\u043e \u0441 \u0440\u0430\u0434\u0438\u043e \u0432\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u0422\u0443\u0442 \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043f\u043e\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u0415\u0441\u043b\u0438 \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043c HTTP Analyzer, \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0440\u0430\u0434\u0438\u043e \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0438\u043d\u0434\u043e\u0432\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u201c\u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430\u201d \u2014 <code>user:anyourwave<\/code>) \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9af\/cc9\/a48\/9afcc9a482c00b0a0842cd42a0bd1da5.png\" alt=\"\u041d\u0430\u0431\u043e\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u0440\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0440\u0430\u0434\u0438\u043e \u201c\u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430\u201d\" title=\"\u041d\u0430\u0431\u043e\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u0440\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0440\u0430\u0434\u0438\u043e \u201c\u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430\u201d\" width=\"2000\" height=\"672\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9af\/cc9\/a48\/9afcc9a482c00b0a0842cd42a0bd1da5.png\"\/><\/p>\n<div><figcaption>\u041d\u0430\u0431\u043e\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u0440\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0440\u0430\u0434\u0438\u043e \u201c\u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430\u201d<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0441\u0451 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443. \u0421\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0438 \u043a\u0430\u043a \u043e\u0434\u043d\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043e\u0442\u0432\u0435\u0442\u044b \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/187\/001\/55b\/18700155beeeb399a1164887cc9f464b.png\" alt=\"\u0421\u0445\u0435\u043c\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0440\u0430\u0434\u0438\u043e\" title=\"\u0421\u0445\u0435\u043c\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0440\u0430\u0434\u0438\u043e\" width=\"2000\" height=\"2034\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/187\/001\/55b\/18700155beeeb399a1164887cc9f464b.png\"\/><\/p>\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0440\u0430\u0434\u0438\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0432\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0434\u0438\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0431\u0435\u0437 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u0438\u0434\u0431\u0435\u043a\u0430, \u0447\u0442\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442 \u043b\u043e\u0433\u0438\u043a\u0443. \u041d\u043e \u043c\u044b <a href=\"https:\/\/t.me\/yandex_music_api\/31558\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442 \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438<\/a> \u0438 \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0444\u0438\u0434\u0431\u0435\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u0438 \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u0430 \u0442\u0440\u0435\u043a\u043e\u0432 \u0432 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430\u0445.<\/p>\n<p>\u0412 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u043f\u043e\u043a\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0440\u0430\u0434\u0438\u043e \u2014 \u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430 (<a href=\"https:\/\/github.com\/acherkashin\/yandex-music-extension\/blob\/master\/src\/store.ts#L181\" rel=\"noopener noreferrer nofollow\">\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0442\u0443\u0442<\/a>).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e62\/5d8\/a1e\/e625d8a1e232dfcc9c0db09ef284214b.png\" alt=\"\u0420\u0430\u0434\u0438\u043e \u201c\u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430\u201d \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0434\u043b\u044f VS Code\" title=\"\u0420\u0430\u0434\u0438\u043e \u201c\u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430\u201d \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0434\u043b\u044f VS Code\" width=\"2000\" height=\"1292\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e62\/5d8\/a1e\/e625d8a1e232dfcc9c0db09ef284214b.png\"\/><\/p>\n<div><figcaption>\u0420\u0430\u0434\u0438\u043e \u201c\u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430\u201d \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0434\u043b\u044f VS Code<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"queues\" id=\"queues\"><\/a><\/p>\n<h3>\u041e\u0447\u0435\u0440\u0435\u0434\u0438<\/h3>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0447\u0430\u0441\u0442\u044b\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 <a href=\"https:\/\/t.me\/yandex_music_api\" rel=\"noopener noreferrer nofollow\">\u0447\u0430\u0442\u0435 \u043f\u043e \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0435<\/a> \u2014 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0440\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0433\u0440\u0430\u0435\u0442 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u041c\u044b \u0443\u0436\u0435 \u0448\u0443\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0442 GPT, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u043b \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u043d\u043e \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e <a href=\"https:\/\/t.me\/yandex_music_api\/32053\" rel=\"noopener noreferrer nofollow\">\u043e\u043d \u043d\u0430\u0447\u0430\u043b \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b<\/a>. \u0422\u0430\u043a \u0432\u043e\u0442 \u2014 <strong>\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0442\u0440\u0435\u043a<\/strong> \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439.<\/p>\n<p><a class=\"anchor\" name=\"create-queue\" id=\"create-queue\"><\/a><\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438<\/h4>\n<p>\u041e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430, \u0430\u043b\u044c\u0431\u043e\u043c\u0430 \u0438\u043b\u0438 \u0440\u0430\u0434\u0438\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0442\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u0430.<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0430\u043b\u044c\u0431\u043e\u043c \u0441 \u0442\u0440\u0435\u043a\u0430\u043c\u0438 <code>GET \/albums\/{albumId}\/with-tracks<\/code><\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 <code>POST \/queue<\/code>, \u043a\u0443\u0434\u0430 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0432\u0441\u0435 \u0442\u0440\u0435\u043a\u0438 \u0438\u0437 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0442\u0440\u0435\u043a\u0430 \u2014 <code>POST \/queues\/{queueId}\/update-position?currentIndex=0<\/code><\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1cf\/f12\/f31\/1cff12f313aaf3c75f702efce1407333.png\" alt=\"\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0430\u043b\u044c\u0431\u043e\u043c\u0430 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0438\u043d\u0434\u043e\u0432\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438\" title=\"\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0430\u043b\u044c\u0431\u043e\u043c\u0430 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0438\u043d\u0434\u043e\u0432\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438\" width=\"2000\" height=\"672\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1cf\/f12\/f31\/1cff12f313aaf3c75f702efce1407333.png\"\/><\/p>\n<div><figcaption>\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0430\u043b\u044c\u0431\u043e\u043c\u0430 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0438\u043d\u0434\u043e\u0432\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0442\u0440\u0435\u043a \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044f \u0432\u043a\u043b\u044e\u0447\u0438\u043b \u0430\u043b\u044c\u0431\u043e\u043c \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0438\u043d\u0434\u043e\u0432\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/667\/0ff\/e88\/6670ffe882165ef4ff14813718b4859f.png\" alt=\"\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u0430\" title=\"\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u0430\" width=\"2000\" height=\"481\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/667\/0ff\/e88\/6670ffe882165ef4ff14813718b4859f.png\"\/><\/p>\n<div><figcaption>\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0433\u0443 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0442\u0440\u0435\u043a \u0438\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438\u043b\u0438 \u0441\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/360\/16d\/9da\/36016d9da71df34b717331b9f9e6d618.png\" alt=\"\u0422\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0430\u043b\u044c\u0431\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441\u043b\u0443\u0448\u0430\u0442\u044c\" title=\"\u0422\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0430\u043b\u044c\u0431\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441\u043b\u0443\u0448\u0430\u0442\u044c\" width=\"2000\" height=\"1690\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/360\/16d\/9da\/36016d9da71df34b717331b9f9e6d618.png\"\/><\/p>\n<div><figcaption>\u0422\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0430\u043b\u044c\u0431\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441\u043b\u0443\u0448\u0430\u0442\u044c<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"get-current-playing-track\" id=\"get-current-playing-track\"><\/a><\/p>\n<h4>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0442\u0440\u0435\u043a\u0430<\/h4>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0442\u0440\u0435\u043a, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0448\u0430\u0433\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u2014 <code>client.queues.getQueues()<\/code> (GET \/queues)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <code>id<\/code> \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u2014 \u043f\u0435\u0440\u0432\u0430\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0448\u0430\u0433\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u2014 <code>client.queues.getQueueById()<\/code> (GET \/queues\/{queueId})<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0442\u0440\u0435\u043a \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u2014 <code>client.tracks.getTracks()<\/code> (GET \/tracks\/)<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u0434 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"typescript\">const { YandexMusicClient } = require('yandex-music-client');  const client = new YandexMusicClient({     BASE: \"https:\/\/api.music.yandex.net:443\",     HEADERS: {         'Authorization': `OAuth &lt;your_token>`,       }, });  client.queues     .getQueues('os=unknown; os_version=unknown; manufacturer=unknown; model=unknown; clid=; device_id=unknown; uuid=unknown')     .then(async ({result}) => {         \/\/ \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u043f\u0438\u0441\u043a\u0430         const currentQueue = await client.queues.getQueueById(result.queues[0].id);         const {tracks, currentIndex} = currentQueue.result;         const currentTrackId = tracks[currentIndex ?? 0];                  const currentTrack = (await client.tracks.getTracks({\"track-ids\": [`${currentTrackId.trackId}:${currentTrackId.albumId}`]})).result[0];          const supplement = await client.tracks.getTrackSupplement(currentTrack.id);          console.log(JSON.stringify(supplement.result.lyrics.fullLyrics, null, 2));     })<\/code><\/pre>\n<p>\u0425\u043e\u0442\u044c \u0434\u043b\u044f \u0440\u0430\u0434\u0438\u043e \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0442\u0440\u0435\u043a \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u0412 \u044d\u0442\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043d\u0435\u0442 \u0442\u0440\u0435\u043a\u043e\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0440\u0435\u043a\u0438 \u0434\u043b\u044f \u0440\u0430\u0434\u0438\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0440\u0430\u0434\u0438\u043e \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u043d\u0451\u0442\u0441\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u0441 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0442\u0440\u0435\u043a\u0430.<\/p>\n<p><a class=\"anchor\" name=\"download-track\" id=\"download-track\"><\/a><\/p>\n<h3>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u0430<\/h3>\n<p>\u041d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e API, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443, \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-open-api\/tree\/main\/lib\" rel=\"noopener noreferrer nofollow\">yandex-music-client<\/a>, \u0442\u043e \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u0440\u0435\u043a\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0435\u0433\u043e <code>id<\/code> \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-open-api\/blob\/main\/openapi-generator\/trackUrl.ts#L13\" rel=\"noopener noreferrer nofollow\">getTrackUrl<\/a>. \u041d\u043e \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/202\/0e5\/20f\/2020e520f901e40dd8f48e8347123cc3.png\" alt=\"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u0440\u0435\u043a\u0430\" title=\"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u0440\u0435\u043a\u0430\" width=\"2000\" height=\"3092\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/202\/0e5\/20f\/2020e520f901e40dd8f48e8347123cc3.png\"\/><\/p>\n<div><figcaption>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u0440\u0435\u043a\u0430<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"swagger-and-cors\" id=\"swagger-and-cors\"><\/a><\/p>\n<h3>Swagger \u0438 CORS<\/h3>\n<p>\u0421\u043e\u0432\u0441\u0435\u043c \u0437\u0430\u0431\u044b\u043b \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u0443\u044e \u0432\u0435\u0449\u044c, \u0432\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-open-api\/tree\/main\/lib\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0435\u0433\u043e API<\/a>. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u042f\u043d\u0434\u0435\u043a\u0441 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u0440\u043e\u0441\u0441 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<p><a href=\"https:\/\/www.cherkashin.dev\/yandex-music-open-api\/\" rel=\"noopener noreferrer nofollow\">\u0412 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0441 OpenAPI \u0441\u0445\u0435\u043c\u043e\u0439<\/a> \u044f \u043e\u0431\u0445\u043e\u0436\u0443 \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/t.me\/cherkashindev\/33\" rel=\"noopener noreferrer nofollow\">proxy-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 NodeJS<\/a>, \u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e proxy-server \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0420\u043e\u0441\u0441\u0438\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/269\/2be\/9b6\/2692be9b6705bae15be36c011396b378.png\" alt=\"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 Proxy-server \u0434\u043b\u044f API \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438\" title=\"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 Proxy-server \u0434\u043b\u044f API \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438\" width=\"2000\" height=\"761\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/269\/2be\/9b6\/2692be9b6705bae15be36c011396b378.png\"\/><\/p>\n<div><figcaption>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 Proxy-server \u0434\u043b\u044f API \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0431\u044d\u043a\u0435\u043d\u0434 \u2014 \u0442\u043e \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-open-api\/tree\/main\/lib\" rel=\"noopener noreferrer nofollow\">yandex-music-client<\/a>  \u043d\u0430 \u0431\u044d\u043a\u0435 \u0438, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043a\u0440\u043e\u0441-\u0434\u043e\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 (\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043d\u0435 \u0421\u041d\u0413). \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0438\u0442\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c \u0431\u043e\u0442\u0430 \u0438\u043b\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0432\u0435\u0434\u044c CORS \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438\u0448\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/p>\n<p><a class=\"anchor\" name=\"vs-code-extension\" id=\"vs-code-extension\"><\/a><\/p>\n<h2>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 VS Code \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c API \u0434\u043b\u044f \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 VS Code. \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 VS Code, <a href=\"https:\/\/code.visualstudio.com\/api\/get-started\/your-first-extension\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e \u043d\u0435\u0439 \u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c. VS Code \u2014 \u043e\u0431\u044b\u0447\u043d\u043e\u0435 NodeJS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043b\u044e\u0431\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0431\u0443\u0434\u044c \u0442\u043e <a href=\"https:\/\/github.com\/axios\/axios\" rel=\"noopener noreferrer nofollow\">axios<\/a> \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u043b\u0438 <a href=\"https:\/\/mobx.js.org\/README.html\" rel=\"noopener noreferrer nofollow\">MobX<\/a> \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c.<\/p>\n<p><a class=\"anchor\" name=\"base-components\" id=\"base-components\"><\/a><\/p>\n<h3>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b<\/h3>\n<p>\u041d\u0438\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fc5\/689\/4c2\/fc56894c224eb9b0ce52dd246072640b.png\" alt=\"\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b VS Code, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438\" title=\"\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b VS Code, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438\" width=\"2000\" height=\"1063\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fc5\/689\/4c2\/fc56894c224eb9b0ce52dd246072640b.png\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b VS Code, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 <a href=\"https:\/\/code.visualstudio.com\/api\/references\/contribution-points\" rel=\"noopener noreferrer nofollow\">contribution points<\/a>. \u0412\u0441\u0435 \u043e\u043d\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 package.json \u0432 \u043f\u043e\u043b\u0435 contributes.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6b6\/be3\/9e2\/6b6be39e27ea65191fb6dcb14965960d.png\" alt=\"Contribution points \u0432 package.json\" title=\"Contribution points \u0432 package.json\" width=\"2000\" height=\"2612\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b6\/be3\/9e2\/6b6be39e27ea65191fb6dcb14965960d.png\"\/><\/p>\n<div><figcaption>Contribution points \u0432 package.json<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u044b \u2014 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 (<a href=\"https:\/\/code.visualstudio.com\/api\/references\/contribution-points#contributes.commands\" rel=\"noopener noreferrer nofollow\">contributes\/commands<\/a>)<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f (<a href=\"https:\/\/code.visualstudio.com\/api\/references\/contribution-points#contributes.configuration\" rel=\"noopener noreferrer nofollow\">contributes\/configuration<\/a>)<\/p>\n<\/li>\n<li>\n<p>\u0411\u043e\u043a\u043e\u0432\u044b\u0435 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438 \u0438\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 (<a href=\"https:\/\/code.visualstudio.com\/api\/references\/contribution-points#contributes.viewsContainers\" rel=\"noopener noreferrer nofollow\">contributes\/viewsContainers<\/a>, <a href=\"https:\/\/code.visualstudio.com\/api\/references\/contribution-points#contributes.views\" rel=\"noopener noreferrer nofollow\">contributes\/views<\/a>)<\/p>\n<\/li>\n<li>\n<p>\u0413\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 (<a href=\"https:\/\/code.visualstudio.com\/api\/references\/contribution-points#contributes.keybindings\" rel=\"noopener noreferrer nofollow\">contributes\/keybindings<\/a>)<\/p>\n<\/li>\n<li>\n<p>\u042d\u043a\u0448\u0435\u043d\u044b \u0434\u043b\u044f \u0443\u0437\u043b\u043e\u0432 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e (<a href=\"https:\/\/code.visualstudio.com\/api\/references\/contribution-points#contributes.menus\" rel=\"noopener noreferrer nofollow\">contributes\/menus<\/a>)<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0430\u0440\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432.<\/p>\n<p><a class=\"anchor\" name=\"treeview\" id=\"treeview\"><\/a><\/p>\n<h3>TreeView<\/h3>\n<p>\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u0441 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430\u043c\u0438, \u0430\u043b\u044c\u0431\u043e\u043c\u0430\u043c\u0438 \u0438 \u0442\u0440\u0435\u043a\u0430\u043c\u0438. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c TreeView, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 <em>contribution point<\/em> \u0432 package.json.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7b3\/312\/2c0\/7b33122c0c77767a5ab4bcb82108b222.png\" width=\"2000\" height=\"2395\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7b3\/312\/2c0\/7b33122c0c77767a5ab4bcb82108b222.png\"\/><\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c 4 \u0434\u0435\u0440\u0435\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438:<\/p>\n<ul>\n<li>\n<p>\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0440\u0442<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0438\u0441\u043a<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c <em>data provider<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0448\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0443\u0437\u043b\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432 \u0434\u0435\u0440\u0435\u0432\u0435. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0434\u0435\u0440\u0435\u0432\u043e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0435\u0435 \u0427\u0430\u0440\u0442.<\/p>\n<pre><code class=\"typescript\">\/\/ \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0434\u043b\u044f \u0427\u0430\u0440\u0442\u0430 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438 export class ChartTree implements vscode.TreeDataProvider&lt;vscode.TreeItem> {      constructor(private store: Store) { }      getChildren(): vscode.ProviderResult&lt;vscode.TreeItem[]> {         \/\/ \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0440\u0435\u043a \u0447\u0430\u0440\u0442\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0432 \u0434\u0435\u0440\u0435\u0432\u0435         return this.store.getChart().then((items) => {             return items.map((item) => new ChartTreeItem(this.store, item, CHART_TRACKS_PLAYLIST_ID));         });     } }  const api = new YandexMusicApi(); const store = new Store(api); \/\/ \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 const chartProvider = new ChartTree(store); \/\/ \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u043e \u0432\u044c\u044e \"yandex-music-chart\" \u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c chartProvider vscode.window.createTreeView(\"yandex-music-chart\", { treeDataProvider: chartProvider });<\/code><\/pre>\n<p>\u041a\u043e\u0434 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u043e\u0449\u0451\u043d, \u043f\u043e\u043b\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-extension\/blob\/master\/src\/extension.ts#L59\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a> \u0438 <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-extension\/blob\/master\/src\/tree\/chartTree.ts\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"confirm-dialog\" id=\"confirm-dialog\"><\/a><\/p>\n<h3>\u0414\u0438\u0430\u043b\u043e\u0433 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0412 VS Code \u0435\u0441\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043d\u0430\u043c <a href=\"https:\/\/learn.javascript.ru\/alert-prompt-confirm\" rel=\"noopener noreferrer nofollow\">alert\/confirm<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 (\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f) \u2014 <a href=\"https:\/\/code.visualstudio.com\/api\/references\/vscode-api#:~:text=T%20%7C%20undefined%3E-,showInformationMessage,-%3CT%20extends%20string\" rel=\"noopener noreferrer nofollow\">window.showInformationMessage<\/a>. \u041f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0432\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0435 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u043a\u043d\u043e\u043f\u043e\u043a.<\/p>\n<pre><code class=\"typescript\">export async function showPrompt(title: string): Promise&lt;boolean> {   const result = await vscode.window.showInformationMessage(title, \"\u0414\u0430\", \"\u041d\u0435\u0442\");   return result === \"\u0414\u0430\"; }<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6df\/5da\/14b\/6df5da14bf7c02d81a2ec907313cd7aa.png\" alt=\"\u0414\u0438\u0430\u043b\u043e\u0433, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430\" title=\"\u0414\u0438\u0430\u043b\u043e\u0433, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430\" width=\"2000\" height=\"427\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6df\/5da\/14b\/6df5da14bf7c02d81a2ec907313cd7aa.png\"\/><\/p>\n<div><figcaption>\u0414\u0438\u0430\u043b\u043e\u0433, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"password-settings\" id=\"password-settings\"><\/a><\/p>\n<h3>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a<\/h3>\n<p>VS Code \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 2 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0431\u0435 \u0441\u0445\u043e\u0436\u0438 \u0441 localStorage:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/code.visualstudio.com\/api\/references\/vscode-api#WorkspaceConfiguration\" rel=\"noopener noreferrer nofollow\">WorkspaceConfiguration<\/a><\/p>\n<\/li>\n<li>\n<p>\u0438 <a href=\"https:\/\/code.visualstudio.com\/api\/references\/vscode-api#SecretStorage\" rel=\"noopener noreferrer nofollow\">SecretStorage<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u0438, \u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u0412\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043e\u0431\u0449\u0435\u043c \u0444\u0430\u0439\u043b\u0435 <code>settings.json<\/code> \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 VS Code, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430 \u0438\u043b\u0438 \u0442\u0435\u043c\u044b.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b48\/98d\/f0a\/b4898df0a8f50b76e1d29b226e85f2fd.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a VS Code, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 WorkspaceConfiguration\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a VS Code, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 WorkspaceConfiguration\" width=\"2000\" height=\"902\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b48\/98d\/f0a\/b4898df0a8f50b76e1d29b226e85f2fd.png\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a VS Code, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 WorkspaceConfiguration<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u044b \u0436\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 SecretStorage. \u0425\u0440\u0430\u043d\u0438\u0442\u0441\u044f SecretStorage \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u043c\u0435\u0442\u043e\u0434 activate, <a href=\"https:\/\/code.visualstudio.com\/api\/get-started\/extension-anatomy#extension-entry-file\" rel=\"noopener noreferrer nofollow\">\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/a>.  API \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043a\u0430\u043a \u0438 API localStorage \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9f7\/201\/6b0\/9f72016b09094de673f14dbdfa5b612b.png\" alt=\"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 SecretStorage\" title=\"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 SecretStorage\" width=\"2000\" height=\"1954\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9f7\/201\/6b0\/9f72016b09094de673f14dbdfa5b612b.png\"\/><\/p>\n<div><figcaption>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 SecretStorage<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043e\u0431\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/556916\/\" rel=\"noopener noreferrer nofollow\">SecretStorage\u00a0VSCode\u00a0extension\u00a0API<\/a>. \u0412 \u043d\u0435\u0439 \u0436\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u043b\u0430\u0441\u0441-\u0441\u0438\u043d\u0433\u043b\u0442\u043e\u043d\u0430 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-extension\/blob\/master\/src\/settings.ts#L59\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"play-music\" id=\"play-music\"><\/a><\/p>\n<h2>\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0443\u0437\u044b\u043a\u0438<\/h2>\n<p><a class=\"anchor\" name=\"background\" id=\"background\"><\/a><\/p>\n<h3>\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/h3>\n<p>\u041c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0442\u0440\u0435\u043a\u043e\u0432 \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043d\u0430 \u0444\u0438\u043d\u0438\u0448\u043d\u043e\u0439 \u043f\u0440\u044f\u043c\u043e\u0439, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014  \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0438\u0445. \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0451 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u2014 VS Code \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u044b \u043b\u0435\u0433\u043a\u043e \u0441\u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043c\u0443\u0437\u044b\u043a\u0443, \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0412\u0441\u0451 \u0442\u0430\u043a, \u0434\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u0442\u0430\u043a, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u0432, \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430\u00a0<a href=\"https:\/\/github.com\/Microsoft\/vscode\/issues\/421\" rel=\"noopener noreferrer nofollow\">\u0433\u0438\u0442\u0445\u0430\u0431 \u0438\u0448\u044c\u044e<\/a>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/135\/957\/649\/135957649f81c34ef82031e1254a475e.png\" width=\"2000\" height=\"876\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/135\/957\/649\/135957649f81c34ef82031e1254a475e.png\"\/><\/figure>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0438\u0448\u044c\u044e \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>\u043f\u043b\u043e\u0445\u0430\u044f \u2014 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043c\u0443\u0437\u044b\u043a\u0443<\/p>\n<\/li>\n<li>\n<p>\u0445\u043e\u0440\u043e\u0448\u0430\u044f \u2014 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 nodejs \u043f\u0430\u043a\u0435\u0442, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u043b\u0433\u0438\u0445 \u043f\u043e\u0438\u0441\u043a\u043e\u0432 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e npm-\u043f\u0430\u043a\u0435\u0442\u0430 \u044f \u043d\u0430\u0445\u043e\u0436\u0443\u00a0<a href=\"https:\/\/github.com\/shime\/play-sound\" rel=\"noopener noreferrer nofollow\">play-sound<\/a>. \u041d\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u043e\u043b\u0433\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044f \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u043e\u043d \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043a\u0440\u043e\u043c\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u0435\u0440\u0435\u043c\u043e\u0442\u043a\u0430, \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430 \u0437\u0432\u0443\u043a\u0430 \u0438 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2014 \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u0432\u0430\u0448\u0438 \u043f\u043b\u0435\u0447\u0438<\/p>\n<\/li>\n<li>\n<p>\u041a \u0442\u043e\u043c\u0443 \u0436\u0435 <a href=\"https:\/\/github.com\/shime\/play-sound\/issues\/37\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u043b\u044c\u0437\u044f \u0443\u0437\u043d\u0430\u0442\u044c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f \u043b\u0438 \u0442\u0440\u0435\u043a<\/a>, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u043b\u0435\u0435, \u044f \u043d\u0430\u0445\u043e\u0436\u0443 <a href=\"https:\/\/github.com\/noodny\/mplayer\/\" rel=\"noopener noreferrer nofollow\">mplayer\u00a0\u2014 \u043e\u0431\u0451\u0440\u0442\u043a\u0443 \u0434\u043b\u044f\u00a0MPlayer<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0451 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435 \u2014 \u043d\u043e \u043d\u0435\u0442, \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043d \u0443\u0436\u0430\u0441\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u0440\u0435\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 (\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0432 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0440\u0435\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043a\u0430\u0447\u0430\u0442\u044c, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430)<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u043c\u043e\u0442\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e, \u0432\u0441\u0451 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0437\u0430\u0435\u0434\u0430\u0435\u0442<\/p>\n<\/li>\n<li>\n<p>\u0418\u0437 \u043c\u0435\u043b\u043e\u0447\u0435\u0439 \u2014 \u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0435\u0442 \u0442\u0430\u0439\u043f\u0438\u043d\u0433\u043e\u0432, \u0438\u0445 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0422\u0443\u0442 \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e <\/strong><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=MS-vsliveshare.vsliveshare-audio\" rel=\"noopener noreferrer nofollow\"><strong>\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 vscode \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/strong><\/a><strong> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u044b\u0435 \u0437\u0432\u043e\u043d\u043a\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u043e \u0432\u043d\u0443\u0442\u0440\u0438 vscode.<\/strong> \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u044f \u0440\u0435\u0448\u0438\u043b \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p>\n<p><a class=\"anchor\" name=\"live-share-audio\" id=\"live-share-audio\"><\/a><\/p>\n<h3>\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c Microsoft Live Share Audio<\/h3>\n<p>\u0412\u0441\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432 vscode \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 <code>\/Users\/&lt;username>\/.vscode\/extensions<\/code> \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u044b\u0447\u043d\u043e\u0435 JavaScript \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c <code>package.json<\/code> \u0438 \u043d\u0430\u0431\u043e\u0440 <code>js<\/code> \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0438 \u0434\u0430\u0436\u0435 \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0435 \u043d\u0430\u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 <code>ms-vsliveshare.vsliveshare-audio-0.1.93<\/code><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b2c\/e63\/7fe\/b2ce637fee53833878f04dc480db3e16.png\" alt=\"\u0424\u0430\u0439\u043b\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Microsoft Live Share Audio\" title=\"\u0424\u0430\u0439\u043b\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Microsoft Live Share Audio\" width=\"2000\" height=\"3871\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b2c\/e63\/7fe\/b2ce637fee53833878f04dc480db3e16.png\"\/><\/p>\n<div><figcaption>\u0424\u0430\u0439\u043b\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Microsoft Live Share Audio<\/figcaption><\/div>\n<\/figure>\n<details class=\"spoiler\">\n<summary>\u041a\u0430\u043a \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 VS Code \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u2014 \u0432\u0441\u0451 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u0441 \u043d\u0443\u0436\u043d\u044b\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c \u0432 Vs Code, \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442\u0435 F5 \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u201cVS Code Extension Development\u201d \u2014 \u0433\u043e\u0442\u043e\u0432\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/872\/ca4\/d7e\/872ca4d7e519aff96049cb2155625e5d.png\" width=\"2000\" height=\"541\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/872\/ca4\/d7e\/872ca4d7e519aff96049cb2155625e5d.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b8c\/6c4\/fb0\/b8c6c4fb06ff1f552d7a6a6b9f923faf.png\" width=\"2000\" height=\"1329\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b8c\/6c4\/fb0\/b8c6c4fb06ff1f552d7a6a6b9f923faf.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0435\u0431\u0430\u0436\u0438\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438, \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 electron \u0434\u043b\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Skype API. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b ExternalAppCallingService \u2014 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/25c\/e3a\/5be\/25ce3a5bef7d50498def6bac25a5a518.png\" alt=\"\u0424\u0430\u0439\u043b externallAppCallingService, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430\" title=\"\u0424\u0430\u0439\u043b externallAppCallingService, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430\" width=\"2000\" height=\"854\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/25c\/e3a\/5be\/25ce3a5bef7d50498def6bac25a5a518.png\"\/><\/p>\n<div><figcaption>\u0424\u0430\u0439\u043b externallAppCallingService, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430<\/figcaption><\/div>\n<\/figure>\n<ol>\n<li>\n<p><code>.\/out\/calling\/externalApp\/dist<\/code> \u2014 \u043f\u0443\u0442\u044c \u043a \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u044b\u0435 \u0437\u0432\u043e\u043d\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 VS Code, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 NodeJS \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u041d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u043a\u0430\u043a NodeJS \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/github.com\/Microsoft\/vscode\/issues\/3011#issuecomment-184577502\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0442 \u0432 \u044d\u0442\u043e\u043c \u0438\u0448\u044c\u044e<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c <code>electron<\/code> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 vscode \u2014 <strong>\u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e.<\/strong> \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043c\u0443\u0437\u044b\u043a\u0443, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u0438\u0437 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430 (VS Code \u0442\u043e\u0442 \u0436\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e71\/730\/a26\/e71730a264800b97aa6abc686a555424.png\" width=\"2000\" height=\"304\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e71\/730\/a26\/e71730a264800b97aa6abc686a555424.png\"\/><\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043d\u043e \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0435\u0449\u0451 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f.<\/p>\n<p><a class=\"anchor\" name=\"electron-architecture\" id=\"electron-architecture\"><\/a><\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 Electron<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0443\u043c\u0435\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u2014 \u043a\u0440\u0443\u0442\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u0440\u0435\u043a\u0438, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0435\u0433\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443.<\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 2-\u0445 \u0447\u0430\u0441\u0442\u0435\u0439:<\/p>\n<ul>\n<li>\n<p>main \u2014 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c\u0443 API<\/p>\n<\/li>\n<li>\n<p>renderer \u2014 \u0447\u0430\u0441\u0442\u044c \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u0441\u044f web-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/74e\/b3a\/c67\/74eb3ac67084b603dfacf40cc76df62a.png\" alt=\"\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 Electron\" title=\"\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 Electron\" width=\"2000\" height=\"1789\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/74e\/b3a\/c67\/74eb3ac67084b603dfacf40cc76df62a.png\"\/><\/p>\n<div><figcaption>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 Electron<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u044d\u0442\u0438 \u0447\u0430\u0441\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0436\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 (inter process communication (IPC) channels) \u2014 <a href=\"https:\/\/www.electronjs.org\/docs\/latest\/api\/ipc-main\" rel=\"noopener noreferrer nofollow\">ipcMain<\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/www.electronjs.org\/docs\/latest\/api\/ipc-renderer\" rel=\"noopener noreferrer nofollow\">ipcRenderer<\/a>. \u041f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 main-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c ipcMain<\/p>\n<\/li>\n<li>\n<p>\u0410 \u0432\u043d\u0443\u0442\u0440\u0438 renderer-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u2014 ipcRenderer (\u043b\u0438\u0431\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u2014 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e, \u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/www.electronjs.org\/docs\/latest\/tutorial\/ipc#2-expose-ipcrenderersend-via-preload\" rel=\"noopener noreferrer nofollow\">contextBridge<\/a> \u2014 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e)<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0431\u0430 \u043a\u0430\u043d\u0430\u043b\u0430 \u043c\u043e\u0433\u0443\u0442 \u043a\u0430\u043a \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c, \u0442\u0430\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 Electron \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/www.electronjs.org\/docs\/latest\/tutorial\/process-model\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c<\/a>, \u0430 \u043e <a href=\"https:\/\/www.electronjs.org\/docs\/latest\/tutorial\/ipc\" rel=\"noopener noreferrer nofollow\">IPC-\u043a\u0430\u043d\u0430\u043b\u0430\u0445 \u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"play-track\" id=\"play-track\"><\/a><\/p>\n<h3>\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u0430<\/h3>\n<p>\u0414\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0435 <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/HTMLAudioElement\/Audio\" rel=\"noopener noreferrer nofollow\">Audio-API<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e. \u0421\u0430\u043c\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u2014 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0442\u0440\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438, \u043e\u0442 VS Code \u0432 Renderer-\u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430. \u041f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0439\u043b\u043e\u0430\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0438\u043f\u0430:<\/p>\n<pre><code class=\"typescript\">export interface IPlayPayload {   url: string;   title: string;   artist: string;   album: string;   coverUri: string;   autoPlay: boolean; }<\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u2014 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443, \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u043b\u0438\u0448\u044c \u0437\u0435\u043b\u0451\u043d\u044b\u0435 \u0441\u0442\u0440\u0435\u043b\u043a\u0438, \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432 VS Code extension \u21d2 Store.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a27\/79f\/585\/a2779f585b2d67eb886bb94f44e14124.png\" alt=\"\u0421\u0445\u0435\u043c\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u043a\u0430\" title=\"\u0421\u0445\u0435\u043c\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u043a\u0430\" width=\"2000\" height=\"1705\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a27\/79f\/585\/a2779f585b2d67eb886bb94f44e14124.png\"\/><\/p>\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u043a\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0441\u0451 \u0435\u0449\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439, \u0442\u0440\u0435\u043a, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u0442\u044c \u0446\u0435\u043b\u044b\u0439 \u043a\u0440\u0443\u0433:<\/p>\n<ul>\n<li>\n<p>\u041e\u0442 Audio \u0434\u043e Store, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u043e\u0432\u0435\u0441\u0442\u0438\u0442\u044c Store, \u0447\u0442\u043e \u0442\u0440\u0435\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442 Store \u0434\u043e Audio, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u0440\u0435\u043a<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 VS Code extension \u0434\u043e Electron Process \u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0445 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432 JSON, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c JavaScript \u043e\u0431\u044a\u0435\u043a\u0442\u044b.<\/p>\n<pre><code class=\"typescript\">play(trackinfo?: IPlayPayload) {     this.childProcess?.send(JSON.stringify({       command: \"play\",       payload: trackinfo     }));   }<\/code><\/pre>\n<p><a class=\"anchor\" name=\"download-electron\" id=\"download-electron\"><\/a><\/p>\n<h3>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 Electron \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435<\/h3>\n<p>\u041a\u0430\u0436\u0435\u0442\u0441\u044f \u043c\u043e\u0436\u043d\u043e \u0443\u0436\u0435 \u0440\u0430\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0432\u0441\u0451 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442\u0440\u0435\u043a\u0438 \u043a\u0440\u0443\u0442\u044f\u0442\u0441\u044f, \u0430 \u0437\u0432\u0451\u0437\u0434\u044b \u043d\u0430 <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-extension\" rel=\"noopener noreferrer nofollow\">\u0433\u0438\u0442\u0445\u0430\u0431\u0435 \u043c\u0443\u0442\u044f\u0442\u0441\u044f<\/a> (\u043d\u0435\u0442!), \u043d\u043e \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-extension\/issues\/14\" rel=\"noopener noreferrer nofollow\">\u0438\u0448\u044c\u044e \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 \u0434\u043b\u044f \u043c\u0430\u043a\u0430 \u0438 \u043b\u0438\u043d\u0443\u043a\u0441\u0430<\/a>.<\/p>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b electron, \u043a\u0430\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0438 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0445\u043e\u0440\u043e\u0448\u043e. \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u0443\u0436\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 npm \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0430 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 \u0432\u0438\u043d\u0434\u0435 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0432\u0438\u043d\u0434\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043d\u043e\u0432\u0430 \u043f\u043e\u043a\u043e\u043f\u0430\u0432\u0448\u0438\u0441\u044c \u0432 Live Share Audio, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 c\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/194\/3d7\/8f1\/1943d78f15be2d7de98e1bcaf20b5f5f.png\" width=\"2000\" height=\"1285\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/194\/3d7\/8f1\/1943d78f15be2d7de98e1bcaf20b5f5f.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/53b\/f5e\/052\/53bf5e052a1ac7786f09f477bc665fda.png\" width=\"2000\" height=\"1162\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53b\/f5e\/052\/53bf5e052a1ac7786f09f477bc665fda.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b36\/091\/d85\/b36091d8511ab6a726e5de1a07701852.png\" width=\"2000\" height=\"1023\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b36\/091\/d85\/b36091d8511ab6a726e5de1a07701852.png\"\/><\/figure>\n<p>\u041c\u043d\u0435 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0445\u043e\u0441\u0442\u0438\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u0434\u043b\u044f \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 Live Share Audio, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c.<\/p>\n<\/div>\n<\/details>\n<p>\u041c\u043d\u0435 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0445\u043e\u0441\u0442\u0438\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u0434\u043b\u044f \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 Live Share Audio, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 electron \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435, \u0442\u043e \u043a\u043e\u0434 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u0432 \u0438\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043f\u0430\u0432\u0448\u0438\u0441\u044c, \u044f \u043d\u0430\u0448\u0451\u043b \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/github.com\/electron\/get\" rel=\"noopener noreferrer nofollow\">electron\/get<\/a> \u2014 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u0422\u0430\u043a\u0436\u0435 \u044f \u043d\u0430\u0448\u0451\u043b <a href=\"https:\/\/github.com\/electron\/electron\/blob\/9c48992e21c64f25391b7057c85f35a61ba5ff08\/npm\/install.js\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0443\u0436\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0430 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"result\" id=\"result\"><\/a><\/p>\n<h2>\u0418\u0442\u043e\u0433<\/h2>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451. \u0421\u043f\u0430\u0441\u0438\u0431\u043e, \u0435\u0441\u043b\u0438 \u0441\u043c\u043e\u0433\u043b\u0438 \u0434\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0446\u0430, \u044f \u0434\u0443\u043c\u0430\u044e \u0442\u0430\u043a\u0438\u0445 \u043d\u0435 \u043c\u043d\u043e\u0433\u043e, \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u0438\u043d\u043d\u043e\u0439. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043b\u0438\u0447\u043a\u0443 \u0438\u043b\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445. \u0411\u0443\u0434\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u0435\u043d, \u0435\u0441\u043b\u0438 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043b\u044e\u0431\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c:<\/p>\n<ul>\n<li>\n<p>\u0418\u0434\u0435\u044f\u043c\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u043b\u0438 \u0432 <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-extension\/issues\" rel=\"noopener noreferrer nofollow\">\u0438\u0448\u044c\u044e \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/acherkashin\/yandex-music-extension\/\" rel=\"noopener noreferrer nofollow\">\u0417\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u0430\u043c\u0438 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=acherkashin.yandex-music-extension&amp;ssr=false#review-details\" rel=\"noopener noreferrer nofollow\">\u041e\u0442\u0437\u044b\u0432\u0430\u043c\u0438 \u0432 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439<\/a><\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u043e\u0439 \u043d\u0430 <a href=\"https:\/\/t.me\/cherkashindev\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0439 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c \u043a\u0430\u043d\u0430\u043b<\/a>, \u0433\u0434\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/725460\/\"> https:\/\/habr.com\/ru\/articles\/725460\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u043f\u0435\u0441\u043d\u0438 \u043d\u0430 \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0435, \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u043b\u044e\u0431\u0438\u043c\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u042d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u043c\u0435\u0447\u0442\u0430, \u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0443 \u0432 Visual Studio Code \u0438 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043b\u044e\u0431\u0438\u043c\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u043f\u0440\u044f\u043c\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<ul>\n<li>\n<p><a href=\"#overview\" rel=\"noopener noreferrer nofollow\">\u041e\u0431\u0437\u043e\u0440 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#yandex-music-api\" rel=\"noopener noreferrer nofollow\">API \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#authorization\" rel=\"noopener noreferrer nofollow\">\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#playlists\" rel=\"noopener noreferrer nofollow\">\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#personal-playlists\" rel=\"noopener noreferrer nofollow\">\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#playlist-my-wave\" rel=\"noopener noreferrer nofollow\">\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u201c\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f\u201d<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#user-playlists\" rel=\"noopener noreferrer nofollow\">\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#radio\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0434\u0438\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#queues\" rel=\"noopener noreferrer nofollow\">\u041e\u0447\u0435\u0440\u0435\u0434\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#create-queue\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#get-current-playing-track\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0442\u0440\u0435\u043a\u0430<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#download-track\" rel=\"noopener noreferrer nofollow\">\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#swagger-anc-cors\" rel=\"noopener noreferrer nofollow\">Swagger \u0438 CORS<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#vs-code-extension\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 VS Code \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#base-components\" rel=\"noopener noreferrer nofollow\">\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#treeview\" rel=\"noopener noreferrer nofollow\">TreeView<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#confirm-dialog\" rel=\"noopener noreferrer nofollow\">\u0414\u0438\u0430\u043b\u043e\u0433 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#password-settings\" rel=\"noopener noreferrer nofollow\">\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#play-music\" rel=\"noopener noreferrer nofollow\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0443\u0437\u044b\u043a\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#background\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#live-share-audio\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c Microsoft Live Share Audio<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#electron-architecture\" rel=\"noopener noreferrer nofollow\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 Electron<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#play-track\" rel=\"noopener noreferrer nofollow\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#download-electron\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 Electron \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#result\" rel=\"noopener noreferrer nofollow\">\u0418\u0442\u043e\u0433<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"overview\" id=\"overview\"><\/a><\/p>\n<h2>\u041e\u0431\u0437\u043e\u0440 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/h2>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043a\u0440\u0430\u0435\u043c \u0433\u043b\u0430\u0437\u0430 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=acherkashin.yandex-music-extension\" rel=\"noopener noreferrer nofollow\">\u0441\u0430\u043c\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435<\/a> \u0438 \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u042f \u0434\u0443\u043c\u0430\u044e, \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043b\u0435\u0432\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u0447\u0451\u0442\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438. \u0417\u0434\u0435\u0441\u044c \u0432\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/p>\n<\/li>\n<li>\n<p>\u0438 \u0432\u0430\u0448\u0438 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u043f\u0435\u0441\u043d\u0438 \u0438 \u043f\u043e\u0434\u043a\u0430\u0441\u0442\u044b<\/p>\n<\/li>\n<li>\n<p>\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>\u0438 \u043f\u043e\u0438\u0441\u043a<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442, \u043d\u043e \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0438 \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0435\u0449\u0451 \u0447\u0435\u0433\u043e-\u0442\u043e \u2014 <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-extension\/issues\/new\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u0439\u0442\u0435 \u0437\u043d\u0430\u0442\u044c<\/a> ?).<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u2014 \u043b\u0438\u0448\u044c \u0443\u0440\u0435\u0437\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u042f.\u041c\u0443\u0437\u044b\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u0442\u0440\u0435\u043a\u0443, \u0430\u043b\u044c\u0431\u043e\u043c\u0443 \u0438\u043b\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043a\u0438 \u201c\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435\u201d.<\/p>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0443 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u0438, \u044d\u0442\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0440\u0430\u0437\u0431\u043e\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0430 \u043d\u0435 \u0434\u0435\u043c\u043e. \u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0431\u043b\u0438\u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u2014 <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=acherkashin.yandex-music-extension\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u0430\u043a \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e \u0442\u043e\u043a\u0435\u043d\u0443<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e \u043b\u043e\u0433\u0438\u043d\u0443 \u0438 \u043f\u0430\u0440\u043e\u043b\u044e<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u043f\u043e\u0441\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a? \u042f\u043d\u0434\u0435\u043a\u0441 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e \u043b\u043e\u0433\u0438\u043d\u0443 \u0438 \u043f\u0430\u0440\u043e\u043b\u044e, \u0432\u0435\u0434\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439, \u0438 \u0432\u0441\u0451 \u043c\u0435\u043d\u044c\u0448\u0435 \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0432\u0432\u0435\u043b\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0432\u0438\u0434\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443, \u0442\u043e \u0432\u0430\u043c \u0441\u0442\u043e\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u0432\u0445\u043e\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u043e\u043a\u0435\u043d\u0430.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041e\u0448\u0438\u0431\u043a\u0430, \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e \u043b\u043e\u0433\u0438\u043d\u0443 \u0438 \u043f\u0430\u0440\u043e\u043b\u044e<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 3 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d:<\/p>\n<ol>\n<li>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f <\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/chrome.google.com\/webstore\/detail\/yandex-music-token\/lcbjeookjibfhjjopieifgjnhlegmkib\" rel=\"noopener noreferrer nofollow\">\u0414\u043b\u044f Google Chrome<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/yandex-music-token\/\" rel=\"noopener noreferrer nofollow\">\u0414\u043b\u044f Firefox<\/a><\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/github.com\/MarshalX\/yandex-music-token\/tree\/main\/android-app\" rel=\"noopener noreferrer nofollow\">Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/a>. \u041e\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 SDK \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0434\u043b\u044f \u0430\u043d\u0434\u0440\u043e\u0438\u0434\u0430.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/MarshalX\/yandex-music-api\/discussions\/513#discussioncomment-2729781\" rel=\"noopener noreferrer nofollow\">\u0412\u0440\u0443\u0447\u043d\u0443\u044e<\/a>, \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0442\u043e\u043a\u0435\u043d \u0438\u0437 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0431\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0442\u043e\u043a\u0435\u043d \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0436\u0435 \u0431\u044b\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0432 \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0435. \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0432\u0441\u0435\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u043e\u0431\u0440\u0430\u043d\u044b <a href=\"https:\/\/github.com\/MarshalX\/yandex-music-token\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a> (<a href=\"https:\/\/t.me\/MarshalX\" rel=\"noopener noreferrer nofollow\">\u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0418\u043b\u044c\u0435<\/a>, \u0447\u0442\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0441\u043e\u0431\u0440\u0430\u043b \u0432\u043c\u0435\u0441\u0442\u0435).<\/p>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 <a href=\"https:\/\/chrome.google.com\/webstore\/detail\/yandex-music-token\/lcbjeookjibfhjjopieifgjnhlegmkib\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0425\u0440\u043e\u043c\u0430<\/a>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0433\u043e \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u201c\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u201d.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0425\u0440\u043e\u043c\u0430, \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 3-\u0445 \u0447\u0430\u0441\u0442\u0435\u0439:<\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 API \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 VS Code \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0435\u0435 \u0442\u0440\u0435\u043a\u0438 \u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/p>\n<\/li>\n<li>\n<p>\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Electron<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"yandex-music-api\" id=\"yandex-music-api\"><\/a><\/p>\n<h2>API \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438<\/h2>\n<p>\u042f \u0434\u0443\u043c\u0430\u044e \u0431\u0443\u0434\u0435\u0442 \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u0441 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0432\u0435\u0449\u0438, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u043b\u043e \u0431\u044b \u0441\u0432\u0435\u0442 \u2014 \u0441 API. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u043d\u044e, \u043d\u043e \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u043e \u0431\u044b\u043b\u043e \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0433\u0443\u0433\u043b\u0438\u043b, \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 API<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/yandex\/audio-js\/issues\/4\" rel=\"noopener noreferrer nofollow\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e API \u043d\u0435\u0442<\/a>, \u043d\u0430\u0448\u0451\u043b <a href=\"https:\/\/github.com\/itsmepetrov\/yandex-music-api\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 API<\/a><\/p>\n<\/li>\n<li>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0437\u0430\u0431\u0440\u043e\u0448\u0435\u043d\u0430, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0432 \u043d\u0435\u0439 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u043d\u0435 \u043c\u0435\u0442\u043e\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0442\u044b\u043a\u0430\u044e\u0441\u044c \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u201c<a href=\"https:\/\/habr.com\/ru\/post\/462607\/\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u00ab\u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0430\u00bb \u043f\u0438\u0441\u0430\u043b\u201d<\/a> \u0438 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/MarshalX\/yandex-music-api\" rel=\"noopener noreferrer nofollow\">\u043d\u0430 \u043f\u0438\u0442\u043e\u043d\u0435<\/a> (\u0418\u043b\u044c\u044f, \u0435\u0441\u043b\u0438 \u0442\u044b \u0447\u0438\u0442\u0430\u0435\u0448\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u2014 \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0442\u0435\u0431\u0435, \u044f \u043d\u0435 \u0437\u0430\u0431\u044b\u043b \u043f\u0440\u043e \u0442\u0435\u0431\u044f!).<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u044e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442 \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/www.ieinspector.com\/httpanalyzer\/\" rel=\"noopener noreferrer nofollow\">HTTP Analyzer<\/a> \u0438 \u0432\u0438\u043d\u0434\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0438\u0448\u0443 <a href=\"https:\/\/github.com\/acherkashin\/yandex-music-open-api\" rel=\"noopener noreferrer nofollow\">OpenAPI \u0441\u0445\u0435\u043c\u0443<\/a><\/p>\n<\/li>\n<li>\n<p>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e <a href=\"https:\/\/t.me\/cherkashindev\/75\" rel=\"noopener noreferrer nofollow\">JavaScript-\u043a\u043b\u0438\u0435\u043d\u0442 yandex-music-client \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 OpenAPI \u0441\u0445\u0435\u043c\u044b<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u043d\u0430\u0434 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f, \u0438 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u2014 \u044f \u043d\u0430\u043f\u0438\u0448\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b.<\/p>\n<p><a class=\"anchor\" name=\"authorization\" id=\"authorization\"><\/a><\/p>\n<h3>\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 API \u2014 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f. \u0412\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u0438\u043b\u0438 \u0436\u0435 \u0432\u0430\u0448\u0438 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u0442\u0440\u0435\u043a\u0438, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0442\u043e\u043a\u0435\u043d\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0445\u043e\u0434 \u043f\u043e \u043b\u043e\u0433\u0438\u043d\u0443 \u0438 \u043f\u0430\u0440\u043e\u043b\u044e \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043c\u0435\u0442\u043e\u0434 <code>getToken<\/code> \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435, \u0438\u043d\u0430\u0447\u0435 \u2014 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0442\u043e\u043a\u0435\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/chrome.google.com\/webstore\/detail\/yandex-music-token\/lcbjeookjibfhjjopieifgjnhlegmkib\" rel=\"noopener noreferrer nofollow\">Google Chrome Extension<\/a>.<\/p>\n<pre><code class=\"typescript\">import { getToken } from 'yandex-music-client\/token'; import { YandexMusicClient } from 'yandex-music-client\/YandexMusicClient'  \/\/ \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \/\/ \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 Google Chrome Extension: \/\/ https:\/\/chrome.google.com\/webstore\/detail\/yandex-music-token\/lcbjeookjibfhjjopieifgjnhlegmkib const token = await getToken('your email', 'your password');  const client = new YandexMusicClient({     BASE: \"https:\/\/api.music.yandex.net:443\",     HEADERS: {         'Authorization': `OAuth ${config.token}`,     }, });<\/code><\/pre>\n<p><a class=\"anchor\" name=\"playlists\" id=\"playlists\"><\/a><\/p>\n<h3>\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/h3>\n<p><a class=\"anchor\" name=\"personal-playlists\" id=\"personal-playlists\"><\/a><\/p>\n<h4>\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b<\/h4>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 <code>client.landing.getLandingBlocks<\/code> (GET <code>\/landing3<\/code>)<\/p>\n<p>\u0415\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043b\u0435\u043d\u0434\u0438\u043d\u0433 \u0431\u043b\u043e\u043a\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u201c\u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u0434\u043d\u044f\u201d,  \u201c\u0434\u0435\u0436\u0430\u0432\u044e\u201d, \u201c\u043f\u0440\u0435\u043c\u044c\u0435\u0440\u0430\u201d \u0438 \u0442.\u0434. \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0431\u043b\u043e\u043a \u0442\u0438\u043f\u0430 <em>personalplaylists<\/em> \u2014 <code>client.landing.getLandingBlocks(\"personalplaylists\")<\/code><\/p>\n<\/li>\n<li>\n<p>\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u0441 \u043d\u043e\u0432\u0438\u043d\u043a\u0430\u043c\u0438 \u2014 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a <em>new-releases<\/em><\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0440\u0442 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438 \u2014 <em>chart<\/em><\/p>\n<\/li>\n<li>\n<p>\u041d\u043e\u0432\u044b\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u2014 <em>new-playlists<\/em><\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u043a\u0430\u0441\u0442\u044b \u2014 <em>podcasts<\/em><\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u2014  <em>promotions<\/em><\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043b\u043e\u043a\u043e\u0432, \u0443\u043a\u0430\u0437\u0430\u0432 \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e:<\/p>\n<pre><code class=\"typescript\">client.landing.getLandingBlocks(   \"personalplaylists,promotions,new-releases,new-playlists,podcasts\" )<\/code><\/pre>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0417\u0430\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043b\u0435\u043d\u0434\u0438\u043d\u0433 \u0431\u043b\u043e\u043a\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"playlist-my-wave\" id=\"playlist-my-wave\"><\/a><\/p>\n<h4>\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u201c\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f\u201d<\/h4>\n<p>\u0412\u0441\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0442\u0440\u0435\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0432 2 \u0437\u0430\u0445\u043e\u0434\u0430:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u0442\u0440\u0435\u043a\u043e\u0432 \u2014 (GET <code>\/users\/{userId}\/likes\/tracks<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u043e\u0432 \u043f\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c \u2014 (POST <code>\/tracks<\/code>). \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0430 \u201c&lt;trackId>:&lt;albumId>\u201d.<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"typescript\">const result = await client.tracks.getLikedTracksIds(userId); const ids = result.result.library.tracks.map(track => `${track.id}:${track.albumId}`); const tracks = await client.tracks.getTracks({ \"track-ids\": ids });<\/code><\/pre>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c 2 \u0437\u0430\u043f\u0440\u043e\u0441\u0430? \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b \u043d\u0430\u043b\u0430\u0439\u043a\u0430\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u044b\u0441\u044f\u0447 \u0442\u0440\u0435\u043a\u043e\u0432 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u0445 \u0432\u0441\u0435 \u043e\u0434\u043d\u0438\u043c \u043c\u0430\u0445\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0436\u0438\u0440\u043d\u043e. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044e \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u0440\u0435\u043a\u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e.<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u041b\u0430\u0439\u043a\u043d\u0443\u0442\u044c \u0442\u0440\u0435\u043a \u2014 <code>client.tracks.likeTracks<\/code> (POST <code>\/users\/{userId}\/likes\/tracks\/add-multiple<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0423\u0431\u0440\u0430\u0442\u044c \u043b\u0430\u0439\u043a \u2014 <code>client.tracks.removeLikedTracks<\/code> (POST <code>\/users\/{userId}\/likes\/tracks\/remove<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0442\u0440\u0435\u043a\u043e\u0432 \u0441 \u0434\u0438\u0437\u043b\u0430\u0439\u043a\u0430\u043c\u0438 \u2014  <code>client.tracks.getDislikedTracksIds<\/code> (GET <code>\/users\/{userId}\/likes\/tracks\/remove<\/code>)<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"user-playlists\" id=\"user-playlists\"><\/a><\/p>\n<h4>\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/h4>\n<p>\u0422\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u2014 <code>client.playlists.createPlaylist<\/code> (POST <code>\/users\/{userId}\/playlists\/create<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u2014 <code>client.playlists.renamePlaylist<\/code> (POST <code>\/users\/{userId}\/playlists\/{kind}\/name<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u2014 <code>client.playlists.deletePlaylist<\/code> (POST <code>\/users\/{userId}\/playlists\/{kind}\/delete<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c\/\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0440\u0435\u043a\u0438 \u0438\u0437 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u2014 <code>client.playlists.changePlaylistTracks<\/code> (POST <code>\/users\/{userId}\/playlists\/{kind}\/change-relative<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u2014 <code>client.playlists.getPlayLists<\/code> (GET <code>\/users\/{userId}\/playlists\/list<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u043f\u043e \u043f\u043e\u043b\u044e <code>kind<\/code> (\u0442\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u0430\u0439\u0434\u0438\u0448\u043a\u0438) \u2014  <code>client.playlists.getPlaylistById(userId, playlistKind)<\/code> (GET <code>\/users\/{userId}\/playlists\/{kind}<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e <code>kind<\/code>, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0440\u0435\u043a\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c <code>rich-tracks<\/code>  \u043a\u0430\u043a <code>true<\/code> \u2014 <code>client.playlists.getUserPlaylistsByIds<\/code> (GET <code>\/users\/{userId}\/playlists<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u043f\u043e <code>kind<\/code> \u2014 <code>client.playlists.getPlaylistById<\/code> (GET <code>\/users\/{userId}\/playlists\/{kind}<\/code>)<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"radio\" id=\"radio\"><\/a><\/p>\n<h3>\u0420\u0430\u0434\u0438\u043e<\/h3>\n<p>\u041c\u0435\u0442\u043e\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0430\u0434\u0438\u043e:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u2014 <code>client.rotor.getStationInfo<\/code> (GET <code>\/rotor\/station\/{stationId}\/info<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0440\u0435\u043a\u0438 \u0434\u043b\u044f \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u2014 <code>client.rotor.getStationTracks<\/code> (GET <code>\/rotor\/station\/{stationId}\/tracks<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043a\u0430 \u0440\u0430\u0434\u0438\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0439 \u2014 <code>client.rotor.getStationsList<\/code> (GET <code>\/rotor\/stations\/list<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u0446\u0438\u0439 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u2014 <code>client.rotor.getRotorStationsDashboard<\/code> (GET <code>\/rotor\/stations\/dashboard<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0444\u0438\u0434\u0431\u044d\u043a \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445 \u0441\u0442\u0430\u043d\u0446\u0438\u0438. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0434\u0438\u043e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f\/\u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f\/\u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0442\u0440\u0435\u043a \u2014 (GET <code>\/rotor\/station\/{stationId}\/feedback<\/code>)<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u043b \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0442\u043e \u0441 \u0440\u0430\u0434\u0438\u043e \u0432\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u0422\u0443\u0442 \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043f\u043e\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u0415\u0441\u043b\u0438 \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043c HTTP Analyzer, \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0440\u0430\u0434\u0438\u043e \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0438\u043d\u0434\u043e\u0432\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u042f.\u041c\u0443\u0437\u044b\u043a\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u201c\u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430\u201d \u2014 <code>user:anyourwave<\/code>) \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041d\u0430\u0431\u043e\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u0440\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0440\u0430\u0434\u0438\u043e \u201c\u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430\u201d<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0441\u0451 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443. \u0421\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0438 \u043a\u0430\u043a \u043e\u0434\u043d\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043e\u0442\u0432\u0435\u0442\u044b \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0440\u0430\u0434\u0438\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0432\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0434\u0438\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0431\u0435\u0437 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u0438\u0434\u0431\u0435\u043a\u0430, \u0447\u0442\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442 \u043b\u043e\u0433\u0438\u043a\u0443. \u041d\u043e \u043c\u044b <a href=\"https:\/\/t.me\/yandex_music_api\/31558\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442 \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438<\/a> \u0438 \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0444\u0438\u0434\u0431\u0435\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u0438 \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u0430 \u0442\u0440\u0435\u043a\u043e\u0432 \u0432 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430\u0445.<\/p>\n<p>\u0412 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u043f\u043e\u043a\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0440\u0430\u0434\u0438\u043e \u2014 \u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430 (<a href=\"https:\/\/github.com\/acherkashin\/yandex-music-extension\/blob\/master\/src\/store.ts#L181\" rel=\"noopener noreferrer nofollow\">\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0442\u0443\u0442<\/a>).<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0430\u0434\u0438\u043e \u201c\u041c\u043e\u044f \u0432\u043e\u043b\u043d\u0430\u201d \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0434\u043b\u044f VS Code<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"queues\" id=\"queues\"><\/a><\/p>\n<h3>\u041e\u0447\u0435\u0440\u0435\u0434\u0438<\/h3>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0447\u0430\u0441\u0442\u044b\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 <a href=\"https:\/\/t.me\/yandex_music_api\" rel=\"noopener noreferrer nofollow\">\u0447\u0430\u0442\u0435 \u043f\u043e \u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0443\u0437\u044b\u043a\u0435<\/a> \u2014 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0440\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0433\u0440\u0430\u0435\u0442 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u041c\u044b \u0443\u0436\u0435 \u0448\u0443\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0442 GPT, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u043b \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u043d\u043e \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e <a href=\"https:\/\/t.me\/yandex_music_api\/32053\" rel=\"noopener noreferrer nofollow\">\u043e\u043d \u043d\u0430\u0447\u0430\u043b \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b<\/a>. \u0422\u0430\u043a \u0432\u043e\u0442 \u2014 <strong>\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0442\u0440\u0435\u043a<\/strong> \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439.<\/p>\n<p><a class=\"anchor\" name=\"create-queue\" id=\"create-queue\"><\/a><\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438<\/h4>\n<p>\u041e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430, \u0430\u043b\u044c\u0431\u043e\u043c\u0430 \u0438\u043b\u0438 \u0440\u0430\u0434\u0438\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0442\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u0430.<\/p>\n<ol>\n<li>\n<p>\u041f<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-396007","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/396007","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=396007"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/396007\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=396007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=396007"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=396007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}