Skip to content
This repository has been archived by the owner on Mar 20, 2021. It is now read-only.

Commit

Permalink
增加了注释,改善代码可读性
Browse files Browse the repository at this point in the history
  • Loading branch information
3usi9 committed Sep 20, 2017
1 parent 44bbc42 commit 9ca4899
Show file tree
Hide file tree
Showing 3 changed files with 224 additions and 54 deletions.
54 changes: 43 additions & 11 deletions moedatabase.sh
Expand Up @@ -6,14 +6,15 @@
# History:
# 2017/9/18 3usi9


# 没什么逻辑,功能比较散
DATABASE_DIR=$MOEFM_DATABASE
DATABASE="$DATABASE_DIR"
DATABASE+="/database"
OPT_DIR="$HOME/moefm_export"
# 输出的路径



# 检查是否定义了数据库
if [ "$MOEFM_DATABASE" = "" ]; then
echo -e "\e[1m\e[36mYou haven't set a database direction!\e[0m"
echo -e "After set database direction, please \e[1m\e[31mRESTART\e[0m the terminal"
Expand All @@ -26,8 +27,9 @@ if [ "$MOEFM_DATABASE" = "" ]; then
dab=${dab/'~'/''$HOME''}
echo "export MOEFM_DATABASE=$dab" >> "$HOME/.bashrc"
source "$HOME/.bashrc"
mkdir $dab
touch $dab/database
mkdir "$dab"
touch "$dab/database"
touch "$dab/filter"
exit 0
fi

Expand All @@ -38,12 +40,15 @@ remove_sing()
local sid=$*
echo $sid
sed -i '/^'"$sid"'/d' $DATABASE
# 删除数据库中的条目
local path="$DATABASE_DIR"
path+="/$sid.mp3"
rm "$path"
# 删除文件
echo -e "ID为\e[1m\e[33m$sid\e[0m的歌曲已从数据库中移出"
}

# 见moefm.sh中的说明
switch_display_to_save()
{
local str=$*;
Expand All @@ -54,6 +59,7 @@ switch_display_to_save()
echo "$str"
}

# 见moefm.sh中的说明
switch_save_to_display()
{
local str=$*;
Expand All @@ -67,31 +73,40 @@ switch_save_to_display()


clean()
# 传入参数:清理到数据库的大小(MB)
{
local size=$*
local tomb=1024
size=$((size*tomb))

local file_tab=$(ls -altur --time-style=iso "$DATABASE_DIR" | grep "^-" | grep -v "database" | awk '{print $8}')

local file_tab=$(ls -altur --time-style=iso "$DATABASE_DIR" | grep "^-" | grep -v "database" | grep -v "filter" | awk '{print $8}')
# 按照访问时间顺序从后往前列出数据库中的条目
# ls -a:all
# ls -lt: list by change time
# ls -u: (use with -lt) list by access time
# ls -r: reverse (from older to newer)



for i in $file_tab
do
local cursize=$(du "$DATABASE_DIR" | awk '{print $1}')
# 数据库现在的大小
local file_id=$(echo $i | awk -F '.' '{print $1}')
# sed -i '/^'"$sid"'/d' $DATABASE
# 要删除的歌曲ID

if [ $cursize -lt $size ]; then
break
fi

rm "$DATABASE_DIR/$i"
sed -i '/^'"$file_id"'/d' $DATABASE
done
echo "Clean complete!"
}

clear_database()
# haven't test
# 清空数据库
{
echo -e "这项操作会\e[1m\e[31m删除\e[0m本地数据库中的\e[1m\e[31m所有歌曲\e[0m\n并且\e[1m\e[31m不可撤销\e[0m!"
echo -e "请确保\e[1m\e[33mmoefm.sh没有运行\e[0m"
Expand All @@ -104,6 +119,7 @@ clear_database()
rm -r "$DATABASE_DIR/"
mkdir "$DATABASE_DIR"
touch "$DATABASE_DIR/database"
touch "$DATABASE_DIR/filter"
break
elif [ "$ans" = "no" ]; then
echo -e "取消操作..."
Expand All @@ -115,6 +131,7 @@ clear_database()
}

dump_all()
# 导出数据库中的所有歌曲
{
clear
if [ ! -d "$OPT_DIR" ]; then
Expand All @@ -126,7 +143,10 @@ dump_all()
local db=$(cat $DATABASE)
local cnt=1
local tot=$(cat $DATABASE | grep -c "####")
# grep -c : count

echo -e "正在导出第 `tput sc`\e[1m\e[32m$cnt\e[0m 首歌曲,共有 \e[1m\e[33m$tot\e[0m 首歌曲"
# 采用tput控制光标位置
for i in $(echo $db)
do
echo -e "\e[1m\e[32m`tput rc`$cnt\e[0m"
Expand All @@ -139,21 +159,28 @@ dump_all()
tit=${tit//'%20'/' '}
alb=${alb//'%20'/' '}
art=${art//'%20'/' '}
# 这里要修改成switch_to_display...
# 下次再改,这次只加注释...


local path="$DATABASE_DIR/$id.mp3"
mp3info -t "$tit" -a "$art" -l "$alb" "$path"
# Added mp3 metadata....
# 把metadata写入导出的mp3中(待加入专辑封面写入功能)


tit=${tit//'/'/''}
alb=${alb//'/'/''}
# 把'/'放在文件名里,转义起来很麻烦..直接改成全角'/'
cp "$path" "$OPT_DIR/$tit - $alb.mp3"

# 歌曲名 - 专辑名.mp3
done


}

dump_one()
# 导出包含关键字的歌曲
# 传入参数:关键字
{
arg=$*
clear
Expand All @@ -163,6 +190,7 @@ dump_one()
echo -e "导出路径为\e[1m\e[33m$OPT_DIR\e[0m"
fi
son=$(cat $DATABASE | grep -i "$arg")
# grep -i: Ignore upper case and lower case

if [ "$son" = "" ]; then
echo "该歌曲不存在..."
Expand All @@ -176,14 +204,16 @@ dump_one()
local tit=$(echo $i | awk -F '####' '{print $2}')
local alb=$(echo $i | awk -F '####' '{print $3}')
local art=$(echo $i | awk -F '####' '{print $4}')

# 改成switch
id=${id//'%20'/' '}
tit=${tit//'%20'/' '}
alb=${alb//'%20'/' '}
art=${art//'%20'/' '}

local path="$DATABASE_DIR/$id.mp3"
mp3info -t "$tit" -a "$art" -l "$alb" "$path"
# Added mp3 metadata....
# mp3 metadata
echo -e "正在导出:\e[1m\e[33m$tit\e[0m"
tit=${tit//'/'/''}
alb=${alb//'/'/''}
Expand All @@ -193,6 +223,8 @@ dump_one()
}

search_database()
# 检索database中的条目
# 传入参数:关键字
{
arg=$*
arg=$(switch_display_to_save "$arg")
Expand Down

0 comments on commit 9ca4899

Please sign in to comment.