| 
 | 
 
 
            恰巧发现有个叫“EarthLiveSharp”,可用将日本向日葵8号卫星的地球实时图片设为屏保。向日葵8号卫星的地球实时图片官网为:http://himawari8.nict.go.jp/,EarthLiveSharp的项目地址是:https://github.com/bitdust/EarthLiveSharp。 
为了减轻向日葵8号的服务器负担,同时也是提高地球实时图片的获取成功率,需要使用cloudinary来做CDN。注册配置都在软件里有说明。 
目前EarthLiveSharp暂时没有清理cloudinary的CDN图片缓存的功能,于是我用python写了一个,并尝试用gist管理,地址为:https://gist.github.com/creke/c5a8a18fa41b8f5c1a0719a7e0cf4de6 
同时,为了大家方便,顺便编译成了Windows可执行文件,下载: https://pan.baidu.com/s/1c27fXEo 提取码:k33n 
为了自己检索方便,顺便在这里附上python脚本源码,可以作为python如何使用RESTful接口的例子,相关工具类函数也便于参考。 
EarthLiveCleanCloudinary.py 
# -*- coding: utf-8 -*- 
# Author: Creke 
# HomePage: http://blog.creke.net 
import sys 
import urllib, urllib2 
import base64 
import json 
URLLIB_DEBUG_LEVEL = 1 
URLLIB_TIMEOUT = 5 
def Dict2Uri(dic): 
  return urllib.urlencode(dic) 
def GenUrllibReq(url, method, api_key, api_secret, post_data=None): 
  urlreq = None 
  if post_data is None: 
    urlreq = urllib2.Request(url) 
  else: 
    urlreq = urllib2.Request(url, post_data) 
  urlreq.get_method = lambda: method 
  auth_str = base64.b64encode('%s:%s' % (api_key, api_secret)) 
  urlreq.add_header("Authorization", "Basic %s" % auth_str) 
  urlreq.add_header('Cache-Control', 'no-cache') 
  return urlreq 
def GetApiDelUrl(cloud_name, ): 
  url = "https://api.cloudinary.com/v1_1/%s/resources/image/%s" % (cloud_name, ) 
  params = {"prefix": "http://himawari8-dl"} 
  url = url + "?" + Dict2Uri(params) 
  return url 
def main(argv): 
  arg_idx = 1 
  api_key = argv[arg_idx] 
  arg_idx += 1 
  api_secret = argv[arg_idx] 
  arg_idx += 1 
  cloud_name = argv[arg_idx] 
  while True: 
    del_url = GetApiDelUrl(cloud_name, 'fetch') 
    urlreq = GenUrllibReq(del_url, 'DELETE', api_key, api_secret) 
    print "===========================" 
    print "Requesting %s" % (del_url) 
    opener = urllib2.build_opener(urllib2.HTTPSHandler(debuglevel=URLLIB_DEBUG_LEVEL)) 
    urllib_open = opener.open(urlreq, timeout=URLLIB_TIMEOUT) 
    response = urllib_open.read() 
    print "===========================" 
    print "Response:" 
    print "%s" % (response) 
    print "===========================" 
    urllib_open.close() 
    print "Done Requesting" 
    res_json = json.loads(response) 
    deleted_cnt = len(res_json['deleted']) 
    print "Deleted %u himawari8 pics" % (deleted_cnt) 
    print "===========================" 
    if 'next_cursor' in res_json and deleted_cnt>0: 
      print "Due to Cloudinary limits, we're starting a new round" 
    else: 
      break 
  return 0 
def PrintHelp(argv): 
  print "\t USAGE: %s [api_key] [api_secret] [cloud_name]" % (argv[0]) 
if __name__ == '__main__': 
  if len(sys.argv)  
EarthLiveCleanCloudinary2exe.py 
# -*- coding: utf-8 -*- 
# Author: Creke 
# HomePage: http://blog.creke.net 
from distutils.core import setup 
import py2exe 
setup(console=['EarthLiveCleanCloudinary.py']) 
Windows编译版本下载: 
链接: https://pan.baidu.com/s/1skADZeH 密码: rdgb 
             
             
         |   
 
 
 
 |