From 9f3f5b43e1bc79e884091593b9b8f3d6a2164ea5 Mon Sep 17 00:00:00 2001
From: ghaa0920 <1554137355@qq.com>
Date: Mon, 15 May 2023 19:15:30 +0800
Subject: [PATCH 1/8] =?UTF-8?q?special=5Fcharacters=20=3D=20'\=5F=C2=A9~=
=?UTF-8?q?=3D>+/[]*&$%^@.,=3F!:;#()"=E2=80=9C=E2=80=9D=E2=80=94=E2=80=98?=
=?UTF-8?q?=E2=80=99{}|'=20=E7=94=A8=E4=BA=8E=E8=BF=87=E6=BB=A4=E5=AD=97?=
=?UTF-8?q?=E7=AC=A6=EF=BC=8C=E6=88=91=E5=B0=86=E5=85=B6=E4=B8=AD=E7=9A=84?=
=?UTF-8?q?=E2=80=9C-=E2=80=9D=E5=88=A0=E5=8E=BB=EF=BC=8C=E4=BD=BF?=
=?UTF-8?q?=E8=BF=9E=E5=AD=97=E7=AC=A6=E6=B2=A1=E6=9C=89=E8=A2=AB=E8=BF=87?=
=?UTF-8?q?=E6=BB=A4=EF=BC=8C=E5=AE=9E=E7=8E=B0=E5=BD=95=E5=85=A5=E4=BE=8B?=
=?UTF-8?q?=E5=A6=82fifty-six=E7=AD=89=E7=BB=84=E5=90=88=E8=AF=8D=E7=9A=84?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=82=E5=8F=A6=E5=A4=96=E5=AF=B9=E4=BA=8E?=
=?UTF-8?q?=E5=88=A0=E9=99=A4=E8=BF=87=E6=BB=A4=E6=98=AF=E5=90=A6=E4=BC=9A?=
=?UTF-8?q?=E5=BC=95=E5=8F=91=E5=AD=97=E7=AC=A6bug=EF=BC=8C=E7=AD=94?=
=?UTF-8?q?=E6=A1=88=E6=98=AF=E8=82=AF=E5=AE=9A=E7=9A=84=EF=BC=8C=E4=BD=86?=
=?UTF-8?q?=E6=98=AF=E8=BF=99=E6=AE=B5=E4=BB=A3=E7=A0=81=E4=B8=AD=E7=9A=84?=
=?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=AD=97=E7=AC=A6=E8=99=BD=E7=84=B6=E5=A4=9A?=
=?UTF-8?q?=EF=BC=8C=E4=BD=86=E6=98=AF=E5=B9=B6=E6=B2=A1=E6=9C=89=E5=AE=8C?=
=?UTF-8?q?=E5=85=A8=E8=BF=87=E6=BB=A4=E6=8E=89=E6=89=80=E6=9C=89=E5=AD=97?=
=?UTF-8?q?=E7=AC=A6=EF=BC=8C=EF=BC=88=E8=BF=87=E6=BB=A4=E7=9A=84=E5=8F=AA?=
=?UTF-8?q?=E6=98=AF=E9=94=AE=E7=9B=98=E4=B8=8A=E8=83=BD=E6=89=93=E5=87=BA?=
=?UTF-8?q?=E7=9A=84=E5=AD=97=E7=AC=A6=EF=BC=8C=E4=B8=8D=E5=8C=85=E6=8B=AC?=
=?UTF-8?q?=E8=BE=93=E5=85=A5=E6=B3=95=E4=B8=AD=E8=83=BD=E6=89=93=E5=87=BA?=
=?UTF-8?q?=E7=9A=84=E7=89=B9=E6=AE=8A=E5=AD=97=E7=AC=A6=EF=BC=89=EF=BC=8C?=
=?UTF-8?q?=E6=89=80=E4=BB=A5=E5=AD=97=E7=AC=A6bug=E6=9C=AC=E8=BA=AB?=
=?UTF-8?q?=E5=B0=B1=E4=B8=80=E7=9B=B4=E5=AD=98=E5=9C=A8=EF=BC=8C=E6=88=91?=
=?UTF-8?q?=E8=AE=A4=E4=B8=BA=E5=87=8F=E5=B0=91=E4=B8=80=E4=B8=AA=E5=AF=B9?=
=?UTF-8?q?=E2=80=9C-=E2=80=9D=E5=AD=97=E7=AC=A6=E7=9A=84=E8=BF=87?=
=?UTF-8?q?=E6=BB=A4=E4=B8=8D=E4=BC=9A=E9=80=A0=E6=88=90=E9=97=AE=E9=A2=98?=
=?UTF-8?q?=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/wordfreqCMD.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/wordfreqCMD.py b/app/wordfreqCMD.py
index c4f8a63..b112c3b 100644
--- a/app/wordfreqCMD.py
+++ b/app/wordfreqCMD.py
@@ -39,7 +39,7 @@ def file2str(fname):#文件转字符
def remove_punctuation(s): # 这里是s是形参 (parameter)。函数被调用时才给s赋值。
- special_characters = '\_©~<=>+-/[]*&$%^@.,?!:;#()"“”—‘’{}|' # 把里面的字符都去掉
+ special_characters = '\_©~<=>+/[]*&$%^@.,?!:;#()"“”—‘’{}|' # 把里面的字符都去掉
for c in special_characters:
s = s.replace(c, ' ') # 防止出现把 apple,apple 移掉逗号后变成 appleapple 情况
s = s.replace('--', ' ')
From acd8db6e3e1c498650f2e8cc3021828e6132e823 Mon Sep 17 00:00:00 2001
From: ghaa0920 <1554137355@qq.com>
Date: Mon, 15 May 2023 19:24:43 +0800
Subject: [PATCH 2/8] =?UTF-8?q?special=5Fcharacters=20=3D=20'\=5F=C2=A9~=
=?UTF-8?q?=3D>+/[]*&$%^@.,=3F!:;#()"=E2=80=9C=E2=80=9D=E2=80=94=E2=80=98?=
=?UTF-8?q?=E2=80=99{}|'=20=E7=94=A8=E4=BA=8E=E8=BF=87=E6=BB=A4=E5=AD=97?=
=?UTF-8?q?=E7=AC=A6=EF=BC=8C=E6=88=91=E5=B0=86=E5=85=B6=E4=B8=AD=E7=9A=84?=
=?UTF-8?q?=E2=80=9C-=E2=80=9D=E5=88=A0=E5=8E=BB=EF=BC=8C=E4=BD=BF?=
=?UTF-8?q?=E8=BF=9E=E5=AD=97=E7=AC=A6=E6=B2=A1=E6=9C=89=E8=A2=AB=E8=BF=87?=
=?UTF-8?q?=E6=BB=A4=EF=BC=8C=E5=AE=9E=E7=8E=B0=E5=BD=95=E5=85=A5=E4=BE=8B?=
=?UTF-8?q?=E5=A6=82fifty-six=E7=AD=89=E7=BB=84=E5=90=88=E8=AF=8D=E7=9A=84?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=82=E5=8F=A6=E5=A4=96=E5=AF=B9=E4=BA=8E?=
=?UTF-8?q?=E5=88=A0=E9=99=A4=E8=BF=87=E6=BB=A4=E6=98=AF=E5=90=A6=E4=BC=9A?=
=?UTF-8?q?=E5=BC=95=E5=8F=91=E5=AD=97=E7=AC=A6bug=EF=BC=8C=E7=AD=94?=
=?UTF-8?q?=E6=A1=88=E6=98=AF=E8=82=AF=E5=AE=9A=E7=9A=84=EF=BC=8C=E4=BD=86?=
=?UTF-8?q?=E6=98=AF=E8=BF=99=E6=AE=B5=E4=BB=A3=E7=A0=81=E4=B8=AD=E7=9A=84?=
=?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=AD=97=E7=AC=A6=E8=99=BD=E7=84=B6=E5=A4=9A?=
=?UTF-8?q?=EF=BC=8C=E4=BD=86=E6=98=AF=E5=B9=B6=E6=B2=A1=E6=9C=89=E5=AE=8C?=
=?UTF-8?q?=E5=85=A8=E8=BF=87=E6=BB=A4=E6=8E=89=E6=89=80=E6=9C=89=E5=AD=97?=
=?UTF-8?q?=E7=AC=A6=EF=BC=8C=EF=BC=88=E8=BF=87=E6=BB=A4=E7=9A=84=E5=8F=AA?=
=?UTF-8?q?=E6=98=AF=E9=94=AE=E7=9B=98=E4=B8=8A=E8=83=BD=E6=89=93=E5=87=BA?=
=?UTF-8?q?=E7=9A=84=E5=AD=97=E7=AC=A6=EF=BC=8C=E4=B8=8D=E5=8C=85=E6=8B=AC?=
=?UTF-8?q?=E8=BE=93=E5=85=A5=E6=B3=95=E4=B8=AD=E8=83=BD=E6=89=93=E5=87=BA?=
=?UTF-8?q?=E7=9A=84=E7=89=B9=E6=AE=8A=E5=AD=97=E7=AC=A6=EF=BC=89=EF=BC=8C?=
=?UTF-8?q?=E6=89=80=E4=BB=A5=E5=AD=97=E7=AC=A6bug=E6=9C=AC=E8=BA=AB?=
=?UTF-8?q?=E5=B0=B1=E4=B8=80=E7=9B=B4=E5=AD=98=E5=9C=A8=EF=BC=8C=E6=88=91?=
=?UTF-8?q?=E8=AE=A4=E4=B8=BA=E5=87=8F=E5=B0=91=E4=B8=80=E4=B8=AA=E5=AF=B9?=
=?UTF-8?q?=E2=80=9C1-=E2=80=9D=E5=AD=97=E7=AC=A6=E7=9A=84=E8=BF=87?=
=?UTF-8?q?=E6=BB=A4=E4=B8=8D=E4=BC=9A=E9=80=A0=E6=88=90=E9=97=AE=E9=A2=98?=
=?UTF-8?q?=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/wordfreqCMD.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/wordfreqCMD.py b/app/wordfreqCMD.py
index b112c3b..fb67873 100644
--- a/app/wordfreqCMD.py
+++ b/app/wordfreqCMD.py
@@ -39,7 +39,7 @@ def file2str(fname):#文件转字符
def remove_punctuation(s): # 这里是s是形参 (parameter)。函数被调用时才给s赋值。
- special_characters = '\_©~<=>+/[]*&$%^@.,?!:;#()"“”—‘’{}|' # 把里面的字符都去掉
+ special_characters = '\_©~<=>-+/[]*&$%^@.,?!:;#()"“”—‘’{}|' # 把里面的字符都去掉
for c in special_characters:
s = s.replace(c, ' ') # 防止出现把 apple,apple 移掉逗号后变成 appleapple 情况
s = s.replace('--', ' ')
From 030b89706e51a35d95eb6eafa7ae2b2fefac821b Mon Sep 17 00:00:00 2001
From: ghaa0920 <1554137355@qq.com>
Date: Sat, 20 May 2023 15:29:12 +0800
Subject: [PATCH 3/8] =?UTF-8?q?special=5Fcharacters=20=3D=20'\=5F=C2=A9~=
=?UTF-8?q?=3D>+/[]*&$%^@.,=3F!:;#()"=E2=80=9C=E2=80=9D=E2=80=94=E2=80=98?=
=?UTF-8?q?=E2=80=99{}|'=20=E7=94=A8=E4=BA=8E=E8=BF=87=E6=BB=A4=E5=AD=97?=
=?UTF-8?q?=E7=AC=A6=EF=BC=8C=E6=88=91=E5=B0=86=E5=85=B6=E4=B8=AD=E7=9A=84?=
=?UTF-8?q?=E2=80=9C-=E2=80=9D=E5=88=A0=E5=8E=BB=EF=BC=8C=E4=BD=BF?=
=?UTF-8?q?=E8=BF=9E=E5=AD=97=E7=AC=A6=E6=B2=A1=E6=9C=89=E8=A2=AB=E8=BF=87?=
=?UTF-8?q?=E6=BB=A4=EF=BC=8C=E5=AE=9E=E7=8E=B0=E5=BD=95=E5=85=A5=E4=BE=8B?=
=?UTF-8?q?=E5=A6=82fifty-six=E7=AD=89=E7=BB=84=E5=90=88=E8=AF=8D=E7=9A=84?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=82=E5=8F=A6=E5=A4=96=E5=AF=B9=E4=BA=8E?=
=?UTF-8?q?=E5=88=A0=E9=99=A4=E8=BF=87=E6=BB=A4=E6=98=AF=E5=90=A6=E4=BC=9A?=
=?UTF-8?q?=E5=BC=95=E5=8F=91=E5=AD=97=E7=AC=A6bug=EF=BC=8C=E7=AD=94?=
=?UTF-8?q?=E6=A1=88=E6=98=AF=E8=82=AF=E5=AE=9A=E7=9A=84=EF=BC=8C=E4=BD=86?=
=?UTF-8?q?=E6=98=AF=E8=BF=99=E6=AE=B5=E4=BB=A3=E7=A0=81=E4=B8=AD=E7=9A=84?=
=?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=AD=97=E7=AC=A6=E8=99=BD=E7=84=B6=E5=A4=9A?=
=?UTF-8?q?=EF=BC=8C=E4=BD=86=E6=98=AF=E5=B9=B6=E6=B2=A1=E6=9C=89=E5=AE=8C?=
=?UTF-8?q?=E5=85=A8=E8=BF=87=E6=BB=A4=E6=8E=89=E6=89=80=E6=9C=89=E5=AD=97?=
=?UTF-8?q?=E7=AC=A6=EF=BC=8C=EF=BC=88=E8=BF=87=E6=BB=A4=E7=9A=84=E5=8F=AA?=
=?UTF-8?q?=E6=98=AF=E9=94=AE=E7=9B=98=E4=B8=8A=E8=83=BD=E6=89=93=E5=87=BA?=
=?UTF-8?q?=E7=9A=84=E5=AD=97=E7=AC=A6=EF=BC=8C=E4=B8=8D=E5=8C=85=E6=8B=AC?=
=?UTF-8?q?=E8=BE=93=E5=85=A5=E6=B3=95=E4=B8=AD=E8=83=BD=E6=89=93=E5=87=BA?=
=?UTF-8?q?=E7=9A=84=E7=89=B9=E6=AE=8A=E5=AD=97=E7=AC=A6=EF=BC=89=EF=BC=8C?=
=?UTF-8?q?=E6=89=80=E4=BB=A5=E5=AD=97=E7=AC=A6bug=E6=9C=AC=E8=BA=AB?=
=?UTF-8?q?=E5=B0=B1=E4=B8=80=E7=9B=B4=E5=AD=98=E5=9C=A8=EF=BC=8C=E6=88=91?=
=?UTF-8?q?=E8=AE=A4=E4=B8=BA=E5=87=8F=E5=B0=91=E4=B8=80=E4=B8=AA=E2=80=9C?=
=?UTF-8?q?-=E2=80=9D=E5=AD=97=E7=AC=A6=E5=AF=B9=E7=A8=8B=E5=BA=8F?=
=?UTF-8?q?=E7=9A=84=E8=BF=87=E6=BB=A4=E8=BF=87=E7=A8=8B=E4=B8=8D=E4=BC=9A?=
=?UTF-8?q?=E9=80=A0=E6=88=90=E9=97=AE=E9=A2=98=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/wordfreqCMD.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/wordfreqCMD.py b/app/wordfreqCMD.py
index fb67873..b112c3b 100644
--- a/app/wordfreqCMD.py
+++ b/app/wordfreqCMD.py
@@ -39,7 +39,7 @@ def file2str(fname):#文件转字符
def remove_punctuation(s): # 这里是s是形参 (parameter)。函数被调用时才给s赋值。
- special_characters = '\_©~<=>-+/[]*&$%^@.,?!:;#()"“”—‘’{}|' # 把里面的字符都去掉
+ special_characters = '\_©~<=>+/[]*&$%^@.,?!:;#()"“”—‘’{}|' # 把里面的字符都去掉
for c in special_characters:
s = s.replace(c, ' ') # 防止出现把 apple,apple 移掉逗号后变成 appleapple 情况
s = s.replace('--', ' ')
From a5c3564f15cea5ddb5f79ba15bf888a332698440 Mon Sep 17 00:00:00 2001
From: Hui Lan
Date: Tue, 23 May 2023 22:22:57 +0800
Subject: [PATCH 4/8] difficulty.py: do not stem a word twice.
---
app/difficulty.py | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/app/difficulty.py b/app/difficulty.py
index 8179c57..1183999 100644
--- a/app/difficulty.py
+++ b/app/difficulty.py
@@ -49,15 +49,17 @@ def get_difficulty_level_for_user(d1, d2):
在d2的后面添加单词,没有新建一个新的字典
"""
d2 = convert_test_type_to_difficulty_level(d2) # 根据d2的标记评级{'apple': 4, 'abandon': 4, ...}
- stem = snowballstemmer.stemmer('english')
+ stemmer = snowballstemmer.stemmer('english')
for k in d1: # 用户的词
if k in d2: # 如果用户的词以原型的形式存在于词库d2中
continue # 无需评级,跳过
- elif stem.stemWord(k) in d2: # 如果用户的词的词根存在于词库d2的词根库中
- d2[k] = d2[stem.stemWord(k)] # 按照词根进行评级
else:
- d2[k] = 3 # 如果k的词根都不在,那么就当认为是3级
+ stem = stemmer.stemWord(k)
+ if stem in d2: # 如果用户的词的词根存在于词库d2的词根库中
+ d2[k] = d2[stem] # 按照词根进行评级
+ else:
+ d2[k] = 3 # 如果k的词根都不在,那么就当认为是3级
return d2
From 67e921ba60df76640005fa2838d80808b311bc2d Mon Sep 17 00:00:00 2001
From: Hui Lan
Date: Tue, 23 May 2023 22:25:40 +0800
Subject: [PATCH 5/8] difficulty.py: todo.
---
app/difficulty.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/difficulty.py b/app/difficulty.py
index 1183999..a8ffdee 100644
--- a/app/difficulty.py
+++ b/app/difficulty.py
@@ -48,6 +48,7 @@ def get_difficulty_level_for_user(d1, d2):
d1 用户不会的词
在d2的后面添加单词,没有新建一个新的字典
"""
+ # TODO: convert_test_type_to_difficulty_level() should not be called every time. Each word's difficulty level should be pre-computed.
d2 = convert_test_type_to_difficulty_level(d2) # 根据d2的标记评级{'apple': 4, 'abandon': 4, ...}
stemmer = snowballstemmer.stemmer('english')
From b41e1044bce3e4d9169b7743ce9aad74c0fec7d7 Mon Sep 17 00:00:00 2001
From: Hui Lan
Date: Wed, 24 May 2023 10:12:44 +0800
Subject: [PATCH 6/8] difficulty.py: add some stop words, hoping that getting
the next article can be faster.
---
app/difficulty.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/app/difficulty.py b/app/difficulty.py
index a8ffdee..cb93768 100644
--- a/app/difficulty.py
+++ b/app/difficulty.py
@@ -118,9 +118,10 @@ def text_difficulty_level(s, d):
L = freq(s)
lst = [] # a list of tuples, each tuple being (word, difficulty level)
+ stop_words = {'the':1, 'and':1, 'of':1, 'to':1, 'what':1, 'in':1, 'there':1, 'when':1, 'them':1, 'would':1, 'will':1, 'out':1, 'his':1, 'mr':1, 'that':1, 'up':1, 'more':1, 'your':1, 'it':1, 'now':1, 'very':1, 'then':1, 'could':1, 'he':1, 'any':1, 'some':1, 'with':1, 'into':1, 'you':1, 'our':1, 'man':1, 'other':1, 'time':1, 'was':1, 'than':1, 'know':1, 'about':1, 'only':1, 'like':1, 'how':1, 'see':1, 'is':1, 'before':1, 'such':1, 'little':1, 'two':1, 'its':1, 'as':1, 'these':1, 'may':1, 'much':1, 'down':1, 'for':1, 'well':1, 'should':1, 'those':1, 'after':1, 'same':1, 'must':1, 'say':1, 'first':1, 'again':1, 'us':1, 'great':1, 'where':1, 'being':1, 'come':1, 'over':1, 'good':1, 'himself':1, 'am':1, 'never':1, 'on':1, 'old':1, 'here':1, 'way':1, 'at':1, 'go':1, 'upon':1, 'have':1, 'had':1, 'without':1, 'my':1, 'day':1, 'be':1, 'but':1, 'though':1, 'from':1, 'not':1, 'too':1, 'another':1, 'this':1, 'even':1, 'still':1, 'her':1, 'yet':1, 'under':1, 'by':1, 'let':1, 'just':1, 'all':1, 'because':1, 'we':1, 'always':1, 'off':1, 'yes':1, 'so':1, 'while':1, 'why':1, 'which':1, 'me':1, 'are':1, 'or':1, 'no':1, 'if':1, 'an':1, 'also':1, 'thus':1, 'who':1, 'cannot':1, 'she':1, 'whether':1} # ignore these words while computing the artile's difficulty level
for x in L:
word = x[0]
- if word in d:
+ if word not in stop_words and word in d:
lst.append((word, d[word]))
lst2 = sort_in_descending_order(lst) # most difficult words on top
From 03ccb3527a94a3c463b4bffe24ba0f579f286d5f Mon Sep 17 00:00:00 2001
From: Xunflash
Date: Thu, 25 May 2023 17:35:31 +0800
Subject: [PATCH 7/8] =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=89=8D=E7=AB=AF?=
=?UTF-8?q?=E9=98=85=E8=AF=BBjs=EF=BC=8C=E6=96=B0=E5=A2=9E=E9=98=85?=
=?UTF-8?q?=E8=AF=BB=E5=99=A8=E5=85=A8=E5=B1=80=E5=AF=B9=E8=B1=A1=EF=BC=8C?=
=?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=94=9F=E8=AF=8D=E6=9C=97=E8=AF=BB=E6=8C=89?=
=?UTF-8?q?=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/static/config.yml | 2 ++
app/static/js/fillword.js | 45 +++------------------------------
app/static/js/read.js | 36 ++++++++++++++++++++++++++
app/static/js/word_operation.js | 8 ++++++
app/templates/userpage_get.html | 1 +
5 files changed, 51 insertions(+), 41 deletions(-)
create mode 100644 app/static/js/read.js
diff --git a/app/static/config.yml b/app/static/config.yml
index 20aa396..7b2b3eb 100644
--- a/app/static/config.yml
+++ b/app/static/config.yml
@@ -7,7 +7,9 @@ css:
js:
head: # 在页面加载之前加载
- static/js/jquery.js
+ - static/js/read.js
- static/js/word_operation.js
+
bottom: # 在页面加载完之后加载
- static/js/fillword.js
- static/js/highlight.js
diff --git a/app/static/js/fillword.js b/app/static/js/fillword.js
index ba249dd..b967633 100644
--- a/app/static/js/fillword.js
+++ b/app/static/js/fillword.js
@@ -1,9 +1,5 @@
let isRead = true;
let isChoose = true;
-let reader = window.speechSynthesis; // 全局定义朗读者,以便朗读和暂停
-let current_position = 0; // 朗读文本的当前位置
-let original_position = 0; // 朗读文本的初始位置
-let to_speak = ""; // 朗读的初始内容
function getWord() {
return window.getSelection ? window.getSelection() : document.selection.createRange().text;
@@ -11,7 +7,7 @@ function getWord() {
function fillInWord() {
let word = getWord();
- if (isRead) read(word);
+ if (isRead) Reader.read(word, inputSlider.value);
if (!isChoose) return;
const element = document.getElementById("selected-words");
element.value = element.value + " " + word;
@@ -19,50 +15,17 @@ function fillInWord() {
document.getElementById("text-content").addEventListener("click", fillInWord, false);
-function makeUtterance(str, rate) {
- let msg = new SpeechSynthesisUtterance(str);
- msg.rate = rate;
- msg.lang = "en-US"; // TODO: add language options menu
- msg.onboundary = ev => {
- if (ev.name == "word") {
- current_position = ev.charIndex;
- }
- }
- return msg;
-}
-
-const sliderValue = document.getElementById("rangeValue"); // 显示值
-const inputSlider = document.getElementById("rangeComponent"); // 滑块元素
+const sliderValue = document.getElementById("rangeValue");
+const inputSlider = document.getElementById("rangeComponent");
inputSlider.oninput = () => {
- let value = inputSlider.value; // 获取滑块的值
+ let value = inputSlider.value;
sliderValue.textContent = value + '×';
- if (!reader.speaking) return;
- reader.cancel();
- let msg = makeUtterance(to_speak.substring(original_position + current_position), value);
- original_position = original_position + current_position;
- current_position = 0;
- reader.speak(msg);
};
-function read(s) {
- to_speak = s.toString();
- original_position = 0;
- current_position = 0;
- let msg = makeUtterance(to_speak, inputSlider.value);
- reader.speak(msg);
-}
-
function onReadClick() {
isRead = !isRead;
- if (!isRead) {
- reader.cancel();
- }
}
function onChooseClick() {
isChoose = !isChoose;
}
-
-function stopRead() {
- reader.cancel();
-}
\ No newline at end of file
diff --git a/app/static/js/read.js b/app/static/js/read.js
new file mode 100644
index 0000000..83c18fb
--- /dev/null
+++ b/app/static/js/read.js
@@ -0,0 +1,36 @@
+// read.js
+var Reader = (function() {
+ let reader = window.speechSynthesis;
+ let current_position = 0;
+ let original_position = 0;
+ let to_speak = "";
+
+ function makeUtterance(str, rate) {
+ let msg = new SpeechSynthesisUtterance(str);
+ msg.rate = rate;
+ msg.lang = "en-US";
+ msg.onboundary = ev => {
+ if (ev.name == "word") {
+ current_position = ev.charIndex;
+ }
+ }
+ return msg;
+ }
+
+ function read(s, rate) {
+ to_speak = s.toString();
+ original_position = 0;
+ current_position = 0;
+ let msg = makeUtterance(to_speak, rate);
+ reader.speak(msg);
+ }
+
+ function stopRead() {
+ reader.cancel();
+ }
+
+ return {
+ read: read,
+ stopRead: stopRead
+ };
+})();
diff --git a/app/static/js/word_operation.js b/app/static/js/word_operation.js
index ea6a6e8..f043cce 100644
--- a/app/static/js/word_operation.js
+++ b/app/static/js/word_operation.js
@@ -62,6 +62,13 @@ function delete_word(theWord) {
});
}
+function read_word(theWord) {
+ let to_speak = $("#word_" + theWord).text();
+ original_position = 0;
+ current_position = 0;
+ Reader.read(to_speak, inputSlider.value);
+}
+
/*
* interface Word {
* word: string,
@@ -95,6 +102,7 @@ function wordTemplate(word) {
熟悉
不熟悉
删除
+ 朗读
`;
}
diff --git a/app/templates/userpage_get.html b/app/templates/userpage_get.html
index b5e16aa..0f3c720 100644
--- a/app/templates/userpage_get.html
+++ b/app/templates/userpage_get.html
@@ -131,6 +131,7 @@
熟悉
不熟悉
删除
+ 朗读
{% endfor %}
From c6bf323c6084255abcde0c47ae1a0504bd372475 Mon Sep 17 00:00:00 2001
From: Xunflash
Date: Thu, 25 May 2023 21:23:25 +0800
Subject: [PATCH 8/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=BC=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/static/js/read.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/static/js/read.js b/app/static/js/read.js
index 83c18fb..814f627 100644
--- a/app/static/js/read.js
+++ b/app/static/js/read.js
@@ -1,4 +1,3 @@
-// read.js
var Reader = (function() {
let reader = window.speechSynthesis;
let current_position = 0;