掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 3685|回复: 37

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

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

    [LV.1]初来乍到

    发表于 2019-8-2 21:25:36 | 显示全部楼层 |阅读模式
    本帖最后由 jiaqiangmit2 于 2019-8-2 21:30 编辑
    2 M1 r9 \3 U+ {1 F$ Y5 P/ k7 I
    4 E, K' P3 d9 f各位大神
    ) x( m* V. E, p) F5 ~我在anki里已经实现提取LDOCE6真人朗读例句的制卡。现在希望能将音频文件单独放手机,睡觉和开车等时间听。问题来了:anki对媒体文件的命名是以类似于HAsh方式“乱码”命名的,从媒体文件夹里复制出来,所有的例句和单词的朗读时打乱的。能否实现:单词以其拼写命名(example.mp3),对应的几个例句音频以单词拼写加后缀的方式命名,这样,放在手机里,单词和对应例句就可以一起读了。. l7 Q3 X+ x5 H
    % h1 P( v) z) h* j, F' B

    * V. A; K, n. @+ s. Z6 h如图,文件名是“l乱码”的# A. c$ U9 u4 c! Q8 ^" q% f3 h
    无法上任附件,名字是这样的:# Z. q& R3 h  t8 ^/ q, o" _
    [sound:-ldoce6-b0ab2fba-11b6ffb4-d84db123-b00153f3-9971952a.mp3]
    ) R9 _* j& s" x' C( J; ]
    - _) [( T; v) ~( u$ Z: I6 X0 `对应 脚本 ( I" b- w7 A* I1 |* `5 D% E

    0 H( h( J# o" s9 @' v6 k( p/ S. _------------------------------3 A% \- g: Q8 q$ ?
    3 X/ R5 N- [4 p, o

    + B( L! ]" B# r: w+ @7 a#-*- coding:utf-8 -*-+ k5 {: m! g5 G$ q/ R/ Z
    import os
    7 |5 K1 u( H2 z7 Nimport re
    # v4 N8 h7 b9 ~* I6 Q; [! dimport random3 |& g' W2 G% F) }
    from ..base import *8 ~2 y+ u! X5 D4 y( r

    # O2 U8 R, Z  E! c0 C6 S9 j+ \: |! ~) h
    VOICE_PATTERN = r'<a href="sound://([\w/]+\w*\.mp3)"><img src="img/spkr_%s.png"></a>', B5 V; |3 B0 J; {  ~# w! A1 a
    VOICE_PATTERN_WQ = r'<span class="%s"><a href="sound://([\w/]+\w*\.mp3)">(.*?)</span %s>'3 n8 Q3 c$ u3 G: @6 b$ I# B0 b! [
    MAPPINGS = [! i) s( _, r+ \% W# j+ w2 G
        ['br', [re.compile(VOICE_PATTERN % r'r'), re.compile(VOICE_PATTERN_WQ % (r'brevoice', r'brevoice'))]],3 o3 v) z) h; G; i& r$ {
        ['us', [re.compile(VOICE_PATTERN % r'b'), re.compile(VOICE_PATTERN_WQ % (r'amevoice', r'amevoice'))]]
    5 ^& S+ ]0 H9 I. m3 y+ r]
    ' u# X9 H; I+ B. y5 n, G- KLANG_TO_REGEXPS = {lang: regexps for lang, regexps in MAPPINGS}
    7 [- A! X, F- o2 S* UDICT_PATH =u'E:\Anki\Dick\L6mp3.mdx'
    ; ^5 {$ ~# \; D4 v! z' D  }/ b5 _: Z6 A. X( r6 \5 B& q9 a" T$ _% P

    " S, q1 t+ l, ]  V@register([u'本地词典-LDOCE6', u'MDX-LDOCE6'])' M( i3 q& f2 C4 M
    class Ldoce6(MdxService):
    * U! a0 C0 k  k6 s. y+ {  L4 \- e9 ]
        def __init__(self):5 u' e: n* S6 w0 F$ G# Y
            dict_path = DICT_PATH1 C9 A: ?' @! g& o- K' C# ^6 X' t
            # if DICT_PATH is a path, stop auto detect6 A1 I/ _5 N) H7 _+ {
            if not dict_path:
    1 ?  q2 G% N) M( W4 C) X! e            from ...service import service_manager, service_pool
    6 E$ g. t6 b3 b) }( [4 M3 ~            for clazz in service_manager.mdx_services:
    ) U! o6 g7 K: B% G0 k. W$ Y( D) D                service = service_pool.get(clazz.__unique__): o  m+ p9 F5 ~% d
                    title = service.builder._title if service and service.support else u''
    % H( Q6 J: B$ B  H3 F! ?                service_pool.put(service)+ Y+ Y7 x/ F. J5 O  ~9 \
                    if title.startswith(u'LDOCE6'):, Y& e9 @+ ]) r8 y) i, z! T9 q
                        dict_path = service.dict_path* F! b/ f$ B7 F7 m7 W! r# s
                        break; Z$ H- s; I3 v$ ^) `+ a8 g: L: E) j
            super(Ldoce6, self).__init__(dict_path)
    + I: R; Y* M' e: W# r
    + n' F: B" O+ V- c0 |    @property! s, r' L7 G- r1 P6 u6 A
        def title(self):
    ( N; |0 T8 Z% u) n6 w; d        return getattr(self, '__register_label__', self.unique). X) M: c# S7 {! }2 k* I4 o

    ) s7 Q! T) M( [1 n: I: a    @export('PHON')
    , @! h: x- e4 a% i! S    def fld_phonetic(self):* |# l; ]) i! v# V
            html = self.get_html()
    5 ^) s0 ~, N1 c) d$ x+ I* z        m = re.search(r'<span class="pron">(.*?)</span>', html)6 o& |% \# f  B8 x% ?& h
            if m:
    / J4 @( Q7 A( ^            return m.groups()[0]
    2 h1 s0 g1 v8 _        return '') U  B: c3 M* {" X, n5 k' B! {7 U2 h

    : M" T# u" B' C% c- P    def _fld_voice(self, html, voice):" {5 I% Q! Z, ]& g' J
            """获取发音字段"""1 E) @0 Q& e5 N/ `4 U+ `
            for regexp in LANG_TO_REGEXPS[voice]:: Z1 H" b0 O  D1 Q8 V# H
                match = regexp.search(html)* u' x5 u* e! X5 E
                if match:
    $ C( l  W; H- `                val = '/' + match.group(1)5 e) t5 @* t( \
                    name = get_hex_name('mdx-'+self.unique.lower(), val, 'mp3')
    ' d3 `" R6 B9 U2 J2 b- i                name = self.save_file(val, name)6 Q8 I7 t4 Q0 G/ n
                    if name:4 q0 d3 _0 }# ~2 q- b
                        return self.get_anki_label(name, 'audio'). `: Y3 N6 _7 a9 j
            return ''% k0 q) g4 u* _, D
    - O# m* r6 `3 K- @. d
        @export('BRE_PRON')
    , C2 Q1 [; ^6 [1 d1 n0 b/ z    def fld_voicebre(self):; L" Z; g6 c7 j% v6 M. q2 C
            return self._fld_voice(self.get_html(), 'br')
    / ]3 r) v+ Q1 L- k9 }% q# \3 l& `- u9 ^  r4 v1 b5 W
        @export('AME_PRON')
    3 `% w, ?) p% v- V    def fld_voiceame(self):' g4 H: H  p. z6 u/ _2 [
            return self._fld_voice(self.get_html(), 'us')
    2 _5 d' d9 w' O4 e0 |
    5 }- y' t* j" H, [8 [5 P! D    def _fld_image(self, img):
    5 F% Q7 C) X+ Q/ c        val = '/' + img6 [3 Y5 p3 m3 _* U. K
            # file extension isn't always jpg+ \9 o+ m: Z- d9 S0 x. Q, x7 v
            file_extension = os.path.splitext(img)[1][1:].strip().lower()
    7 k2 h8 A6 k+ G( H# h0 Y        name = get_hex_name('mdx-'+self.unique.lower(), val, file_extension)
    , h$ N* ~" J& [! N  V* f        name = self.save_file(val, name)( T* |" {7 @% a& I) n
            if name:
    2 }. j3 E  z( W4 s6 b            return self.get_anki_label(name, 'img')
    + m( M" d) H+ P1 i4 Q! J        return ''
    1 r; {' V4 t8 F( }6 x1 f+ ]% A! Z; i% M5 l4 @
        @export('IMAGE')
    7 V& M( Z, u2 n+ c; J- a    def fld_image(self):1 B% S$ p* ?! y# [
            html = self.get_html()
    ( b" h: x) J' T8 S8 Q. m6 x        m = re.search(r'<span class="imgholder"><img src="(.*?)".*?></span>', html)
    $ s; ]: j( |! m5 m( @        if m:
    2 T5 ]6 {$ k7 u6 `            return self._fld_image(m.groups()[0]), S% D2 z, P; f2 ~6 r7 p$ g7 M
            return ''
    - H8 O& W/ v/ @
    % U+ {0 g& W: }- d$ y* r" b: q    @export('EXAMPLE')" Z. l* ?* w" u% |* d+ X9 T
        def fld_sentence(self):1 _( ?! ^( X" |
            return self._range_sentence([i for i in range(0, 100)])+ {' a' R. k% m: ^1 `) d

    ! W* q7 `$ `1 n0 U6 W    def _fld_audio(self, audio):2 {5 b3 x1 |/ Z8 d
            name = get_hex_name('mdx-'+self.unique.lower(), audio, 'mp3')! i! D  x; B; q8 G
            name = self.save_file(audio, name)' c( s) E& ]  o. m
            if name:
    ) x: b- O) Q% h! R            return self.get_anki_label(name, 'audio')3 q0 Z% m2 j9 K; W: v. o
            return ''
    8 s% F5 p; `7 L6 l  {) W- I" p9 r% e
        @export([u'例句加音频', u'Examples with audios'])1 y! M, e3 X* R) g" F2 |
        def fld_sentence_audio(self):2 D+ Y# c' z$ Q% m/ k1 _3 ?
            return self._range_sentence_audio([i for i in range(0, 100)])! F; b* m) g- F+ [3 n( l# }4 S/ Y+ X7 |
    # ?# n% Z. M8 e# |, K
        @export('DEF')6 s& H8 W# e3 b. S8 v$ r# c
        def fld_definate(self):
    9 P  B5 K% e6 s& x        m = m = re.findall(r'<span class="def"\s*.*>\s*.*<\/span>', self.get_html())
    $ a) ]- }! w+ I2 \        if m:
    * M: U1 e8 v. T, n1 Q3 I# h+ O1 ]            soup = parse_html(m[0])3 G. d/ s5 \* W/ Q, ]! l. B- f
                el_list = soup.findAll('span', {'class':'def'})
    " B! ^9 O3 X; x4 g- M0 ]- b            if el_list:
    " a1 w5 h8 I2 c* g" K                maps = [u''.join(str(content) for content in element.contents) 8 T' S) ^1 m4 p1 c6 ]: @
                                        for element in el_list]/ U! q5 U1 Z3 l7 |8 Y
                my_str = ''( t+ F4 W6 T. D7 N& g
                for i_str in maps:' ~( z' d7 S+ a2 T; b3 n
                    my_str = my_str + '<li>' + i_str + '</li>'
    5 C6 E3 Q; _  j7 A7 v            return self._css(my_str)
    7 s8 ^: O- ]" O) l        return ''
    # z6 H  {# z2 q; u0 l5 G4 _: ~3 Z* F, |; Q* ]2 R5 z
        @export([u'随机例句', u'Random example'])
    # ]- [2 v% S1 R' m$ C    def fld_random_sentence(self):
    # `  T3 n9 C0 T        return self._range_sentence()
    8 P: c! X, ?+ b+ N3 A. t7 I' s* @+ `2 J8 G* G8 ]
        @export([u'首2个例句', u'First 2 examples'])$ U) {7 h/ Y. ^$ u, Y! L6 K
        def fld_first2_sentence(self):
    : F. o9 Z0 W, w4 m. Y1 p# ~        return self._range_sentence([0, 1])8 P2 K8 O- j: ?9 [8 I" ^
        : y8 w% ?# \! V
        @export([u'随机例句加音频', u'Random example with audio'])
    8 h  V7 Z5 d' X/ }' F; |1 `* A    def fld_random_sentence_audio(self):
    3 ]$ ]! H/ l* J0 ?$ @        return self._range_sentence_audio()
    - }# _1 [1 I& Q# t
    ; S; K4 d1 D9 a; ]    @export([u'首2个例句加音频', u'First 2 examples with audios'])
    & }! w* r# j2 o7 F: p& p    def fld_first2_sentence_audio(self):
    0 Q+ @* u' _5 `' B        return self._range_sentence_audio([0, 1])! p8 i; b) O5 k, N4 `/ E

    ( v6 P0 W( o& k) i2 K    def _range_sentence(self, range_arr=None):8 e- @, }& R/ {( r, Q( D  G
            m = re.findall(r'<span class="example"\s*.*>\s*.*<\/span>', self.get_html())8 m' M) |6 P, O) N1 O  v, ^
            if m:
    / O; C! U" l" H$ S- i5 \            soup = parse_html(m[0])
    + d# M6 b  G1 \9 d$ D2 W            el_list = soup.findAll('span', {'class':'example'})$ j5 W1 W; d( t6 r
                if el_list:
    + M0 U4 y6 G: }3 f8 c& b                maps = [u''.join(str(content) for content in element.contents)
    5 J+ a: j" B" C3 Z: {! O                                    for element in el_list]
    1 t, h" }5 ]& y1 y+ L% \# G            my_str = ''! N9 Y+ x0 x4 c! i; z) K( o
                range_arr = range_arr if range_arr else [random.randrange(0, len(maps) - 1, 1)]
    3 c4 @( u9 A' L4 m# s( R            for i, i_str in enumerate(maps):
    9 o, r5 q9 B0 s3 r$ V# V                if i in range_arr:
    4 _# P4 D! v) N8 L; P, C# c                    i_str = re.sub(r'<a[^>]+?href=\"sound\:.*\.mp3\".*</a>', '', i_str).strip()
    9 K" @. H( F$ ~& H                    my_str = my_str + '<li>' + i_str + '</li>'8 v) c$ V- J$ J4 ]$ ?# Q
                return self._css(my_str)
    # A" L. T' I3 X/ J# P- }  m        return ''
    4 V( M% I4 m- C. L' w/ E) w3 `- P$ w& Y7 r+ N$ z7 b
        def _range_sentence_audio(self, range_arr=None):
    " }% V+ _- A$ C; z" U2 F; K0 z% K        m = re.findall(r'<span class="example"\s*.*>\s*.*<\/span>', self.get_html())
    9 L9 [' H6 ^5 ]4 N8 b9 A% j0 B# m        if m:/ ?, P  x: I" f# d7 I) j9 J' Q
                soup = parse_html(m[0])3 q- m# @5 l  U/ T- J' m' {
                el_list = soup.findAll('span', {'class':'example'})/ j9 X( g* \4 y. J
                if el_list:
    ( O" `5 O) l7 }) c6 v                maps = []
    3 A6 Z% |& ~9 w% g* d/ r2 p, M                for element in el_list:
    ! ]5 W$ o: F! R$ k7 X0 M                    i_str = ''; q- x+ V! I* o
                        for content in element.contents:
    8 i) }3 K$ I# u  m* u: z                        i_str = i_str + str(content)2 `' R$ O/ B0 G- \0 m( c
                        sound = re.search(r'<a[^>]+?href=\"sound\:\/(.*?\.mp3)\".*</a>', i_str)6 S' H" u# |1 I* x
                        if sound:
    8 n; O8 g& O) g, O" i; X                        maps.append([sound, i_str])
    " [) L) v( q+ X& Y* }            my_str = ''
    % o  o2 g4 S( y            range_arr = range_arr if range_arr else [random.randrange(0, len(maps) - 1, 1)]
    ' T, w8 b# L) Y; z            for i, e in enumerate(maps):" X6 b9 s( j% x& M
                    if i in range_arr:9 e1 N$ P7 K$ s  e; I" x
                        i_str = e[1]  p" N  R8 T8 x- F5 s7 y
                        sound = e[0]: r8 d/ f* S. G8 R0 B% x
                        mp3 = self._fld_audio(sound.groups()[0])
    1 t6 p; c, @# r& |% C0 J( L) @                    i_str = re.sub(r'<a[^>]+?href=\"sound\:.*\.mp3\".*</a>', '', i_str).strip()
    5 D2 N( ?' t% G8 ]0 Q' N! f- F                    my_str = my_str + '<li>' + i_str + ' ' + mp3 + '</li>'
    ( e  r# u3 y0 ?  \2 Z* m# }            return self._css(my_str), V( P% s3 J( l1 ~
            return ''9 |$ S; p1 y2 W$ U+ X# y

    1 U- ^4 d  R( z# o0 V    @export([u'额外例句', u'Extra Examples'])& M$ c6 t9 d0 C% S8 T4 I: n
        def fld_extra_examples(self):/ {7 Z% \- m: s& L% f
            lst = re.findall(r'href="/(@examples_.*?)\">.*?<', self.get_html())' r7 S, ^$ H: n$ d- E% O% [: w
            if lst:
    " h" A$ I+ u. `5 p2 ^' ^& \, V            str_content = u''! J9 d7 G: C+ J4 n. S( ?7 l$ e
                for m in lst:" @, D% U- F( R# S3 O
                    content = self.builder.mdx_lookup(m)
    - J! y7 ?  r$ {6 w0 ]; o                if len(content) > 0:1 w$ Q5 m8 I; ]( b( |
                        for c in content:
    2 f% v5 x7 z' e+ r% t8 i                        str_content += c.replace("\r\n","").replace("entry:/","")
    . H+ b$ |: d, T" M6 i            return self._css(str_content)
    ! ?! l( ^: m* Q* A7 `8 Q0 L& }        return ''    ) Z3 r# Y7 H% Z) I) M7 {1 Z

    2 v5 ~3 Q7 L  {4 N: \    @with_styles(cssfile='_ldoce6.css')# q9 C4 J: b$ V  [2 F0 \$ J, y4 t. M3 w/ h
        def _css(self, val):1 r" _8 d6 A' F3 R$ U
            return val
    6 k! u. h: v6 h3 w& M+ V: A    ---------------------) w, E8 K9 _4 G2 G2 ~( ?, @
    " R' o. L+ v) d5 y) p
    谢谢各位
    . F8 O" L3 c6 \4 E: c  |1 Z( F0 q7 H, @

    * J- {( W9 n4 m( H9 _
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 15:04:15 | 显示全部楼层
    本帖最后由 frand 于 2019-8-5 15:07 编辑 . G2 w2 _2 f) V! T+ z+ `; `
    jiaqiangmit2 发表于 2019-8-5 14:12: f; ]* t" n% ^) j- i6 C
    提供下你的qq邮箱吧,太大了这里传不了
    你是想把为ANKI词库中的例句这一栏位的mp3文件改名吗?
    1 p' g! @" n4 h8 g$ |! ODon’t get upset. I was only teasing. [sound:mdx-ldoce6-c2c10f2b-95694d96-b8ce94c6-8b1ffc37-4cc61462.mp3]
    5 X) N$ p! A1 C6 M, G; }3 ~7 a. N7 O4 Y
    He used to tease her mercilessly. [sound:mdx-ldoce6-334d38fd-e368d636-f172000c-d2e5ec9a-18e9aeee.mp3]* }  [( Q: d6 Z! B; o
    She used to tease me about my hair. [sound:mdx-ldoce6-a00e3bdd-ca148afb-4cd3fd3d-9395d31a-64e0d996.mp3]1 u4 U1 p  U7 H, R3 c- K& M7 g
    Stop teasing the cat! [sound:mdx-ldoce6-981ee5f3-c676372b-7de3ab98-aa4bee0d-812f59cd.mp3]
    2 V, U0 I# {$ b$ W) B: E/ P" HI finally managed to tease the truth out of her. [sound:mdx-ldoce6-185d0830-6aa160cf-8946fa47-eed2e253-ab219916.mp3]8 k8 u" H4 K" g5 c- @' Y* E
    She combed her hair, gently teasing out the knots. [sound:mdx-ldoce6-d27ad8ad-4cffb13f-61005ce9-2a9a9c77-aaf61afc.mp3]& d" j& T& i0 b* x0 {: a
    Don’t take any notice of Joe – he’s a big tease. [sound:mdx-ldoce6-461c2965-8cf65cc5-b940976d-84da3c42-8d0a45a5.mp3]
    / `/ ?& |8 ~* l' ]I’m sorry, it was only a tease. [sound:mdx-ldoce6-f99bee54-64e083fe-f93770cc-56235b0a-7e4114fb.mp3]
    " C7 @0 e/ _2 f- f/ t5 B
    ( w' `" S; o, s3 v, ]. b" ~
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 17:49:41 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 17:06
    & J  ~2 f; N/ ^" ]; m字典脚本里目前是输出音频,如果能输出并重命名,就一步到位了。当然,可能这个要求高了。只有能改音频的 ...
    4 I9 t5 G; Q9 D+ H: n
    链接: https://pan.baidu.com/s/1GF3vZ9K3pukMlw3qbeXBig 提取码: u47p + p5 Q- F( ?3 i
    " ^4 h# J3 B( U# Z% t4 E
    根据你发的刘毅5000 anki文件,改名输出了例句的mp3文件
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 21:22:28 | 显示全部楼层
    frand 发表于 2019-8-5 19:45% B+ V8 T3 m5 H$ o& U
    我删除了多余字段,然后导出来csv文件。再写java代码读取文件并同时改文件名。。。。 ...

    " i* h% B5 F0 o1 V+ @! ?十分感谢,估计网上流传的例句库也是这样来的。我是程序小白,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:055 D9 I) n; i2 Q9 z+ p. d) J
    代码提取的过程中,根据单词拼写直接写文件名字不行吗?
    5 Z$ l$ \0 J$ T/ ~1 a" K* }" N) d
    不行。好像是anki自己生成的媒体文件都是以类似hash方式生成的。。5 q1 L* B' I2 g. H
    都是这个样子:[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:026 f- k6 Z: c, |5 A0 i
    不行。好像是anki自己生成的媒体文件都是以类似hash方式生成的。。
    " `$ A( D, \+ {都是这个样子:[sound:-ldoce6-b0ab2f ...
    , g0 z7 Y: [9 K  F* x  \
    把卡发给我试下
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 14:12:18 | 显示全部楼层
    frand 发表于 2019-8-5 14:04; Y/ Q7 R" v" O& v$ `
    把卡发给我试下

    , }- A& m" ~& C提供下你的qq邮箱吧,太大了这里传不了
    ) t- m/ r6 T% F
    4 ^1 m3 _" Q8 C" }& c3 a/ G
  • 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:048 ?! J. t5 ~/ g; c' o
    你是想把为ANKI词库中的例句这一栏位的mp3文件改名吗?
      T5 I, }" i, c2 DDon’t get upset. I was only teasing. [sound:mdx ...

    & x% E  Z9 l4 P  h* b& r+ ]对,改成以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+ Y8 q6 |* S3 N+ J- Q) |5 I
    对,改成以upset 开头,或者mdx-ldoce6-upset-xxxx.这样就可以把相同单词的例句放一起。 ...
    ! T! [# b6 S( u0 p, q
    所以,你只是想提取这个词库中的例句文件,并把这些文件重命名为  【单词本身】-【原始MP3名称】。$ D; |! \( X- F5 Y9 P

    # v& f# ]3 y/ a- ?# M2 c对吧?
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 15:34:49 | 显示全部楼层
    frand 发表于 2019-8-5 15:30
    0 g( O& D3 r; \) X% ]所以,你只是想提取这个词库中的例句文件,并把这些文件重命名为  【单词本身】-【原始MP3名称】。
    0 p, l2 J* H. P3 d% s
    0 p3 R3 i: l2 x2 \% o- U. g' Y对吧 ...
    - t! F% ~) t. v8 z# ~  D! A) F
    对,例句的音频,以便单独听。相同单词的例句都以单词开头,这样方便管理。
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 15:45:22 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 15:34/ ]$ f1 ?/ c1 f1 {. T# o
    对,例句的音频,以便单独听。相同单词的例句都以单词开头,这样方便管理。 ...

    ' I: w9 u, s; i/ y+ C- I% ]通过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) C5 m. H# H+ A0 }* q
    通过ANKI桌面端,删除不需要的栏位,然后导出成txt文件。然后,写代码按行读取,读出本行第一个单词栏位 ...

    : q" ~  x2 [' z+ Q# |& C& B0 L不会写代码啊。。。后面的都不会
    8 ^. c0 n( G! z- j' ]8 e
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 15:49:58 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 15:47
    0 T8 W9 C4 _% y7 I  n, {不会写代码啊。。。后面的都不会

    / v& Q8 L# k2 K% J+ Y; c你只有这一个anki文件需要处理,对吧?
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 16:01:05 | 显示全部楼层
    frand 发表于 2019-8-5 15:490 B! D" G; f/ ~" B
    你只有这一个anki文件需要处理,对吧?

    3 v; z7 [& t( u我的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
    6 L, H% W- m  p0 E! t5 b2 Z我还是不了解你要做什么。我以为只是把你发给我的词库中的MP3文件提取出来,并在更改文件名为单词+原始乱码 ...

    # B9 v, g) G8 y( r$ X3 g9 k# T是这个意思
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 17:01:59 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 16:49
    ; i) O7 L4 u& @3 c是这个意思
    ; s$ l/ Y* c& J0 S0 P( _6 ]' i
    但是这样和字典的脚本有什么关系吗?你的ANIK文件里已经包含的单词、例句的MP3文件呀。
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 17:06:35 | 显示全部楼层
    frand 发表于 2019-8-5 17:01, a+ P! h7 z1 j) F6 G
    但是这样和字典的脚本有什么关系吗?你的ANIK文件里已经包含的单词、例句的MP3文件呀。 ...

    3 n: W! V+ T5 {* m- l% Y字典脚本里目前是输出音频,如果能输出并重命名,就一步到位了。当然,可能这个要求高了。只有能改音频的名字就好
  • TA的每日心情
    开心
    2019-9-4 10:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2019-8-5 17:55:50 | 显示全部楼层
    frand 发表于 2019-8-5 17:49) H' W: Y5 e) g6 I$ {: o4 m8 |7 t
    链接: https://pan.baidu.com/s/1GF3vZ9K3pukMlw3qbeXBig 提取码: u47p
    " T0 I; G- a0 N( S
    3 J# G3 y% ~/ K  S+ q/ z根据你发的刘毅5000 anki文件, ...
    & E; I" W: O* q' P0 H9 Q4 [* d
    谢谢,能告诉我怎么实现的吗?我会根据进度增加学习的deck
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 19:45:44 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 17:55
    ' S0 T# b. {* m4 c谢谢,能告诉我怎么实现的吗?我会根据进度增加学习的deck
    % A! s" |4 H; y& L
    我删除了多余字段,然后导出来csv文件。再写java代码读取文件并同时改文件名。。。。
  • TA的每日心情
    开心
    2020-4-7 17:48
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2019-8-5 21:33:16 | 显示全部楼层
    jiaqiangmit2 发表于 2019-8-5 21:22, e$ Z; `8 k6 ]/ d% W
    十分感谢,估计网上流传的例句库也是这样来的。我是程序小白,java那段操作,能否传授?免得每次都来麻烦 ...
    : {; s- z6 c! Q- l
    如果你不会JAVA,那应该没法用的。而且我这个代码写的也烂,不好拿出来的
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-5-12 07:56 , Processed in 0.028412 second(s), 23 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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