CD 唱片图形显示

来源:互联网 发布:电脑屏幕调节软件 编辑:程序博客网 时间:2024/04/29 16:00
#!/bin/sh# Very simple example shell script for managing a CD collection.# Copyright (C) 1996-2007 Wiley Publishing Inc.# This program is free software; you can redistribute it and/or modify it# under the terms of the GNU General Public License as published by the# Free Software Foundation; either version 2 of the License, or (at your# option) any later version.# This program is distributed in the hopes that it will be useful, but# WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General# Public License for more details.# You should have received a copy of the GNU General Public License along# with this program; if not, write to the Free Software Foundation, Inc.# 675 Mass Ave, Cambridge, MA 02139, USA.menu_choice=""current_cd=""title_file="title.cdb"tracks_file="tracks.cdb"temp_file=/tmp/cdb.$$trap 'rm -f $temp_file' EXITget_return(){    gdialog --title "" --yesno "$1" 9 18    x=$?    if [ $x = 0 ]; then     return 0    else     return 1    fi}get_confirm(){    gdialog --title "" --yesno "$*" 9 18    x=$?    while true    do     case $x in         0 ) exit 0          ;;         * ) exit 1     esac    done}set_menu_choice(){    rm -f _1.txt    if [ "cdcatnum" != "" ]; then     gdialog --title "Mini CD manager" --checklist "Options :-" 15 25 3 a "Add new CD" "on" f "Find CD" "off" c "Count the CDs and tracks in the catalog" "off" r "Remove an exist CD" "off" u "Update track information for an exist CD" "off" 2>_1.txt     x=$?     if [ $x != 0 ]; then         rm -f _1.txt         exit 1     else         menu_choice=$(cat _1.txt)     fi    else     gdialog --title "Mini CD manager" --checklist "Options :-" 15 25 3 a "Add new CD" "on" f "Find CD" "off" c "Count the CDs and tracks in the catalog" "off"  2>_1.txt     x=$?     if [ $x != 0 ]; then         rm -f _1.txt         exit 1     else         menu_choice=$(cat _1.txt)     fi    fi    rm -f _1.txt       }insert_title(){    echo $* >> $title_file    return}insert_track(){    echo $* >> $tracks_file    return}add_record_tracks(){    cdtrack=1    cdttitle=""    x=0    while [ $x = 0 ]    do     gdialog --title "Enter track information for this CD" --inputbox "Track $cdtrack, track title?" 9 30 2>_1.txt     x=$?     tmp=$(cat _1.txt)     cdttitle=${tmp%%,*}     if [ "$tmp" != "$cdttitle" ]; then         gdialog --msgbox "Sorry, no commas allowed" 9 18         continue     fi     if [ -n "$cdttitle" ]; then          insert_track $cdcatnum,$cdtrack,$cdttitle     else         cdtrack=$((cdtrack-1))     fi     cdtrack=$((cdtrack+1))    done    rm -f _1.txt}add_records(){    # Prompt for the initial information    gdialog --title "" --inputbox "Enter catalog name" 9 30 2>_1.txt    x=$?    if [ $x = 1 ]; then     return    fi    tmp=$(cat _1.txt)    cdcatnum=${tmp%%,*}    rm -f _1.txt    gdialog --title "" --inputbox "Enter title" 9 30 2>_1.txt    x=$?    if [ $x = 1 ]; then     return    fi    tmp=$(cat _1.txt)    cdtitle=${tmp%%,*}    rm -f _1.txt    gdialog --title "" --inputbox "Enter type" 9 30 2>_1.txt    x=$?    if [ $x = 1 ]; then     return    fi    tmp=$(cat _1.txt)    cdtype=${tmp%%,*}    rm -f _1.txt    gdialog --title "" --inputbox "Enter artist/composer" 9 30 2>_1.txt    x=$?    if [ $x = 1 ]; then     return    fi    tmp=$(cat _1.txt)    cdac=${tmp%%,*}    rm -f _1.txt    # Check that they want to enter the information       # If confirmed then append it to the titles file    gdialog --title "" --yesno "About to add new entry $cdcatnum $cdtitle $cdtype $cdac" 9 18    x=$?    if [ $x = 0 ] ; then     insert_title $cdcatnum,$cdtitle,$cdtype,$cdac     add_record_tracks    fi       return}find_cd(){    cdcatnum=""    gdialog --title "" --inputbox "Enter a string to search for in the CD titles" 9 30 2>_1.txt    searchstr=$(cat _1.txt)    rm -f _1.txt    if [ "$searchstr" = "" ]; then     return 0    fi    grep "$searchstr" $title_file > $temp_file    set $(wc -l $temp_file)    linesfound=$1    case "$linesfound" in     0)          get_return "Sorry,nothing found"         return 0         ;;     1)  ;;     *)          get_return "Sorry, not unique.Found the following"         cat $temp_file > _1.txt         gdialog --title "" --textbox _1.txt 9 30            rm -f _1.txt                 return 0    esac    IFS=","    read cdcatnum cdtitle cdtype cdac < $temp_file    IFS=" "    if [ -z "$cdcatnum" ];then     get_return "Sorry, could not extract catalog field from $temp_file"     return 0    fi     echo  "Catalog number: $cdcatnum"'\n'"Title: $cdtitle"'\n'"echo Type: $cdtype"'\n'"Artist/Composer: $cdac" >_1.txt     gdialog --title "" --textbox _1.txt 9 30     rm -f _1.txt     gdialog --yesno "View tracks for this CD?" 9 18     x=$?     if [ $x = 0 ];then     list_tracks     fi     return 1}update_cd(){    if [ -z "$cdcatnum" ];then     gdialog --msgbox "You must select a CD first" 9 18     find_cd    fi    if [ -n "$cdcatnum" ];then     gdialog --title "" --yesno "This will re-enter the tracks for $cdtitle" 9 18     if [ "$?" = 0 ];then         grep -v "^$cdcatnum," $tracks_file > $temp_file         mv $temp_file $tracks_file         add_record_tracks     fi    fi    return}count_cds(){    set $(wc -l $title_file)    num_titles=$1    set $(wc -l $tracks_file)    num_tracks=$1    gdialog --infobox "found $num_titles CDs, with a total of $num_tracks tracks" 9 18    return}remove_records(){    if [ -z "$cdcatnum" ];then     get_return "You must select a CD first"     find_cd    fi    if [ -n "$cdcatnum" ];then     gdialog --title "" --yesno "You are about to delete $cdtitle" 9 18     if [ "$?" = 0 ];then             grep -v "^$cdcatnum," $title_file > $temp_file         mv $temp_file $title_file         grep -v "^$cdcatnum," $tracks_file > $temp_file         mv $temp_file $tracks_file         cdcatnum=""         get_return "Entry removed"     fi    fi    return}list_tracks(){    if [ "$cdcatnum" = "" ];then     get_return "no CD selected yet"     return    else     grep "^${cdcatnum}," $tracks_file > $temp_file     num_tracks=$(wc -l $temp_file)     if [ "$num_tracks" = "" ];then         get_return "no tracks found for $cdtitle"     else         {          cut -f 2- -d , $temp_file >_1.txt          gdialog --title "$cdtitle :-" --textbox _1.txt 9 30         }     fi    fi    return}if [ ! -f $title_file ]; then    touch $title_filefiif [ ! -f $tracks_file ]; then    touch $tracks_filefi# Now the application properx1=0while [ $x1 = 0 ];do    set_menu_choice    x1=$?    case "$menu_choice" in     a) add_records;;     r) remove_records;;     f) find_cd;;     u) update_cd;;     c) count_cds;;     b) gdialog --textbox title_file 9 30;;    esacdone#Tidy up and leaverm -f temp_fileget_return "Finished"exit 0

原创粉丝点击