This repository has been archived by the owner on Jun 4, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapi.py
114 lines (101 loc) · 2.96 KB
/
api.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
'''
程序思想:
有两个本地语音库,美音库Speech_US,英音库Speech_US
调用有道api,获取语音MP3,存入对应的语音库中
'''
import os
import urllib.request
class youdao():
'''
--API层--
'''
def __init__(self, type=0):
'''
调用youdao API
type = 0:美音
type = 1:英音
判断当前目录下是否存在语音库的目录
如果不存在,创建
'''
self._type = type # 发音方式
# 文件根目录
self._dirRoot = os.path.join(os.getcwd(), '..', 'daily-vocab' )
#self._dirRoot = "/Users/gary/Documents/daily-vocab"
os.chdir(self._dirRoot) #cd到daily-vocab,改变cwd
#print(os.getcwd())
if 0 == self._type:
self._dirSpeech = os.path.join(self._dirRoot, 'Speech_US') # 美音库
# 判断是否存在美音库--待修改--
if not os.path.exists('Speech_US'):
# 不存在,就创建
os.makedirs('Speech_US')
else:
self._dirSpeech = os.path.join(self._dirRoot, 'Speech_EN') # 英音库
# 判断是否存在英音库
if not os.path.exists('Speech_EN'):
# 不存在,就创建
os.makedirs('Speech_EN')
def setAccent(self, type=0):
'''
type = 0:美音
type = 1:英音
'''
self._type = type # 发音方式
if 0 == self._type:
self._dirSpeech = os.path.join(self._dirRoot, 'Speech_US') # 美音库
else:
self._dirSpeech = os.path.join(self._dirRoot, 'Speech_EN') # 英音库
def getAccent(self):
'''
type = 0:美音
type = 1:英音
'''
return self._type
def dl(self, word):
'''
下载单词的MP3
判断语音库中是否有对应的MP3
如果没有就下载
'''
word = word.lower() # 小写
tmp = self._getWordMp3FilePath(word)
if tmp is None:
self._getURL() # 组合URL
# 调用下载程序,下载到目标文件夹
# print('不存在 %s.mp3 文件\n将URL:\n' % word, self._url, '\n下载到:\n', self._filePath)
# 下载到目标地址
try:
urllib.request.urlretrieve(self._url, filename=self._filePath)
print('%s.mp3 下载完成' % self._word)
except:
print("查无此单词%s,请重新输入" % self._word)
return -1
else:
print('已经存在 %s.mp3, 不需要下载' % self._word)
# 返回声音文件路径
return self._filePath
def _getURL(self):
'''
私有函数,生成发音的目标URL
http://dict.youdao.com/dictvoice?type=0&audio=
'''
self._url = r'http://dict.youdao.com/dictvoice?type=' + str(
self._type) + r'&audio=' + self._word
def _getWordMp3FilePath(self, word):
'''
获取单词的MP3本地文件路径
如果有MP3文件,返回路径(绝对路径)
如果没有,返回None
'''
word = word.lower() # 小写
self._word = word
self._fileName = self._word + '.mp3'
self._filePath = os.path.join(self._dirSpeech, self._fileName)
#print(self._filePath)
# 判断是否已存在这个MP3文件
if os.path.exists(self._filePath):
# 存在这个mp3
return self._filePath
else:
# 不存在这个MP3,返回none
return None