{"id":210742,"date":"2014-01-30T23:42:03","date_gmt":"2014-01-30T19:42:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=210742"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=210742","title":{"rendered":"<span class=\"post_title\">\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Chromecast?<\/span>"},"content":{"rendered":"<div class=\"content html_format\">\n<h5>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u0417\u0430\u0433\u043e\u0440\u0435\u043b\u0441\u044f \u044f \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432\u0438\u0434\u0435\u043e. \u0421\u043c\u043e\u0442\u0440\u0435\u043b \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b \u0441 Miracast\/DLNA \u0438, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435 \u043e\u0431\u043e\u0448\u0435\u043b \u043c\u0435\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u0438 Chromecast. \u0415\u0441\u043b\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438, \u043a\u0430\u043a WiDi, Miracast \u0438 \u0434\u043e\u043d\u0433\u043b\u0430\u043c\u0438 \u0432\u0440\u043e\u0434\u0435 AIRTAME \u0432\u0441\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e (\u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u043e\u0444\u0442\u0430, \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043a\u0430\u043a \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043c\u043e\u043d\u0438\u0442\u043e\u0440), \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d Chromecast \u0432\u043d\u0443\u0442\u0440\u0438 \u044f \u043d\u0435 \u0431\u044b\u043b \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0443\u0432\u0435\u0440\u0435\u043d, \u043a\u0430\u043a \u0438 \u043d\u0435 \u0431\u044b\u043b \u0443\u0432\u0435\u0440\u0435\u043d, \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043b\u0438 \u043e\u043d \u043c\u043d\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043d\u0430\u0448\u0435\u043b open-source \u043f\u0440\u043e\u0435\u043a\u0442 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 Chromecast <a href=\"https:\/\/github.com\/dz0ny\/leapcast\">LeapCast<\/a>, \u0438 \u0440\u0435\u0448\u0438\u043b \u0435\u0433\u043e \u0438\u0441\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0442\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b.<\/p>\n<h5>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/h5>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0430 ArchLinux \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/aur.archlinux.org\/packages\/leapcast-git\/\">leapcast-git<\/a> \u0438\u0437 AUR. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0449\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Google Chrome \u0438\u043b\u0438 Chromium, \u0442.\u043a. \u0435\u0433\u043e \u043d\u0435\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u0445.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0438 \u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>INFO:root:Starting SSDP server INFO:root:Starting LEAP server INFO:root:Loading Config-JSON from Google-Server INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): clients3.google.com INFO:root:Parsing Config-JSON INFO:root:Added edaded98-5119-4c8a-afc1-de722da03562 app INFO:root:Added PlayMovies app INFO:root:Added 00000000-0000-0000-0000-000000000000 app INFO:root:Added 1812335e-441c-4e1e-a61a-312ca1ead90e app INFO:root:Added 06ee44ee-e7e3-4249-83b6-f5d0b6f07f34 app INFO:root:Added 2be788b9-b7e0-4743-9069-ea876d97ac20 app INFO:root:Added GoogleSantaTracker app INFO:root:Added 06ee44ee-e7e3-4249-83b6-f5d0b6f07f34_1 app INFO:root:Added Pandora_App app INFO:root:Added aa35235e-a960-4402-a87e-807ae8b2ac79 app INFO:root:Added YouTube app INFO:root:Added HBO_App app INFO:root:Added TicTacToe app INFO:root:Added Revision3_App app INFO:root:Added Songza_App app INFO:root:Added a7f3283b-8034-4506-83e8-4e79ab1ad794_2 app WARNING:root:Didn't add Netflix because it has no URL! INFO:root:Added GoogleMusic app INFO:root:Added 18a8aeaa-8e3d-4c24-b05d-da68394a3476_1 app INFO:root:Added Post_TV_App app INFO:root:Added ChromeCast app INFO:root:Added Hulu_Plus app INFO:root:Added GoogleCastSampleApp app INFO:root:Added GoogleCastPlayer app INFO:root:Added Fling app<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043b\u044e\u0431\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0430\u043d\u0434\u0440\u043e\u0438\u0434-\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u0435 Chromecast (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, YouTube), \u0438 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a Leapcast:<br \/>  <a href=\"http:\/\/habr.habrastorage.org\/post_images\/ddd\/59a\/3bf\/ddd59a3bf5670567f6174408554ffadb.png\"><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/850\/f4a\/4a6\/850f4a4a6b126fc070c0c91d4c3862ea.jpg\" alt=\"image\"\/><\/a><br \/>  \u0412 \u044d\u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 \u043b\u043e\u0433\u0435:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>INFO:tornado.access:200 GET \/ssdp\/device-desc.xml (192.168.0.105) 2.22ms INFO:tornado.access:200 GET \/apps\/YouTube (192.168.0.105) 3.18ms INFO:tornado.access:200 GET \/apps\/YouTube (192.168.0.105) 3.67ms INFO:tornado.access:201 POST \/apps\/YouTube (192.168.0.105) 5.29ms INFO:root:Channel for app set to &lt;leapcast.services.websocket.ServiceChannel object at 0x195f690&gt;<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041e\u0433\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! \u041a\u0430\u043a \u0436\u0435 \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?<a name=\"habracut\"><\/a><\/p>\n<h5>\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b<\/h5>\n<p>  \u0414\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b <a href=\"http:\/\/www.dial-multiscreen.org\/\">DIAL<\/a> \u2014 \u043d\u0435\u043a\u0438\u0439 \u0441\u0438\u043c\u0431\u0438\u043e\u0437 SSDP \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 HTTP REST + XML \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. SSDP, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u043d\u0430\u043a\u043e\u043c \u0432\u0430\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 UPnP \u0438 DLNA, \u0430 REST-\u0447\u0430\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f.<\/p>\n<ol>\n<li>\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 LeapCast, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 Google \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 <a href=\"https:\/\/clients3.google.com\/cast\/chromecast\/device\/config\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 json<\/a>. \u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u044f\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: \u043f\u043e \u043a\u0430\u043a\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/li>\n<li>LeapCast \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u0443\u0435\u0442 \u0441\u0435\u0431\u044f \u043f\u043e SSDP.<\/li>\n<li>Android-\u043a\u043b\u0438\u0435\u043d\u0442 (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 YouTube) \u043d\u0430\u0445\u043e\u0434\u0438\u0442 LeapCast \u043f\u043e SSDP, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e \u043d\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (\u043e\u0431\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a <b>\/ssdp\/device-desc.xml<\/b>), \u0434\u0430\u043b\u0435\u0435 \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 YouTube (\u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044f <b>\/apps\/YouTube<\/b>), \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 YouTube, \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0443 \u043d\u0435\u0433\u043e pairing token, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e LeapCast \u0432 POST-\u0437\u0430\u043f\u0440\u043e\u0441\u0435 (\u043d\u0430 \u0432\u0441\u0435 \u0442\u043e\u0442 \u0436\u0435 <b>\/apps\/YouTube<\/b>).<\/li>\n<li>LeapCast \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 Chrome\/Chromium-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 <b><a href=\"https:\/\/www.youtube.com\/tv\">www.youtube.com\/tv<\/a>?${POST_DATA}<\/b><\/li>\n<li>\u0414\u0430\u043b\u0435\u0435, \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 Android \u0438 LeapCast \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b <a href=\"https:\/\/github.com\/dz0ny\/leapcast\/wiki\/RAMP-protocol\">RAMP<\/a> (Google \u0443\u0434\u0430\u043b\u0438\u043b \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430). \u041e\u043d \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 json-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 WebSocket.<\/li>\n<li>\u0414\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, Android \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 DELETE-\u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 Leapcast \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 URL<\/li>\n<\/ol>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 YouTube, \u043a\u0430\u043a \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, WebSocket \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 YouTube, \u043e\u0434\u043d\u0430\u043a\u043e, \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Google Music) \u0442\u0440\u0435\u0431\u0443\u044e\u0442 LeapCast \u0441\u043e\u0437\u0434\u0430\u0442\u044c WebSocket, \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0436\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u0448\u0435\u0439 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Chromecast, \u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u043e \u0432 Google (\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0437\u0430\u043f\u0438\u0441\u0438 \u043e \u043d\u0435\u043c \u0432 json \u043d\u0435\u0442), \u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u043c\u043e\u0433\u0443\u0442 \u0438\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0439\u0434\u044f \u0432 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u0435\u043c. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u043e.<\/p>\n<h5>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u0441 LeapCast \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c Python + Chrome \u0432 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 Chromecast, \u0435\u0441\u043b\u0438, \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043a\u0443\u043f\u0438\u0442\u044c \u0438 \u0442\u0430\u043a \u0434\u0435\u0448\u0435\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u0410 \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u043d\u0430\u0434\u0443\u043c\u0430\u043b \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u044c \u0435\u0433\u043e, \u0442.\u043a. \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Google, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/210742\/\"> http:\/\/habrahabr.ru\/post\/210742\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">\n<h5>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u0417\u0430\u0433\u043e\u0440\u0435\u043b\u0441\u044f \u044f \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432\u0438\u0434\u0435\u043e. \u0421\u043c\u043e\u0442\u0440\u0435\u043b \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b \u0441 Miracast\/DLNA \u0438, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435 \u043e\u0431\u043e\u0448\u0435\u043b \u043c\u0435\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u0438 Chromecast. \u0415\u0441\u043b\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438, \u043a\u0430\u043a WiDi, Miracast \u0438 \u0434\u043e\u043d\u0433\u043b\u0430\u043c\u0438 \u0432\u0440\u043e\u0434\u0435 AIRTAME \u0432\u0441\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e (\u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u043e\u0444\u0442\u0430, \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043a\u0430\u043a \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043c\u043e\u043d\u0438\u0442\u043e\u0440), \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d Chromecast \u0432\u043d\u0443\u0442\u0440\u0438 \u044f \u043d\u0435 \u0431\u044b\u043b \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0443\u0432\u0435\u0440\u0435\u043d, \u043a\u0430\u043a \u0438 \u043d\u0435 \u0431\u044b\u043b \u0443\u0432\u0435\u0440\u0435\u043d, \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043b\u0438 \u043e\u043d \u043c\u043d\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043d\u0430\u0448\u0435\u043b open-source \u043f\u0440\u043e\u0435\u043a\u0442 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 Chromecast <a href=\"https:\/\/github.com\/dz0ny\/leapcast\">LeapCast<\/a>, \u0438 \u0440\u0435\u0448\u0438\u043b \u0435\u0433\u043e \u0438\u0441\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0442\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b.<\/p>\n<h5>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/h5>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0430 ArchLinux \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/aur.archlinux.org\/packages\/leapcast-git\/\">leapcast-git<\/a> \u0438\u0437 AUR. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0449\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Google Chrome \u0438\u043b\u0438 Chromium, \u0442.\u043a. \u0435\u0433\u043e \u043d\u0435\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u0445.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0438 \u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>INFO:root:Starting SSDP server INFO:root:Starting LEAP server INFO:root:Loading Config-JSON from Google-Server INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): clients3.google.com INFO:root:Parsing Config-JSON INFO:root:Added edaded98-5119-4c8a-afc1-de722da03562 app INFO:root:Added PlayMovies app INFO:root:Added 00000000-0000-0000-0000-000000000000 app INFO:root:Added 1812335e-441c-4e1e-a61a-312ca1ead90e app INFO:root:Added 06ee44ee-e7e3-4249-83b6-f5d0b6f07f34 app INFO:root:Added 2be788b9-b7e0-4743-9069-ea876d97ac20 app INFO:root:Added GoogleSantaTracker app INFO:root:Added 06ee44ee-e7e3-4249-83b6-f5d0b6f07f34_1 app INFO:root:Added Pandora_App app INFO:root:Added aa35235e-a960-4402-a87e-807ae8b2ac79 app INFO:root:Added YouTube app INFO:root:Added HBO_App app INFO:root:Added TicTacToe app INFO:root:Added Revision3_App app INFO:root:Added Songza_App app INFO:root:Added a7f3283b-8034-4506-83e8-4e79ab1ad794_2 app WARNING:root:Didn't add Netflix because it has no URL! INFO:root:Added GoogleMusic app INFO:root:Added 18a8aeaa-8e3d-4c24-b05d-da68394a3476_1 app INFO:root:Added Post_TV_App app INFO:root:Added ChromeCast app INFO:root:Added Hulu_Plus app INFO:root:Added GoogleCastSampleApp app INFO:root:Added GoogleCastPlayer app INFO:root:Added Fling app<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043b\u044e\u0431\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0430\u043d\u0434\u0440\u043e\u0438\u0434-\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u0435 Chromecast (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, YouTube), \u0438 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a Leapcast:<br \/>  <a href=\"http:\/\/habr.habrastorage.org\/post_images\/ddd\/59a\/3bf\/ddd59a3bf5670567f6174408554ffadb.png\"><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/850\/f4a\/4a6\/850f4a4a6b126fc070c0c91d4c3862ea.jpg\" alt=\"image\"\/><\/a><br \/>  \u0412 \u044d\u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 \u043b\u043e\u0433\u0435:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>INFO:tornado.access:200 GET \/ssdp\/device-desc.xml (192.168.0.105) 2.22ms INFO:tornado.access:200 GET \/apps\/YouTube (192.168.0.105) 3.18ms INFO:tornado.access:200 GET \/apps\/YouTube (192.168.0.105) 3.67ms INFO:tornado.access:201 POST \/apps\/YouTube (192.168.0.105) 5.29ms INFO:root:Channel for app set to &lt;leapcast.services.websocket.ServiceChannel object at 0x195f690&gt;<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041e\u0433\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! \u041a\u0430\u043a \u0436\u0435 \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?<\/p>\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-210742","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/210742","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=210742"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/210742\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=210742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=210742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=210742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}