Cacooの画像一括ダウンロード †画像に番号を振って保存する。 本当は一気にpdf化したかったんだけど、 URLで非公開図形用(要APIキー) †2010.10.01
引数
from xml.dom.minidom import parse
import sys
import urllib2
import urllib
import os
if len(sys.argv) < 3:
print 'Usage: # python %s api-key diagram-key' % sys.argv[0]
sys.exit()
api = sys.argv[1]
diagram = sys.argv[2]
url = 'https://cacoo.com/api/v1/diagrams/' + diagram + '.xml?apiKey=' + api
dom = parse(urllib2.urlopen(url))
if not os.path.isdir(diagram):
os.mkdir(diagram)
no = 1
for sheet in dom.getElementsByTagName('sheet'):
file = ('%02d' % no) + '.png'
imgurl = sheet.getElementsByTagName('imageUrlForApi')[0].firstChild.nodeValue
print imgurl
urllib.urlretrieve(imgurl + '?apiKey=' + api, os.path.join(diagram, file))
no += 1
dom.unlink()
URLで公開図形用(APIキー不要) †2010.06.06
Pythonでググってコピペしながら書いてみた。 パラメータに図形キー(16文字のランダムな文字列)を渡すと HTMLを適当に読んでいるのでCacooが仕様変更したら動かないと思われるので注意。 from htmllib import HTMLParser
from formatter import NullFormatter
import urllib2
import urllib
import os
import sys
class ExtractTextLinkParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self, NullFormatter())
self.links = []
def anchor_bgn(self, href, name, type): # <a>が見つかった場合の処理
HTMLParser.anchor_bgn(self, href, name, type)
if len(href) > 1 and href[:1] == '#':
self.links.append(href[1:])
def get_links(url):
response = urllib2.urlopen(url)
parser = ExtractTextLinkParser()
parser.feed(response.read())
parser.close()
return parser.links
if len(sys.argv) < 2:
print 'Usage: # python %s diagram-key' % sys.argv[0]
sys.exit()
key = sys.argv[1]
url = 'https://cacoo.com/diagrams/' + key
links = get_links(url)
os.mkdir(key)
no = 1
for href in links:
file = ("%02d" % no) + '.png'
print no, '/', len(links)
urllib.urlretrieve(url + '-' + href + '.png', os.path.join(key, file))
no += 1
参考元 |