{"id":286060,"date":"2017-05-09T17:10:03","date_gmt":"2017-05-09T13:10:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=286060"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=286060","title":{"rendered":"\u041f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0430\u043f\u043e\u043a \u0441 Google Drive, \u043f\u043b\u044e\u0441 \u0443\u0447\u0438\u043c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Google Drive API"},"content":{"rendered":"<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/3c2\/3cd\/794\/3c23cd794b1c49198fee926f1e330a7b.jpg\"  width=\"60%\" height=\"60%\"\/><\/div>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Google Drive REST API, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u043c &quot;\u043f\u0440\u044f\u043c\u0443\u044e&quot; \u0438 &quot;\u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e&quot; \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0430\u043f\u043a\u0438 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435 \u0413\u0443\u0433\u043b \u0414\u0438\u0441\u043a\u0430, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043c \u043a\u0430\u043a\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Google Docs \u0447\u0435\u0440\u0435\u0437 API \u0414\u0438\u0441\u043a\u0430 \u0438 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0445 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e\u0431\u044b (\u043f\u043e\u0447\u0442\u0438) \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u043b. <\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"liricheskoe-vstuplenie\">\u041b\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u0436\u0434\u044b, \u043f\u0440\u043e\u0441\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u0440\u0430\u043d\u043d\u0438\u043c \u0443\u0442\u0440\u043e\u043c, \u044f \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 (\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438) \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438. \u041f\u0435\u0440\u0432\u043e\u0439 &quot;\u043f\u043e\u0434 \u043d\u043e\u0436 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438&quot; \u043f\u043e\u043f\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u043f\u0430\u043f\u043a\u0430 \u0441 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u043a\u043d\u0438\u0436\u043a\u0430\u043c\u0438, \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u0441\u043c\u0435\u0448\u043d\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0432. \u041e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u044f \u043c\u043e\u044f \u0431\u0443\u0440\u043d\u0430\u044f \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435 \u043f\u0440\u0435\u0434\u0435\u043b\u043e\u0432 \u0443\u044e\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u044b, \u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u0412 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0444\u043b\u0435\u0448\u043a\u0438, \u043d\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0432\u0435\u043a \u0438 \u043d\u0435 \u0441\u0442\u0438\u043b\u044c\u043d\u043e, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0437 \u043e\u0431\u043b\u0430\u043a\u0430 (\u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e). \u041a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 \u0413\u0443\u0433\u043b \u0414\u0438\u0441\u043a. <\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e-\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e-\u0442\u043e \u0443\u043b\u0435\u0442\u0430\u0435\u0442 \u0432 \u043a\u043e\u0440\u0437\u0438\u043d\u0443, \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u044d\u0442\u0438\u043c \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044f, \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f. \u041d\u0430 Windows \u0438 MacOS \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043e\u0444\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0446\u0435\u043b\u0435\u0439. \u042f \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0432\u043e\u0436\u0443 \u0437\u0430 Ubuntu, \u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u0434 \u043b\u0438\u043d\u0443\u043a\u0441 \u043d\u0435\u0442 \u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0438\u0442\u0441\u044f. \u0414\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u044d\u0442\u043e \u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u043c. \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439, \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u043a\u0438\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443. \u041f\u043e\u0438\u0441\u043a \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0438 \u043a \u0447\u0435\u043c\u0443 \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u043b, \u043d\u0438 \u043e\u0434\u0438\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435 \u0443\u0441\u0442\u0440\u043e\u0438\u043b. \u042f \u0440\u0435\u0448\u0438\u043b \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 Python \u0438 \u043f\u043e\u0432\u0435\u0441\u0438\u0442\u044c \u0435\u0433\u043e \u043a cron (\u0438\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e). \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u043f\u0440\u0438 \u0431\u0435\u0433\u043b\u043e\u043c \u043f\u043e\u0438\u0441\u043a\u0435 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u0432 \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043a\u043e\u043c\u0443-\u0442\u043e \u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<hr\/>\n<p>  <\/p>\n<h1 id=\"poluchaem-neobhodimye-dannye-vklyuchaem-drive-api-i-poluchaem-neobhodimye-klyuchi\">\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (&quot;\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c&quot; Drive API \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043b\u044e\u0447\u0438)<\/h1>\n<p>  <\/p>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0448\u0430\u0433\u043e\u0432, \u0443\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 5 \u043c\u0438\u043d\u0443\u0442 \u0443 \u0412\u0430\u0441 \u0432 \u0440\u0443\u043a\u0430\u0445 \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a Drive API.<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c \u0447\u0442\u043e \u0432\u0437\u044f\u043b\u0438 \u0441 \u0441\u043e\u0431\u043e\u0439:<\/p>\n<p>  <\/p>\n<ul>\n<li>Python \u0432\u0435\u0440\u0441\u0438\u0438 2.6 \u0438\u043b\u0438 \u0432\u044b\u0448\u0435 (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u044b\u043b Python 3 \u0447\u0435\u0433\u043e \u0438 \u0412\u0430\u043c \u0441\u043e\u0432\u0435\u0442\u0443\u044e).<\/li>\n<li>\u041f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 pip.<\/li>\n<li>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u0438 \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440.<\/li>\n<li>\u0410\u043a\u043a\u0430\u0443\u043d\u0442 Google \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 Google Drive.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a \u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438\u0441\u044c \u0441 \u043f\u043e\u043b\u043d\u043e\u0439 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0441\u0442\u044c\u044e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u043e, \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439:<\/p>\n<p>  <\/p>\n<p>1) \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043f\u043e <a href=\"https:\/\/console.developers.google.com\/flows\/enableapi?apiid=drive\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a> \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c Drive API. \u0416\u043c\u0435\u043c Continue, \u0437\u0430\u0442\u0435\u043c Go to credentials<br \/>  2) \u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 Add cridentials to your page \u0436\u043c\u0451\u043c \u043a\u043d\u043e\u043f\u043a\u0443 Cancel.<br \/>  3) \u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 OAuth consent screen. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439 Email \u0438 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c Product name, \u0436\u043c\u0435\u043c Save.<br \/>  4) \u0412\u043e \u0432\u043a\u043b\u0430\u0434\u0435 Credentials \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Create credentials, \u0437\u0430\u0442\u0435\u043c Oauth client ID.<br \/>  5) \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0442\u0438\u043f Other, \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0437\u0432\u0443\u0447\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438 \u0436\u043c\u0435\u043c Create.<br \/>  6) \u0412 \u043f\u043e\u043b\u0435 \u043d\u0430\u0448\u0435\u0433\u043e &quot;\u043f\u0440\u043e\u0435\u043a\u0442\u0430&quot; \u0436\u043c\u0435\u043c \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435 \u0441\u043f\u0440\u0430\u0432\u0430 \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f json \u0444\u0430\u0439\u043b\u0430. \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0431\u0443\u0434\u0443\u0449\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c, \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u0432 client_secret.json<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445 \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a6f\/d36\/c9f\/a6fd36c9f09e4632960f26a88fc14808.png\"\/>  <\/p>\n<hr\/>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/200\/4ef\/496\/2004ef496a1741cdb5a1c3092196dc2f.png\"\/>  <\/p>\n<hr\/>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/5ba\/491\/d65\/5ba491d65e7343d697f7fde43a51447e.png\"\/>  <\/p>\n<hr\/>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8a9\/f44\/fc6\/8a9f44fc66794c50b206df4bc8cbbb8e.png\"\/>  <\/p>\n<hr\/>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f12\/461\/a73\/f12461a731a34f85be612ebd1e6d5dc4.png\"\/><\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0443\u0436\u0435 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435<\/p>\n<p>  <\/p>\n<p>1 \u2014 \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<br \/>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Google Client Library \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <\/p>\n<p>  <\/p>\n<pre><code>sudo pip install --upgrade google-api-python-client<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043f\u043e <a href=\"https:\/\/developers.google.com\/api-client-library\/python\/start\/installation\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a> \u0435\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. <\/p>\n<p>  <\/p>\n<p>2 \u2014 \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0430\u0448 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442<br \/>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c python \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u044f\u0434\u043e\u043c \u0441 \u0441\u043e\u0440\u0445\u0430\u043d\u0451\u043d\u043d\u044b\u043c .json \u0444\u0430\u0439\u043b\u043e\u043c \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0430:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>from __future__ import print_function import httplib2 import os  from apiclient import discovery from oauth2client import client from oauth2client import tools from oauth2client.file import Storage  try:     import argparse     flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args() except ImportError:     flags = None  # If modifying these scopes, delete your previously saved credentials # at ~\/.credentials\/drive-python-quickstart.json SCOPES = 'https:\/\/www.googleapis.com\/auth\/drive.metadata.readonly' CLIENT_SECRET_FILE = 'client_secret.json' APPLICATION_NAME = 'Drive API Python Quickstart'  def get_credentials():     home_dir = os.path.expanduser('~')     credential_dir = os.path.join(home_dir, '.credentials')     if not os.path.exists(credential_dir):         os.makedirs(credential_dir)     credential_path = os.path.join(credential_dir,                                    'drive-python-quickstart.json')      store = Storage(credential_path)     credentials = store.get()     if not credentials or credentials.invalid:         flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)         flow.user_agent = APPLICATION_NAME         if flags:             credentials = tools.run_flow(flow, store, flags)         else: # Needed only for compatibility with Python 2.6             credentials = tools.run(flow, store)         print('Storing credentials to ' + credential_path)     return credentials  def main():     credentials = get_credentials()     http = credentials.authorize(httplib2.Http())     service = discovery.build('drive', 'v3', http=http)      results = service.files().list(         pageSize=10,fields=&quot;nextPageToken, files(id, name)&quot;).execute()     items = results.get('files', [])     if not items:         print('No files found.')     else:         print('Files:')         for item in items:             print('{0} ({1})'.format(item['name'], item['id']))  if __name__ == '__main__':     main()<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043e\u043d \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442 \u0437\u0430\u043b\u043e\u0433\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0433\u0443\u0433\u043b \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0435 \u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u044b\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u0442\u0430\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u043a\u0440\u0430\u0442\u0446\u0435 \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c\u0441\u044f<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0444\u0443\u043d\u043a\u0446\u0438\u044f get_credentials \u0441\u043e\u0437\u0434\u0430\u0435\u0442\/\u0434\u043e\u0441\u0442\u0430\u0435\u0442 .json \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u043d\u043e\u043c\u043e\u0447\u0438\u0439 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 API.  <\/li>\n<li>scopes \u044d\u0442\u043e \u043d\u0430\u0448\u0438 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 (\u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0430\u043c\u044b\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0432\u0435\u0434\u044c \u0441\u0435\u0431\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u043c)<\/li>\n<li>service \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 Google Drive<\/li>\n<li>\u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0430\u043f\u0438, \u0431\u0435\u0440\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432 (\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u043c\u0441\u044f 10 \u0448\u0442\u0443\u043a\u0430\u043c\u0438) \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0442\u043e \u043a\u0430\u043a \u043e\u043d \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0438\u043c\u0435\u043d\u0430 \u0438 id \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0435\u0441\u044f\u0442\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043f\u0430\u043f\u043e\u043a \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>  <\/p>\n<p><em>\u0412\u043e\u043e\u0431\u0449\u0435, \u044d\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u044b\u0439 coypaste <a href=\"https:\/\/developers.google.com\/drive\/v3\/web\/quickstart\/python\">\u0438\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e quickstart-\u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430<\/a>, \u0442\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0442\u0430\u043c.<\/em><\/p>\n<p>  <\/p>\n<hr\/>\n<p>  <\/p>\n<h1 id=\"nemnogo-pro-google-drive-api\">\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e Google Drive API<\/h1>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/363\/cac\/4c3\/363cac4c37c64e43adf0d9aff6b17796.jpg\"  width=\"60%\" height=\"60%\"\/><\/div>\n<p>  <\/p>\n<p><a href=\"https:\/\/developers.google.com\/drive\/v3\/reference\/\">\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a>, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0447\u0442\u043e.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 API \u0431\u043b\u0438\u0436\u0435.<\/p>\n<p>  <\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 Drive REST API \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043d\u0430\u0431\u043e\u0440 &quot;\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432&quot; (\u043e\u0440\u0438\u0433. resources types), \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043c\u0435\u0442\u043e\u0434\u044b.<\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0435\u0433\u043e \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u044d\u0442\u043e &quot;\u0440\u0435\u0441\u0443\u0440\u0441\u044b&quot; about(), files() \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e comments(). \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u0432 <a href=\"https:\/\/developers.google.com\/drive\/v3\/reference\/\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>, \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 c \u043d\u0438\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0439 (\u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e). \u041c\u044b \u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0432\u0435\u0449\u0438. <\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u0437\u0430\u0442\u0440\u0430\u0432\u043a\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u043d\u0430\u0448\u0435\u043c \u0414\u0438\u0441\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434\u044b about() (\u0447\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e). \u0411\u043b\u0430\u0433\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043c\u0435\u0442\u043e\u0434 get().<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 <\/p>\n<p>  <\/p>\n<pre><code class=\"python\">    about_example = drive_service.about(fields='user, storageQuota, exportFormats, importFormats').get('')<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0434\u0435\u0441\u044c \u043c\u043d\u043e\u0433\u043e, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u0435\u0445 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0432\u0430\u0436\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b importFormats \u0438 exportFormats \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0432 \u043a\u0430\u043a\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0444\u0430\u0439\u043b \u043f\u0440\u0438 \u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u042d\u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0430\u0436\u043d\u043e\u0439 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 Google Docs, \u043e\u0431 \u044d\u0442\u043e\u043c \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435.<\/p>\n<p>  <\/p>\n<p>StorageQuota \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u0435\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438 \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>user \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 displayName, photoLink \u0438 emailAddress (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u044b \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f)<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c JSON \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441 \u044d\u0442\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0432\u0435\u0442\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f exportFormats \u0438 importFormats<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>{<br \/>  &quot;user&quot;: {<br \/>  &quot;kind&quot;: &quot;drive#user&quot;,<br \/>  &quot;displayName&quot;: &quot;\u0418\u043c\u044f \u0424\u0430\u043c\u0438\u043b\u0438\u044f&quot;,<br \/>  &quot;photoLink&quot;: &quot;<a href=\"http:\/\/i.imgur.com\/hgXLjzr.png\">http:\/\/i.imgur.com\/hgXLjzr.png<\/a>&quot;,<br \/>  &quot;me&quot;: true,<br \/>  &quot;permissionId&quot;: &quot;id number&quot;,<br \/>  &quot;emailAddress&quot;: &quot;youremail@gmail.com&quot;<br \/>  },<br \/>  &quot;storageQuota&quot;: {<br \/>  &quot;limit&quot;: &quot;16106127360&quot;,<br \/>  &quot;usage&quot;: &quot;2920407530&quot;,<br \/>  &quot;usageInDrive&quot;: &quot;1590570002&quot;,<br \/>  &quot;usageInDriveTrash&quot;: &quot;54316729&quot;<br \/>  },<br \/>  &quot;importFormats&quot;: {<br \/>  &quot;application\/x-vnd.oasis.opendocument.presentation&quot;: [<br \/>  &quot;application\/vnd.google-apps.presentation&quot;<br \/>  ],<br \/>  &quot;text\/tab-separated-values&quot;: [<br \/>  &quot;application\/vnd.google-apps.spreadsheet&quot;<br \/>  ],<br \/>  &quot;image\/jpeg&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;image\/bmp&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;image\/gif&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/vnd.ms-excel.sheet.macroenabled.12&quot;: [<br \/>  &quot;application\/vnd.google-apps.spreadsheet&quot;<br \/>  ],<br \/>  &quot;application\/vnd.openxmlformats-officedocument.wordprocessingml.template&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/vnd.ms-powerpoint.presentation.macroenabled.12&quot;: [<br \/>  &quot;application\/vnd.google-apps.presentation&quot;<br \/>  ],<br \/>  &quot;application\/vnd.ms-word.template.macroenabled.12&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/vnd.openxmlformats-officedocument.wordprocessingml.document&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;image\/pjpeg&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/vnd.google-apps.script+text\/plain&quot;: [<br \/>  &quot;application\/vnd.google-apps.script&quot;<br \/>  ],<br \/>  &quot;application\/vnd.ms-excel&quot;: [<br \/>  &quot;application\/vnd.google-apps.spreadsheet&quot;<br \/>  ],<br \/>  &quot;application\/vnd.sun.xml.writer&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/vnd.ms-word.document.macroenabled.12&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/vnd.ms-powerpoint.slideshow.macroenabled.12&quot;: [<br \/>  &quot;application\/vnd.google-apps.presentation&quot;<br \/>  ],<br \/>  &quot;text\/rtf&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;text\/plain&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/vnd.oasis.opendocument.spreadsheet&quot;: [<br \/>  &quot;application\/vnd.google-apps.spreadsheet&quot;<br \/>  ],<br \/>  &quot;application\/x-vnd.oasis.opendocument.spreadsheet&quot;: [<br \/>  &quot;application\/vnd.google-apps.spreadsheet&quot;<br \/>  ],<br \/>  &quot;image\/png&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/x-vnd.oasis.opendocument.text&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/msword&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/pdf&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/json&quot;: [<br \/>  &quot;application\/vnd.google-apps.script&quot;<br \/>  ],<br \/>  &quot;application\/x-msmetafile&quot;: [<br \/>  &quot;application\/vnd.google-apps.drawing&quot;<br \/>  ],<br \/>  &quot;application\/vnd.openxmlformats-officedocument.spreadsheetml.template&quot;: [<br \/>  &quot;application\/vnd.google-apps.spreadsheet&quot;<br \/>  ],<br \/>  &quot;application\/vnd.ms-powerpoint&quot;: [<br \/>  &quot;application\/vnd.google-apps.presentation&quot;<br \/>  ],<br \/>  &quot;application\/vnd.ms-excel.template.macroenabled.12&quot;: [<br \/>  &quot;application\/vnd.google-apps.spreadsheet&quot;<br \/>  ],<br \/>  &quot;image\/x-bmp&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/rtf&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/vnd.openxmlformats-officedocument.presentationml.template&quot;: [<br \/>  &quot;application\/vnd.google-apps.presentation&quot;<br \/>  ],<br \/>  &quot;image\/x-png&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;text\/html&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/vnd.oasis.opendocument.text&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;application\/vnd.openxmlformats-officedocument.presentationml.presentation&quot;: [<br \/>  &quot;application\/vnd.google-apps.presentation&quot;<br \/>  ],<br \/>  &quot;application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet&quot;: [<br \/>  &quot;application\/vnd.google-apps.spreadsheet&quot;<br \/>  ],<br \/>  &quot;application\/vnd.google-apps.script+json&quot;: [<br \/>  &quot;application\/vnd.google-apps.script&quot;<br \/>  ],<br \/>  &quot;application\/vnd.openxmlformats-officedocument.presentationml.slideshow&quot;: [<br \/>  &quot;application\/vnd.google-apps.presentation&quot;<br \/>  ],<br \/>  &quot;application\/vnd.ms-powerpoint.template.macroenabled.12&quot;: [<br \/>  &quot;application\/vnd.google-apps.presentation&quot;<br \/>  ],<br \/>  &quot;text\/csv&quot;: [<br \/>  &quot;application\/vnd.google-apps.spreadsheet&quot;<br \/>  ],<br \/>  &quot;application\/vnd.oasis.opendocument.presentation&quot;: [<br \/>  &quot;application\/vnd.google-apps.presentation&quot;<br \/>  ],<br \/>  &quot;image\/jpg&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ],<br \/>  &quot;text\/richtext&quot;: [<br \/>  &quot;application\/vnd.google-apps.document&quot;<br \/>  ]<br \/>  },<br \/>  &quot;exportFormats&quot;: {<br \/>  &quot;application\/vnd.google-apps.form&quot;: [<br \/>  &quot;application\/zip&quot;<br \/>  ],<br \/>  &quot;application\/vnd.google-apps.document&quot;: [<br \/>  &quot;application\/rtf&quot;,<br \/>  &quot;application\/vnd.oasis.opendocument.text&quot;,<br \/>  &quot;text\/html&quot;,<br \/>  &quot;application\/pdf&quot;,<br \/>  &quot;application\/epub+zip&quot;,<br \/>  &quot;application\/zip&quot;,<br \/>  &quot;application\/vnd.openxmlformats-officedocument.wordprocessingml.document&quot;,<br \/>  &quot;text\/plain&quot;<br \/>  ],<br \/>  &quot;application\/vnd.google-apps.drawing&quot;: [<br \/>  &quot;image\/svg+xml&quot;,<br \/>  &quot;image\/png&quot;,<br \/>  &quot;application\/pdf&quot;,<br \/>  &quot;image\/jpeg&quot;<br \/>  ],<br \/>  &quot;application\/vnd.google-apps.spreadsheet&quot;: [<br \/>  &quot;application\/x-vnd.oasis.opendocument.spreadsheet&quot;,<br \/>  &quot;text\/tab-separated-values&quot;,<br \/>  &quot;application\/pdf&quot;,<br \/>  &quot;application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet&quot;,<br \/>  &quot;text\/csv&quot;,<br \/>  &quot;application\/zip&quot;,<br \/>  &quot;application\/vnd.oasis.opendocument.spreadsheet&quot;<br \/>  ],<br \/>  &quot;application\/vnd.google-apps.script&quot;: [<br \/>  &quot;application\/vnd.google-apps.script+json&quot;<br \/>  ],<br \/>  &quot;application\/vnd.google-apps.presentation&quot;: [<br \/>  &quot;application\/vnd.oasis.opendocument.presentation&quot;,<br \/>  &quot;application\/pdf&quot;,<br \/>  &quot;application\/vnd.openxmlformats-officedocument.presentationml.presentation&quot;,<br \/>  &quot;text\/plain&quot;<br \/>  ]<br \/>  }<br \/>  }<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0423 &quot;\u0440\u0435\u0441\u0443\u0440\u0441\u0430&quot; .files (\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f) \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<p>  <\/p>\n<p>\u0421 \u043c\u0435\u0442\u043e\u0434\u043e\u043c files().list() \u0443\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b, \u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u041c\u0435\u0442\u043e\u0434 .list() \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0430\u043f\u043a\u0438 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b).<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/p>\n<p>  <\/p>\n<pre><code>    list_example = drive_service.files().list(q='fullText contains &quot;important&quot; and trashed = true', fileds='files(id, name)')<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0438\u043c \u0432\u0430\u0436\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043a\u0430\u043a q \u2014 \u043e\u0441\u043e\u0431\u044b\u0439 \u0432\u0438\u0434 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u0443\u044e \u043d\u0430\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u043b\u0443\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">    q = 'name = &quot;Habrahabr&quot;'     q = 'fullText contains &quot;some text&quot;'     q = '&quot;idexample123&quot; in parents'<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u044d\u0442\u0438\u043c \u043e\u0440\u0443\u0434\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/developers.google.com\/drive\/v3\/web\/search-parameters\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041f\u0443\u043d\u043a\u0442 fileds \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u043a\u0443\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0444\u0430\u0439\u043b\u0430\u0445 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c (\u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435). \u041a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043b\u044e\u0431\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p>  <\/p>\n<p><em>\u041c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u2014 <a href=\"https:\/\/developers.google.com\/drive\/v3\/web\/manage-uploads\">\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432<\/a> \u0438 <a href=\"https:\/\/developers.google.com\/drive\/v3\/web\/manage-downloads\">\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432<\/a>. \u041d\u0435 \u0441\u0442\u0430\u043b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 &quot;\u0432 \u0431\u043e\u0435\u0432\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445&quot;, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e.<\/em><\/p>\n<p>  <\/p>\n<hr\/>\n<p>  <\/p>\n<h1 id=\"ishodnaya-zagruzka-faylov\">\u0418\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432<\/h1>\n<p>  <\/p>\n<p>\u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0445\u0432\u0430\u0442\u0438\u0442 \u0442\u0435\u043e\u0440\u0438\u0438, \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0443\u0436\u0435 \u043a \u0432\u0435\u0441\u0435\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 (\u0440\u0430\u0434\u0438 \u044d\u0442\u043e\u0433\u043e \u0437\u0434\u0435\u0441\u044c \u0438 \u0441\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c).<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0447\u0442\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0442\u0430\u043c \u0438 \u0442\u0430\u043c. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0430\u043f\u043a\u0443 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u044e\u0434\u0430 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c. \u0422\u0430\u043a \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u044b \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u043a\u043e\u0434\u0430, \u043c\u0430\u0433\u0438\u0438 \u0438 \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439.<\/p>\n<p>  <\/p>\n<blockquote><p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0441\u0435 \u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u0432\u0440\u0443\u0447\u043d\u0443\u044e\/\u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0435 \u0442\u0430\u043a\u0443\u044e \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0438 \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0442\u044c, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u043f\u0443\u043d\u043a\u0442\u0443 (\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u2014 \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0430\u043f\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0433\u0443\u0433\u043b \u0434\u0438\u0441\u043a\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u043c\u0435\u0439\u0442\u0435 \u044d\u0442\u043e \u0432\u0432\u0438\u0434\u0443, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f a little bit of tinkering).<\/p><\/blockquote>\n<p>\u041d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u043f\u0430\u043f\u043a\u0443 \u043d\u0430 \u0434\u0438\u0441\u043a<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">def folder_upload(service):     parents_id = {}      for root, _, files in os.walk(FULL_PATH, topdown=True):         last_dir = root.split('\/')[-1]         pre_last_dir = root.split('\/')[-2]         if pre_last_dir not in parents_id.keys():             pre_last_dir = []         else:             pre_last_dir = parents_id[pre_last_dir]          folder_metadata = {'name': last_dir,                            'parents': [pre_last_dir],                            'mimeType': 'application\/vnd.google-apps.folder'}         create_folder = service.files().create(body=folder_metadata,                                                fields='id').execute()         folder_id = create_folder.get('id', [])          for name in files:             file_metadata = {'name': name, 'parents': [folder_id]}             media = MediaFileUpload(                 os.path.join(root, name),                 mimetype=mimetypes.MimeTypes().guess_type(name)[0])             service.files().create(body=file_metadata,                                    media_body=media,                                    fields='id').execute()          parents_id[last_dir] = folder_id      return parents_id<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443, \u0445\u043e\u0442\u044f \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u043f\u043e\u043a\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p>  <\/p>\n<p>FULL_PATH \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0439 \u043f\u0430\u043f\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>\u041c\u044b &quot;\u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c&quot; \u043d\u0430\u0448\u0443 \u043f\u0430\u043f\u043a\u0443 \u0441\u043f\u0443\u0441\u043a\u0430\u044f\u0441\u044c &quot;\u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437&quot;. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0435\u0435 \u0431\u0440\u0430\u0442\u0430 \u0431\u043b\u0438\u0437\u043d\u0435\u0446\u0430 \u043d\u0430 \u0433\u0443\u0433\u043b \u0434\u0438\u0441\u043a\u0435, \u0435\u0435 id \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c (\u043a\u043b\u044e\u0447 \u2014 \u0438\u043c\u044f, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 id), \u0430 \u0432\u0441\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043f\u0430\u043f\u043a\u0443. \u0412 \u043a\u043e\u043d\u0446\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u044d\u0442\u043e\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0430\u0432\u0434\u0430, \u043a\u0430\u043a \u0432 \u0430\u043d\u0435\u043a\u0434\u043e\u0442\u0435, \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043d\u044e\u0430\u043d\u0441. \u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0433\u043e mimeType (\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043d\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435, \u044f \u043d\u0435 \u0437\u043d\u0430\u044e). \u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u044d\u0442\u0438\u043c \u0434\u0435\u043b\u043e\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c (\u043f\u043e \u0441\u0443\u0442\u0438 \u043e\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 mimeType \u043f\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u043b \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438).<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0445\u0438\u0442\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u043b\u0438 \u0444\u0430\u0439\u043b\u044b \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0440\u043e\u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u0439\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u043c (\u0431\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u0435\u0435).<\/p>\n<p>  <\/p>\n<hr\/>\n<p>  <\/p>\n<h1 id=\"sinhroniziruem-izmeneniya-s-kompyutera-v-oblako\">\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0432 \u043e\u0431\u043b\u0430\u043a\u043e<\/h1>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/30e\/8c4\/056\/30e8c405677348a6872ef5926a5fd6ed.jpg\"  width=\"60%\" height=\"60%\"\/><\/div>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u043c\u044b \u043f\u0430\u043f\u043a\u0443, \u043f\u043e\u0434\u0435\u043b\u0430\u043b\u0438 \u043a\u0430\u043a\u0438\u0445 \u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u0447\u0442\u043e-\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u043b\u0438, \u0447\u0442\u043e-\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438, \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u043d\u0430\u0434\u043e \u0431\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0442\u0440\u0430\u0437\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0438. <\/p>\n<p>  <\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 &quot;\u043c\u044b \u043f\u043e\u0439\u0434\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0443\u0442\u0435\u043c&quot;.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 python \u2014 \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0414\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043f\u0430\u043f\u043e\u043a \u043d\u0430 \u0414\u0438\u0441\u043a\u0435 \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0442\u0435\u043c \u0438\u0445 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0438 \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0442\u0443\u0434\u0430 \u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u0433\u0430\u0442\u043e\u043c \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u0438 \u043d\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0451 \u0434\u0435\u0440\u0435\u0432\u043e \u043f\u0430\u043f\u043e\u043a \u0438 \u0444\u0430\u0439\u043b\u043e\u0432 (\u043d\u0443 \u0438\u043b\u0438 \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u0438 \u0442\u043e\u0433\u0434\u0430 \u0437\u0440\u044f \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u0441\u043e\u0431\u0440\u0430\u043b).<\/p>\n<p>  <\/p>\n<p>\u0410 \u0440\u0430\u0437 \u043d\u0435\u0442, \u0442\u0430\u043a \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u0430\u043c\u0438! <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 Google \u0414\u0438\u0441\u043a<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">def get_tree(folder_name, tree_list, root, parents_id, service):      folder_id = parents_id[folder_name]      results = service.files().list(         pageSize=100,         q=(&quot;%r in parents and \\         mimeType = 'application\/vnd.google-apps.folder'and \\         trashed != True&quot; % folder_id)).execute()      items = results.get('files', [])     root += folder_name + os.path.sep      for item in items:         parents_id[item['name']] = item['id']         tree_list.append(root + item['name'])         folder_id = [i['id'] for i in items                      if i['name'] == item['name']][0]         folder_name = item['name']         get_tree(folder_name, tree_list,                  root, parents_id, service) <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<br \/>  \u041d\u0430 \u0432\u0445\u043e\u0434 \u043f\u043e\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u0443\u0447\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<br \/>  folder_name \u2014 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0439 \u043f\u0430\u043f\u043a\u0438<br \/>  folder_id \u2014 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 id \u043f\u0430\u043f\u043a\u0438<br \/>  tree_list \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0448\u0438\u0445 \u043f\u0443\u0442\u0435\u0439, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0443\u0441\u0442\u043e\u0439 []<br \/>  root \u2014 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438\u2026 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u043e\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 tree_list<br \/>  parents_id \u2014 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043f\u0430\u0440\u044b {\u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u2014 \u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435}<\/p>\n<p>  <\/p>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043f\u043a\u0438 \u0441 id=folder_id (\u0438 \u0435\u0449\u0435 \u0442\u0435 \u0447\u0442\u043e \u043d\u0435 \u0432 \u043a\u043e\u0440\u0437\u0438\u043d\u0435*), \u0432\u044b\u0434\u0438\u0440\u0430\u0435\u043c \u0442\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 (\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u043c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0443\u0442\u044f\u043c\u0438).<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0438\u043c\u0435\u043d\u0430 \u0438 id \u044d\u0442\u0438\u0445 \u043f\u0430\u043f\u043e\u043a \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c parents_id, \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 root \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u043c \u0442\u043e\u0442 \u0444\u0430\u043a\u0442 \u0447\u0442\u043e \u0441\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0441\u044f \u0432\u043d\u0438\u0437 \u043f\u043e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u043f\u0430\u043f\u043e\u043a, \u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0432\u0441\u0442\u0440\u0435\u0447\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c get_tree \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0443\u0436\u0435 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0438. <\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0441\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u043f\u0430\u043f\u043a\u0430\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0445 \u043f\u0443\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\/\/<em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u04351: \u0423 \u0433\u0443\u0433\u043b \u0414\u0438\u0441\u043a\u0430 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043e\u0441\u043e\u0431\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 (\u0447\u0442\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u043e), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0441\u0432\u043e\u0438\u043c\u0438 \u0437\u0430\u043a\u043e\u043d\u0430\u043c\u0438 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u044f\u0434\u043e\u043c \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043c\u043e\u0433\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0434\u0432\u0435 \u043f\u0430\u043f\u043a\u0438 \u0438\u043b\u0438 \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u2014 id. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 (\u0435\u0441\u043b\u0438 \u044f \u0432\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u043b). \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u044d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u044f\u0434\u043e\u043c \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u043e \u043d\u0435\u0439, \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 overfitting \u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043b\u0438\u0448\u043d\u0435\u0435. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430 \u0437\u0430\u043c\u0435\u0442\u043a\u0443.<\/em><\/p>\n<p>  <\/p>\n<p>\/\/ <em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u04352: \u0432\u0441\u0435 \u043c\u043e\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0438 \u0434\u0430\u0436\u0435 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0441 \u043e\u0434\u043d\u0438\u043c \u0445\u0430\u043b\u0430\u0442\u043d\u044b\u043c \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u0435\u043c, \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0432\u043e \u043f\u0430\u043f\u043a\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 1000 \u0444\u0430\u0439\u043b\u043e\u0432 (\u0438 \u0442\u0430\u043a \u0441\u043e\u0439\u0434\u0435\u0442!). \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u043e, \u0441\u0435\u0431\u0435 \u044f \u0434\u043e\u0432\u0435\u0440\u044f\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a \u0433\u0440\u0443\u0431\u043e \u0438 \u043d\u0435\u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e \u0438 \u0432 \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c nextPageToken, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043f\u0443\u043d\u043a\u0442\u0435 \u0432\u044b\u0448\u0435. \u0414\u0443\u043c\u0430\u044e \u0412\u0430\u043c \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0440\u0443\u0434\u0430 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u043c\u0438\u043c (\u043d\u0443 \u0438\u043b\u0438 \u0443 \u043c\u0435\u043d\u044f \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u043e\u0439\u0434\u0443\u0442 \u0440\u0443\u043a\u0438).<\/em><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c nextPageToken \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 <a href=\"https:\/\/developers.google.com\/drive\/v3\/web\/search-parameters\">\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u0430\u043f\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043d\u0430 \u0434\u0438\u0441\u043a\u0435, \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435<br \/>  \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 (\u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0443\u0436\u0435 \u043f\u0440\u043e\u0449\u0435)<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">    os_tree_list = []     root_len = len(full_path.split(os.path.sep)[0:-2])     for root, dirs, files in os.walk(full_path, topdown=True):         for name in dirs:             var_path = '\/'.join(root.split('\/')[root_len+1:])             os_tree_list.append(os.path.join(var_path, name))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0438\u043c\u0435\u044e\u0442\u0441\u044f tree_list \u0438 os_tree_list, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043d\u0430\u043c\u0435\u0440\u0435\u0432\u0430\u0435\u043c\u0441\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u044d\u0442\u0438 \u0441\u043f\u0438\u0441\u043a\u0438<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">    os_tree_list = [Example\/Example1, Example\/Example1\/Example2, Example\/Example1\/Example3]     tree_list = [Example\/Example1\/, Example\/Example1\/Example4, Example\/Example1\/Example4\/Example5]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0440\u0430\u0437\u043e\u0431\u044c\u0435\u043c \u043f\u0430\u043f\u043a\u0438 \u043d\u0430 \u0442\u0440\u0438 \u0433\u0440\u0443\u043f\u043f\u044b<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">    remove_folders = list(set(tree_list).difference(set(os_tree_list)))     upload_folders = list(set(os_tree_list).difference(set(tree_list)))      exact_folders = list(set(os_tree_list).intersection(set(tree_list)))<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, remove_folders \u044d\u0442\u043e \u0442\u0435 \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u043b\u0438\u0431\u043e \u043e\u043a\u0437\u0430\u043b\u0438\u0441\u044c \u0437\u0434\u0435\u0441\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0438 \u0438\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0434\u0430\u043b\u0438\u0442\u044c, upload_folders \u2014 \u043d\u043e\u0432\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c, \u043d\u0443 \u0438 exact_folders \u2014 \u044d\u0442\u043e \u043f\u0430\u043f\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0438 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0438 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0430\u043f\u043e\u043a \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445\u0441\u044f \u0432 \u043d\u0438\u0445 \u043f\u0430\u043f\u043e\u043a, \u0431\u043b\u0430\u0433\u043e \u0441 \u044d\u0442\u0438\u043c \u0443\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0430\u043f\u043e\u043a \u043d\u0430 \u0414\u0438\u0441\u043a<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">upload_folders = sorted(upload_folders, key=by_lines)  for folder_dir in upload_folders:         var = os.path.join(full_path.split(os.path.sep)[0:-1]) + os.path.sep         variable = var + folder_dir         last_dir = folder_dir.split(os.path.sep)[-1]         pre_last_dir = folder_dir.split(os.path.sep)[-2]          files = [f for f in os.listdir(variable)                  if os.path.isfile(os.path.join(variable, f))]          folder_metadata = {'name': last_dir,                            'parents': [parents_id[pre_last_dir]],                            'mimeType': 'application\/vnd.google-apps.folder'}         create_folder = service.files().create(             body=folder_metadata, fields='id').execute()         folder_id = create_folder.get('id', [])         parents_id[last_dir] = folder_id          for os_file in files:             some_metadata = {'name': os_file, 'parents': [folder_id]}             os_file_mimetype = mimetypes.MimeTypes().guess_type(                 os.path.join(variable, os_file))[0]             media = MediaFileUpload(os.path.join(variable, os_file),                                     mimetype=os_file_mimetype)             upload_this = service.files().create(body=some_metadata,                                                  media_body=media,                                                  fields='id').execute()             upload_this = upload_this.get('id', [])<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0430 \u043c\u044b \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u0430\u0448 \u0441\u043f\u0438\u0441\u043e\u043a \u0441 &quot;\u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438&quot; \u043f\u0430\u043f\u043e\u043a \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 (\u0438\u043b\u0438 \u043f\u0440\u043e\u0449\u0435 \u043d\u0430\u043a\u043b\u043e\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0442\u043e\u0447\u0435\u043a &#8216;\\&#8217;), \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0438 \u0438 \u0438\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432\u0433\u043b\u0443\u0431\u044c \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 (\u0438\u0437\u0431\u0435\u0433\u0430\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0435\u0439 \u0442\u0438\u043f\u0430 &quot;\u0430 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u043d\u0435\u0442 \u0438 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u0443\u0434\u0430 \u043e\u043d\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0435\u0433\u043e \u0432\u044b\u043a\u0438\u043d\u0435\u0442&quot;).<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u0434\u043b\u044f \u043d\u0435\u0435 \u043c\u0435\u0441\u0442\u0435, \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0435\u0435 &quot;\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f&quot; (\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438 \u043d\u0443\u0436\u0435\u043d pre_last_dir).<\/p>\n<p>  <\/p>\n<p>\u041f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u043f\u0430\u043f\u043a\u0430\u043c\u0438, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0430\u0439\u043b\u044b \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0438\u0445 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 \u044d\u0442\u043e \u0436\u0435 \u043f\u0430\u043f\u043a\u0435 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>\u0411\u0435\u0440\u0435\u043c \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0438 \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u043c\u0443 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044e. <\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0447\u0443\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435, \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0444\u0430\u0439\u043b\u0430\u043c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438\u0445 \u043d\u0430 <del>\u0438\u0437\u043c\u0435\u043d\u0443<\/del> \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u044f\u043b\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0431\u0430\u0440\u0440\u0438\u043a\u0430\u0434, \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0430 \u0414\u0438\u0441\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443 \u0444\u0430\u0439\u043b\u043e\u0432 \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0435\u0441\u0442\u044c .update(), \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p>  <\/p>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 (\u043f\u0440\u043e\u0441\u0442\u043e \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043c\u0435\u0442\u043e\u0434 update() \u043d\u0435 \u0437\u0430\u0432\u0451\u043b\u0441\u044f, \u044f \u0437\u0430\u043f\u0430\u043d\u0438\u043a\u043e\u0432\u0430\u043b \u0438 \u0440\u0435\u0448\u0438\u043b \u0447\u0442\u043e \u043e\u043d \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0445\u0438\u0442\u0440\u044b\u0439 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0435\u0433\u043e \u043d\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0439 \u0438 \u0440\u043e\u0434\u043d\u043e\u0439 upload()).<\/p>\n<p>  <\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e \u0447\u0442\u043e \u0440\u0435\u0448\u0438\u043b \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0438 \u0432\u0441\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u0441\u0442\u043e\u0438\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c mimeType, \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e \u2014 \u0431\u0443\u0434\u044c\u0442\u0435 \u0441 \u043d\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043d\u0430 \u0433\u043b\u0430\u0437 \u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u0442\u0435\u043d, \u0434\u0430\u0436\u0435 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043d\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043c\u0435\u0440\u043e\u0432 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0441\u0442\u043e\u0438\u043b\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432\u0441\u0435-\u0442\u0430\u043a\u0438, \u0438\u043c\u0435\u0435\u0442 \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u043c\u044b\u0441\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0444\u0430\u0439\u043b, \u0438\u043d\u0430\u0447\u0435 \u0435\u0441\u043b\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c (\u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e) \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043a\u043e\u043c\u0438\u043b\u044c\u0444\u043e. <\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0436\u0435 \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0430\u044f \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u0438\u0434\u0435\u044f \u0431\u044b\u043b\u0430 \u0442\u0430\u043a\u0430\u044f \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e \u0434\u0430\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0431\u043b\u0430\u0433\u043e \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 \u0442\u0430\u043a\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432\u044b\u043d\u0443\u0442\u044c \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0440\u0443\u0434\u0430 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 modifiedTime). <\/p>\n<p>  <\/p>\n<p>\u0418 \u0432\u0440\u043e\u0434\u0435 \u0432\u0441\u0435 \u043d\u0438\u0447\u0435\u0433\u043e, \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043a\u0430\u043a \u0447\u0430\u0441\u044b. \u041d\u043e \u043f\u044b\u0442\u043b\u0438\u0432\u044b\u0435 \u0443\u043c\u044b \u0443\u0436\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u043e\u043d\u044f\u043b\u0438 \u0432 \u0447\u0435\u043c \u0437\u0434\u0435\u0441\u044c \u0444\u0430\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u043f\u0443\u0449\u0435\u043d\u0438\u0435. \u0414\u0430, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043a\u0438\u043d\u0435\u043c \u0444\u0430\u0439\u043b \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c, \u043d\u043e \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c, \u0442\u043e \u0434\u0430\u0442\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0430\u0440\u043e\u0439, \u0430 \u0444\u0430\u0439\u043b \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e (\u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u0432\u0438\u0434\u0438\u043c\u043e \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439 \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c). \u0417\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 (\u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0433\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u044b\u0439, \u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439). \u0412 \u0438\u0442\u043e\u0433\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0431\u0435\u0437 \u0447\u044c\u0435\u0439 \u043b\u0438\u0431\u043e \u043f\u043e\u043c\u043e\u0449\u0438, \u0431\u044b\u043b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0435 <em>\u0442\u043e\u043b\u044c\u043a\u043e<\/em> \u0434\u0430\u0442\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0430 \u0445\u0435\u0448\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 (\u043d\u0443 \u043a\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0433 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u0447\u0442\u043e \u0443 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 md5Checksum). \u0412 \u0438\u0442\u043e\u0433\u0435 \u043b\u043e\u0433\u0438\u043a\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0434\u0443\u0435\u0442.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">for folder_dir in exact_folders:          var = (os.path.sep).join(full_path.split(             os.path.sep)[0:-1]) + os.path.sep          variable = var + folder_dir         last_dir = folder_dir.split(os.path.sep)[-1]         # print(last_dir, folder_dir)         os_files = [f for f in os.listdir(variable)                     if os.path.isfile(os.path.join(variable, f))]         results = service.files().list(             pageSize=1000, q=('%r in parents and \\             mimeType!=&quot;application\/vnd.google-apps.folder&quot; and \\             trashed != True' % parents_id[last_dir]),             fields=&quot;files(id, name, mimeType, \\             modifiedTime, md5Checksum)&quot;).execute()          items = results.get('files', [])          refresh_files = [f for f in items if f['name'] in os_files]         remove_files = [f for f in items if f['name'] not in os_files]         upload_files = [f for f in os_files                         if f not in [j['name']for j in items]]          # Check files that exist both on Drive and on PC         for drive_file in refresh_files:             file_dir = os.path.join(variable, drive_file['name'])             file_time = os.path.getmtime(file_dir)             mtime = [f['modifiedTime']                      for f in items if f['name'] == drive_file['name']][0]             mtime = datetime.datetime.strptime(                 mtime[:-2], &quot;%Y-%m-%dT%H:%M:%S.%f&quot;)             drive_time = time.mktime(mtime.timetuple())             # print(drive_file['name'])             # if file['mimeType'] in GOOGLE_MIME_TYPES.keys():             # print(file['name'], file['mimeType'])             # print()             os_file_md5 = hashlib.md5(open(file_dir, 'rb').read()).hexdigest()             if 'md5Checksum' in drive_file.keys():                 # print(1, file['md5Checksum'])                 drive_md5 = drive_file['md5Checksum']                 # print(2, os_file_md5)             else:                 # print('No hash')                 drive_md5 = None                 # print(drive_md5 != os_file_md5)              if (file_time &gt; drive_time) or (drive_md5 != os_file_md5):                 file_id = [f['id'] for f in items                            if f['name'] == drive_file['name']][0]                 file_mime = [f['mimeType'] for f in items                              if f['name'] == drive_file['name']][0]                  # File's new content.                 # file_mime = mimetypes.MimeTypes().guess_type(file_dir)[0]                 file_metadata = {'name': drive_file['name'],                                  'parents': [parents_id[last_dir]]}                 # media_body = MediaFileUpload(file_dir, mimetype=filemime)                 media_body = MediaFileUpload(file_dir, mimetype=file_mime)                 # print('I am HERE, ', )                 service.files().update(fileId=file_id,                                        media_body=media_body,                                        fields='id').execute() <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0422\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c, \u0442\u0435 \u0447\u0442\u043e \u0442\u0430\u043c &quot;\u043b\u0438\u0448\u043d\u0438\u0435&quot; (\u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043c, \u043d\u043e \u043d\u0435 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435) \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u043c.<\/p>\n<p>\u041d\u0443 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 (\u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435) \u2014 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0430\u043f\u043e\u043a<\/p>\n<p>  <\/p>\n<pre><code>    for folder_dir in remove_folders:         var = (os.path.sep).join(full_path.split(os.path.sep)[0:-1]) + os.path.sep         variable = var + folder_dir         last_dir = folder_dir.split('\/')[-1]         folder_id = parents_id[last_dir]         service.files().delete(fileId=folder_id).execute()<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0435\u043c \u0440\u0430\u0434\u043e\u0441\u0442\u044c \u0438 \u0441\u0447\u0430\u0441\u0442\u044c\u0435. \u041f\u043e\u0447\u0442\u0438.<\/p>\n<p>  <\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 -&gt; \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 -&gt; \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043f\u043e\u043a \u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e. \u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0438 \u0432\u0440\u043e\u0434\u0435 &quot;\u043f\u0430\u043f\u043a\u0430 \u0431\u044b\u043b\u0430&quot; \u2014 &quot;\u043f\u0430\u043f\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0442&quot; (\u0438\u043b\u0438 \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a). \u0414\u0430, \u044d\u0442\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0435\u0439 \u0438 \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u043d\u043e \u0437\u0430\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u0438\u0441\u0430\u043b\u0430\u0441\u044c \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u0434 \u0441\u0435\u0431\u044f, \u0441\u0435\u0431\u0435 \u044f \u0434\u043e\u0432\u0435\u0440\u044f\u044e \u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0447\u0443\u0434\u0438\u0442\u044c \u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0430\u043f\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443 (\u0445\u043e\u0442\u044f \u043c\u043e\u0433\u0443, \u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043a\u043e\u0440\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0435 \u0441\u043d\u0435\u0441\u0443 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0443 \u0437\u0430\u043d\u043e\u0432\u043e, &quot;\u0442\u0430\u043a\u043e\u0439 \u0443\u0436 \u044f \u043f\u0430\u0440\u0435\u043d\u044c&quot;)<\/em> <\/p>\n<p>  <\/p>\n<hr\/>\n<p>  <\/p>\n<h1 id=\"punkt-3---obratnaya-sinhronizaciya\">\u041f\u0443\u043d\u043a\u0442 3 \u2014 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f<\/h1>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/d6d\/564\/d93\/d6d564d9317a4e828df452d821e2c172.jpg\"  width=\"60%\" height=\"60%\"\/><\/div>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439 Google \u0414\u0438\u0441\u043a -&gt; \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0443 \u043d\u0430\u0441 \u043f\u0430\u043f\u043a\u0430 \u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435, \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0432 \u0434\u0435\u043d\u044c \u043d\u0430 \u0441\u0432\u0435\u0436\u0435\u043c \u0432\u043e\u0437\u0434\u0443\u0445\u0435 \u0438 \u043e\u0442\u0440\u0430\u0437\u0438\u0432 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0434\u0438\u0441\u043a\u0435, \u0445\u043e\u0442\u0438\u043c \u0447\u0442\u043e\u0431\u044b \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u0441\u0435 \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c (\u0438\u043b\u0438 \u0438\u0441\u0447\u0435\u0437\u043b\u043e) \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u041f\u041a.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043b\u043e\u0433\u0438\u043a\u0430 \u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0430\u044f \u0436\u0435, \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0443\u043d\u043a\u0442\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 (\u043a\u0430\u043b\u0430\u043c\u0431\u0443\u0440, \u043d\u043e \u0434\u0443\u043c\u0430\u044e \u0441\u0443\u0442\u044c \u043f\u043e\u043d\u044f\u043b\u0438).<\/p>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0437\u0435\u0446 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code>file_id = 'idexample' request = drive_service.files().get_media(fileId=file_id)  fh = io.BytesIO() downloader = MediaIoBaseDownload(fh, request) done = False while done is False:     status, done = downloader.next_chunk()     print &quot;Download %d%%.&quot; % int(status.progress() * 100)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044c. \u0414\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u043c\u0438 &quot;\u0431\u0438\u043d\u0430\u0440\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438&quot; (\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u0430\u043a, \u0432\u0435\u0434\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u2014 \u043d\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435, \u0431\u043b\u0430 \u0431\u043b\u0430 \u0431\u043b\u0430, \u043d\u0435 \u043f\u0440\u0438\u0434\u0438\u0440\u0430\u0439\u0442\u0435\u0441\u044c). \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043a\u0440\u043e\u043c\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 Google Docs. \u041a \u043d\u0438\u043c \u043d\u0443\u0436\u0435\u043d \u043e\u0441\u043e\u0431\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. <\/p>\n<p>  <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0434\u043b\u044f \u043d\u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439 \u0442\u0438\u043f \u0437\u0430\u043f\u0440\u043e\u0441\u0430:<\/p>\n<p>  <\/p>\n<pre><code>file_id = 'idexample' request = drive_service.files().export_media(fileId=file_id, mimeType='application\/pdf') fh = io.BytesIO() downloader = MediaIoBaseDownload(fh, request) done = False while done is False:     status, done = downloader.next_chunk()     print &quot;Download %d%%.&quot; % int(status.progress() * 100)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 mimeType. \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443 Google Docs \u0444\u0430\u0439\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0447\u0435\u0442\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 (\u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 about().get(fields=&#8217;exportFormats&#8217;) \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435, \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a Google \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 .doc \u0444\u0430\u0439\u043b\u0435). <\/p>\n<p>  <\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u043e\u0434\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 (\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438)[].<\/p>\n<p>  <\/p>\n<p>C \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u0433\u0443\u0433\u043b \u0434\u043e\u043a\u0430\u043c\u0438 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0437\u0430\u043b\u0430\u0434\u0438\u043b\u043e\u0441\u044c, \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u041d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0438 <em>\u043f\u043e\u0447\u0442\u0438<\/em> \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 pdf \u0444\u0430\u0439\u043b, \u0447\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 (\u0442\u0430\u043a \u0442\u0430\u043a \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043b\u044c\u0437\u044f).<\/p>\n<p>  <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 (\u043f\u043e\u043a\u0430 \u0447\u0442\u043e) \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u0436\u0430\u043b\u044c. \u041d\u0435 \u0437\u043d\u0430\u044e \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e (\u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b), \u043d\u043e \u0432\u0438\u0434\u0438\u043c\u043e \u0433\u0443\u0433\u043b\u043e\u0432\u0441\u043a\u0438\u0439 \u0441\u043e\u0444\u0442 \u043f\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0447\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0445\u0438\u0442\u0440\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0430 linux gui \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 \u043d\u0435\u0442 (\u0434\u0430 \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u043d\u043e). <\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0438 \u0442\u0435\u0440\u043d\u0438\u0441\u0442\u044b\u0439 \u043f\u0443\u0442\u044c \u0431\u044b\u043b \u0441\u0432\u044f\u0437\u0430\u043d \u0441 Google Docs, \u0447\u0442\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c &quot;\u043d\u0430\u0431\u043e\u043b\u0435\u0432\u0448\u0435\u0435&quot; \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0433\u043b\u0430\u0432\u0443.<\/p>\n<p>  <\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0432\u043c\u0435\u0441\u0442\u043e io.BytesIO() \u043b\u0438\u0447\u043d\u043e \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e FileIO(path_to_file, &#8216;wb&#8217;), \u0438\u043d\u0430\u0447\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u0430 \u0437\u0430\u043c\u0435\u0442\u043a\u0443.<\/em><\/p>\n<p>  <\/p>\n<hr\/>\n<p>  <\/p>\n<h2 id=\"epopeya-s-google-docs\">\u042d\u043f\u043e\u043f\u0435\u044f \u0441 Google Docs<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/14a\/f40\/405\/14af40405fda43e1aa9a831d4bfdf704.jpg\"  width=\"60%\" height=\"60%\"\/><\/div>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0436\u0435 \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438? <\/p>\n<p>  <\/p>\n<p>\u0421\u043f\u043e\u0439\u043b\u0435\u0440 \u2014 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0435\u0451 \u043d\u0435 \u043d\u0430\u0434\u043e \u0440\u0435\u0448\u0430\u0442\u044c. \u042f \u0442\u0430\u043a \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435 \u0440\u0435\u0448\u0438\u043b.<\/p>\n<p>  <\/p>\n<p>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0430\u044f \u2014 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 &quot;\u043e\u0431\u044b\u0447\u043d\u044b\u0435&quot; \u0444\u0430\u0439\u043b\u044b, \u0430 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0444\u043e\u0440\u043c\u0430\u0442\u0430 Google Docs. \u0418 \u0432\u043e\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u0435 \u0413\u0443\u0433\u043b \u0414\u043e\u043a\u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435\u043b\u044c\u0437\u044f, \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Microsoft, OpenOffice \u0438\u043b\u0438 pdf \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432). <\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u0441\u043f\u0438\u0441\u0430\u043d\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0441\u043d\u043e\u0441\u043d\u043e, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0448\u043b\u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043b\u043e\u0432\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p><em>\u0412\u043e\u043e\u0431\u0449\u0435, \u043f\u0438\u0441\u0430\u043b \u0442\u043e \u044f \u0441\u043a\u0440\u0438\u043f\u0442 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u043d\u0443\u0436\u0434\u044b, \u0438 \u0432 \u043c\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043f\u0430\u043f\u043a\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0413\u0443\u0433\u043b \u0414\u043e\u043a\u043e\u0432 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e. \u041d\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u0438\u043b\u044c\u043d\u0435\u0435, \u0438 \u043f\u0430\u0440\u0430 \u043d\u043e\u0447\u0435\u0439 \u0431\u044b\u043b\u0430 \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438.<\/em><\/p>\n<p>  <\/p>\n<p>\u0425\u043e\u0434 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u0438 \u043c\u044b\u0441\u043b\u0438 \u0437\u0434\u0435\u0441\u044c \u0431\u044b\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439: <\/p>\n<p>  <\/p>\n<p>1) \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u044d\u0442\u0438\u043c\u0438 \u0432\u0435\u0431 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u0430\u043f\u043a\u043e\u0439 \u043b\u0438\u0431\u043e \u0438\u0445 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043b\u0438\u0431\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c PDF \u0438 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041d\u043e \u044d\u0442\u043e \u0443\u0436 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u0438\u0442\u0443\u0430\u0442\u0438\u0432\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043b\u0443\u0447\u0448\u0435.<\/p>\n<p>  <\/p>\n<p>2) \u0410 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0433\u043e\u043d\u044f\u0442\u044c \u0438\u0445 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 Microsoft \u0444\u043e\u0440\u043c\u0430\u0442 (\u0434\u043b\u044f \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0439 \u0438 \u0442.\u043f., \u0431\u043b\u0430\u0433\u043e \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e) \u0430 \u043f\u043e\u0442\u043e\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e? \u0417\u0434\u0435\u0441\u044c \u044f\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0444\u0430\u0439\u043b\u0430, \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442 (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u0441\u043d\u043e\u0432\u0430 \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 .update()), \u0438\u0431\u043e \u0432\u0434\u0440\u0443\u0433 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0440\u0430\u0441\u0448\u0430\u0440\u0435\u043d, \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0443 \u043d\u0435\u0433\u043e \u0441\u043c\u0435\u043d\u0438\u0442\u0441\u044f id \u0438 \u0441\u0442\u0430\u0440\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041d\u0435 \u0442\u043e \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e, \u043d\u043e \u0440\u0430\u0437 \u0443\u0436 \u0432\u0437\u044f\u043b\u0441\u044f \u0437\u0430 \u0434\u0435\u043b\u043e, \u043e\u0442\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0431\u044b\u043b\u043e \u043f\u043e\u0437\u0434\u043d\u043e. <\/p>\n<p>  <\/p>\n<p>\u0418 \u0432\u043e\u0442 \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0441\u0430\u043c\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u0443\u0447\u0430 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0445 \u043a\u0430\u043c\u043d\u0435\u0439. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0432\u043e\u0442 (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0439)<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">     #f - \u0441\u043f\u0438\u0441\u043e\u043a, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0438\u043c\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u0430, \u0435\u0433\u043e id, \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u0435\u0445\u043d\u044b\u0435 \u0432\u0435\u0449\u0435\u0439 \u0432\u0440\u043e\u0434\u0435 mimeType \u0438 \u0434\u0440.     if f['mimeType'] in GoogleMimeTypes.keys():         print('File APPLICATION!!! ', f['name'], f['mimeType'])          # request = service.files().get_media(fileId=file_id)          request = service.files().export_media(fileId=file_id, mimeType = GoogleMimeTypes[f['mimeType']])         fh = io.FileIO(os.path.join(variable, f['name']), 'wb')         downloader = MediaIoBaseDownload(fh, request)         done = False         while done is False:             status, done = downloader.next_chunk()             print(&quot;Download %d%%.&quot; % int(status.progress() * 100), GoogleMimeTypes[f['mimeType']])     else:         print('Good File ', f['name'], f['mimeType'])          request = service.files().get_media(fileId=file_id)         fh = io.FileIO(os.path.join(variable, f['name']), 'wb')         downloader = MediaIoBaseDownload(fh, request)         done = False         while done is False:             status, done = downloader.next_chunk()             print(&quot;Download %d%%.&quot; % int(status.progress() * 100))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u0432\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \/ \u043c\u0438\u0440\u0438\u0442\u044c\u0441\u044f (\u043c\u043e\u0436\u0435\u0442 \u0443\u043c\u043d\u044b\u0435 \u043b\u044e\u0434\u0438 \u0432\u044b\u0439\u0434\u0443\u0442 \u0438\u0437 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e)<\/p>\n<p>  <\/p>\n<p>1) \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0439, \u043d\u0435 \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043b\u0438\u0447\u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 pdf).<br \/>  2) \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 mimeType \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438. \u0423 Google \u0424\u0430\u0439\u043b\u043e\u0432 (\u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0432\u0435\u0431 \u0444\u043e\u0440\u043c\u0430\u0442) \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043d\u0435\u0442, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0443 \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041d\u043e \u041c\u0430\u0439\u043a\u0440\u043e\u0441\u043e\u0444\u0442 \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 (\u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e xml \u0430\u0440\u0445\u0438\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0432 \u0432\u043e\u0440\u0434\u0435 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c), \u0434\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0442\u043e\u0436\u0435 \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043c\u043e\u0433\u0443\u0442 \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e.<br \/>  3) \u0412\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u043b\u0447\u0443 \u043f\u0440\u043e \u0444\u0430\u0439\u043b\u044b \u043d\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0432 \u043e\u0444\u0438\u0441-\u043f\u0430\u043a\u0435\u0442. \u041c\u0430\u043b\u043e \u043a\u0442\u043e \u0437\u043d\u0430\u0435\u0442, \u043d\u043e Google Docs \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432 \u0441\u0432\u043e\u0435\u043c \u0430\u0440\u0441\u0435\u043d\u0430\u043b\u0435 Drawings, Forms \u0438 \u043a\u0443\u0447\u0443 \u0432\u0441\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u0430\u043a \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f. \u042f\u0440\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 Google Drawings, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 &quot;\u0442\u0443\u0434\u0430-\u043e\u0431\u0440\u0430\u0442\u043d\u043e-\u0442\u0443\u0434\u0430&quot; (\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u044d\u0442\u043e \u0432 exportFormats \u0438 importFormats). \u0412 \u0438\u0442\u043e\u0433\u0435 \u043d\u0430 \u044d\u0442\u0438 \u0432\u0435\u0449\u0438 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0437\u0430\u0431\u0438\u0442\u044c \u0432 \u043d\u0430\u0434\u0435\u0436\u0434\u0435 \u0447\u0442\u043e \u0432 \u0436\u0438\u0437\u043d\u0438 \u043e\u043d\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0438 \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u044f\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u044b\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0434\u0438\u043a\u0438\u0439 \u043a\u043e\u0441\u0442\u044b\u043b\u044c: \u043a\u043e \u0432\u0441\u0435\u043c Google Docs \u0444\u0430\u0439\u043b\u0430\u043c \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f .ext \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0443 \u0432 \u043c\u0438\u0440\u0435 Microsoft. \u0418 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 (\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435) \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0444\u0430\u0439\u043b \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435\u043c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u043c \u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 -&gt; \u0414\u0438\u0441\u043a, \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0432\u0435\u0431-\u0432\u0435\u0440\u0441\u0438\u044e Google Doc \u0444\u0430\u0439\u043b\u0430, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0438\u0440\u0430\u0442\u044c \u0435\u0435 \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 Office \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0440\u0430\u0441\u0448\u0430\u0440\u0438\u0432\u0430\u043d\u0438\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e).<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435 \u0432\u044b\u044f\u0432\u0438\u043b\u0430.<\/p>\n<p>  <\/p>\n<hr\/>\n<p>  <\/p>\n<h2 id=\"punkt-pro-analogi\">\u041f\u0443\u043d\u043a\u0442 \u043f\u0440\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438<\/h2>\n<p>  <\/p>\n<p>\u0414\u0430, \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 &quot;\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432 \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u0438\u043b\u0438 \u043e\u043d\u0438 \u0432\u0441\u0435 \u0445\u0443\u0436\u0435&quot;. \u041f\u043e\u043b\u043e\u0436\u0430 \u0440\u0443\u043a\u0443 \u043d\u0430 \u0441\u0435\u0440\u0434\u0446\u0435, \u044d\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u0430\u043a. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0438\u0441\u043a\u0438 \u0431\u044b\u043b\u0438 \u043f\u043e\u0434 \u0443\u0431\u0443\u043d\u0442\u0443, \u0438 \u043d\u0430 \u0433\u043b\u0430\u0437\u0430 \u043f\u043e\u043f\u0430\u043b\u0430\u0441\u044c \u043f\u0430\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 (\u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e\u0431 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 grive), \u043d\u043e \u043b\u0438\u0447\u043d\u043e \u043c\u0435\u043d\u044f \u043e\u043d\u0438 \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442, \u0433\u0434\u0435-\u0442\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0433\u0434\u0435-\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u043d\u0435\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043b\u0438\u0448\u043d\u0435\u0439 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438, \u0433\u0434\u0435-\u0442\u043e \u0435\u0449\u0435 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e. \u041e\u043f\u0440\u0430\u0432\u0434\u0430\u043b\u0441\u044f \u0432 \u043e\u0431\u0449\u0435\u043c \u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u0430. \u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u043e\u0442.<\/p>\n<p>  <\/p>\n<hr\/>\n<p>  <\/p>\n<h2 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438e<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e\u0440\u0430 \u0443\u0436\u0435 \u043f\u043e\u0434\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0442\u043e\u0433\u0438.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e-\u0442\u043e \u0435\u0449\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c &quot;\u0434\u043e\u043f\u0438\u043b\u0438\u0442\u044c&quot; \u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e. \u041d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u0431\u044b\u043b\u0430 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u0430. \u0412 \u043f\u043b\u0430\u043d\u0430\u0445 \u0435\u0449\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u044d\u0442\u043e \u0432\u0441\u0435 \u043f\u043e\u0434\u0448\u043b\u0438\u0444\u043e\u0432\u0430\u0442\u044c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u043b\u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0443\u044e \u0411\u0414 \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e Google Docs \u0444\u0430\u0439\u043b\u0430\u0445, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u0430\u0439\u043b\u0443 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0444\u0430\u0439\u043b \u0432 \u043e\u0431\u043b\u0430\u043a\u0435. \u041d\u043e \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e,&quot;\u0438\u0437 \u043f\u0443\u0448\u043a\u0438 \u043f\u043e \u0432\u043e\u0440\u043e\u0431\u044c\u044f\u043c&quot;, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043a\u0430 \u0438 \u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e. \u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u0435\u043d\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u043f\u043b\u0430\u043d\u0430\u0445 \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u0442\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0432 \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u044f\u0434\u043e\u043c \u0441 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043f\u0430\u043f\u043a\u043e\u0439.<\/p>\n<p>  <\/p>\n<p>\u0416\u0434\u0443 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432, \u043a\u0440\u0438\u0442\u0438\u043a\u0438 \u0438 \u0441\u043e\u0432\u0435\u0442\u043e\u0432, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u043c\u043e\u0436\u043d\u043e \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/github.com\/i-love-cats1\/Google-Drive-sync\">\u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>.<\/p>\n<p>  <\/p>\n<p><strong>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438, \u0435\u0449\u0435 \u0440\u0430\u0437:<\/strong><\/p>\n<p>  <\/p>\n<p>1) <a href=\"https:\/\/developers.google.com\/drive\/v3\/reference\/\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u0441\u043f\u0438\u0441\u043e\u043a API<\/a>, \u0442\u0430\u043c \u0436\u0435 \u0440\u044f\u0434\u043e\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b<br \/>  2) <a href=\"https:\/\/developers.google.com\/drive\/v3\/web\/quickstart\/python\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 quickstart-\u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b<\/a><br \/>  3) <a href=\"https:\/\/github.com\/i-love-cats1\/Google-Drive-sync\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a><\/p>\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=\"https:\/\/habrahabr.ru\/post\/328248\/\"> https:\/\/habrahabr.ru\/post\/328248\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/3c2\/3cd\/794\/3c23cd794b1c49198fee926f1e330a7b.jpg\"  width=\"60%\" height=\"60%\"\/><\/div>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Google Drive REST API, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u043c &quot;\u043f\u0440\u044f\u043c\u0443\u044e&quot; \u0438 &quot;\u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e&quot; \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0430\u043f\u043a\u0438 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435 \u0413\u0443\u0433\u043b \u0414\u0438\u0441\u043a\u0430, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043c \u043a\u0430\u043a\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Google Docs \u0447\u0435\u0440\u0435\u0437 API \u0414\u0438\u0441\u043a\u0430 \u0438 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0445 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e\u0431\u044b (\u043f\u043e\u0447\u0442\u0438) \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u043b. <\/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-286060","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/286060","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=286060"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/286060\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=286060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=286060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=286060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}