jjgod / blog Random notes by Jjgod Jiang.

Posts Tagged ‘Python’

最近在写的两个东西

这两天写了两个简单的小程序,主要是满足朋友和个人需求的,还在修改中。

第一个叫 apn 的程序是给 Mac OS X 中 Address Book 中的联系人自动生成姓名发音 (Phonetic Name) 的脚本,所以它的名字就是 Assign Phonetic Name 的缩写。

这是一个 Python 写的程序,直接用到了 pyzh 项目提供的汉字拼音转换代码,通过 Scripting Bridge 提供的 API 来访问 Address Book,这样虽然相比直接调用 Objective-C 的 API 有点慢,但好处在于能充分利用 Python 语言的灵活性。

使用起来很简单,从 github 上把代码抓下来 (你可以 git clone git://github.com/jjgod/apn.git 或者下载一个打包的版本),然后执行

$ python AssignPhoneticName.py

就会自动给你 Address Book 中没有分配过 Phonetic Name 的那些联系人分配一遍。注意因为汉字有多音字,这个程序做不到很智能,你最好在分配之后打开 Address Book 校对一遍。

第二个是给 Cocoa 程序员用的一个 NSView [...]

用 Python 维护 iTunes Library

Mac OS X 10.5 中,由于 Scripting Bridge 的引入,用 Ruby 或 Python 程序完成原来 AppleScript 才能完成的任务变得非常简单,而因为这两门语言自身的强大,无形中,可以完成的工作也多了不少。比如我们原来可能要用 ID3Mod 这样的软件进行 iTunes Music Library 的歌曲乱码转换,现在写一段不到十行的 Python 脚本就能完成 (当然,界面没有那么方便)。

一个小例子

这里先用 Python 简单的展示一点可以完成的操作:

# 导入必要的模块 from Foundation import * from ScriptingBridge import *

# 找到 iTunes 这个应用程序 iTunes = SBApplication.applicationWithBundleIdentifier_(”com.apple.iTunes”)

# 打印出当前正在播放的音乐名称 print iTunes.currentTrack().name()

这段代码在 Leopard 下,既可以保存为 .py 文件,用系统自带的 python 解释器 (/usr/bin/python) 执行,也可以直接在命令行下调用 Python 解释器,查看它的输出,比如我这里是:

$ python Python 2.5.1 (r251:54863, Oct 5 [...]