From 6ee4fcb12440ddbf03767e28232109e4dd5ad2db Mon Sep 17 00:00:00 2001 From: Ein Verne Date: Fri, 4 Sep 2020 13:34:49 +0800 Subject: [PATCH] Update bing daily to save Pictures --- hammerspoon/Spoons/BingDaily.spoon/init.lua | 32 +++++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/hammerspoon/Spoons/BingDaily.spoon/init.lua b/hammerspoon/Spoons/BingDaily.spoon/init.lua index b765fba..ceea287 100644 --- a/hammerspoon/Spoons/BingDaily.spoon/init.lua +++ b/hammerspoon/Spoons/BingDaily.spoon/init.lua @@ -3,6 +3,7 @@ --- Use Bing daily picture as your wallpaper, automatically. --- --- Download: [https://github.com/Hammerspoon/Spoons/raw/master/Spoons/BingDaily.spoon.zip](https://github.com/Hammerspoon/Spoons/raw/master/Spoons/BingDaily.spoon.zip) +log = hs.logger.new('BingDaily', 'debug') local obj={} obj.__index = obj @@ -13,13 +14,13 @@ obj.version = "1.0" obj.author = "ashfinal " obj.homepage = "https://github.com/Hammerspoon/Spoons" obj.license = "MIT - https://opensource.org/licenses/MIT" +obj.bing_path = os.getenv("HOME") .. "/Pictures/Bing/" local function curl_callback(exitCode, stdOut, stdErr) if exitCode == 0 then obj.task = nil - obj.last_pic = hs.http.urlParts(obj.full_url).lastPathComponent - local localpath = os.getenv("HOME") .. "/.Trash/" .. hs.http.urlParts(obj.full_url).lastPathComponent - hs.screen.mainScreen():desktopImageURL("file://" .. localpath) + log.i("callback " .. obj.localpath) + hs.screen.mainScreen():desktopImageURL("file://" .. obj.localpath) else print(stdOut, stdErr) end @@ -27,33 +28,46 @@ end local function bingRequest() local user_agent_str = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4" - local json_req_url = "http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1" + local json_req_url = "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1" hs.http.asyncGet(json_req_url, {["User-Agent"]=user_agent_str}, function(stat,body,header) if stat == 200 then if pcall(function() hs.json.decode(body) end) then local decode_data = hs.json.decode(body) local pic_url = decode_data.images[1].url - local pic_name = hs.http.urlParts(pic_url).lastPathComponent - if obj.last_pic ~= pic_name then + -- local pic_name = hs.http.urlParts(pic_url).lastPathComponent + local pic_content_name = decode_data.images[1].copyright + local pic_name = decode_data.images[1].fullstartdate .. "_" .. pic_content_name .. ".jpg" + local pic_name = pic_name:gsub("/", "-") + log.i(pic_name) + local localpath = obj.bing_path .. pic_name + if obj.localpath ~= localpath then obj.full_url = "https://www.bing.com" .. pic_url if obj.task then obj.task:terminate() obj.task = nil end - local localpath = os.getenv("HOME") .. "/.Trash/" .. hs.http.urlParts(obj.full_url).lastPathComponent + obj.localpath = localpath obj.task = hs.task.new("/usr/bin/curl", curl_callback, {"-A", user_agent_str, obj.full_url, "-o", localpath}) obj.task:start() end end else - print("Bing URL request failed!") + log.i("Bing URL request failed!") end end) end +function create_dir(path) + if hs.fs.dir(path) == nil then + hs.fs.mkdir(path) + log.i("path: " .. path .. " create successfully!") + end +end + function obj:init() + create_dir(obj.bing_path) if obj.timer == nil then - obj.timer = hs.timer.doEvery(3*60*60, function() bingRequest() end) + obj.timer = hs.timer.doEvery(60, function() bingRequest() end) obj.timer:setNextTrigger(5) else obj.timer:start()