mirror of https://github.com/einverne/dotfiles.git
				
				
			
				 1 changed files with 23 additions and 9 deletions
			
			
		@ -3,6 +3,7 @@ | 
				
			|||||||
--- Use Bing daily picture as your wallpaper, automatically. | 
					--- 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) | 
					--- 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={} | 
					local obj={} | 
				
			||||||
obj.__index = obj | 
					obj.__index = obj | 
				
			||||||
@ -13,13 +14,13 @@ obj.version = "1.0" | 
				
			|||||||
obj.author = "ashfinal <[email protected]>" | 
					obj.author = "ashfinal <[email protected]>" | 
				
			||||||
obj.homepage = "https://github.com/Hammerspoon/Spoons" | 
					obj.homepage = "https://github.com/Hammerspoon/Spoons" | 
				
			||||||
obj.license = "MIT - https://opensource.org/licenses/MIT" | 
					obj.license = "MIT - https://opensource.org/licenses/MIT" | 
				
			||||||
 | 
					obj.bing_path = os.getenv("HOME") .. "/Pictures/Bing/" | 
				
			||||||
 | 
					
 | 
				
			||||||
local function curl_callback(exitCode, stdOut, stdErr) | 
					local function curl_callback(exitCode, stdOut, stdErr) | 
				
			||||||
    if exitCode == 0 then | 
					    if exitCode == 0 then | 
				
			||||||
        obj.task = nil | 
					        obj.task = nil | 
				
			||||||
        obj.last_pic = hs.http.urlParts(obj.full_url).lastPathComponent | 
							log.i("callback " .. obj.localpath) | 
				
			||||||
        local localpath = os.getenv("HOME") .. "/.Trash/" .. hs.http.urlParts(obj.full_url).lastPathComponent | 
					        hs.screen.mainScreen():desktopImageURL("file://" .. obj.localpath) | 
				
			||||||
        hs.screen.mainScreen():desktopImageURL("file://" .. localpath) | 
					 | 
				
			||||||
    else | 
					    else | 
				
			||||||
        print(stdOut, stdErr) | 
					        print(stdOut, stdErr) | 
				
			||||||
    end | 
					    end | 
				
			||||||
@ -27,33 +28,46 @@ end | 
				
			|||||||
 | 
					
 | 
				
			||||||
local function bingRequest() | 
					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 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) | 
					    hs.http.asyncGet(json_req_url, {["User-Agent"]=user_agent_str}, function(stat,body,header) | 
				
			||||||
        if stat == 200 then | 
					        if stat == 200 then | 
				
			||||||
            if pcall(function() hs.json.decode(body) end) then | 
					            if pcall(function() hs.json.decode(body) end) then | 
				
			||||||
                local decode_data = hs.json.decode(body) | 
					                local decode_data = hs.json.decode(body) | 
				
			||||||
                local pic_url = decode_data.images[1].url | 
					                local pic_url = decode_data.images[1].url | 
				
			||||||
                local pic_name = hs.http.urlParts(pic_url).lastPathComponent | 
					                -- local pic_name = hs.http.urlParts(pic_url).lastPathComponent | 
				
			||||||
                if obj.last_pic ~= pic_name then | 
									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 | 
					                    obj.full_url = "https://www.bing.com" .. pic_url | 
				
			||||||
                    if obj.task then | 
					                    if obj.task then | 
				
			||||||
                        obj.task:terminate() | 
					                        obj.task:terminate() | 
				
			||||||
                        obj.task = nil | 
					                        obj.task = nil | 
				
			||||||
                    end | 
					                    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 = hs.task.new("/usr/bin/curl", curl_callback, {"-A", user_agent_str, obj.full_url, "-o", localpath}) | 
				
			||||||
                    obj.task:start() | 
					                    obj.task:start() | 
				
			||||||
                end | 
					                end | 
				
			||||||
            end | 
					            end | 
				
			||||||
        else | 
					        else | 
				
			||||||
            print("Bing URL request failed!") | 
					            log.i("Bing URL request failed!") | 
				
			||||||
        end | 
					        end | 
				
			||||||
    end) | 
					    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() | 
					function obj:init() | 
				
			||||||
 | 
						create_dir(obj.bing_path) | 
				
			||||||
    if obj.timer == nil then | 
					    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) | 
					        obj.timer:setNextTrigger(5) | 
				
			||||||
    else | 
					    else | 
				
			||||||
        obj.timer:start() | 
					        obj.timer:start() | 
				
			||||||
 | 
				
			|||||||
					Loading…
					
					
				
		Reference in new issue