This commit is contained in:
zyronon
2025-09-19 01:38:40 +08:00
parent 107a9fed45
commit 8069c9e14c
37 changed files with 20171 additions and 311 deletions

18968
js_node/save/s.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -222,16 +222,16 @@
"lrcPosition": [[15.83,20.58],[20.58,27.2],[27.2,30.18],[30.48,34.72],[34.93,39.66],[39.66,46.47],[46.47,50.39],[50.39,57.24],[57.24,62.07],[62.17,65.16],[65.82,71.27]]
},
{
"id": "78q16t",
"title": "Across the Channel",
"titleTranslate": "横渡海峡",
"text": "Debbie Hart is going to swim across the English Channel tomorrow. \nShe is going to set out from the French coast at five oclock in the morning. \nDebbie is only eleven years old and she hopes to set up a new world record. \nShe is a strong swimmer and many people feel that she is sure to succeed. \nDebbies father will set out with her in a small boat. \nMr. Hart has trained his daughter for years. \nTomorrow he will be watching her anxiously as she swims the long distance to England. \nDebbie intends to take short rests every two hours. \nShe will have something to drink but she will not eat any solid food. \nMost of Debbies school friends will be waiting for her on the English coast. \nAmong them will be Debbies mother, who swam the Channel herself when she was a girl.",
"textTranslate": "黛比.哈特准备明天横渡英吉利海峡。 \n她打算早上5点钟从法国海岸出发。 \n黛比只有11岁她希望创一项新的世界纪录。 \n她是一个游泳能手很多人认为她一定能成功。 \n黛比的父亲将乘一条小船同她一道出发。 \n哈特先生训练她的女儿已经多年了 \n明天他将焦急地注视着女儿游过这段漫长的距离到达英国。 \n黛比计划每两小时休息一下。 \n她将喝些饮料但不吃固体食物。 \n黛比的大部分同学将在英国海岸等候她。 \n他们当中还会有黛比的母亲她本人还是个姑娘时也曾横渡过英吉利海峡",
"newWords": [],
"textAllWords": [],
"audioSrc": "/sound/article/nce2-1/Across the Channel.mp3",
"lrcPosition": [[15.11,20.06],[20.06,25.83],[26.53,33.21],[33.21,39.65],[40.07,45.64],[44.91,48.55],[48.55,56.48],[56.89,61.68],[61.68,67.12],[67.12,72.96],[72.96,80.49]]
},
"id": "cg_IGx",
"title": "A glass envelope",
"titleTranslate": "玻璃信封",
"text": "My daughter, Jane, never dreamed of receiving a letter from a girl of her own age in Holland. \nLast year, we were travelling across the Channel and Jane put a piece of paper with her name and address on it into a bottle. \nShe threw the bottle into the sea. \nShe never thought of it again, \nbut ten months later, she received a letter from a girl in Holland. \nBoth girls write to each other regularly now. \nHowever, they have decided to use the post office. \nLetters will cost a little more, but they will certainly travel faster.",
"textTranslate": "我的女儿简从未想过会接到荷兰一位同龄姑娘的来信。 \n去年当我们横渡英吉利海峡时简把写有她姓名和住址的一张纸条装进了一只瓶子 \n又将瓶子扔进了大海。 \n此后她就再没去想那只瓶子。 \n但10个月以后她收到了荷兰一位姑娘的来信。 \n现在这两位姑娘定期通信了。 \n然而她们还是决定利用邮局。 \n这样会稍微多花点钱但肯定是快得多了。",
"newWords": [],
"textAllWords": [],
"audioSrc": "/sound/article/nce2-1/A glass envelope.mp3",
"lrcPosition": [[16.79,26.87],[26.87,37.71],[37.71,41.19],[41.19,43.75],[43.75,49.93],[49.93,54.19],[54.19,59.72],[59.72,65.8]]
},
{
"id": "bDa9uD",
"title": "A new house",
@@ -852,28 +852,28 @@
"lrcPosition": [[15.92,25.22],[26.02,33.82],[34.06,36.78],[36.78,46.52],[46.52,53.42],[53.85,60.19],[60.19,68.82],[69.41,74.53],[74.53,80.69]],
"audioSrc": "/sound/article/nce2-1/Not very musical.mp3"
},
{
"id": "Z9irQx",
"title": "Over the South Pole",
"titleTranslate": "飞越南极",
"text": "In 1929, three years after his flight over the North Pole, the American explorer, R.E. Byrd, successfully flew over the South Pole for the first time. \nThough, at first, Byrd and his men were able to take a great many photographs of the mountains that lay below, they soon ran into serious trouble. \nAt one point, it seemed certain that their plane would crash. \nIt could only get over the mountains if it rose to 10,000 feet. \nByrd at once ordered his men to throw out two heavy food sacks. \nThe plane was then able to rise and it cleared the mountains by 400 feet. \nByrd now knew that he would be able to reach the South Pole which was 300 miles away, for there were no more mountains in sight. \nThe aircraft was able to fly over the endless white plains without difficulty.",
"textTranslate": "美国探险家 R.E.伯德在飞越北极3年之后于1929年第一次飞越了南极。 \n虽然开始时伯德和他的助手们拍下了飞机下面连绵群山的大量照片但他们很快就陷入了困境。 \n在有个地方飞机似乎肯定要坠毁了。 \n只有在飞至10,000英尺的高度时它才能飞过这些山头。 \n伯德马上命令他的助手们把两个沉重的食物袋扔掉 \n于是飞机可以上升了它在离山头400英尺的高度飞越了过去。 \n伯德这时知道他能够顺利飞抵300英里以外的南极了因为前面再没有山了。 \n飞机可以毫无困难地飞过这片茫茫无际的白色原野",
"newWords": [],
"textAllWords": [],
"lrcPosition": [[16.28,31.73],[31.73,45.42],[46.01,51.39],[51.39,57.71],[57.71,64.15],[64.15,71.03],[70.63,82.02],[82.53,89.33]],
"audioSrc": "/sound/article/nce2-1/Over the South Pole.mp3"
},
{
"id": "a_uSxN",
"title": "Through the forest",
"titleTranslate": "穿过森林",
"text": "Mrs. Anne Sterling did not think of the risk she was taking when she ran through a forest after two men. \nThey had rushed up to her while she was having a picnic at the edge of a forest with her children and tried to steal her handbag. \nIn the struggle, the strap broke and, with the bag in their possession, both men started running through the trees. \nMrs. Sterling got so angry that she ran after them. \nShe was soon out of breath, but she continued to run. \nWhen she caught up with them, she saw that they had sat down and were going through the contents of the bag, \nso she ran straight at them. \nThe men got such a fright that they dropped the bag and ran away. \nThe strap needs mending, said Mrs. Sterling later, but they did not steal anything.",
"textTranslate": "安.斯特林夫人在穿过森林追赶两个男人时,她并没有考虑到所冒的风险。 \n刚才当她和孩子们正在森林边上野餐的时候这两个人冲到她跟前企图抢走她的手提包。 \n在争抢中手提包的带断了包落入这两个人手里他们拔腿跑进了树林。 \n斯特林夫人非常气愤向着他们追了过去。 \n只追了一会儿便上气不接下气了但她还是继续追赶。 \n当她赶上他们时发现他们已经坐了下来正翻着包里的东西。 \n于是她直冲过去。 \n这两个人吓了一跳扔下提包逃跑了。 \n“这提包带需要修理”斯特林夫人事后说道“不过他们什么也没偷走。”",
"newWords": [],
"textAllWords": [],
"lrcPosition": [[15.88,23.6],[24.7,34.48],[34.88,45.04],[45.45,51.07],[51.07,55.83],[55.83,64.5],[64.5,67.81],[67.81,74.75],[74.75,82.02]],
"audioSrc": "/sound/article/nce2-1/Through the forest.mp3"
},
{
"id": "Z9irQx",
"title": "Over the South Pole",
"titleTranslate": "飞越南极",
"text": "In 1929, three years after his flight over the North Pole, the American explorer, R.E. Byrd, successfully flew over the South Pole for the first time. \nThough, at first, Byrd and his men were able to take a great many photographs of the mountains that lay below, they soon ran into serious trouble. \nAt one point, it seemed certain that their plane would crash. \nIt could only get over the mountains if it rose to 10,000 feet. \nByrd at once ordered his men to throw out two heavy food sacks. \nThe plane was then able to rise and it cleared the mountains by 400 feet. \nByrd now knew that he would be able to reach the South Pole which was 300 miles away, for there were no more mountains in sight. \nThe aircraft was able to fly over the endless white plains without difficulty.",
"textTranslate": "美国探险家 R.E.伯德在飞越北极3年之后于1929年第一次飞越了南极。 \n虽然开始时伯德和他的助手们拍下了飞机下面连绵群山的大量照片但他们很快就陷入了困境。 \n在有个地方飞机似乎肯定要坠毁了。 \n只有在飞至10,000英尺的高度时它才能飞过这些山头。 \n伯德马上命令他的助手们把两个沉重的食物袋扔掉 \n于是飞机可以上升了它在离山头400英尺的高度飞越了过去。 \n伯德这时知道他能够顺利飞抵300英里以外的南极了因为前面再没有山了。 \n飞机可以毫无困难地飞过这片茫茫无际的白色原野",
"newWords": [],
"textAllWords": [],
"lrcPosition": [[15.68,31.73],[31.53,45.42],[46.01,51.39],[51.39,57.71],[57.71,64.15],[64.15,71.03],[70.63,82.02],[82.53,89.33]],
"audioSrc": "/sound/article/nce2-1/Over the South Pole.mp3"
},
{
"id": "a_uSxN",
"title": "Through the forest",
"titleTranslate": "穿过森林",
"text": "Mrs. Anne Sterling did not think of the risk she was taking when she ran through a forest after two men. \nThey had rushed up to her while she was having a picnic at the edge of a forest with her children and tried to steal her handbag. \nIn the struggle, the strap broke and, with the bag in their possession, both men started running through the trees. \nMrs. Sterling got so angry that she ran after them. \nShe was soon out of breath, but she continued to run. \nWhen she caught up with them, she saw that they had sat down and were going through the contents of the bag, \nso she ran straight at them. \nThe men got such a fright that they dropped the bag and ran away. \nThe strap needs mending, said Mrs. Sterling later, but they did not steal anything.",
"textTranslate": "安.斯特林夫人在穿过森林追赶两个男人时,她并没有考虑到所冒的风险。 \n刚才当她和孩子们正在森林边上野餐的时候这两个人冲到她跟前企图抢走她的手提包。 \n在争抢中手提包的带断了包落入这两个人手里他们拔腿跑进了树林。 \n斯特林夫人非常气愤向着他们追了过去。 \n只追了一会儿便上气不接下气了但她还是继续追赶。 \n当她赶上他们时发现他们已经坐了下来正翻着包里的东西。 \n于是她直冲过去。 \n这两个人吓了一跳扔下提包逃跑了。 \n“这提包带需要修理”斯特林夫人事后说道“不过他们什么也没偷走。”",
"newWords": [],
"textAllWords": [],
"lrcPosition": [[15.08,23.6],[24.7,34.48],[34.88,45.04],[45.45,51.07],[51.07,55.83],[55.83,64.5],[64.5,67.81],[67.81,74.75],[74.75,82.02]],
"audioSrc": "/sound/article/nce2-1/Through the forest.mp3"
},
{
"id": "O18euT",
"title": "A clear conscience",
@@ -926,9 +926,9 @@
"textTranslate": "德黑兰的一个人年轻人由于对睡地板感到厌倦,于是积蓄多年买了一张真正的床。 \n他平生第一次自豪地拥有了一张既有弹簧又带床垫的床。 \n由于天气很热他便把床搬到了他的屋顶上。 \n头两天晚上他睡得非常好。 \n但第三天晚上起了风暴。 \n一阵大风把床从屋顶上刮了下来把它摔碎在下面的院子里。 \n那年轻人直到床撞到地上才醒了过来。 \n尽管床摔成了碎片但年轻人却奇迹地没有受伤。 \n他醒来时仍然躺在床垫上。 \n年轻人看了一眼周围的碎木片和碎金属片伤心地捡起了床垫把它拿进了屋。 \n他把床垫往地板上一放很快又睡着了。",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/The end of a dream.mp3",
"lrcPosition": [[15.15,24.5],[24.5,34.8],[34.8,42.8],[43.36,48],[48,53.12],[53.12,62.03],[62.03,67.6],[67.6,75.76],[75.76,80.39],[80.39,91.46],[91.46,98.07]],
"audioFileId": "OHeywQk9iTo-6qw7Df8bR"
"audioFileId": ""
},
{
"id": "KjCFdO",
@@ -938,9 +938,9 @@
"textTranslate": "我喜欢在乡间旅行,但却不愿意迷路。 \n最近我作了一次短途旅行 \n但这次旅行所花费的时间比我预计的要长。 \n“我要去伍德福德草地”我一上车就对售票员说 \n“但我不知道它在那儿。” \n“我来告诉您在哪儿下车” 售票员回答说。 \n我坐在汽车的前部以便饱览农村风光。 \n过了一些时候车停了。 \n我环视了一下身旁惊奇地发现车里就只剩我一个乘客了。 \n“您得在这里下车”售票员说“我们的车就到此为止了。” \n“这里是伍德福德草地吗” 我问道。 \n“哎呀”售票员突然说 “我忘了让您下车了。” \n“没关系”我说“我就在这儿下吧。” \n“我们现在要返回去”售票员说。 \n“好吧既然如此我还是留在车上吧。”我回答说。",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/Taken for a ride.mp3",
"lrcPosition": [[15.56,21.92],[22.63,25.31],[25.41,30.2],[29.21,36.53],[36.84,40.5],[40.5,46],[46,52.18],[52.18,55.92],[55.92,63.36],[63.37,71.71],[72.42,75.77],[75.77,82.75],[83.32,88.45],[88.45,92.68],[92.73,98.9]],
"audioFileId": "r1jwfFKTLWlR0DjSXlrg_"
"audioFileId": ""
},
{
"id": "HnoyBu",
@@ -950,9 +950,9 @@
"textTranslate": "我的朋友休一直很胖, \n但是近来情况变得越发糟糕以致他决定节食。 \n他是一星期前开始节食的。 \n首先他开列了一张长长的单子上面列了所有禁吃的食物。 \n这张单子上的大多数食物都是休喜欢吃的黄油、土豆、米饭、啤酒、牛奶、巧克力和糖果。 \n昨天我去看望了他。 \n我按响了门铃当看到休仍和往常一样胖时我并不感到惊奇。 \n他把我领进屋慌忙把一个大包藏到了桌子下面。 \n显然他感到很尴尬。 \n当我问他正干什么时他内疚地笑了然后把那个大包拿到了桌上。 \n他解释说他的饮食控制得太严格了以致不得不偶尔奖赏自己一下。 \n接着他给我看了包里的东西。 \n里面装了5大块巧克力和3袋糖果",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/Reward for virtue.mp3",
"lrcPosition": [[15.33,19.77],[19.77,26.32],[26.32,29.61],[29.61,36.88],[36.88,48.05],[48.64,51.97],[51.97,59.28],[59.28,65.8],[65.8,70.03],[70.03,76.97],[77.78,85.59],[85.59,89.35],[89.35,96.09]],
"audioFileId": "paB5ObdDzrZxUOOYvMbti"
"audioFileId": ""
},
{
"id": "F4YJ68",
@@ -962,9 +962,9 @@
"textTranslate": "我们刚刚搬进一所新房子,我辛辛苦苦地干了整整一个上午。 \n我试图把我的新房间收拾整齐 \n但这并不容易因为我有1,000多本书。 \n更糟糕的是房间还非常小 \n所以我暂时把书放在了地板上。 \n这会儿书把地板的每一点空隙都占据了我实际上是踩着这些书进出房间的。 \n几分钟前我妹妹帮我把一个旧书橱抬上了楼。 \n她走进我的房间当她看到地板上的那些书时大吃一惊。 \n“这是我见过的最漂亮的地毯”她说。 \n她盯着“地毯”看了一会儿又说“你根本用不着书橱 \n空闲时你可以坐在这儿读地毯”",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/A pretty carpet.mp3",
"lrcPosition": [[14.42,22.27],[22.27,27.17],[27.17,34.01],[34.01,38.14],[38.71,44.3],[44.3,54.73],[55.8,64.52],[64.52,73.35],[73.35,79.77],[79.77,86.74],[86.74,92]],
"audioFileId": "5QhTg8nm80ttRyEERe7h1"
"audioFileId": ""
},
{
"id": "76grGf",
@@ -974,9 +974,9 @@
"textTranslate": "消防队员们终于扑灭了加利福尼亚的一场森林大火。 \n从那时起他们一直试图找出起火的原因。 \n森林火灾时常由破碎的玻璃或人们随手扔掉的香烟头引起。 \n昨天消防队员仔细查看了地面 \n但未能发现碎玻璃。 \n他们还十分肯定火灾也不是由烟头引起的。 \n然而今天上午一个消防队员偶然发现了起火的原因。 \n他发现了缠绕在16,000伏高压线上的一条死蛇。 \n就这样他解开了起火之谜。 \n解释很简单却异乎寻常。 \n一只鸟把蛇从地上抓起来然后把它扔到了电线上。 \n于是蛇就缠住了几根电线。 \n当它这样做时把火花送到了地面这些火花立刻引起了一场大火。",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/Hot snake.mp3",
"lrcPosition": [[14.44,21.11],[21.11,27.63],[27.63,37.96],[37.96,42.32],[42.32,46.8],[46.8,53.01],[53.01,59.38],[59.38,69.98],[69.98,74.65],[74.65,80.03],[80.03,87.83],[87.83,91.74],[91.74,99.8]],
"audioFileId": "fEdLo_1n7Tw27ljV2HXOt"
"audioFileId": ""
},
{
"id": "an83t3",
@@ -986,9 +986,9 @@
"textTranslate": "早饭后,我送孩子们上学,然后就去了商店。 \n我回到家时时间还早。 \n孩子们在上学我丈夫在上班家里清静得很。 \n于是我决定做些肉馅饼。 \n不一会儿我就忙着调拌起了黄油和面粉很快我的手上就沾满了粘粘的面糊。 \n恰恰在此时电话铃响了。 \n没有什么能比这更烦人了。 \n我用两个沾满面糊的手指捏起了话筒。当听出是海伦.贝茨的声音时,非常丧气。 \n我用了10分钟的时间才说服她过会儿再来电话。 \n我终于挂上了话筒。 \n真是糟糕透了 \n我的手指上、电话机上以及门的把手上都沾上了面糊。 \n我刚回到厨房门铃又响了起来响声足以把死人唤醒。 \n这次是邮递员他要我签收一封挂号信",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/Sticky fingers.mp3",
"lrcPosition": [[15.83,23.02],[23.02,27.3],[27.3,34.05],[34.05,37.79],[38.34,47.2],[47.98,53.28],[53.28,56.75],[56.75,68.01],[68.01,72.69],[72.69,76.75],[76.75,79.17],[79.17,87.01],[87.01,95.88],[95.88,102.27]],
"audioFileId": "xmXLsaSGYre0Imgjk4Zhe"
"audioFileId": ""
},
{
"id": "u2H845",
@@ -998,9 +998,9 @@
"textTranslate": "最近,找到失踪宝藏的梦想差一点儿变成现实。 \n一种叫“探宝器”的新机器已经发明出来并被人们用来探测地下埋藏的金子。 \n在靠近海边的一个据说过去海盗常在里面藏金子的岩洞里这种机器被派上了用场。 \n海盗们过去常把金子埋藏在那个洞里可后来却没能取走。 \n一支用这种新机器装备起来的探宝队进入了这个岩洞希望找到埋藏着的金子。 \n当这个队的队长正在检查洞口附近的土壤时那台机器显示出它的下面埋有金子。 \n队员们异常激动就地挖了一个两英尺深的坑 \n但最后找到的是一枚几乎一钱不值的小金币。 \n队员们接着又把整个洞彻底搜寻了一遍但除了一只空铁皮箱外什么也没找到。 \n尽管如此很多人仍然相信“探宝器”很快就会探出值钱的东西来。",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/Not a gold mine.mp3",
"lrcPosition": [[14.25,20.36],[20.36,31.36],[32.07,41.97],[41.97,49.07],[49.07,57.25],[57.25,68.51],[68.51,74.14],[74.14,80.66],[80.66,90.28],[90.88,101.61]],
"audioFileId": "28ptYyyq2qsDcm7HWUmv2"
"audioFileId": ""
},
{
"id": "BKCCAD",
@@ -1010,9 +1010,9 @@
"textTranslate": "旧式汽车的比赛每年举行一次。 \n去年有很多汽车参加了这项比赛。比赛开始之前人们异常激动。 \n最漂亮的汽车之一是罗尔斯--罗伊斯生产的银鬼汽车, \n而最不寻常的一辆则要属只有3只轮子的奔驰牌汽车了。 \n该车造于1885年是参赛车中最老的一辆。 \n在好一阵喧闹的爆炸声之后比赛开始了。 \n很多汽车在途中就抛了锚而有些驾驶员花在汽车底下的时间比坐在汽车里面的时间还长。 \n然而还是有几辆汽车跑完了全程。 \n获胜的那辆车达到了时速40英里--远远超过任何对手。 \n它在接近终点时冲下了山坡驾驶员费了好大劲才把车停下来。 \n这次比赛使每个人都挺开心。 \n它虽然与现代汽车比赛大不相同但激动人心的程度并不亚于现代化汽车大赛。",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/Faster than sound.mp3",
"lrcPosition": [[15.46,20.93],[20.93,30.67],[30.67,36.65],[36.65,43.42],[43.42,50.17],[50.17,56.11],[56.11,65.86],[65.86,69.7],[69.7,78.47],[78.47,85.68],[85.68,90.19],[90.19,96.14]],
"audioFileId": "Z8JdaZube-SRfhVtDV9Tu"
"audioFileId": ""
},
{
"id": "wraghW",
@@ -1022,9 +1022,9 @@
"textTranslate": "一位穿着牛仔裤的妇女站在一家高档商店的橱窗前。 \n她虽然犹豫了片刻但终于还是走进了商店要求把陈列在橱窗里的一件衣服拿给她看。 \n接待她的售货员不喜欢她的那副打扮 \n轻蔑地看了她一眼后便告诉她那件衣服已经卖出去了。 \n这位妇女怒气冲冲地走出了商店决定第二天教训一下那个售货员。 \n第二天上午她又来到这家商店穿了一件裘皮大衣一只手拎着一只手提包另一只手拿着一把长柄伞。 \n找到那个无礼的售货员后她还要看昨天的那件衣服。 \n那个售货员没有认出她是谁这一回接待她的态度非常殷勤。 \n费了好大劲儿他爬进橱窗去取那件衣服。 \n这位妇女对那件衣服只看一眼就说不喜欢。 \n她开心地迫使那位售货员把橱窗里几乎所有的东西都拿了出来最后才买下了她最先要看的那一件。",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/Can I help you.mp3",
"lrcPosition": [[15.08,20.6],[20.6,29.63],[30.33,35.88],[35.88,41.89],[41.89,48.85],[48.85,59.14],[59.14,65.79],[66.2,73.81],[73.81,80.45],[80.45,86.18],[86.18,96.68]],
"audioFileId": "LbMP1mAb8rThlkmpXmPAr"
"audioFileId": ""
},
{
"id": "N_Ow1f",
@@ -1034,9 +1034,9 @@
"textTranslate": "据说弗林利这个小村里有一棵“该诅咒的树”。 \n就因为报上提到过这棵树所以现在来弗林利参观的人越来越多。 \n该树是50年前栽在教堂附近的 \n但只是近几年才得到了一个坏名声。 \n据说谁要是触摸了这棵树谁就会交上恶运如果谁摘了一片树叶谁就会死去。 \n很多村民相信此树已经害了不少人。 \n人们曾请求教区的牧师叫人把树砍掉 \n但他直到现在也没有同意。 \n他指出由于人们从全国各地纷纷前来参观这棵树它成了一个有用的财源。 \n尽管有上述种种说法但游客们还是照常摘树叶和把他们的名字刻在树干上。 \n然而到目前为止还没有一个人暴死呢",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/A blessing in disguise.mp3",
"lrcPosition": [[16.94,22.89],[22.89,31.01],[31.01,35.99],[35.99,42.04],[43.07,52.89],[52.89,59.95],[59.95,63.98],[63.98,67.76],[67.76,79.59],[79.59,89.1],[89.1,95.2]],
"audioFileId": "PqkV2mK6NxfQoeI2Z-kTB"
"audioFileId": ""
},
{
"id": "vB4OEO",
@@ -1046,9 +1046,9 @@
"textTranslate": "我家的狗雷克斯,过去常坐在大门外面叫。 \n每当它想到花园里来时便汪汪叫个不停直到有人把门打开。 \n由于邻居们对狗叫很有意见所以我丈夫花了几个星期的时间训练它用脚爪按住门闩把自己放进来。 \n雷克斯很快成了开门的专家。 \n然而上星期我正要出去买东西时发现它正呆在花园里边靠门的地方。 \n这次它叫着让人把它放出去 \n从那以后它养成了另外一种坏习惯。 \n它从外面把门一打开就走进花园等着门自动关上。 \n这之后他就坐下汪汪叫起来直到有人来把它放出去。 \n出去之后它又马上把自己放进来接着再开始叫。 \n昨天我丈夫把门卸了下来雷克斯很生气此后我们便再也没有见到它。",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/In or out.mp3",
"lrcPosition": [[15.52,22.54],[22.54,30.39],[30.39,41.56],[41.56,46.22],[46.22,54.81],[54.81,60.09],[60.09,65.1],[65.1,74.07],[74.07,78.58],[78.58,86.28],[86.28,94.7]],
"audioFileId": "Q38IwevX7yMx74uWJFr9B"
"audioFileId": ""
},
{
"id": "m95-Gp",
@@ -1058,9 +1058,9 @@
"textTranslate": "在一个乡村集市上,我决定去拜访一位称作别林斯夫人的算命人。 \n我走进她的帐篷她叫我坐下。 \n我给了她一些钱后 \n她便查看着一个水晶球说道 \n“您的一个亲戚 就要来看您了。 \n她将于今天傍晚到达并准备住上几天。 \n您一走出这个帐篷就会大吃一惊。 \n一位您很熟悉的女人将向您冲来。 \n她会对您说点什么然后带您离开这个地方。 \n就是这些。” \n我一走出帐篷 ,就把别林斯基夫人给算卦的事忘得一干二净了,因为我的妻子正匆匆向我跑来。 \n“你躲到哪儿去了”她不耐烦地问 \n“ 再有不到一个小时你姐姐就要到这儿了, 我们得去车站接她。现在就已经晚了。” \n当她走开时我也跟着她出了集市。",
"newWords": [],
"textAllWords": [],
"audioSrc": "",
"audioSrc": "/sound/article/nce2-1/The future.mp3",
"lrcPosition": [[14.66,22.34],[22.34,27.23],[27.23,30.37],[30.37,0],[34.11,38.29],[38.29,44.4],[44.4,49.83],[49.83,53.93],[53.93,59.41],[59.41,60.92],[61.82,71.26],[71.26,76.6],[76.6,85.79],[85.79,91]],
"audioFileId": "rROEoFpNdXJgZd-jvt_DG"
"audioFileId": ""
},
{
"id": "hh4f1v",

View File

@@ -1,23 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:The End of a Dream]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:11.05]How did the dream end?
[00:15.15]Tired of sleeping on the floor,
[00:18.01]a young man in Teheran saved up for years to buy a real bed.
[00:24.98]For the first time in his life,
[00:28.05]he became the proud owner of a bed which had springs and a mattress.
[00:35.22]Because the weather was very hot,
[00:38.62]he carried the bed on to the roof of his house.
[00:43.36]He slept very well for the first two nights,
[00:48.00]but on the third night, a storm blew up.
[00:53.12]A gust of wind swept the bed off the roof and sent it crashing into the courtyard below.
[01:02.03]The young man did not wake up
[01:04.44]until the bed had struck the ground.
[01:08.46]Although the bed was smashed to pieces,
[01:12.03]the man was miraculously unhurt.
[01:16.21]When he woke up, he was still on the mattress.
[01:20.84]Glancing at the bits of wood and metal that lay around him,
[01:25.72]the man sadly picked up the mattress and carried it into his house.
[01:31.82]After he had put it on the floor,
[01:34.56]he promptly went to sleep again.

View File

@@ -1,25 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:Taken for a Ride]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:09.59]Why did the writer not get off the bus at Woodford Green?
[00:16.09]I love travelling in the country,
[00:18.92]but I don't like losing my way.
[00:22.63]I went on an excursion recently,
[00:25.41]but my trip took me longer than I expected.
[00:30.20]'I'm going to Woodford Green,'
[00:32.63]I said to the conductor as I got on the bus,
[00:36.84]'but I don't know where it is.'
[00:40.50]'I'll tell you where to get off.' answered the conductor.
[00:46.00]I sat in the front of the bus to get a good view of the countryside.
[00:52.18]After some time, the bus stopped.
[00:55.92]Looking round, I realized with a shock that I was the only passenger left on the bus.
[01:04.21]'You'll have to get off here,'
[01:07.03]the conductor said. 'This is as far as we go.'
[01:12.42]'Is this Woodford Green?' I asked.
[01:16.04]'Oh dear,' said the conductor suddenly.
[01:20.23]'I forgot to put you off.'
[01:23.32]'It doesn't matter,' I said. 'I'll get off here.'
[01:28.45]'We're going back now,' said the conductor.
[01:32.68]'Well, in that case,
[01:34.90]I prefer to stay on the bus,' I answered.

View File

@@ -1,20 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:Reward for Virtue]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:10.28]Why did Hugh's diet not work?
[00:15.33]My friend, Hugh, has always been fat,
[00:19.77]but things got so bad recently that he decided to go on a diet.
[00:26.32]He began his diet a week ago.
[00:29.61]First of all, he wrote out a long list of all the foods which were forbidden.
[00:36.88]The list included most of the things Hugh loves:
[00:41.30]butter, potatoes, rice, beer, milk, chocolate, and sweets.
[00:48.64]Yesterday I paid him a visit.
[00:51.97]I rang the bell and was not surprised to see that Hugh was still as fat as ever.
[00:59.28]He led me into his room and hurriedly hid a large parcel under his desk.
[01:05.80]It was obvious that he was very embarrassed.
[01:10.03]When I asked him what he was doing,
[01:12.70]he smiled guiltily and then put the parcel on the desk.
[01:17.78]He explained that his diet was so strict that he had to reward himself occasionally.
[01:25.59]Then he showed me the contents of the parcel.
[01:29.35]It contained five large bars of chocolate and three bags of sweets!

View File

@@ -1,19 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:A Pretty Carpet]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:09.89]What is the writer's carpet made of?
[00:14.42]We have just moved into a new house and I have been working hard all morning.
[00:22.27]I have been trying to get my new room in order.
[00:27.17]This has not been easy because I own over a thousand books.
[00:34.01]To make matters worse,
[00:36.02]the room is rather small,
[00:38.71]so I have temporarily put my books on the floor.
[00:44.30]At the moment, they cover every inch of floor space
[00:48.83]and I actually have to walk on them to get in or out of the room.
[00:55.80]A short while ago, my sister helped me to carry one of my old bookcases up the stairs.
[01:04.52]She went into my room and got a big surprise when she saw all those books on the floor.
[01:13.35]'This is the prettiest carpet I have ever seen,' she said.
[01:19.77]She gazed at it for some time then added,
[01:24.03]'You don't need bookcases at all.
[01:27.25]You can sit here in your spare time and read the carpet!'

View File

@@ -1,18 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:Hot Snake]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:10.58]What caused the fire?
[00:14.44]At last firemen have put out a big forest fire in California.
[00:21.11]Since then, they have been trying to find out how the fire began.
[00:27.63]Forest fires are often caused by broken glass or by cigarette ends which people carelessly throw away.
[00:37.96]Yesterday the firemen examined the ground carefully,
[00:42.32]but were not able to find any broken glass.
[00:46.80]They were also quite sure that a cigarette end did not start the fire.
[00:53.01]This morning, however, a firemen accidentally discovered the cause.
[00:59.38]He noticed the remains of a snake which was wound round the electric wires of a 16, 000-volt power line.
[01:09.98]In this way, he was able to solve the mystery.
[01:14.65]The explanation was simple but very unusual.
[01:20.03]A bird had snatched up the snake from the ground and then dropped it on to the wires.
[01:27.83]The snake then wound itself round the wires.
[01:31.74]When it did so, it sent sparks down to the ground and these immediately started a fire.

View File

@@ -1,18 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:Sticky Fingers]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:10.52]What two interruptions did the writer have?
[00:15.83]After breakfast, I sent the children to school and then I went to the shops.
[00:23.02]It was still early when I returned home.
[00:27.30]The children were at school, my husband was at work and the house was quiet.
[00:34.05]So I decided to make some meat pies.
[00:38.34]In a short time I was busy mixing butter
[00:41.82]and flour and my hands were soon covered with sticky pastry.
[00:47.98]At exactly that moment, the telephone rang.
[00:53.28]Nothing could have been more annoying.
[00:56.75]I picked up the receiver between two sticky fingers and was dismayed when I recognized the voice of Helen Bates.
[01:08.01]It took me ten minutes to persuade her to ring back later. At last I hung up the receiver.
[01:17.22]What a mess! There was pastry on my fingers, on the telephone, and on the doorknobs.
[01:27.01]I had no sooner got back to the kitchen than the doorbell rang loud enough to wake the dead.
[01:35.88]This time it was the postman and he wanted me to sign for a registered letter!

View File

@@ -1,16 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:Not a Gold Mine]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:10.19]What did the team find?
[00:14.25]Dreams of finding lost treasure almost came true recently.
[00:20.36]A new machine called 'The Revealer' has been invented
[00:25.28]and it has been used to detect gold which has been buried in the ground.
[00:32.07]The machine was used in a cave near the seashore where--it is said--pirates used to hide gold.
[00:41.97]The pirates would often bury gold in the cave and then fail to collect it.
[00:49.07]Armed with the new machine, a search party went into the cave hoping to find buried treasure.
[00:57.25]The leader of the party was examining the soil near the entrance to the cave when the machine showed that there was gold under the ground.
[01:08.51]Very excited, the party dug a hole two feet deep.
[01:14.14]They finally found a small gold coin which was almost worthless.
[01:20.66]The party then searched the whole cave thoroughly but did not find anything except an empty tin trunk.
[01:31.21]In spite of this, many people are confident that 'The Revealer' may reveal something of value fairly soon.

View File

@@ -1,17 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:Faster Than Sound!]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:10.50]How fast did the winning car go?
[00:15.46]Once a year, a race is held for old cars.
[00:20.93]A lot of cars entered for this race last year and there was a great deal of excitement just before it began.
[00:30.67]One of the most handsome cars was a Rolls-Royce Silver Ghost.
[00:36.65]The most unusual car was a Benz which had only three wheels.
[00:43.42]Built in 1885, it was the oldest car taking part.
[00:50.17]After a great many loud explosions, the race began.
[00:56.11]Many of the cars broke down on the course and some drivers spent more time under their cars than in them!
[01:05.86]A few cars, however, completed the race.
[01:09.70]The winning car reached a speed of forty miles an hour -- much faster than any of its rivals.
[01:18.47]It sped downhill at the end of the race and its driver had a lot of trouble trying to stop it.
[01:26.04]The race gave everyone a great deal of pleasure.
[01:30.19]It was very different from modern car races but no less exciting.

View File

@@ -1,20 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:Can I Help You, Madam?]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:10.74]Did the woman get what she wanted?
[00:15.08]A woman in jeans stood at the window of an expensive shop.
[00:20.60]Though she hesitated for a moment,
[00:23.77]she finally went in and asked to see a dress that was in the window.
[00:30.33]The assistant who served her did not like the way she was dressed.
[00:35.88]Glancing at her scornfully, he told her that the dress was sold.
[00:41.89]The woman walked out of the shop angrily and decided to punish the assistant next day.
[00:48.85]She returned to the shop the following morning dressed in a fur coat,
[00:54.13]with a handbag in one hand and a long umbrella in the other.
[01:00.05]After seeking out the rude assistant,
[01:02.91]she asked for the same dress.
[01:06.20]Not realizing who she was, the assistant was eager to serve her this time.
[01:13.81]With great difficulty, he climbed into the shop window to get the dress.
[01:20.45]As soon as she saw it, the woman said she did not like it.
[01:26.18]She enjoyed herself making the assistant bring almost everything in the window
[01:32.04]before finally buying the dress she had first asked for.

View File

@@ -1,17 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:A Blessing in Disguise?]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:11.01]Why does the vicar refuse to cut down the tree?
[00:16.94]The tiny village of Frinley is said to possess a 'cursed tree'.
[00:22.89]Because the tree was mentioned in a newspaper,
[00:26.47]the number of visitors to Frinley has now increased.
[00:31.71]The tree was planted near the church fifty years ago, but it is only in recent years that it has gained an evil reputation.
[00:43.07]It is said that if anyone touches the tree, he will have bad luck; if he picks a leaf, he will die.
[00:52.89]Many villagers believe that the tree has already claimed a number of victims.
[00:59.95]The vicar has been asked to have the tree cut down, but so far he has refused.
[01:08.52]He has pointed out that the tree is a useful source of income,
[01:14.13]as tourists have been coming from all parts of the country to see it.
[01:20.04]In spite of all that has been said,
[01:23.23]the tourists have been picking leaves and cutting their names on the tree-trunk.
[01:29.10]So far, not one of them has been struck down by sudden death!

View File

@@ -1,16 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:In or Out?]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:11.22]Why did Rex run away?
[00:15.52]Our dog, Rex, used to sit outside our front gate and bark.
[00:22.54]Every time he wanted to come into the garden he would bark until someone opened the gate.
[00:30.39]As the neighbours complained of the noise, my husband spent weeks training him to press his paw on the latch to let himself in.
[00:41.56]Rex soon became an expert at opening the gate.
[00:46.22]However, when I was going out shopping last week, I noticed him in the garden near the gate.
[00:54.81]This time he was barking so that someone would let him out!
[01:00.09]Since then, he has developed another bad habit.
[01:05.10]As soon as he opens the gate from the outside, he comes into the garden and waits until the gate shuts.
[01:14.07]Then he sits and barks until someone lets him out.
[01:18.58]After this he immediately lets himself in and begins barking again.
[01:26.28]Yesterday my husband removed the gate and Rex got so annoyed we have not seen him since.

View File

@@ -1,17 +0,0 @@
[al:新概念英语(二)]
[ar:MP3 同步字幕版(美音)]
[ti:The Future]
[by:更多学习内容请到VeryCD.com搜索“露珠”]
[00:09.35]Does what Madam Bellinsky said come true?
[00:14.66]At a village fair, I decided to visit a fortune-teller called Madam Bellinsky.
[00:22.34]I went into her tent and she told me to sit down.
[00:27.23]After I had given her some money, she looked into a crystal ball and said:
[00:34.11]'A relation of yours is coming to see you.
[00:38.29]She will be arriving this evening and intends to stay for a few days.
[00:44.40]The moment you leave this tent, you will get a big surprise.
[00:49.83]A woman you know well will rush towards you.
[00:54.18]She will speak to you and then she will lead you away from this place. That is all.'
[01:02.40]As soon as I went outside, I forgot all about Madam Bellinsky because my wife hurried towards me.
[01:11.48]'Where have you been hiding?' she asked impatiently.
[01:16.83]'Your sister will be here in less than an hour and we must be at the station to meet her. We are late already.'
[01:26.58]As she walked away, I followed her out of the fair.

View File

@@ -1,5 +1,18 @@
[
[
{
"id": "article_nce1",
"name": "新概念英语1-课文",
"description": "",
"category": "文章学习",
"tags": [
"新概念英语"
],
"url": "NCE_1.json",
"length": 72,
"translateLanguage": "common",
"language": "en"
},
{
"id": "article_nce2",
"name": "新概念英语2-课文",

View File

@@ -18,7 +18,7 @@
--color-sub-gray: #c0bfbf;
--article-width: 50vw;
--article-toolbar-width: 50rem;
--article-toolbar-width: 50vw;
--article-panel-width: 20rem;
--article-panel-margin-left: calc(50% + var(--article-width) / 2 + 1rem);
@@ -129,7 +129,7 @@ html.dark {
--panel-width: 20vw;
--space: 0.5rem;
--article-toolbar-width: 45rem;
--article-toolbar-width: 50rem;
--article-panel-width: 18rem;
}
}

View File

@@ -11,7 +11,7 @@ import BaseButton from "@/components/BaseButton.vue";
import {useRoute, useRouter} from "vue-router";
import EditBook from "@/pages/pc/article/components/EditBook.vue";
import {computed, onMounted} from "vue";
import {_getDictDataByUrl, cloneDeep, useNav} from "@/utils";
import {_dateFormat, _getDictDataByUrl, cloneDeep, msToHourMinute, total, useNav} from "@/utils";
import BaseIcon from "@/components/BaseIcon.vue";
import {useArticleOptions} from "@/hooks/dict.ts";
import {getDefaultArticle, getDefaultDict} from "@/types/func.ts";
@@ -102,7 +102,6 @@ function reset() {
'继续此操作会重置所有文章,并从官方书籍获取最新文章列表,学习记录不会被重置。确认恢复默认吗?',
'恢复默认',
async () => {
debugger
let dict = book_list.flat().find(v => v.url === runtimeStore.editDict.url) as Dict
if (dict && dict.id) {
dict = await _getDictDataByUrl(dict, DictType.article)
@@ -124,6 +123,21 @@ function reset() {
}
)
}
const currentPractice = $computed(() => {
if (runtimeStore.editDict.statistics?.length) {
return runtimeStore.editDict.statistics.filter(v => v.title === selectArticle.title)
}
return []
})
const totalSpend = $computed(() => {
if (runtimeStore.editDict.statistics?.length) {
return msToHourMinute(total(runtimeStore.editDict.statistics,'spend'))
}
return 0
})
</script>
<template>
@@ -142,6 +156,8 @@ function reset() {
</div>
</div>
<div class="text-lg ">介绍{{ runtimeStore.editDict.description }}</div>
<div class="text-base " v-if="totalSpend">总学习时长{{ totalSpend }}</div>
<div class="line my-3"></div>
<div class="flex flex-1 overflow-hidden">
@@ -166,6 +182,12 @@ function reset() {
</div>
<div class="right flex-[4] shrink-0 pl-4 overflow-auto">
<div v-if="selectArticle.id">
<div class="font-family text-base mb-4" v-if="currentPractice.length">
<div>学习记录{{ msToHourMinute(total(currentPractice, 'spend'))}}</div>
<div class="item" v-for="i in currentPractice">
{{_dateFormat(i.startDate,'YYYY-MM-DD HH-mm')}}: {{ msToHourMinute(i.spend) }}
</div>
</div>
<div class="en-article-family title text-xl">
<div class="text-center text-2xl my-2">
<ArticleAudio :article="selectArticle"></ArticleAudio>

View File

@@ -8,7 +8,7 @@ import {Article, ArticleItem, ArticleWord, Dict, DictType, ShortcutKey, Statisti
import {useDisableEventListener, useOnKeyboardEventListener, useStartKeyboardEventListener} from "@/hooks/event.ts";
import useTheme from "@/hooks/theme.ts";
import Toast from '@/pages/pc/components/base/toast/Toast.ts'
import {_getDictDataByUrl, cloneDeep} from "@/utils";
import {_getDictDataByUrl, cloneDeep, msToHourMinute, msToMinute, total} from "@/utils";
import {usePracticeStore} from "@/stores/practice.ts";
import {useArticleOptions} from "@/hooks/dict.ts";
import {genArticleSectionData, usePlaySentenceAudio} from "@/hooks/article.ts";
@@ -176,6 +176,10 @@ function complete() {
window.umami?.track('studyWordArticle', reportData)
store.sbook.statistics.push(data as any)
console.log(data, reportData)
//重置
statStore.wrong = 0
statStore.startDate = Date.now()
}
function getCurrentPractice() {
@@ -308,6 +312,12 @@ function play2(e) {
}
}
const currentPractice = $computed(() => {
if (store.sbook.statistics?.length) {
return store.sbook.statistics.filter(v => v.title === articleData.article.title)
}
return []
})
</script>
<template>
<PracticeLayout
@@ -334,7 +344,7 @@ function play2(e) {
</template>
<div class="panel-page-item pl-4">
<ArticleList
:isActive="true"
:isActive="settingStore.showPanel"
:static="false"
:show-translate="settingStore.translate"
@click="changeArticle"
@@ -365,6 +375,11 @@ function play2(e) {
<div class="bottom">
<div class="flex justify-between items-center gap-2">
<div class="stat">
<div class="row">
<div class="num">{{ currentPractice.length }}/{{ msToMinute(total(currentPractice, 'spend'))}}</div>
<div class="line"></div>
<div class="name">记录</div>
</div>
<div class="row">
<div class="num">{{ speedMinute }}分钟</div>
<div class="line"></div>
@@ -473,7 +488,7 @@ function play2(e) {
flex-direction: column;
align-items: center;
gap: .3rem;
width: 5rem;
width: 6rem;
color: gray;
.line {

View File

@@ -343,17 +343,33 @@ function onTyping(e: KeyboardEvent) {
}
// 检查是否是句子的最后一个单词
const isLastWordInSentence = wordIndex + 1 >= currentSentence.words.length;
// const isLastWordInSentence = wordIndex + 1 >= currentSentence.words.length;
// if (isLastWordInSentence) {
// // 如果是句子的最后一个单词,自动跳转到下一句,不用再输入空格
// nextSentence();
// } else if (currentWord.nextSpace) {
// // 如果不是最后一个单词,且需要空格,设置等待空格输入
// isSpace = true;
// } else {
// // 如果不需要空格,直接移动到下一个单词
// nextWord();
// }
if (isLastWordInSentence) {
// 如果是句子的最后一个单词,自动跳转到下一句,不用再输入空格
nextSentence();
} else if (currentWord.nextSpace) {
// 如果不是最后一个单词,且需要空格,设置等待空格输入
isSpace = true;
//换句不打空格不符合习惯
if (currentWord.nextSpace) {
if (
sectionIndex === props.article.sections.length - 1 &&
sentenceIndex === currentSection.length - 1 &&
wordIndex === currentSentence.words.length - 1
) {
console.log('打完了')
isEnd = true
emit('complete')
} else {
isSpace = true
}
} else {
// 如果不需要空格,直接移动到下一个单词
nextWord();
nextWord()
}
}

View File

@@ -3,6 +3,8 @@
import Input from "@/pages/pc/components/Input.vue";
import {Article} from "@/types/types.ts";
import BaseList from "@/pages/pc/components/list/BaseList.vue";
import * as sea from "node:sea";
import {watch, watchEffect} from "vue";
const props = withDefaults(defineProps<{
list: Article[],
@@ -20,12 +22,31 @@ const emit = defineEmits<{
let searchKey = $ref('')
let localList = $computed(() => {
if (searchKey) {
return props.list.filter((item: Article) => {
//把搜索内容,分词之后,判断是否有这个词,比单纯遍历包含体验更好
return searchKey.toLowerCase().split(' ').filter(v => v).some(value => {
//把搜索内容,分词之后,判断是否有这个词,比单纯遍历包含体验更好
let t = searchKey.toLowerCase()
let strings = t.split(' ').filter(v => v);
let res = props.list.filter((item: Article) => {
return strings.some(value => {
return item.title.toLowerCase().includes(value) || item.titleTranslate.toLowerCase().includes(value)
})
})
try {
let d = Number(t)
//如果是纯数字,把那一条加进去
if (!isNaN(d)) {
res.push(props.list[d])
}
} catch (err) {
}
return res.sort((a: Article, b: Article) => {
//使完整包含的条目更靠前
const aMatch = a.title.toLowerCase().includes(t);
const bMatch = b.title.toLowerCase().includes(t);
if (aMatch && !bMatch) return -1; // a 靠前
if (!aMatch && bMatch) return 1; // b 靠前
return 0; // 都匹配或都不匹配,保持原顺序
})
} else {
return props.list
}

View File

@@ -146,8 +146,8 @@ defineExpose({scrollToBottom, scrollToItem})
style="overflow: auto;"
ref="listRef">
<div class="list-item-wrapper"
v-for="(item,index) in list"
:key="item.id"
v-for="(item,index) in props.list"
:key="item.title"
>
<div class="common-list-item"
:class="{

View File

@@ -431,7 +431,7 @@ useEvents([
<div class="panel-page-item pl-4">
<WordList
v-if="data.words.length"
:is-active="true"
:is-active="settingStore.showPanel"
:static="false"
:show-word="!settingStore.dictation"
:show-translate="settingStore.translate"

View File

@@ -13,6 +13,9 @@ import {getDefaultArticle, getDefaultDict, getDefaultWord} from "@/types/func.ts
import {set} from "idb-keyval";
import book_list from "@/assets/book-list.json";
import dict_list from "@/assets/dict-list.json";
import duration from "dayjs/plugin/duration";
dayjs.extend(duration);
export function no() {
Toast.warning('未现实')
@@ -47,12 +50,12 @@ export function checkAndUpgradeSaveDict(val: any) {
// console.log('state', state)
if (version === SAVE_DICT_KEY.version) {
checkRiskKey(defaultState, state)
defaultState.article.bookList = defaultState.article.bookList.map(v=>{
return getDefaultDict(checkRiskKey(getDefaultDict(),v))
})
defaultState.word.bookList = defaultState.word.bookList.map(v=>{
return getDefaultDict(checkRiskKey(getDefaultDict(),v))
})
defaultState.article.bookList = defaultState.article.bookList.map(v => {
return getDefaultDict(checkRiskKey(getDefaultDict(), v))
})
defaultState.word.bookList = defaultState.word.bookList.map(v => {
return getDefaultDict(checkRiskKey(getDefaultDict(), v))
})
return defaultState
} else {
if (version === 3) {
@@ -294,6 +297,18 @@ export function _dateFormat(val: any, format?: string): string {
return dayjs(d).format(format)
}
export function msToHourMinute(ms) {
const d = dayjs.duration(ms);
const hours = d.hours();
const minutes = d.minutes();
return `${hours}小时${minutes}分钟`;
}
export function msToMinute(ms) {
return `${Math.floor(dayjs.duration(ms).asMinutes())}分钟`;
}
export function _fetch(url: string) {
return new Promise<any[]>(async (resolve, reject) => {
await fetch(url).then(async r => {
@@ -637,3 +652,10 @@ export async function loadJsLib(key: string, url: string) {
document.head.appendChild(script);
});
}
export function total(arr, key) {
return arr.reduce((a, b) => {
a += b[key];
return a
}, 0);
}