tdoly bio photo

tdoly

喜爱爬山,徒步的IT小小鸟

Twitter Facebook Google+ Github

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属性,描述文本。

flickr介绍

为了不必要的工作量,可以在上传图片的时候就编辑好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?"