{"id":449,"date":"2019-10-27T23:11:58","date_gmt":"2019-10-27T23:11:58","guid":{"rendered":"http:\/\/dogukantunc.com\/?p=449"},"modified":"2020-10-30T22:50:22","modified_gmt":"2020-10-30T21:50:22","slug":"windows-10-spotlight-wallpaper-downloader","status":"publish","type":"post","link":"https:\/\/dogukantunc.com\/?p=449","title":{"rendered":"Windows 10 Spotlight Wallpaper Downloader"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>Selamlar, bir s\u00fcredir <strong>Python<\/strong> ile m\u00fcnasebet i\u00e7erisindeyim, temelde sekt\u00f6r sebebiyle kullanmakta oldu\u011fum dil C\/C++ olsa da bu yeni ve g\u00fczel platformda neler yap\u0131labildi\u011fini g\u00f6rmek i\u00e7in ara ara biraz kurcal\u0131yorum.<\/p>\n\n\n\n<p><strong>C++<\/strong> veya ne bileyim, daha \u00fcst seviye diller (<strong>Java<\/strong>, <strong>C#<\/strong>) ile aras\u0131nda ne farklar var diye bak\u0131n\u0131rken, akl\u0131ma g\u00fczel bir uygulama fikri geldi.<\/p>\n\n\n\n<p>Ne zamand\u0131r, Windows 10&#8217;un b\u00f6yle Lock Screen&#8217;inde falan \u00e7\u0131kan g\u00fczel foto\u011fraflar\u0131n (Windows Spotlight) kayna\u011f\u0131n\u0131 ar\u0131yodum. Sonradan buldum da, ama biraz bekledi\u011fimden fazla say\u0131dalard\u0131 ve tek t\u0131kla indirmeye m\u00fcsait de\u011fildi.<\/p>\n\n\n\n<p>Bir arkada\u015f, sayfas\u0131nda bu imajlar\u0131 host ediyor sa\u011folsun. Buradan bu imajlar\u0131 kod marifetiyle scrape&#8217;leyebilir miyim diye merak ettim. Sonra da bunu neden Python ile yapmayay\u0131m ki dedim. \u0130lgili crawler kodu a\u015fa\u011f\u0131dad\u0131r. (<strong>Spyder<\/strong> \u00fczerinde Python 3 kullanarak yazd\u0131m.)<\/p>\n\n\n\n<p><em>Not: Bu dilde yeniyim, s\u00fcr\u00e7-\u00fc lisan ettiysek affola.<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># -*- coding: utf-8 -*-\n\"\"\"\nCreated on Sun Oct 27 22:11:10 2019\n\n@author: DTunc\n\"\"\"\n\nimport http.client\n\ndef getPageHtml(urlroot,urlsuffix=\"\/\"):\n    #print(\"Getting URL: \",urlroot,urlsuffix)\n    conn = http.client.HTTPSConnection(urlroot,443)\n    conn.request('GET',urlsuffix)\n    r= conn.getresponse()\n    output = r.read()\n    conn.close()\n    return output\n\n#buray\u0131 tabi ki kendinize g\u00f6re de\u011fi\u015ftirmek isteyeceksiniz\ndownloadFolder = \"D:\/Torrent Download\/WindowsSpotlight\/\"\n\npageRoot = 'spotlight.it-notes.ru'\npageSuffix = '\/page\/'\ntotalBytes = 0\ncurrentPageNumber = 1\nmaxPageNumber = -1\n\n\nrootHtml = getPageHtml(pageRoot)\npageNumberDividerPhrase = \"next page-numbers\"\n\npageNumberSplit = str(rootHtml).split(pageNumberDividerPhrase)\npageNumberStr = pageNumberSplit&#091;0]\npgNoIndex = pageNumberStr.rfind(\"page\")\npgNoIndexStart = pgNoIndex + 5\npgNoIndexEnd = pageNumberStr.rfind(\"\\\\'&gt;\")\npageNumber = pageNumberStr&#091;pgNoIndexStart:pgNoIndexEnd]\n\nprint(\"There are \",pageNumber,\" pages in total.\")\n\nmaxPageNumber = int(pageNumber)\n\nfor p in range(1,maxPageNumber+1):    \n    print(\"\\n---Page: \",currentPageNumber,\"---\\n\\n\")\n    currentPageNumber = currentPageNumber + 1\n    pageHtml = getPageHtml(pageRoot,pageSuffix + str(p))    \n    pageSplit = str(pageHtml).split(\"\\\"more-link\\\"\")\n    a = 1\n    for l in pageSplit&#091;1:]:\n        imagelink = l&#091;7:l.find(\"title\")-2]\n        imageID = imagelink&#091;imagelink.rfind(\"\/\")+1:]\n        imageSrc = imageID + \".jpg\"\n        print(\"\\n\\n\",str(a),\"------------------\\n\\n\",imagelink,\"- ID : \",imageID,\"\\n\")\n        a = a + 1\n        \n        imageLinkHtml = str(getPageHtml(pageRoot,imagelink&#091;imagelink.find(\"images\")-1:]))\n          \n        \n        imageDlLink = imageLinkHtml&#091;imageLinkHtml.find(\"wp-content\/uploads\"):imageLinkHtml.find(imageSrc)+len(imageSrc)]\n        \n        \n        print(\"Downloading image: \",imageDlLink)\n        \n        image = getPageHtml(pageRoot,\"\/\" + imageDlLink)\n        \n        with open(downloadFolder + imageSrc, 'wb') as f:\n            f.write(image)\n            f.flush()\n            f.close()\n            totalBytes = totalBytes + len(image)\n            print(totalBytes\/1024\/1024,\" MB downloaded.\")\n#Finito.<\/code><\/pre>\n\n\n\n<p>Ben 1 saat kadar \u00f6nce ba\u015flatm\u0131\u015ft\u0131m, indirme i\u015flemi az \u00f6nce bitti. 450 civar\u0131 sayfa vard\u0131 ben indirdi\u011fimde (her g\u00fcn yenilerini ekliyor), her sayfada 5 Wallpaper var. Bu da toplam yakla\u015f\u0131k 1.5 GB etti.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"511\" src=\"https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/Ekran-Al%C4%B1nt%C4%B1s%C4%B1-1.png?resize=750%2C511\" alt=\"\" class=\"wp-image-451\" srcset=\"https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/Ekran-Al%C4%B1nt%C4%B1s%C4%B1-1.png?w=913&amp;ssl=1 913w, https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/Ekran-Al%C4%B1nt%C4%B1s%C4%B1-1.png?resize=300%2C204&amp;ssl=1 300w, https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/Ekran-Al%C4%B1nt%C4%B1s%C4%B1-1.png?resize=768%2C523&amp;ssl=1 768w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p>Se\u00e7 be\u011fen al, g\u00fczel bir galeri. Shuffle mode&#8217;da 10 dakikada bir de\u011fi\u015fir \u015fekilde kurdum ben.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"372\" src=\"https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/Ekran-Al%C4%B1nt%C4%B1s%C4%B12-1024x508.png?resize=750%2C372\" alt=\"\" class=\"wp-image-452\" srcset=\"https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/Ekran-Al%C4%B1nt%C4%B1s%C4%B12.png?resize=1024%2C508&amp;ssl=1 1024w, https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/Ekran-Al%C4%B1nt%C4%B1s%C4%B12.png?resize=300%2C149&amp;ssl=1 300w, https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/Ekran-Al%C4%B1nt%C4%B1s%C4%B12.png?resize=768%2C381&amp;ssl=1 768w, https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/Ekran-Al%C4%B1nt%C4%B1s%C4%B12.png?w=1165&amp;ssl=1 1165w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p>G\u00fcle g\u00fcle kullan\u0131n, afiyet olsun.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"422\" src=\"https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/9915ac9b612b3f066a13832b91e77b73-1024x576.jpg?resize=750%2C422\" alt=\"\" class=\"wp-image-459\" srcset=\"https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/9915ac9b612b3f066a13832b91e77b73.jpg?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/9915ac9b612b3f066a13832b91e77b73.jpg?resize=300%2C169&amp;ssl=1 300w, https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/9915ac9b612b3f066a13832b91e77b73.jpg?resize=768%2C432&amp;ssl=1 768w, https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/9915ac9b612b3f066a13832b91e77b73.jpg?w=1920&amp;ssl=1 1920w, https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/9915ac9b612b3f066a13832b91e77b73.jpg?w=1500&amp;ssl=1 1500w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p><strong>NOT: Bu site bir s\u00fcredir yeni bir adrese ta\u015f\u0131nm\u0131\u015f. Bu y\u00fczden bu sayfada g\u00f6rd\u00fc\u011f\u00fcn\u00fcz script muhtemelen \u00e7al\u0131\u015fmayacakt\u0131r. Ben de downloader script&#8217;ini g\u00fcncelledim ve iyile\u015ftirdim. Buradan ula\u015fabilirsiniz: <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/tuncdogukan\/python_projects\/blob\/master\/WindowsSpotlightDownloader.py\" target=\"_blank\">Wallpaper Scraper v2<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Selamlar, bir s\u00fcredir Python ile m\u00fcnasebet i\u00e7erisindeyim, temelde sekt\u00f6r sebebiyle kullanmakta oldu\u011fum dil C\/C++ olsa da bu yeni ve g\u00fczel platformda neler yap\u0131labildi\u011fini g\u00f6rmek i\u00e7in ara ara biraz kurcal\u0131yorum. C++ veya ne bileyim, daha \u00fcst seviye diller (Java, C#) ile aras\u0131nda ne farklar var diye bak\u0131n\u0131rken, akl\u0131ma g\u00fczel bir uygulama<\/p>\n","protected":false},"author":2,"featured_media":459,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[31],"tags":[29,27,32,28,24,26,30,25],"class_list":["post-449","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji","tag-crawler","tag-download","tag-html","tag-parser","tag-python","tag-spotlight","tag-spyder","tag-windows"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/dogukantunc.com\/wp-content\/uploads\/2019\/10\/9915ac9b612b3f066a13832b91e77b73.jpg?fit=1920%2C1080&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dogukantunc.com\/index.php?rest_route=\/wp\/v2\/posts\/449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dogukantunc.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dogukantunc.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dogukantunc.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dogukantunc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=449"}],"version-history":[{"count":6,"href":"https:\/\/dogukantunc.com\/index.php?rest_route=\/wp\/v2\/posts\/449\/revisions"}],"predecessor-version":[{"id":919,"href":"https:\/\/dogukantunc.com\/index.php?rest_route=\/wp\/v2\/posts\/449\/revisions\/919"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dogukantunc.com\/index.php?rest_route=\/wp\/v2\/media\/459"}],"wp:attachment":[{"href":"https:\/\/dogukantunc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dogukantunc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dogukantunc.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}