Alfred Emojis:我的炸玉米饼在哪里?

每个表情符号由一组代码元素,一个名称和一组关键字组成 。 如果平台不支持特定的表情符号,则该平台的框中将出现一个破折号

我采用的方法是使用BeautifulSoup并解析出本文档中我关心的所有元素。

  html = urllib2.urlopen('http://unicode.org/emoji/charts/full-emoji-list.html').read() 
汤= BeautifulSoup(html,“ lxml”)
表格= soup.findAll('table')

提取表后,我遍历每一行以检查它是标题行还是数据行

  对于中的表: 

行= table.findAll('tr')

对于 tr行:
cols = tr.findAll(['th','td'])

#提取原始unicode字符串-基本上将其转换为python可打印的内容
raw_code_string = str(cols [1] .text)

如果 raw_code_string == u'Code':
#跳过标题行
继续

数据行将是第二列中没有单词Code的行。 接下来,我们需要验证该行本身实际上是否包含苹果数据

  #苹果专栏-如果这里没有数据,我们可能不在乎表情符号,因为它不在osx中 
苹果= cols [4] .text
  #忽略非苹果unicode 
如果苹果!= u'':
继续

一旦我们确定了专​​栏是好的,那么乐趣就开始了

基本上有3种情况要处理。 第一种简单的情况是项目具有简单名称,例如:MOUTH或TONGUE。

别名

第二种情况是别名情况,其中项目同时具有名称和别名。 这主要出现在肤色情况下,其中项目的大写名称为“ REVERSED HAND WIHT MIDDLE FINGER EXTENDED ”,别名为“ 中指 ”。 再次引用该项目时,将使用别名文本和类型说明符对其进行引用。

在这些情况下,我们将存储以下数据:

  • 带有中指的反手
  • 中指
  • 带有中指扩展型5的反转手
  • 中指5型

最终,这4个项目将用作搜索词,并与该条目的任何关键字配对。 解析步骤还将继续,并创建要在Alfred中显示的图标。 足够方便的是,此HUGE文件将原始PNG数据嵌入到表格元素中,因此可以这样编写它们:

  img_data = base64.b64decode(cols [4] .contents [0] .attrs ['src']。split(',')[1]) 
使用 open(“ img /” + str(number)+'.png','wb') f:
f.write(img_data)

一旦所有解析完成,我最终得到一个名为emoji.csv的文件,它将成为我们用于实际表情符号搜索脚本的源数据。

汇集全部

组装好buildDataFiles.py脚本后,我添加了一些通知调用,这些通知将在运行时向用户发出通知-并创建一个Alfred关键字来启动它的初始表情符号

让我们搜索一些表情符号!

现在我们有一些数据可以搜索了。 搜索脚本非常简单。 emoji.csv的布局如下:

emoji.csv

包含图像文件名,表情符号名称 ,表情符号,表情符号的unicode和一组关键字的列表

工作流的目标是允许用户按名称或关键字搜索,然后按名称匹配顺序显示结果。 她的工作方式是:

   open('emoji.csv') 设为 f: 
对于 f中的行:
img,名称,代码,raw_code,关键字= line.strip()。split(',')

如果 name.lower()中查询:
name_match.append([img,name,raw_code,keywords])
关键字中的elif查询:
keyword_match.append([img,name,raw_code,keywords])



对于 name_match + keyword_match中的数组:
img,标题,raw_code,subtile =数组
wf.add_item(title,subtitle = subtile,
icon =“ img /” + img,
arg = raw_code.decode('unicode_escape'),
有效=真)

可在此处找到工作流程:Alfred Taco🌮

源代码位于:

空姐/ EmojiTaco
EmojiTaco –带Taco和其他unicode 9 emoji的Alfred Emoji脚本 github.com

Unicode数据位于

完整的表情符号数据,v3.0
该图表提供了Unicode表情符号字符列表,以及来自不同供应商,版本和来源的图像 。unicode.org