blog中图片的存放
结合flickr的使用
Contents
Blog的图片
github提供的免费空间非常的有限,但是流量却是无限制的。所以提倡节约的美德,只好将图片转存到其它地方了。
Flickr这个大家都知道的,免费1TB的存储空间。不用用太对不起自己了。^-^
虽然有了放置图片的地方,获取图片路径又是个麻烦事。所以写了个脚本爬爬网站生成 [***]: URL "***"
Markdow格式的图片引用文本还是不错的。
当然这个能运行的程序都是建立在正确的步骤产生的数据之上的。
* 进入flickr,上传图片(注册账号之类的就不表了)
* 以自然月建立相片集(这个月是8月,则是2013-08)
* 以yyyy-mm-dd为图片ALT,为了方便获取到相同alt图片的URL (见下图)
* yyyy-mm-dd : TEXT 为图片描述,方便获取“:”(英文逗号)后的文本
登录flickr之后,从Photostream–>编辑,可以编辑图片的alt属性,描述文本。
为了不必要的工作量,可以在上传图片的时候就编辑好alt属性和描述文本及选择相片集,可以减少很多修改的工作。
相片集只是为了给图片做个分类存储,便于浏览,以免杂乱无章。
程序(python)
通过定义自己的flicker的URL,ALT,TEXT获取图片链接和描述文字
1 # -*- coding: utf-8 -*-
2 """
3 get my flicker image url use to Markdown text
4 """
5
6 __author__ = "mingdong.li"
7 __date__ = '$2013-08-01'
8 __version__ = '1.0'
9
10 import urllib2
11 import re
12 import sys
13 from bs4 import BeautifulSoup
14
15 """定义自己的URL,ALT和TEXT"""
16 URL = 'http://www.flickr.com/photos/96090901@N04/?details=1'
17 ALT = '2013-08-06'
18 TEXT = '2013-08-06:'
19
20 class ImageAndTextValueException(Exception):
21 """A define exception class"""
22 def __init__(self, text, image, text_len, image_len):
23 Exception.__init__(self)
24 self.text = text
25 self.image = image
26 self.text_len = text_len
27 self.image_len = image_len
28
29 def getHtmlText(url):
30 """return the image_url html chunk"""
31 text = urllib2.urlopen(url)
32 chunk = text.read()
33 return chunk
34
35 def parseChunk(chunk):
36 """use BeautifulSoup parse the image url and detail"""
37 soup = BeautifulSoup(chunk)
38 text = soup.find_all(text=re.compile(TEXT))
39 img = soup.find_all(alt=ALT)
40 try:
41 if (len(text) < 1 or len(img) < 1) or (len(text) != len(img)):
42 raise ImageAndTextValueException(text, img, len(text), len(img))
43 except ImageAndTextValueException, e:
44 print "The image URL value is %s and detail text is %s.\n \
45 The len(image) is %d and len(text) is %d.\n \
46 Please check the step is right?" % (e.image, e.text, e.image_len, e.text_len)
47 sys.exit() # exit the program
48 return (img, text)
49
50
51 if __name__ == '__main__':
52 chunk = getHtmlText(URL)
53 content = parseChunk(chunk)
54
55 imgs = content[0]
56 texts = content[1]
57 imgs_list = []
58 texts_list = []
59
60 if len(imgs) > 1:
61 for img in imgs:
62 img_url = re.findall(r'[a-zA-z]+://[^\s]*.jpg', str(img))
63 img_split = unicode(img_url[0]).split('_m.')
64 imgs_list.append("".join(img_split).join('.').join(img_split))
65 if len(texts) > 1:
66 for text in texts:
67 text_split = unicode(text).split(':')
68 texts_list.append(text_split[1])
69
70 #combination imgs_list and texts_list
71 if len(imgs_list) == len(texts_list):
72 cls=map(lambda name, url, alt: "[%s]: %s \"%s\"" % (name, url, alt), texts_list, imgs_list, texts_list)
73 print cls
74 for ls in cls:
75 print ls.encode('utf-8')
76 else:
77 print "Please check the step is right?"