掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2940|回复: 37

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

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

    [LV.1]初来乍到

    发表于 2019-8-2 21:25:36 | 显示全部楼层 |阅读模式
    本帖最后由 jiaqiangmit2 于 2019-8-2 21:30 编辑 1 `! P8 V/ k5 X2 `: d! ?! _

    ) l, R  r. a* Z1 |各位大神; N% F) [/ {4 M3 v( B
    我在anki里已经实现提取LDOCE6真人朗读例句的制卡。现在希望能将音频文件单独放手机,睡觉和开车等时间听。问题来了:anki对媒体文件的命名是以类似于HAsh方式“乱码”命名的,从媒体文件夹里复制出来,所有的例句和单词的朗读时打乱的。能否实现:单词以其拼写命名(example.mp3),对应的几个例句音频以单词拼写加后缀的方式命名,这样,放在手机里,单词和对应例句就可以一起读了。
    & F( l# N! Q8 h# l" @
    # i1 E, w2 Y- x; h) @
    " j' X5 q' o/ w$ f( b& H# a1 Q: l如图,文件名是“l乱码”的
    ; U& F5 a3 Q; r. @( Q# X; ^  C( B无法上任附件,名字是这样的:
    : q' A( l& f8 f( o+ A7 |% ~ [sound:-ldoce6-b0ab2fba-11b6ffb4-d84db123-b00153f3-9971952a.mp3]7 a& ~9 N/ t- }0 Z5 b

    / ]% d! R0 X; H; U2 ~$ k0 R/ l  f5 y对应 脚本
    1 ?6 b5 I/ r8 Q3 Y+ F" N3 @5 @3 ^% f* g) E% ]8 B( ?; F
    ------------------------------5 {; S. D* N0 W' V

    9 `3 K5 |' j' _! l- E9 d
    9 m9 N, O7 c7 H, _7 s) p#-*- coding:utf-8 -*-
    4 {  W9 N1 {% M9 G7 ]' u* qimport os
    7 e! I: n+ C0 j7 ~import re# c: K* V7 T/ ]7 [7 ?
    import random! ], _6 L/ r1 a+ K
    from ..base import *
    8 s. h" w, U1 R/ W! a. Y" `: r- u$ a4 r

    / `9 A- t/ F) W& x9 F1 \1 M' P9 @VOICE_PATTERN = r'<a href="sound://([\w/]+\w*\.mp3)"><img src="img/spkr_%s.png"></a>'
    ( a( P5 W& i( N! ?. G1 }VOICE_PATTERN_WQ = r'<span class="%s"><a href="sound://([\w/]+\w*\.mp3)">(.*?)</span %s>'
    2 m" b0 s  \0 JMAPPINGS = [5 j+ j1 z  t+ P6 c- s% ]6 K
        ['br', [re.compile(VOICE_PATTERN % r'r'), re.compile(VOICE_PATTERN_WQ % (r'brevoice', r'brevoice'))]],8 I7 h4 y% I+ G! L8 c& f
        ['us', [re.compile(VOICE_PATTERN % r'b'), re.compile(VOICE_PATTERN_WQ % (r'amevoice', r'amevoice'))]]2 `3 }+ @0 x1 P7 @3 |, @3 }& Z
    ]0 _; L! e, r% I1 u( Y
    LANG_TO_REGEXPS = {lang: regexps for lang, regexps in MAPPINGS}& x& p7 A/ S/ `3 Y* y. I
    DICT_PATH =u'E:\Anki\Dick\L6mp3.mdx'
    % `0 m! Q, T' _3 [1 G8 H5 X. v4 P4 t1 n0 t5 m, o
    + y  N+ N2 `. k& j& C
    @register([u'本地词典-LDOCE6', u'MDX-LDOCE6'])0 p% `5 I3 R9 ?; P4 x
    class Ldoce6(MdxService):
    0 D' l0 ^* e% O" U2 o7 q
    9 c/ q3 H5 T# f3 o  t    def __init__(self):) ?7 V) m: F) }
            dict_path = DICT_PATH
    ( S2 z0 }, v: P  u1 b6 @% v& u5 z        # if DICT_PATH is a path, stop auto detect
    2 g& H  E# \: ]' E        if not dict_path:  }' ?( ]( \8 x$ @- ~" }1 i
                from ...service import service_manager, service_pool
    & F% H; Z$ W4 ^* ^            for clazz in service_manager.mdx_services:, r% C2 H2 P/ X
                    service = service_pool.get(clazz.__unique__)
      Y# ~( M6 u) O" n1 b                title = service.builder._title if service and service.support else u''/ f5 z1 |) x2 d1 o  v" O
                    service_pool.put(service)
    7 f4 y9 l% `8 p/ \0 Q+ z. A                if title.startswith(u'LDOCE6'):6 Q. Y/ U% W8 |0 ^- i' k
                        dict_path = service.dict_path; ^% e6 I6 h# P" r
                        break' b& \! W. M/ h/ l/ w
            super(Ldoce6, self).__init__(dict_path)( D+ K, o9 ]; `( v: T/ X
    % p# C4 i1 @9 d8 T$ w$ y* Z. e) _
        @property1 m5 E# S& ]0 x2 v- }
        def title(self):
    ( q: o6 f: f3 Y$ }  o8 h8 x- P        return getattr(self, '__register_label__', self.unique)
    9 o8 o7 W) \$ p7 L4 m9 Q0 l6 o& U) i- X( r% ^2 \
        @export('PHON')' E$ e7 Q! D( E4 C0 J
        def fld_phonetic(self):, f7 j! H1 V3 d' X
            html = self.get_html()
    5 d6 _- D$ c5 e2 B$ z        m = re.search(r'<span class="pron">(.*?)</span>', html)$ u' R! S+ h) v& G  N, ?
            if m:
    - c$ D, g0 s3 l3 p2 Q            return m.groups()[0]- E/ B5 M6 y5 g* x0 [0 l! ~3 N
            return ''! `* \+ y$ L9 K5 r  f' t  n

    ) g! |, U6 w" _7 v    def _fld_voice(self, html, voice):
    / _) X6 \! Z+ s2 e  t" c        """获取发音字段"""
    : N& L* @. e' o        for regexp in LANG_TO_REGEXPS[voice]:( _8 }4 C+ Y5 ^& \/ B! G2 G7 ~+ f
                match = regexp.search(html)
    * [0 \, ^* I1 Y7 l            if match:3 n$ R- ~% s. j
                    val = '/' + match.group(1)) }! J. d  G! U9 ~
                    name = get_hex_name('mdx-'+self.unique.lower(), val, 'mp3')
    1 y( U! u1 g" J; c' Z0 }& A                name = self.save_file(val, name)
    5 d1 @9 b: K; l                if name:
    7 k! v5 s' @# a0 T0 ^                    return self.get_anki_label(name, 'audio')
    : y8 g# G# r4 {7 o$ r% _7 d        return ''
    2 e0 Y( D9 y! A
    0 ]! K/ [$ x9 U" |    @export('BRE_PRON')# v! [' P! X- m1 F
        def fld_voicebre(self):+ s/ a! f' M5 s+ _0 h! L! W
            return self._fld_voice(self.get_html(), 'br')
    1 }6 C1 a& X2 C- B: ?2 M' }0 t% x
        @export('AME_PRON')
    + D* s2 I) _/ }) T' O8 W1 D    def fld_voiceame(self):" E$ x( a! ]7 g4 w- Y
            return self._fld_voice(self.get_html(), 'us')
    % c# H/ ^+ N1 n- K) W) r, Y! x! R% s6 K( w- H
        def _fld_image(self, img):# K8 u: i5 h7 D- t4 \/ v; ]0 q3 w
            val = '/' + img
    * q( t7 A0 [4 m9 {# \: F        # file extension isn't always jpg' R% o/ {' e1 y" @9 g3 D
            file_extension = os.path.splitext(img)[1][1:].strip().lower()
    0 r( Z; E  o. f2 j) H        name = get_hex_name('mdx-'+self.unique.lower(), val, file_extension)9 b# n, o5 T  W. k: K
            name = self.save_file(val, name)
    " l8 Z" E) m: {( i        if name:; U1 u7 o4 o" ]* o8 }  w1 R
                return self.get_anki_label(name, 'img')) f$ M, M- L# Y/ B) t6 R% h
            return ''0 a7 Q; ?6 O, O" Q; W3 P

      b0 P5 c) N1 z2 i5 h+ x9 G3 U    @export('IMAGE')& v) R. ?9 A; X! u/ {0 h* V
        def fld_image(self):- }. J& T( Q, f# p7 t
            html = self.get_html()
    ' h5 ^, h" |- _& E" d4 V- A" a        m = re.search(r'<span class="imgholder"><img src="(.*?)".*?></span>', html)  N2 U3 b- [5 i; @: Y0 C4 N3 ]
            if m:
      F& I! t; K2 `4 i/ d& X            return self._fld_image(m.groups()[0])
    8 v; {- l7 B2 S, e6 N' R        return ''
    # ]9 ]% D$ X8 ?1 p
    % V& |* T3 d/ m- n' q" A    @export('EXAMPLE')
    / u1 e7 @3 }# {    def fld_sentence(self):
      i5 u6 ~* j) [4 s% Y, y. Q        return self._range_sentence([i for i in range(0, 100)])- L. H1 I' I9 F2 b" j

    7 K7 |6 y& r7 N4 H. W' t% K    def _fld_audio(self, audio):
    + |/ w6 S1 T/ ~* L        name = get_hex_name('mdx-'+self.unique.lower(), audio, 'mp3')
    . D. n- H! \' w' H& ?        name = self.save_file(audio, name)% U' g0 s" _1 B6 w. Q
            if name:
    / `( P. u4 `: H: }+ A$ {            return self.get_anki_label(name, 'audio')! o3 Z1 B% S( e( o+ f; X; L
            return ''
    % A5 c9 O9 @* w; r4 M8 ?, ]
    . ]8 F% ~5 x" s# C4 T$ B    @export([u'例句加音频', u'Examples with audios'])
    - z  E2 b; C. R9 E, c/ \    def fld_sentence_audio(self):
    2 x8 o+ W2 J* L9 ~# t& w  w  d        return self._range_sentence_audio([i for i in range(0, 100)])# h$ Z( m$ ?$ S  d( w) q3 u
    + M- k3 |/ c) z
        @export('DEF')
      H- w/ e# o& ^7 ]8 a    def fld_definate(self):
    2 f0 H& c. I3 ~5 m: n- x        m = m = re.findall(r'<span class="def"\s*.*>\s*.*<\/span>', self.get_html())1 l& e* G1 w3 h: {" X5 ^# Y$ Y
            if m:
    . w5 k" _1 z  V            soup = parse_html(m[0])$ ~, o, u; W) ]" `+ w7 e& M/ w7 @
                el_list = soup.findAll('span', {'class':'def'})
    - [7 h9 X1 ~9 y: F  D% J$ K2 w            if el_list:
    * i" b7 I* u5 [! q: M- `& @                maps = [u''.join(str(content) for content in element.contents)
    , u3 V% V- Q* D' {5 \, o                                    for element in el_list]
    2 M4 ^+ y7 R" A% p0 t. w            my_str = ''8 }" ~" ~4 Z. M$ `9 Y( o4 t: `& x$ p
                for i_str in maps:1 o$ F; |7 _( t( x* Z
                    my_str = my_str + '<li>' + i_str + '</li>'1 d8 O4 T9 K, }0 m
                return self._css(my_str)
    # h5 Q. `5 }0 s        return '': L# a' u4 w; F- j5 B$ B" d6 I3 P
    % n& V; Y6 W& v' @' a+ e$ `
        @export([u'随机例句', u'Random example'])
    $ u5 l4 B" i$ _+ c+ c0 ^1 m) D    def fld_random_sentence(self):( x* H" {1 Z! ?9 B  t/ S
            return self._range_sentence()+ \4 q" S" ]$ K3 D8 D, J
    8 b8 Y2 ^  h; Y8 V' f) M+ z  T* C, a
        @export([u'首2个例句', u'First 2 examples'])# V( u. K: g+ ?) d9 G( I3 N( Q
        def fld_first2_sentence(self):
    1 c0 J4 w, Y. a) I( ^- S9 u! G: A4 X        return self._range_sentence([0, 1])4 O' Z5 y. S# z
       
    ; G: \0 O& n0 `  I" |8 s    @export([u'随机例句加音频', u'Random example with audio'])
    4 j/ H, s* \! v+ k4 C0 I    def fld_random_sentence_audio(self):- Z+ _4 G0 U4 o: h2 a
            return self._range_sentence_audio()
    1 U& n' x- K" r# Z+ k+ F6 N) p) K0 R0 N% y- d1 A' _; \4 h& U6 |
        @export([u'首2个例句加音频', u'First 2 examples with audios'])+ c; s! D5 `& ?0 [5 w" I2 N
        def fld_first2_sentence_audio(self):2 m, ]  H" D$ g+ [8 U
            return self._range_sentence_audio([0, 1])6 p, E. H, p5 V7 y
    " o' E1 g$ U  o, X3 Y
        def _range_sentence(self, range_arr=None):
    & V+ v5 y( V- W( I: m" I& g        m = re.findall(r'<span class="example"\s*.*>\s*.*<\/span>', self.get_html())
    0 J, ^4 P- D0 P0 z7 a6 N2 H$ Q        if m:; {1 w! N* [. @
                soup = parse_html(m[0])' t8 D( S0 U1 u  b4 @" w2 C
                el_list = soup.findAll('span', {'class':'example'})& N/ G9 K- ^. W' W. u. U
                if el_list:
    3 F  [( I0 J" c% X* r0 D+ m  s! t                maps = [u''.join(str(content) for content in element.contents)
    0 K+ C; j, V! B                                    for element in el_list]2 U. B. h) {# |+ h2 L
                my_str = ''
    9 E( j# S* p. v  X: P4 G2 O            range_arr = range_arr if range_arr else [random.randrange(0, len(maps) - 1, 1)]) g! j' f. Z9 G; O) h! u
                for i, i_str in enumerate(maps):
    , ^* v9 M4 N4 [. K2 O% L                if i in range_arr:, p& A% v* R% D9 H0 {+ s
                        i_str = re.sub(r'<a[^>]+?href=\"sound\:.*\.mp3\".*</a>', '', i_str).strip()2 ]5 A1 C- ~0 p
                        my_str = my_str + '<li>' + i_str + '</li>'2 g  S& w8 Q9 l) A
                return self._css(my_str)5 |$ {/ A$ t4 r
            return ''% F5 M; E$ x6 b  {! Z) [2 ^8 j
    $ @# B, i: k0 H) K
        def _range_sentence_audio(self, range_arr=None):
    / ^; m% S% k- J$ d4 q        m = re.findall(r'<span class="example"\s*.*>\s*.*<\/span>', self.get_html())
    6 y3 J) y7 w4 P* q/ E* q        if m:
    3 D, j  _, c) @( R; B            soup = parse_html(m[0])
      z! S! y. ]' Q; w7 j- ~! A            el_list = soup.findAll('span', {'class':'example'})- z3 V- J3 q8 g1 e/ _
                if el_list:4 h$ l! c- B/ M
                    maps = []
    * {& h# C  X# }) b+ G; I                for element in el_list:% q: n- {8 e4 S, u& |  g0 N  P
                        i_str = ''
    : W% ?" U: ~" W/ M                    for content in element.contents:
    % q% e- w- t+ J7 u# z% g, H                        i_str = i_str + str(content)7 h  ]) o, j$ b; C
                        sound = re.search(r'<a[^>]+?href=\"sound\:\/(.*?\.mp3)\".*</a>', i_str)8 ^4 I) y8 E1 h1 [5 b( K) G
                        if sound:
    ( _( o- Q1 f! a                        maps.append([sound, i_str])# ^/ N. k8 X8 s) m# N; X# F, R
                my_str = ''8 d  z( o+ B% w
                range_arr = range_arr if range_arr else [random.randrange(0, len(maps) - 1, 1)]
      W1 w+ Y% @. b7 [  O            for i, e in enumerate(maps):
    + I" O4 ]( W8 T4 y                if i in range_arr:9 O/ e2 ?' {# m8 H. x1 ^+ z
                        i_str = e[1]
    , l3 F* ^8 a; o1 h. v6 `! Q                    sound = e[0]
    5 N3 h2 D7 }1 G6 B6 s5 i0 \                    mp3 = self._fld_audio(sound.groups()[0])
    , M. n( _3 c" h6 q5 n" \, C4 h- s                    i_str = re.sub(r'<a[^>]+?href=\"sound\:.*\.mp3\".*</a>', '', i_str).strip()8 k5 F$ T' V  }# s6 P
                        my_str = my_str + '<li>' + i_str + ' ' + mp3 + '</li>'
    , [: _! K7 U: @7 `% s- x            return self._css(my_str)* h' {! f  R( ?  \
            return ''
    % M( Q8 I/ ?$ J% X+ n
    6 B+ [* s) a" X0 k6 ^3 m( o4 U( _% N    @export([u'额外例句', u'Extra Examples'])
    - i/ W# F/ w" d# s& A8 w    def fld_extra_examples(self):, ?. D# W' a7 `- M& T
            lst = re.findall(r'href="/(@examples_.*?)\">.*?<', self.get_html())
    : Z8 @0 h- T' X5 |' w        if lst:
    1 V$ K1 l/ G) r. `( T. Y            str_content = u''% r: M/ ^4 g) T8 ?. V) i/ q
                for m in lst:
    . X  B+ j; J! Z" y# v+ q                content = self.builder.mdx_lookup(m): l: t9 L; d) {7 c# G8 O- E& d
                    if len(content) > 0:: [4 R) }( U3 j" I5 ~8 W6 j
                        for c in content:
    8 m) f6 H8 K- N* Q                        str_content += c.replace("\r\n","").replace("entry:/","")
    % V1 @' \) z" ?+ X            return self._css(str_content)
    : c) p, L; n- L        return ''    3 W* H8 a6 q: s5 ~  V
    1 a/ u/ p9 U2 ^7 n$ c' w
        @with_styles(cssfile='_ldoce6.css')
    6 x2 Q; l- \" j8 a    def _css(self, val):6 t! z  n$ {# w$ a3 Q1 I
            return val
    " W6 {0 i3 k0 n. M! ~% M2 Q    ---------------------
    7 q* ~9 z( x. V7 Z3 `$ E) M( D& j! B- q5 E$ t- f
    谢谢各位4 ?- f7 a9 z  ^3 q$ X* ^

    & }. z7 V+ r! I, H6 Z# S3 Y
    1 V9 @; K5 h% v9 f
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 15:04:15 | 显示全部楼层
    本帖最后由 frand 于 2019-8-5 15:07 编辑
    $ g; F3 u0 e: N& _
    jiaqiangmit2 发表于 2019-8-5 14:12
    7 a" n, ?4 g% l; E2 E提供下你的qq邮箱吧,太大了这里传不了
    你是想把为ANKI词库中的例句这一栏位的mp3文件改名吗?
    2 l3 H3 `/ M: d4 J0 o  ZDon’t get upset. I was only teasing. [sound:mdx-ldoce6-c2c10f2b-95694d96-b8ce94c6-8b1ffc37-4cc61462.mp3]9 C, w: r1 O* y% |
    4 f; W7 u5 [3 `" {( A
    He used to tease her mercilessly. [sound:mdx-ldoce6-334d38fd-e368d636-f172000c-d2e5ec9a-18e9aeee.mp3]
    + \# L2 D( [) N& l6 D+ |9 RShe used to tease me about my hair. [sound:mdx-ldoce6-a00e3bdd-ca148afb-4cd3fd3d-9395d31a-64e0d996.mp3]4 N0 f' f7 J' d" A1 g: b! g2 m/ }
    Stop teasing the cat! [sound:mdx-ldoce6-981ee5f3-c676372b-7de3ab98-aa4bee0d-812f59cd.mp3]3 A$ U9 A, D/ }: F" i& s: n; n: j: z
    I finally managed to tease the truth out of her. [sound:mdx-ldoce6-185d0830-6aa160cf-8946fa47-eed2e253-ab219916.mp3]
    ' c5 l: K7 }- G, `. }2 X9 RShe combed her hair, gently teasing out the knots. [sound:mdx-ldoce6-d27ad8ad-4cffb13f-61005ce9-2a9a9c77-aaf61afc.mp3]
    6 ?# Z" [, v* cDon’t take any notice of Joe – he’s a big tease. [sound:mdx-ldoce6-461c2965-8cf65cc5-b940976d-84da3c42-8d0a45a5.mp3]
    ; }; d$ z. a+ _& x: N6 gI’m sorry, it was only a tease. [sound:mdx-ldoce6-f99bee54-64e083fe-f93770cc-56235b0a-7e4114fb.mp3]' f0 s- O5 f# J

    ! d1 O8 q+ i1 a; W1 `' q
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 17:49:41 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 17:06' }+ Z& q" M$ P% B1 V( U% ]
    字典脚本里目前是输出音频,如果能输出并重命名,就一步到位了。当然,可能这个要求高了。只有能改音频的 ...
    0 a" S7 E5 u$ f2 m
    链接: https://pan.baidu.com/s/1GF3vZ9K3pukMlw3qbeXBig 提取码: u47p
      l) G5 F1 R# s- z" W( z
    3 ]- R+ v4 e, x- v- g; t- q8 W" M根据你发的刘毅5000 anki文件,改名输出了例句的mp3文件
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 21:22:28 | 显示全部楼层
    frand 发表于 2019-8-5 19:45
    4 B5 J6 q/ }) D2 J6 y我删除了多余字段,然后导出来csv文件。再写java代码读取文件并同时改文件名。。。。 ...

    % U: s. z: [/ g$ i6 @十分感谢,估计网上流传的例句库也是这样来的。我是程序小白,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- |" T- d+ \. C  T
    代码提取的过程中,根据单词拼写直接写文件名字不行吗?
    # p3 V% i$ R4 s) X7 X
    不行。好像是anki自己生成的媒体文件都是以类似hash方式生成的。。) E' k% y& G5 N% E* `
    都是这个样子:[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
    " @2 z, S3 `8 k$ P0 y; J不行。好像是anki自己生成的媒体文件都是以类似hash方式生成的。。
    . H( f6 M6 S7 U; l$ S都是这个样子:[sound:-ldoce6-b0ab2f ...

    3 j% \  N0 N/ N把卡发给我试下
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 14:12:18 | 显示全部楼层
    frand 发表于 2019-8-5 14:04" s1 X7 m) Y# u6 O( O
    把卡发给我试下
    5 ~3 ~, x5 x, M! F8 b
    提供下你的qq邮箱吧,太大了这里传不了# w* E, s' N' e$ `- F
    : Z" z$ {7 x+ h
  • 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:042 s# Y" I% B5 f4 T
    你是想把为ANKI词库中的例句这一栏位的mp3文件改名吗?# H( a& a- m2 D. [5 Z9 A
    Don’t get upset. I was only teasing. [sound:mdx ...
    # e; @* F$ @( O: \, m2 Y* F7 L
    对,改成以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:17" B# D# |+ k8 D3 ~- D9 k
    对,改成以upset 开头,或者mdx-ldoce6-upset-xxxx.这样就可以把相同单词的例句放一起。 ...

    9 d. V6 V1 G1 {所以,你只是想提取这个词库中的例句文件,并把这些文件重命名为  【单词本身】-【原始MP3名称】。
    5 g: d4 j( R# @) _+ z1 U" R4 V- `4 \0 L& K
    对吧?
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 15:34:49 | 显示全部楼层
    frand 发表于 2019-8-5 15:30: N5 N! I# ~. `
    所以,你只是想提取这个词库中的例句文件,并把这些文件重命名为  【单词本身】-【原始MP3名称】。. ^' ~& }2 @6 y0 c' p3 r
    6 M' G) |! F* L8 o' p, P
    对吧 ...

    ( [2 }+ J* N1 S5 H$ j9 x4 H( y对,例句的音频,以便单独听。相同单词的例句都以单词开头,这样方便管理。
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 15:45:22 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 15:34
    / n$ M! V+ q$ D2 m) Y对,例句的音频,以便单独听。相同单词的例句都以单词开头,这样方便管理。 ...

    . l: y: J$ z% H7 t$ N8 o2 ]" 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:458 b2 W+ _9 N# T, _
    通过ANKI桌面端,删除不需要的栏位,然后导出成txt文件。然后,写代码按行读取,读出本行第一个单词栏位 ...

    % L/ h* W& a( B6 L+ E# ^9 F. [5 r不会写代码啊。。。后面的都不会
    7 s+ h0 V! E( a3 @
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 15:49:58 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 15:47* i: N+ O1 }4 y6 C
    不会写代码啊。。。后面的都不会
    ! [- H/ f0 z3 ~$ u+ N
    你只有这一个anki文件需要处理,对吧?
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 16:01:05 | 显示全部楼层
    frand 发表于 2019-8-5 15:49" b6 s: J' C8 _: v& m6 g
    你只有这一个anki文件需要处理,对吧?

    ) O/ }/ E% Z1 @! {8 l* G/ c8 J, t我的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
    / e9 v8 \7 R, C" F' W我还是不了解你要做什么。我以为只是把你发给我的词库中的MP3文件提取出来,并在更改文件名为单词+原始乱码 ...

    6 T( m" x& c" m& v6 h' F是这个意思
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 17:01:59 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 16:49
    % h& X6 S0 h% \! u6 g是这个意思
    4 t3 {8 f5 z- G+ w- r
    但是这样和字典的脚本有什么关系吗?你的ANIK文件里已经包含的单词、例句的MP3文件呀。
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 17:06:35 | 显示全部楼层
    frand 发表于 2019-8-5 17:01
    : Y0 J6 n. A$ E! k) a1 r7 E+ L但是这样和字典的脚本有什么关系吗?你的ANIK文件里已经包含的单词、例句的MP3文件呀。 ...

      e* f8 K# @4 T% \" d. f7 C字典脚本里目前是输出音频,如果能输出并重命名,就一步到位了。当然,可能这个要求高了。只有能改音频的名字就好
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 17:55:50 | 显示全部楼层
    frand 发表于 2019-8-5 17:49
    / q9 Z( e+ l; X- |/ Z& }1 l) D% @链接: https://pan.baidu.com/s/1GF3vZ9K3pukMlw3qbeXBig 提取码: u47p . f! Y7 E& U3 J" N

    , ?* e4 P2 z  S* v' \1 [根据你发的刘毅5000 anki文件, ...

    8 y3 g# f9 N( ]( U  T0 d谢谢,能告诉我怎么实现的吗?我会根据进度增加学习的deck
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 19:45:44 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 17:55
      c, a# ?0 \' I1 E2 [谢谢,能告诉我怎么实现的吗?我会根据进度增加学习的deck

    * }  [) G" @$ g( }2 C9 b$ n我删除了多余字段,然后导出来csv文件。再写java代码读取文件并同时改文件名。。。。
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 21:33:16 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 21:22
    1 P( [: f2 z0 u十分感谢,估计网上流传的例句库也是这样来的。我是程序小白,java那段操作,能否传授?免得每次都来麻烦 ...

    6 C6 i# ]/ P2 y如果你不会JAVA,那应该没法用的。而且我这个代码写的也烂,不好拿出来的
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-6-9 14:05 , Processed in 0.076145 second(s), 11 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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