# -*- coding: utf-8 -*-

EMOTIONNAME2TITLE = {
	'1.png': u'微笑',
	'2.png': u'撇嘴',
	'3.png': u'色',
	'4.png': u'发呆',
	'5.png': u'得意',
	'6.png': u'流泪',
	'7.png': u'害羞',
	'8.png': u'闭嘴',
	'9.png': u'睡',
	'10.png': u'大哭',
	'11.png': u'尴尬',
	'12.png': u'发怒',
	'13.png': u'调皮',
	'14.png': u'呲牙',
	'15.png': u'惊讶',
	'16.png': u'难过',
	'17.png': u'酷',
	'18.png': u'冷汗',
	'19.png': u'抓狂',
	'20.png': u'吐',
	'21.png': u'偷笑',
	'22.png': u'可爱',
	'23.png': u'白眼',
	'24.png': u'傲慢',
	'25.png': u'饥饿',
	'26.png': u'困',
	'27.png': u'惊恐',
	'28.png': u'流汗',
	'29.png': u'憨笑',
	'30.png': u'大兵',
	'31.png': u'奋斗',
	'32.png': u'咒骂',
	'33.png': u'疑问',
	'34.png': u'嘘',
	'35.png': u'晕',
	'36.png': u'折磨',
	'37.png': u'衰',
	'38.png': u'骷髅',
	'39.png': u'敲打',
	'40.png': u'再见',
	'41.png': u'擦汗',
	'42.png': u'抠鼻',
	'43.png': u'鼓掌',
	'44.png': u'糗大了',
	'45.png': u'坏笑',
	'46.png': u'左哼哼',
	'47.png': u'右哼哼',
	'48.png': u'哈欠',
	'49.png': u'鄙视',
	'50.png': u'委屈',
	'51.png': u'快哭了',
	'52.png': u'阴险',
	'53.png': u'亲亲',
	'54.png': u'吓',
	'55.png': u'可怜',
	'56.png': u'菜刀',
	'57.png': u'西瓜',
	'58.png': u'啤酒',
	'59.png': u'篮球',
	'60.png': u'乒乓',
	'61.png': u'咖啡',
	'62.png': u'饭',
	'63.png': u'猪头',
	'64.png': u'玫瑰',
	'65.png': u'凋谢',
	'66.png': u'示爱',
	'67.png': u'爱心',
	'68.png': u'心碎',
	'69.png': u'蛋糕',
	'70.png': u'闪电',
	'71.png': u'炸弹',
	'72.png': u'刀',
	'73.png': u'足球',
	'74.png': u'瓢虫',
	'75.png': u'便便',
	'76.png': u'月亮',
	'77.png': u'太阳',
	'78.png': u'礼物',
	'79.png': u'拥抱',
	'80.png': u'强',
	'81.png': u'弱',
	'82.png': u'握手',
	'83.png': u'胜利',
	'84.png': u'抱拳',
	'85.png': u'勾引',
	'86.png': u'拳头',
	'87.png': u'差劲',
	'88.png': u'爱你',
	'89.png': u'NO',
	'90.png': u'OK',
	'91.png': u'爱情',
	'92.png': u'飞吻',
	'93.png': u'跳跳',
	'94.png': u'发抖',
	'95.png': u'怄火',
	'96.png': u'转圈',
	'97.png': u'磕头',
	'98.png': u'回头',
	'99.png': u'跳绳',
	'100.png': u'挥手',
}

TITLE2EMOTION = {
	u'微笑': '1.png',
	u'::)': '1.png',
	u'撇嘴': '2.png',
	u'::~': '2.png',
	u'色': '3.png',
	u'::B': '3.png',
	u'发呆': '4.png',
	u'::|': '4.png',
	u'得意': '5.png',
	u':8-)': '5.png',
	u'流泪': '6.png',
	u'::<': '6.png',
	u'害羞': '7.png',
	u'::$': '7.png',
	u'闭嘴': '8.png',
	u'::X': '8.png',
	u'睡': '9.png',
	u'::Z': '9.png',
	u'大哭': '10.png',
	u"::'(": '10.png',
	u'尴尬': '11.png',
	u'::-|': '11.png',
	u'发怒': '12.png',
	u'::@': '12.png',
	u'调皮': '13.png',
	u'::P': '13.png',
	u'呲牙': '14.png',
	u'::D': '14.png',
	u'惊讶': '15.png',
	u'::O': '15.png',
	u'难过': '16.png',
	u'::(': '16.png',
	u'酷': '17.png',
	u'::+': '17.png',
	u'冷汗': '18.png',
	u':--b': '18.png',
	u'抓狂': '19.png',
	u'::Q': '19.png',
	u'吐': '20.png',
	u'::T': '20.png',
	u'偷笑': '21.png',
	u':,@P': '21.png',
	u'可爱': '22.png',
	u':,@-D': '22.png',
	u'白眼': '23.png',
	u'::d': '23.png',
	u'傲慢': '24.png',
	u':,@o': '24.png',
	u'饥饿': '25.png',
	u'::g': '25.png',
	u'困': '26.png',
	u':|-)': '26.png',
	u'惊恐': '27.png',
	u'::!': '27.png',
	u'流汗': '28.png',
	u'::L': '28.png',
	u'憨笑': '29.png',
	u'::>': '29.png',
	u'大兵': '30.png',
	u'::,@': '30.png',
	u'奋斗': '31.png',
	u':,@f': '31.png',
	u'咒骂': '32.png',
	u'::-S': '32.png',
	u'疑问': '33.png',
	u':?': '33.png',
	u'嘘': '34.png',
	u':,@x': '34.png',
	u'晕': '35.png',
	u':,@@': '35.png',
	u'折磨': '36.png',
	u'::8': '36.png',
	u'衰': '37.png',
	u':,@!': '37.png',
	u'骷髅': '38.png',
	u':!!!': '38.png',
	u'敲打': '39.png',
	u':xx': '39.png',
	u'再见': '40.png',
	u':bye': '40.png',
	u'擦汗': '41.png',
	u':wipe': '41.png',
	u'抠鼻': '42.png',
	u':dig': '42.png',
	u'鼓掌': '43.png',
	u':handclap': '43.png',
	u'糗大了': '44.png',
	u':&-(': '44.png',
	u'坏笑': '45.png',
	u':B-)': '45.png',
	u'左哼哼': '46.png',
	u':<@': '46.png',
	u'右哼哼': '47.png',
	u':@>': '47.png',
	u'哈欠': '48.png',
	u'::-O': '48.png',
	u'鄙视': '49.png',
	u':>-|': '49.png',
	u'委屈': '50.png',
	u':P-(': '50.png',
	u'快哭了': '51.png',
	u"::'|": '51.png',
	u'阴险': '52.png',
	u':X-)': '52.png',
	u'亲亲': '53.png',
	u'::*': '53.png',
	u'吓': '54.png',
	u':@x': '54.png',
	u'可怜': '55.png',
	u':8*': '55.png',
	u'菜刀': '56.png',
	u':pd': '56.png',
	u'西瓜': '57.png',
	u':<W>': '57.png',
	u'啤酒': '58.png',
	u':beer': '58.png',
	u'篮球': '59.png',
	u':basketb': '59.png',
	u'乒乓': '60.png',
	u':oo': '60.png',
	u'咖啡': '61.png',
	u':coffee': '61.png',
	u'饭': '62.png',
	u':eat': '62.png',
	u'猪头': '63.png',
	u':pig': '63.png',
	u'玫瑰': '64.png',
	u':rose': '64.png',
	u'凋谢': '65.png',
	u':fade': '65.png',
	u'示爱': '66.png',
	u':showlove': '66.png',
	u'爱心': '67.png',
	u':heart': '67.png',
	u'心碎': '68.png',
	u':break': '68.png',
	u'蛋糕': '69.png',
	u':cake': '69.png',
	u'闪电': '70.png',
	u':li': '70.png',
	u'炸弹': '71.png',
	u':bome': '71.png',
	u'刀': '72.png',
	u':kn': '72.png',
	u'足球': '73.png',
	u':footb': '73.png',
	u'瓢虫': '74.png',
	u':ladybug': '74.png',
	u'便便': '75.png',
	u':shit': '75.png',
	u'月亮': '76.png',
	u':moon': '76.png',
	u'太阳': '77.png',
	u':sun': '77.png',
	u'礼物': '78.png',
	u':gift': '78.png',
	u'拥抱': '79.png',
	u':hug': '79.png',
	u'强': '80.png',
	u':strong': '80.png',
	u'弱': '81.png',
	u':weak': '81.png',
	u'握手': '82.png',
	u':share': '82.png',
	u'胜利': '83.png',
	u':v': '83.png',
	u'抱拳': '84.png',
	u':@)': '84.png',
	u'勾引': '85.png',
	u':jj': '85.png',
	u'拳头': '86.png',
	u':@@': '86.png',
	u'差劲': '87.png',
	u':bad': '87.png',
	u'爱你': '88.png',
	u':lvu': '88.png',
	u'NO': '89.png',
	u':no': '89.png',
	u'OK': '90.png',
	u':ok': '90.png',
	u'爱情': '91.png',
	u':love': '91.png',
	u'飞吻': '92.png',
	u':<L>': '92.png',
	u'跳跳': '93.png',
	u':jump': '93.png',
	u'发抖': '94.png',
	u':shake': '94.png',
	u'怄火': '95.png',
	u':<O>': '95.png',
	u'转圈': '96.png',
	u':circle': '96.png',
	u'磕头': '97.png',
	u':kotow': '97.png',
	u'回头': '98.png',
	u':turn': '98.png',
	u'跳绳': '99.png',
	u':skip': '99.png',
	u'挥手': '100.png',
	u':oY': '100.png',
}

WORDEMOTION2SYMBOL = {
	u'[微笑]': r'/::)',
	u'[撇嘴]': r'/::~',
	u'[色]': r'/::B',
	u'[发呆]': r'/::|',
	u'[得意]': r'/:8-)',
	u'[流泪]': r'/::<',
	u'[害羞]': r'/::$',
	u'[闭嘴]': r'/::X',
	u'[睡]': r'/::Z',
	u'[大哭]': r"/::'(",
	u'[尴尬]': r'/::-|',
	u'[发怒]': r'/::@',
	u'[调皮]': r'/::P',
	u'[呲牙]': r'/::D',
	u'[惊讶]': r'/::O',
	u'[难过]': r'/::(',
	u'[酷]': r'/::+',
	u'[冷汗]': r'/:--b',
	u'[抓狂]': r'/::Q',
	u'[吐]': r'/::T',
	u'[偷笑]': r'/:,@P',
	u'[可爱]': r'/:,@-D',
	u'[白眼]': r'/::d',
	u'[傲慢]': r'/:,@o',
	u'[饥饿]': r'/::g',
	u'[困]': r'/:|-)',
	u'[惊恐]': r'/::!',
	u'[流汗]': r'/::L',
	u'[憨笑]': r'/::>',
	u'[大兵]': r'/::,@',
	u'[奋斗]': r'/,:,@f',
	u'[咒骂]': r'/::-S',
	u'[疑问]': r'/:?',
	u'[嘘]': r'/:,@x',
	u'[晕]': r'/:,@@',
	u'[折磨]': r'/::8',
	u'[衰]': r'/:,@!',
	u'[骷髅]': r'/:!!!',
	u'[敲打]': r'/:xx',
	u'[再见]': r'/:bye',
	u'[擦汗]': r'/:wipe',
	u'[抠鼻]': r'/:dig',
	u'[鼓掌]': r'/:handclap',
	u'[糗大了]': r'/:&-(',
	u'[坏笑]': r'/:B-)',
	u'[左哼哼]': r'/:<@',
	u'[右哼哼]': r'/:@>',
	u'[哈欠]': r'/::-O',
	u'[鄙视]': r'/:>-|',
	u'[委屈]': r'/:P-(',
	u'[快哭了]': r"/::'|",
	u'[阴险]': r'/:X-)',
	u'[亲亲]': r'/::*',
	u'[吓]': r'/:@x',
	u'[可怜]': r'/:8*',
	u'[菜刀]': r'/:pd',
	u'[西瓜]': r'/:<W>',
	u'[啤酒]': r'/:beer',
	u'[篮球]': r'/:basketb',
	u'[乒乓]': r'/:oo',
	u'[咖啡]': r'/:coffee',
	u'[饭]': r'/:eat',
	u'[猪头]': r'/:pig',
	u'[玫瑰]': r'/:rose',
	u'[凋谢]': r'/:fade',
	u'[示爱]': r'/:showlove',
	u'[爱心]': r'/:heart',
	u'[心碎]': r'/:break',
	u'[蛋糕]': r'/:cake',
	u'[闪电]': r'/:li',
	u'[炸弹]': r'/:bome',
	u'[刀]': r'/:kn',
	u'[足球]': r'/:footb',
	u'[瓢虫]': r'/:ladybug',
	u'[便便]': r'/:shit',
	u'[月亮]': r'/:moon',
	u'[太阳]': r'/:sun',
	u'[礼物]': r'/:gift',
	u'[拥抱]': r'/:hug',
	u'[强]': r'/:strong',
	u'[弱]': r'/:weak',
	u'[握手]': r'/:share',
	u'[胜利]': r'/:v',
	u'[抱拳]': r'/:@)',
	u'[勾引]': r'/:jj',
	u'[拳头]': r'/:@@',
	u'[差劲]': r'/:bad',
	u'[爱你]': r'/:lvu',
	u'[NO]': r'/:no',
	u'[OK]': r'/:ok',
	u'[爱情]': r'/:love',
	u'[飞吻]': r'/:<L>',
	u'[跳跳]': r'/:jump',
	u'[发抖]': r'/:shake',
	u'[怄火]': r'/:<O>',
	u'[转圈]': r'/:circle',
	u'[磕头]': r'/:kotow',
	u'[回头]': r'/:turn',
	u'[跳绳]': r'/:skip',
	u'[挥手]': r'/:oY',
}

#############################################################################
# change_emotion_to_img: 将内容中的表情转换为图片
#############################################################################
def change_emotion_to_img(content):
	beg = 0
	items = []
	while True:
		pos = content.find('/', beg)
		if pos == -1:
			break

		found_emotion = False
		for i in range(1, 10):
			emotion_title = content[pos+1:pos+1+i]
			if emotion_title in TITLE2EMOTION:
				emotion_png = '<img src="./img/weixin/%s" />' % TITLE2EMOTION[emotion_title]
				items.append(content[:pos])
				items.append(emotion_png)
				content = content[pos+1+i:]
				beg = 0
				found_emotion = True
				break
		if not found_emotion:
			beg = pos + 1

	if content:
		items.append(content)
	return ''.join(items)

#############################################################################
# change_img_to_emotion: 将内容中的图片转换为表情
#############################################################################
def change_img_to_emotion(content):
	if content.find('/img/weixin') > -1:
		src_lists = get_img_tags(content)
		img_name_list = EMOTIONNAME2TITLE.keys()
		for src in src_lists:
			try:
				if src and src.split('/')[-1] in img_name_list:
					try:
						emotion_name = u"/%s" % EMOTIONNAME2TITLE[src.split('/')[-1]].encode('utf-8')
					except Exception, e:
						emotion_name = u"/%s" % EMOTIONNAME2TITLE[src.split('/')[-1]]

					image_url = '<img src="%s"/>' % src
					image_url_blank = '<img src="%s" />' % src
					content = content.replace(image_url, emotion_name).replace(image_url_blank, emotion_name)
			except:
				pass
	if content.find('<p>') > -1:
		content = content.replace('<p>', '').replace('</p>', '')
	return content

from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
	def __init__(self):
		HTMLParser.__init__(self)
		self.links = []

	def handle_starttag(self, tag, attrs):
		#print "Encountered the beginning of a %s tag" % tag
		if tag == "img":
			if len(attrs) == 0:
				pass
			else:
				for (variable, value)  in attrs:
					if variable == "src":
						self.links.append(value)

def get_img_tags(text):
	hp = MyHTMLParser()
	hp.feed(text)
	hp.close()
	return hp.links

#############################################################################
# mui_change_emotion_to_img:(mui版本适用) 将内容中的表情转换为图片
#############################################################################
def mui_change_emotion_to_img(content):
	beg = 0
	items = []
	while True:
		pos = content.find('/', beg)
		if pos == -1:
			break

		found_emotion = False
		for i in range(1, 10):
			emotion_title = content[pos+1:pos+1+i]
			if emotion_title in TITLE2EMOTION:
				emotion_png = '<img class="emoji_append" src="../img/weixin/%s" />' % TITLE2EMOTION[emotion_title]
				items.append(content[:pos])
				items.append(emotion_png)
				content = content[pos+1+i:]
				beg = 0
				found_emotion = True
				break
		if not found_emotion:
			beg = pos + 1

	if content:
		items.append(content)
	return ''.join(items)

#############################################################################
# mui_change_emotion_style:(mui版本适用) 将内容中的文字描述的表情转换为字符表情
#############################################################################
def mui_change_emotion_style(content):
	keys = WORDEMOTION2SYMBOL.keys()
	for key in keys:
		if key in content:
			content = content.replace(key, WORDEMOTION2SYMBOL[key])
	return content
