不知有沒有像convert-z的轉碼程式?

如果您覺得您的問題不屬於 debian desktop 或是 debian server 版的範圍內,請在這裡發問。

版主: mufa

不知有沒有像convert-z的轉碼程式?

文章dddan » 週一 1月 23, 2006 3:32 pm

不知有沒有什麼程式可以像windows中convert-z, 可轉檔名的中文轉碼, 又可更改MP3的ID3 Tag呢? 感謝...
dddan
可愛的小學生
可愛的小學生
 
文章: 20
註冊時間: 週三 12月 07, 2005 5:03 pm

文章PCMan » 週一 1月 23, 2006 10:34 pm

轉檔名 convmv 應該可以吧?
如果不行的話,中文轉碼有 zh-autoconvert,相當方便
如果把 find + autoconvert + mv 搭配組合,再找個可以轉換 id3 tag 的
應該可以達成吧我猜 :P
或許寫個 script 把他們組合起來?
PCMan
榮譽學長
榮譽學長
 
文章: 217
註冊時間: 週六 7月 02, 2005 10:46 am

文章訪客 » 週一 1月 23, 2006 11:12 pm

zh-autoconvert 只能從 utf-8 轉出,沒辦法轉成 utf-8

它主要是判斷簡繁中文很實用…
訪客
 

文章訪客 » 週二 2月 14, 2006 3:17 pm

嗨,樓上的訪客兄,
小弟在 sid 下測試, zh-autoconvert 可以把 big5/gb 轉成 utf-8 哦.
它還可以 gb <=> big5 / big5 <=> utf-8 / gb <=> utf-8
用來把 gb/big5 轉成 utf-8 時,只須指定 -o utf8 即可
若要把簡體中文 gb 轉成繁體 utf-8, 也只要先轉 big5 再轉成 utf-8.
簡體 utf-8 也可以用這種方法轉成繁體 utf-8.

只可惜, 若 input 是 utf-8 時, 就沒辦法省略 -i

下面是小弟用 zh-autoconvert 及 id3v2 湊出來的轉換script
代碼: 選擇全部
#!/bin/sh
function conv
{
TARGETSONG="$1"
id3v2 -R "$TARGETSONG" >/tmp/id3conv.sh.tmp
ID3V1_TITLE=$(cat /tmp/id3conv.sh.tmp|head -4|tail -3|head -1|tail -1|cut -c10-41|autogb -o big5|autogb -o utf8|tr -s ' ' ' ')
ID3V1_ARTIST=$(cat /tmp/id3conv.sh.tmp|head -4|tail -3|head -1|tail -1|cut -c49- |autogb -o big5|autogb -o utf8|tr -s ' ' ' ')
ID3V1_ALBUM=$(cat /tmp/id3conv.sh.tmp|head -4|tail -3|head -2|tail -1|cut -c10-41|autogb -o big5|autogb -o utf8|tr -s ' ' ' ')
ID3V1_COMMENT=$(cat /tmp/id3conv.sh.tmp|head -4|tail -3|head -3|tail -1|cut -c10-41|autogb -o big5|autogb -o utf8|tr -s ' ' ' ')
ID3V2_TALB=$(cat /tmp/id3conv.sh.tmp|grep TALB|cut -c32-|autogb -o big5|autogb -o utf8)
ID3V2_TPE1=$(cat /tmp/id3conv.sh.tmp|grep TPE1|cut -c38-|autogb -o big5|autogb -o utf8)
ID3V2_TIT2=$(cat /tmp/id3conv.sh.tmp|grep TIT2|cut -c44-|autogb -o big5|autogb -o utf8)
ID3V2_TCON=$(cat /tmp/id3conv.sh.tmp|grep TCON|cut -c22-|cut -d " " -f1|autogb -o big5|autogb -o utf8)
ID3V2_COMM=$(cat /tmp/id3conv.sh.tmp|grep COMM|cut -c24-|autogb -o big5|autogb -o utf8)
ID3V1_TITLE=${ID3V1_TITLE##\ }
ID3V1_ARTIST=${ID3V1_ARTIST##\ }
ID3V1_ALBUM=${ID3V1_ALBUM##\ }
ID3V1_COMMENT=${ID3V1_COMMENT##\ }
ID3V2_TALB=${ID3V2_TALB##\ }
ID3V2_TPE1=${ID3V2_TPE1##\ }
ID3V2_TIT2=${ID3V2_TIT2##\ }
ID3V2_TCON=${ID3V2_TCON##\ }
ID3V2_COMM=${ID3V2_COMM##\ }
ID3V1_TITLE=${ID3V1_TITLE%\ }
ID3V1_ARTIST=${ID3V1_ARTIST%\ }
ID3V1_ALBUM=${ID3V1_ALBUM%\ }
ID3V1_COMMENT=${ID3V1_COMMENT%\ }
ID3V2_TALB=${ID3V2_TALB%\ }
ID3V2_TPE1=${ID3V2_TPE1%\ }
ID3V2_TIT2=${ID3V2_TIT2%\ }
ID3V2_TCON=${ID3V2_TCON%\ }
ID3V2_COMM=${ID3V2_COMM%\ }
id3v2 --artist "$ID3V1_ARTIST" --album "$ID3V1_ALBUM" --song "$ID3V1_TITLE" --comment "":"$ID3V1_COMMENT":"" $TARGETSONG
id3v2 --TPE1 "$ID3V2_TPE1" --TALB "$ID3V2_TALB" --TIT2 "$ID3V2_TIT2" --COMM "$ID3V2_COMM" --TCON "$ID3V2_TCON" $TARGETSONG
}
function shinfo
{
echo "Usage: $SHNAME file1|path1 [file2|path2]...  "
}
declare -i NOMS=$#
SHNAME=$0
SHNAME=${SHNAME##*/}
if [ $NOMS -eq 0 ];then
  shinfo
else
  while [ $NOMS -gt 0 ];do
    if [ -d "$1" ]; then
      IFS=":"
      for abc in $(find "$1" -name *.[Mm][Pp]3|tr -s "\n" ":") ;do
        conv "$abc"
      done
    elif [ -f "$1" ]; then
      conv "$1"
    else
      echo "$1 does not exist!"
    fi
    NOMS=$NOMS-1
    shift
  done
fi

寫得很沒效率,功能也很陽春,就只是把 id3v1/v2 讀出來, 一個個轉碼後再存回去.
但這個 script 只能吃 id3 為 gb/big5 編碼的 mp3
(小弟還想不到方法在 script 中自動判別utf-8/big-5.
所以,若餵一個id3用 utf-8 編碼的 mp3, 它沒辦法判別, 會轉成亂碼.
請哪位大大出面指導一下小弟吧 ^_^ )
訪客
 

文章mason » 週四 9月 20, 2007 6:44 pm

convertZ 可以自訂辭彙轉換
但是 zh-autoconvert 沒有。
(不行並不代表沒有辭彙轉換,只是不夠)

例如:"千層麵" 這個辭彙
在 convertZ 會自動把 "面" 取代成 "麵"
如果 convertZ 還是有些疏忽,我們還是可以自己加辭彙進去讓他判斷。
但是經過 zh-autoconvert 轉換,仍然為 "千層面"
反倒是 firefox 的同文堂做得到。

但是同文堂不能批次轉換,而且還必須讓要轉換的內容顯示在網頁上或者先複製到 "剪貼簿" 裡面.
skype:dantemason
http://blog.sikazozo.org
頭像
mason
快樂的大學生
快樂的大學生
 
文章: 547
註冊時間: 週二 9月 10, 2002 3:40 pm
來自: SIDE 3

文章訪客 » 週四 9月 20, 2007 10:30 pm

把你喜歡的 database dump 出來用 sed 轉就好了 XD

前陣子 gcin 同好會有人整理了一份繁轉簡單字對照,bug "據說"比 zh-autoconvert / iconv 少一點。
http://cle.linux.org.tw/trac/discussion/2/352
訪客
 

文章mason » 週五 9月 21, 2007 3:09 am

Anonymous 寫:把你喜歡的 database dump 出來用 sed 轉就好了 XD

前陣子 gcin 同好會有人整理了一份繁轉簡單字對照,bug "據說"比 zh-autoconvert / iconv 少一點。
http://cle.linux.org.tw/trac/discussion/2/352


哈!你不提我都忘記有 sed 這種好東西可以用了
配上一個小 shell script
的確非常好用!

謝謝你的提醒。 :y2_16:
skype:dantemason
http://blog.sikazozo.org
頭像
mason
快樂的大學生
快樂的大學生
 
文章: 547
註冊時間: 週二 9月 10, 2002 3:40 pm
來自: SIDE 3

文章mason » 週五 9月 21, 2007 3:22 pm

剛剛我小 try 了一下
光是用一個 while read line
然後 awk 把 convertZ 裡面的代換詞取出來
時間上就耗費不少了...

我前幾天用 C 寫了一個小程式,把 convertZ 的繁體代換詞檔案(BI_TradFix.dat) 取出
然後再取代掉一個經過autob5處理過的srt檔案之中的詞語
速度還明顯比用 awk 去跑來得快。

不過,畢竟我不熟 shell 和 awk, sed,所以以上講得也不客觀啦。

我的理想是把 autob5 裡面轉繁體字的功能 merge 進來,然後最後再加上詞語代換。
但是我的 C 語言程度不是很好,still working on it.
( C 沒有 string replace 的 function,我用了一堆 memory realloc 來implement....這兩天真是充實 XD)
頭像
mason
快樂的大學生
快樂的大學生
 
文章: 547
註冊時間: 週二 9月 10, 2002 3:40 pm
來自: SIDE 3

文章mason » 週三 9月 26, 2007 3:52 am

allright, 我放棄了。
我寫的那個不是不能跑,也不會比用 sed, awk 慢
(我也用 php 寫了一個 script 來測試詞語替換,慢到花兒也謝了)
就當作是畢業6年之後的小作業吧。 XD

我只有做單一 encoding 的取代。
拿來當詞語取代的資料庫是 convertZ 裡面的 BI_TradFix.dat 這個檔
去掉頭兩行的標記,總共 7587 組詞語替換配對。
把 7587 組詞句放到 struct 裡面
然後跑那 7587 個迴圈
每一句都先 strstr 看看那些配對有沒有存在這個句子裡。
有的話就去跑那一串 realloc 來取代
迴圈跑玩也就確定都取代完成了。

但是比起 convertZ 還是非常非常明顯的慢上一大截。
不知道怎麼樣才能跟 convertz 裡面的詞語替換一樣那麼快。

最後我還是用 bash 去寫個 script
autob5 然後 iconv
雖然沒有自訂詞與取代的功能,但是經濟又實惠...
skype:dantemason
http://blog.sikazozo.org
頭像
mason
快樂的大學生
快樂的大學生
 
文章: 547
註冊時間: 週二 9月 10, 2002 3:40 pm
來自: SIDE 3

文章訪客 » 週三 9月 26, 2007 9:24 am

convertZ 可以逶過 wine 運行。
訪客
 

文章訪客 » 週三 9月 26, 2007 4:33 pm

Anonymous 寫:convertZ 可以逶過 wine 運行。

這樣試過了,轉不動還是亂碼。
訪客
 

文章mason » 週三 9月 26, 2007 6:47 pm

我已經有分別寫信給 convertZ 和 zh-autoconvert 的作者
分別希望能有 convertZ 的 linux 版本 和 zh-autoconvert 的自訂辭彙修正功能。

希望他們其中有人肯回我 email XD
skype:dantemason
http://blog.sikazozo.org
頭像
mason
快樂的大學生
快樂的大學生
 
文章: 547
註冊時間: 週二 9月 10, 2002 3:40 pm
來自: SIDE 3

文章訪客 » 週三 9月 26, 2007 7:02 pm

Anonymous 寫:
Anonymous 寫:convertZ 可以透過 wine 運行。

這樣試過了,轉不動還是亂碼。

試過了,wine可以正常運行ConvertZ!
訪客
 

Re: 不知有沒有像convert-z的轉碼程式?

文章dukelec » 週二 2月 01, 2011 8:04 pm

cconv可以媲美同文堂。。。
dukelec
 


回到 debian misc

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客