掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2868|回复: 37

[使用求助] Anki LDOCE6 提取的例句媒体文件怎么重命名?

[复制链接]
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-8-2 21:25:36 | 显示全部楼层 |阅读模式
    本帖最后由 jiaqiangmit2 于 2019-8-2 21:30 编辑 * P3 ?2 D9 |2 B) J: w7 z$ x5 G3 n
    5 ^1 d+ l/ u8 c+ M/ W
    各位大神
    3 D8 x' L' H1 b3 {我在anki里已经实现提取LDOCE6真人朗读例句的制卡。现在希望能将音频文件单独放手机,睡觉和开车等时间听。问题来了:anki对媒体文件的命名是以类似于HAsh方式“乱码”命名的,从媒体文件夹里复制出来,所有的例句和单词的朗读时打乱的。能否实现:单词以其拼写命名(example.mp3),对应的几个例句音频以单词拼写加后缀的方式命名,这样,放在手机里,单词和对应例句就可以一起读了。8 Q" c" O: J2 w: Z

    # q3 Y1 b, A, S( j7 S$ Y9 ^  E& o4 X1 u" g
    如图,文件名是“l乱码”的
    3 o' w$ c& d( h1 j# `3 k* _5 R无法上任附件,名字是这样的:
    ' J, P9 m. V" l [sound:-ldoce6-b0ab2fba-11b6ffb4-d84db123-b00153f3-9971952a.mp3]
    5 t0 ?* K8 w$ U  V' y& y  u
      ~: x# B9 }+ m  @( n$ V对应 脚本 ) d: a9 B' X* w" W8 m3 ?
    3 [) P# i( `1 H
    ------------------------------" {% b2 q" k- H! y' ~, o

    : q8 A6 u- @$ _  _, X' Q, v) f8 O+ r5 g! a( G
    #-*- coding:utf-8 -*-7 y5 I) \5 e$ ?3 B) d& d
    import os
    4 i2 F7 L8 e  u3 Kimport re
      g# |7 M5 e& s" Aimport random8 t) N* C9 V  F& f( |6 ~6 }
    from ..base import *, }; P1 A/ l' J1 H- D$ r2 w( }

    6 B' y% s) e3 e3 L8 f, W% s
    5 m0 E* e$ L$ D# uVOICE_PATTERN = r'<a href="sound://([\w/]+\w*\.mp3)"><img src="img/spkr_%s.png"></a>'6 c! x+ e1 n) g/ t3 q, P
    VOICE_PATTERN_WQ = r'<span class="%s"><a href="sound://([\w/]+\w*\.mp3)">(.*?)</span %s>'
    ; C* d  L4 g3 M0 ]  g6 `MAPPINGS = [
    * [. ]  }6 v; ], b+ O0 h; P9 x! V    ['br', [re.compile(VOICE_PATTERN % r'r'), re.compile(VOICE_PATTERN_WQ % (r'brevoice', r'brevoice'))]],' S! D( B) G& X* R
        ['us', [re.compile(VOICE_PATTERN % r'b'), re.compile(VOICE_PATTERN_WQ % (r'amevoice', r'amevoice'))]]0 `4 Z' I5 L) A: @
    ]
    9 c: X4 |5 Y9 ^" {( U3 h9 k& ^LANG_TO_REGEXPS = {lang: regexps for lang, regexps in MAPPINGS}
    : R; x$ q+ _& s! N: O7 l! s$ NDICT_PATH =u'E:\Anki\Dick\L6mp3.mdx'2 B4 s. O* ?! q& j4 o7 f

    % l2 }# m- L; ^+ Q+ k
    5 T" F' E% Q. z0 F1 ~* R@register([u'本地词典-LDOCE6', u'MDX-LDOCE6'])" `! m, ~$ u$ V0 R) H
    class Ldoce6(MdxService):
    ( [9 U6 }) J* ?! U- e5 H% S
    ' O2 K' P5 I3 B9 \' b! M/ B' ~& L    def __init__(self):8 n- {8 o' E# V3 I% r6 d
            dict_path = DICT_PATH
    * }1 g0 F3 b* d) x% e        # if DICT_PATH is a path, stop auto detect
    . o1 `$ A- D* ^0 g6 m4 ~        if not dict_path:9 b6 ]& {1 I' |# ]
                from ...service import service_manager, service_pool
    . ?3 V/ e5 D% _5 s7 n  L% R            for clazz in service_manager.mdx_services:- O) [( L* m/ {8 [' L
                    service = service_pool.get(clazz.__unique__)) J& T! D1 Q# g8 \7 ~
                    title = service.builder._title if service and service.support else u''
    $ R1 N( }0 x: Z. Q' i  m                service_pool.put(service)$ U3 R) W9 Q$ e- q
                    if title.startswith(u'LDOCE6'):! |# n% z  w; }" @6 D
                        dict_path = service.dict_path, h2 l+ R/ D+ p
                        break
    / S9 m& L: Y# `9 L, ?5 c) d        super(Ldoce6, self).__init__(dict_path)
    1 Z  g- \0 y% P! i0 A9 P/ |& h; b1 U* T* w" D; y1 U+ D( m( T
        @property
    2 ^1 s) {+ M  h3 D+ q    def title(self):: j! d( L8 q" f
            return getattr(self, '__register_label__', self.unique)
    , b4 i1 F# _" c; w+ U" l- _& B
    7 M! I/ k! P0 }4 M    @export('PHON'). S/ x% J# A/ G6 c* @  Z
        def fld_phonetic(self):
    7 t$ a4 o2 y, W        html = self.get_html()3 I$ v# j# Z: U; R& B+ J. Y
            m = re.search(r'<span class="pron">(.*?)</span>', html)8 C2 W/ c7 a8 O/ ?0 }$ l
            if m:8 Y/ O) N# R& |8 X
                return m.groups()[0]4 ~1 G& ?: _6 j
            return ''
    * p, x( [; i0 R3 j3 G6 o
    ' T+ I5 l6 ?2 \, P$ N    def _fld_voice(self, html, voice):
    # _  `8 `* I7 W0 U        """获取发音字段"""
    4 d) }% d: |" M5 N3 V/ ]/ K8 _        for regexp in LANG_TO_REGEXPS[voice]:
    # K9 P" G' O# @% F/ i* C, b            match = regexp.search(html)
    & ^: @" w" D! Z3 Z$ p: _            if match:
    $ U8 P7 p2 o7 q                val = '/' + match.group(1), R4 E; m& w( M' n/ i( o
                    name = get_hex_name('mdx-'+self.unique.lower(), val, 'mp3')& Z, b+ ]; r' F& `; M
                    name = self.save_file(val, name)8 u! ^) u! l: q) S0 h6 {7 q
                    if name:6 [; O- h2 h# [$ E% E8 t
                        return self.get_anki_label(name, 'audio')
    0 o1 R& Z# l+ P! A: Z+ e& m1 Q        return ''0 T5 S+ j! P0 T( R4 X: v
    ' p, ?3 m2 E" D) ~- N: c, [- t
        @export('BRE_PRON')1 m# j. Z( |! A- q- v8 |
        def fld_voicebre(self):% J3 X/ q6 m8 t( b: q6 K
            return self._fld_voice(self.get_html(), 'br')
      a7 ?4 M; o9 b) A$ ]3 E# r2 U  a
    : r: Z, U) S' L4 L" \    @export('AME_PRON')
    $ v, i( F! k. i# t    def fld_voiceame(self):3 T. _5 v; a1 c! d# Z$ L
            return self._fld_voice(self.get_html(), 'us')
    / V7 h0 z& s" h: a9 M8 E1 \: n$ |& Q) e+ d) s( i1 a( U" j
        def _fld_image(self, img):6 E/ W. a0 V( S$ [
            val = '/' + img
    1 b$ p1 t. l1 [  i        # file extension isn't always jpg6 `; C& r$ f4 X* ^; b: @
            file_extension = os.path.splitext(img)[1][1:].strip().lower()
    8 |9 B7 k" ~3 B3 Y9 ^9 ^! ~, q0 f, @        name = get_hex_name('mdx-'+self.unique.lower(), val, file_extension)
    8 r$ l! v6 q5 W. n        name = self.save_file(val, name)
    & S2 m9 v3 B0 e) g/ H* W& b        if name:
    / u& d' N$ D9 L5 P. o            return self.get_anki_label(name, 'img')
    ' O! y& R" @$ e# V5 B6 I0 a) ^$ S        return '') k( O0 C8 |% Y- u% G
    6 ~$ l/ h$ l! {" T
        @export('IMAGE')7 Y& z4 i' L9 a/ L6 _3 z/ K/ ?
        def fld_image(self):' j2 h* H' Z" \# H. q
            html = self.get_html()9 v, N4 E# w8 P: p' ]4 J3 H: i$ w7 S
            m = re.search(r'<span class="imgholder"><img src="(.*?)".*?></span>', html)
    ' F1 Q$ t' k% d& B! [$ C        if m:9 z  g" Y& t0 E/ b3 X7 b$ c
                return self._fld_image(m.groups()[0])$ D" J$ k8 b; I! c2 x. y. ~
            return ''
    5 J; k/ @4 e4 [+ S( N; U& w
    $ U. r/ B$ v4 R5 o7 a* O    @export('EXAMPLE')
    $ Y" u# k0 |+ q* D    def fld_sentence(self):
    " B' }$ X* [2 N: X0 j/ P        return self._range_sentence([i for i in range(0, 100)])
    9 r) F) U# G4 t1 J/ S, t6 S7 W0 z. o2 m
        def _fld_audio(self, audio):
    - n. Z& c; N- o7 a$ y3 d1 `$ h1 x        name = get_hex_name('mdx-'+self.unique.lower(), audio, 'mp3')8 i$ g( g* }+ c" t8 c$ o
            name = self.save_file(audio, name)- y7 T3 f7 m4 J5 w" S/ g1 ^1 f1 T
            if name:" L- h4 H( {1 ~" k9 s
                return self.get_anki_label(name, 'audio')2 ~5 u" x6 x* B! c1 N% O
            return ''3 h* i% z2 ^. X) R' w/ Y
    % B7 h$ G9 ]8 X9 g
        @export([u'例句加音频', u'Examples with audios'])
    6 s, J% e$ Q( r8 F    def fld_sentence_audio(self):9 z9 H; G- ?* e" `
            return self._range_sentence_audio([i for i in range(0, 100)])
    4 z# k3 s' C0 ^: N: c) M+ b7 t) l. C- @, {+ Y, ?( a
        @export('DEF')
    " f4 d: R8 h: r( o# p& j    def fld_definate(self):1 T  K' ]2 T! p0 ~6 X
            m = m = re.findall(r'<span class="def"\s*.*>\s*.*<\/span>', self.get_html())
    ) S8 E1 G2 a0 u1 h        if m:! \1 t; A7 L' I" t7 \! J% u
                soup = parse_html(m[0])
    / Q+ x- x  N/ [) Z# v+ x2 L            el_list = soup.findAll('span', {'class':'def'})
    , T8 H8 n- x7 a- ~4 C, E. h            if el_list:; x4 l- y8 e1 p$ F4 L3 X, j
                    maps = [u''.join(str(content) for content in element.contents)
    5 {1 i* j. y( s                                    for element in el_list]
    3 j* _8 I# a' a2 W            my_str = ''
    " ?5 q. I+ p( I4 M- G& d: x* U$ ~            for i_str in maps:
    ' f8 l6 ^* K9 p3 l' [8 @7 Q                my_str = my_str + '<li>' + i_str + '</li>'
    2 [, V1 i' t; C+ Y5 p            return self._css(my_str)
      t3 f( J6 G7 V2 q: u        return ''& v/ c. z. J9 v, o% X/ M
    ; e5 t' T! M/ v) O
        @export([u'随机例句', u'Random example'])# j1 u7 x! J. }9 _1 |1 m
        def fld_random_sentence(self):
    ; P" K9 q6 h4 B8 I6 o! y        return self._range_sentence(); N6 X" r  h$ _3 P7 H$ E
    ' a! M3 h" @5 G% R5 q7 f
        @export([u'首2个例句', u'First 2 examples'])
    0 B" W3 X4 M9 W    def fld_first2_sentence(self):
    7 |1 z2 n" z' N6 C2 u; c        return self._range_sentence([0, 1]). p8 T! t6 |( f4 G
        . W) G7 B. W, c) P9 h
        @export([u'随机例句加音频', u'Random example with audio'])
    8 r( W/ m" c7 [3 b5 K$ y. g5 R    def fld_random_sentence_audio(self):
    # i$ g; h1 @' o        return self._range_sentence_audio()
    " E* h+ `" P5 m! V
    ! S3 A2 d2 H. |# m- Y    @export([u'首2个例句加音频', u'First 2 examples with audios'])
    $ k3 `% f+ @- T$ ?) R2 }% n    def fld_first2_sentence_audio(self):
    0 A, u5 p3 A$ j0 x4 L        return self._range_sentence_audio([0, 1])  p* n7 P$ x8 y8 g  `" z* n

    " L9 p  k! s3 L2 y+ s) e5 E3 r    def _range_sentence(self, range_arr=None):$ T5 a2 I1 B( U: ~( A
            m = re.findall(r'<span class="example"\s*.*>\s*.*<\/span>', self.get_html())3 k! z* H/ P# F" M. D" B  W& J( G" e
            if m:" p: P* q5 {. o" u/ S6 {. z
                soup = parse_html(m[0])
    & r0 ?5 v, o" m            el_list = soup.findAll('span', {'class':'example'})* H! U, _: S# q' x2 Y: `, P
                if el_list:$ S9 J+ h0 f" ], U
                    maps = [u''.join(str(content) for content in element.contents)
    4 b+ @" d5 U5 D% B                                    for element in el_list]
    * }* }3 |) s/ ^6 z+ r0 h            my_str = ''% R  b; ?, Z; ^9 H( ?% I! G* {
                range_arr = range_arr if range_arr else [random.randrange(0, len(maps) - 1, 1)]
    7 x8 h- V5 V3 q  A" K0 _; L            for i, i_str in enumerate(maps):: h+ \) n4 G6 y. j2 J
                    if i in range_arr:
    ! U! R; S2 @  Z4 W* v                    i_str = re.sub(r'<a[^>]+?href=\"sound\:.*\.mp3\".*</a>', '', i_str).strip()- U$ V' d6 @1 Q3 z
                        my_str = my_str + '<li>' + i_str + '</li>'
    + ?/ E& ~% f+ `            return self._css(my_str)( ~1 T( p0 {# {1 h1 K' {
            return ''3 q4 H# S0 A3 L

    $ G9 W, c; Z' O* ]    def _range_sentence_audio(self, range_arr=None):; L3 L; m: p2 d8 @9 R. s
            m = re.findall(r'<span class="example"\s*.*>\s*.*<\/span>', self.get_html())
    5 P4 H3 l1 Y4 |3 o1 `        if m:5 y9 k, Z& U: I7 ~9 Y' G. Z
                soup = parse_html(m[0])
    . M0 D7 U3 M) E7 X8 q) {            el_list = soup.findAll('span', {'class':'example'})
    0 ?4 \) z. a: m$ ?1 r( ~, C- d; _/ Z            if el_list:
    . [- b# X2 E6 J) D2 Z                maps = []
    , ^/ T0 o1 g( L8 y                for element in el_list:( s& n+ p- V2 Q, T3 |+ c0 }
                        i_str = ''
    + y5 W7 q, |! |" B/ ^                    for content in element.contents:# H- |  b/ z& u+ Z- B' d7 {
                            i_str = i_str + str(content)
      s: q$ [, R  l8 i9 I- x1 K                    sound = re.search(r'<a[^>]+?href=\"sound\:\/(.*?\.mp3)\".*</a>', i_str). G: G$ v5 `# D( i" x8 X
                        if sound:
    ( c# I( [' B4 o% \$ l- n                        maps.append([sound, i_str])% U' D% }1 Y$ @: k2 E
                my_str = '') ^) {3 k% I1 J" a4 o% c
                range_arr = range_arr if range_arr else [random.randrange(0, len(maps) - 1, 1)]- `$ V9 `. j  h! C) t
                for i, e in enumerate(maps):
    1 [. x$ x" c- a                if i in range_arr:4 O' S. _: u5 g  {2 ^- \; K3 z
                        i_str = e[1]
    / w5 f- G3 Q* K/ Q. w4 `, B                    sound = e[0]
    , u. [' r/ j* K/ B! H. J3 Y                    mp3 = self._fld_audio(sound.groups()[0])
    . A- W  b6 T# j" }                    i_str = re.sub(r'<a[^>]+?href=\"sound\:.*\.mp3\".*</a>', '', i_str).strip()/ g# c0 Q% |  u' v9 L
                        my_str = my_str + '<li>' + i_str + ' ' + mp3 + '</li>'2 t/ K# f5 ~" O" Y) U6 Z4 n
                return self._css(my_str)- A- K5 F& D9 a# b
            return ''% v. ?6 n( Z) {8 t0 G

    $ }; f0 Z5 W6 A. b! y0 b/ x5 w    @export([u'额外例句', u'Extra Examples'])9 b+ f. R! \& V$ Q; U8 F0 R( R
        def fld_extra_examples(self):
    ' Z$ }5 _8 i  `/ ~& d        lst = re.findall(r'href="/(@examples_.*?)\">.*?<', self.get_html())
    * x: }/ q0 v. n. S% }# t        if lst:, K$ F1 c  E& D0 x4 q& p& I" [
                str_content = u''/ i8 A" W7 J8 P. m
                for m in lst:
    % O- K, a# Z' E/ D: l$ U9 p; G                content = self.builder.mdx_lookup(m)8 E8 p! I! G! V! W# f  Z
                    if len(content) > 0:
    - ]; j8 s/ f. K- U3 h- r                    for c in content:& m8 n9 P# h+ ~/ [' ?
                            str_content += c.replace("\r\n","").replace("entry:/",""), I, c2 r2 B0 z7 W* V( `. }
                return self._css(str_content)
    9 C8 E6 t& |: I* W: S1 s, X        return ''    - b" S7 d1 ^8 t/ j4 I5 v# w

    , W; o6 }; W* [8 Y* g/ v- U    @with_styles(cssfile='_ldoce6.css')  @* ?* u. r2 N& G. r$ |) [  W
        def _css(self, val):) w2 s* L+ _  S6 T, H+ h
            return val7 p/ o: k9 u  C* w% [9 b1 d+ M
        ---------------------
    ) k; x+ z4 R, D
    ; q; z, }+ f$ i3 A0 V. h8 ?谢谢各位" z, ]9 s: K: V

    3 u+ O+ j/ i$ K% }) f
      n/ Y/ }' u5 c2 z
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 15:04:15 | 显示全部楼层
    本帖最后由 frand 于 2019-8-5 15:07 编辑
    & Q' ?6 ?# [& m& l. o3 F$ F2 c3 l0 U
    jiaqiangmit2 发表于 2019-8-5 14:126 N  b0 k3 f0 _1 o/ i9 N* ], C
    提供下你的qq邮箱吧,太大了这里传不了
    你是想把为ANKI词库中的例句这一栏位的mp3文件改名吗?
    8 p7 |! L9 U* b+ P9 B0 V2 r. eDon’t get upset. I was only teasing. [sound:mdx-ldoce6-c2c10f2b-95694d96-b8ce94c6-8b1ffc37-4cc61462.mp3]5 T; f& ~+ ^7 y! L1 r$ o% P

    , S: W4 ?) x5 p, a" nHe used to tease her mercilessly. [sound:mdx-ldoce6-334d38fd-e368d636-f172000c-d2e5ec9a-18e9aeee.mp3]9 x' F! ?1 T+ O, z! `$ W" `! w
    She used to tease me about my hair. [sound:mdx-ldoce6-a00e3bdd-ca148afb-4cd3fd3d-9395d31a-64e0d996.mp3]8 N: z: H" T) |% s7 A
    Stop teasing the cat! [sound:mdx-ldoce6-981ee5f3-c676372b-7de3ab98-aa4bee0d-812f59cd.mp3]
    - f' C8 v! b/ f9 h4 R/ AI finally managed to tease the truth out of her. [sound:mdx-ldoce6-185d0830-6aa160cf-8946fa47-eed2e253-ab219916.mp3]
      f* h4 I) U" F- z  V& w7 RShe combed her hair, gently teasing out the knots. [sound:mdx-ldoce6-d27ad8ad-4cffb13f-61005ce9-2a9a9c77-aaf61afc.mp3]$ Y+ h% O$ o" b4 x+ x+ l
    Don’t take any notice of Joe – he’s a big tease. [sound:mdx-ldoce6-461c2965-8cf65cc5-b940976d-84da3c42-8d0a45a5.mp3]
    % e$ o+ @9 G/ U+ S, ^I’m sorry, it was only a tease. [sound:mdx-ldoce6-f99bee54-64e083fe-f93770cc-56235b0a-7e4114fb.mp3]
    4 B. R! q! v6 N3 Q2 l) H4 U& _/ _4 [5 H) x
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 17:49:41 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 17:06( m& |0 V1 x  L: S; D# @$ y6 l
    字典脚本里目前是输出音频,如果能输出并重命名,就一步到位了。当然,可能这个要求高了。只有能改音频的 ...

    0 `* `6 V8 K0 K1 U8 g5 J链接: https://pan.baidu.com/s/1GF3vZ9K3pukMlw3qbeXBig 提取码: u47p
    6 j: {) X% m' y6 v; \, g$ S$ t+ J/ ?  N2 I
    根据你发的刘毅5000 anki文件,改名输出了例句的mp3文件
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 21:22:28 | 显示全部楼层
    frand 发表于 2019-8-5 19:45
    5 X# n; n, h2 k: {我删除了多余字段,然后导出来csv文件。再写java代码读取文件并同时改文件名。。。。 ...
    2 X( @. q) o" L* f3 N5 f
    十分感谢,估计网上流传的例句库也是这样来的。我是程序小白,java那段操作,能否传授?免得每次都来麻烦你。同时我也想把单词的读音也导出来跟例句排一起
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-4 18:47:20 | 显示全部楼层
    顶。其实我只是需要以单词拼写命名单词和例句,以变分类
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 09:05:26 | 显示全部楼层
    顶,求大神支招
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 10:05:33 | 显示全部楼层
    代码提取的过程中,根据单词拼写直接写文件名字不行吗?
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 14:02:18 | 显示全部楼层
    frand 发表于 2019-8-5 10:05
    8 q1 s2 i. W6 W* `. D0 c4 g代码提取的过程中,根据单词拼写直接写文件名字不行吗?

    0 c: c6 S! I/ ?, I# k* n0 ]不行。好像是anki自己生成的媒体文件都是以类似hash方式生成的。。
    . j, j. I+ X$ P都是这个样子:[sound:-ldoce6-b0ab2fba-11b6ffb4-d84db123-b00153f3-9971952a.mp3]
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 14:04:57 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 14:02% h3 O8 E% a8 a
    不行。好像是anki自己生成的媒体文件都是以类似hash方式生成的。。
    . R& F4 P& O! U! q都是这个样子:[sound:-ldoce6-b0ab2f ...
    + _+ |7 _" i9 O( ?5 ~
    把卡发给我试下
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 14:12:18 | 显示全部楼层
    frand 发表于 2019-8-5 14:04
    8 d$ w0 f5 X1 [5 Z$ k  N" K把卡发给我试下

    $ i; ?0 w! v' Q+ p提供下你的qq邮箱吧,太大了这里传不了
    : `3 l: z: {4 f5 H$ U$ v* _- Q- r2 D# D) x$ i7 B
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 14:19:22 | 显示全部楼层
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 15:17:30 | 显示全部楼层
    frand 发表于 2019-8-5 15:04
    8 x7 S; S; a5 `& `$ k) L& M你是想把为ANKI词库中的例句这一栏位的mp3文件改名吗?
    . C* Y' y) R# F6 n, X. \9 `" K5 u1 PDon’t get upset. I was only teasing. [sound:mdx ...

    7 A( E: f" i3 ^, D对,改成以upset 开头,或者mdx-ldoce6-upset-xxxx.这样就可以把相同单词的例句放一起。
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 15:30:45 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 15:173 ~6 {5 r3 j8 W& w6 h3 L* w4 c0 X
    对,改成以upset 开头,或者mdx-ldoce6-upset-xxxx.这样就可以把相同单词的例句放一起。 ...
    2 Y( D; \5 V% ]; V1 _
    所以,你只是想提取这个词库中的例句文件,并把这些文件重命名为  【单词本身】-【原始MP3名称】。+ L0 z5 I- _; I$ f/ [- q
    3 m; C0 S. z; s
    对吧?
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 15:34:49 | 显示全部楼层
    frand 发表于 2019-8-5 15:30" U9 E" y* v3 l0 F1 c
    所以,你只是想提取这个词库中的例句文件,并把这些文件重命名为  【单词本身】-【原始MP3名称】。! a# X+ u& m; C" {
    3 o* d2 W7 g3 j" {, n, @
    对吧 ...
    5 h0 {( H+ T6 [% H
    对,例句的音频,以便单独听。相同单词的例句都以单词开头,这样方便管理。
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 15:45:22 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 15:341 b3 `" q4 E( a7 [: Z+ M* {
    对,例句的音频,以便单独听。相同单词的例句都以单词开头,这样方便管理。 ...

    " r3 W8 }2 Q; m  m$ {: Z4 L! E通过ANKI桌面端,删除不需要的栏位,然后导出成txt文件。然后,写代码按行读取,读出本行第一个单词栏位,然后读出本行的多个MP3文件,再把MP3文件改名。
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 15:47:48 | 显示全部楼层
    frand 发表于 2019-8-5 15:45
    5 U, |4 G8 G6 U. U1 O2 x$ u3 J, `通过ANKI桌面端,删除不需要的栏位,然后导出成txt文件。然后,写代码按行读取,读出本行第一个单词栏位 ...

    " O, d' u, @" m& `7 Q. U0 n不会写代码啊。。。后面的都不会
    8 T- K( z7 _0 u& I, v5 W% w1 V
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 15:49:58 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 15:47! m' m) W; S5 d: S
    不会写代码啊。。。后面的都不会

    $ O( |5 l* Q1 I7 |你只有这一个anki文件需要处理,对吧?
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 16:01:05 | 显示全部楼层
    frand 发表于 2019-8-5 15:49! [4 L5 z4 h  R7 o
    你只有这一个anki文件需要处理,对吧?

    : j2 P- L2 Q; N1 ~我的anki用的是Ldcoe6的词典,这个词典有例句发音。anki一个deck差不多1000词。我希望每次能根据自己的deck里的单词表把这些例句抓出来听。对应字典的脚本发在我贴子第一楼。
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 16:39:58 | 显示全部楼层
    我还是不了解你要做什么。我以为只是把你发给我的词库中的MP3文件提取出来,并在更改文件名为单词+原始乱码文件名
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 16:49:55 | 显示全部楼层
    frand 发表于 2019-8-5 16:39/ E6 G! N! g9 j
    我还是不了解你要做什么。我以为只是把你发给我的词库中的MP3文件提取出来,并在更改文件名为单词+原始乱码 ...
    ; F& y( X# c- Y/ M: D1 y' n
    是这个意思
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 17:01:59 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 16:49. W+ Q4 ^( H" L! P. l  c
    是这个意思

    ! Y  l: y. g0 _但是这样和字典的脚本有什么关系吗?你的ANIK文件里已经包含的单词、例句的MP3文件呀。
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 17:06:35 | 显示全部楼层
    frand 发表于 2019-8-5 17:01
    ) w  W4 t; F, _- W1 [但是这样和字典的脚本有什么关系吗?你的ANIK文件里已经包含的单词、例句的MP3文件呀。 ...

    . H, K2 m0 F: [7 t字典脚本里目前是输出音频,如果能输出并重命名,就一步到位了。当然,可能这个要求高了。只有能改音频的名字就好
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 17:55:50 | 显示全部楼层
    frand 发表于 2019-8-5 17:49
    8 T# |# F- I, Q链接: https://pan.baidu.com/s/1GF3vZ9K3pukMlw3qbeXBig 提取码: u47p   w! T  y& B! V
    2 G% m9 O2 t7 O+ ?$ C; E
    根据你发的刘毅5000 anki文件, ...

    * Z& H; L. d" a! h; h) `谢谢,能告诉我怎么实现的吗?我会根据进度增加学习的deck
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 19:45:44 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 17:552 f. _9 ?2 R& T, d7 C' z! W' y
    谢谢,能告诉我怎么实现的吗?我会根据进度增加学习的deck
    : A8 j5 ]& S6 X
    我删除了多余字段,然后导出来csv文件。再写java代码读取文件并同时改文件名。。。。
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 21:33:16 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 21:22$ \) `9 `, H) a/ v/ \
    十分感谢,估计网上流传的例句库也是这样来的。我是程序小白,java那段操作,能否传授?免得每次都来麻烦 ...

    1 D& ?6 W+ L# V3 i5 C如果你不会JAVA,那应该没法用的。而且我这个代码写的也烂,不好拿出来的
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-4-27 20:34 , Processed in 0.068328 second(s), 10 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表