Initial commit
[wiley2bibtex:wiley2bibtex.git] / wiley2bibtex.sh
1 #!/bin/bash
2
3 # Copyright 2010 Ankur Sinha 
4 # Author: Ankur Sinha <sanjay DOT ankur AT gmail DOT com> 
5 #
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 #
19 # File : wiley2bibtex : convert the wiley citations to bibtex
20 #
21
22 usage ()
23 {
24     echo -ne "wiley2bibtex : Convert citations from Wiley on line library to BibTeX\n"
25     echo -ne "Usage: wiley2bibtex inputfile outputfile\n"
26 }
27
28 parse()
29 {
30     if [ -f /usr/bin/dos2unix ] ; then  
31         dos2unix "$1" > /dev/null 2>&1 
32     else
33         echo "Could not find dos2unix. Continuing without converting"
34     fi
35
36     # Check if it's downloaded from Wiley
37     grep "Provider: John Wiley & Sons, Ltd" "$1" > /dev/null
38
39     if [ 0 -ne $? ]; then
40         echo -ne "Does not appear to be from the Wiley online library\n"
41         echo -ne "Misses the required Provider: header\n"
42         echo -ne "Exiting"
43         exit 1
44     fi
45
46     echo -ne "@Article{" > $2
47
48     # Get the values
49     TY=$(grep "TY  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
50     TITLE=$(grep "TI  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
51     JOURNAL=$(grep "JO  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
52     VOLUME=$(grep "VL  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
53     ISSUE=$(grep "IS  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
54     PUBLISHER=$(grep "PB  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
55     SERIAL=$(grep "SN  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
56     URL=$(grep "UR  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
57     DOI=$(grep "DO  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
58     START_PAGE=$(grep "SP  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
59     END_PAGE=$(grep "EP  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
60     YEAR=$(grep "PY  -" "$1" | awk 'BEGIN { FS = " - " }; { print $2 }')
61     AUTHOR_NUM=$(grep "AU  -" "$1" | wc -l)
62
63     # understand this!
64     for i in "$(grep "AU  -" $1 )"; do 
65         AUTHOR=$(echo "$i" | awk 'BEGIN{FS = " - "}; { print $2}' | awk 'BEGIN {FS = ","};{print $2 " " $1 ","}')
66     done
67     AUTHOR=$(echo $AUTHOR | sed "s/\,$/./")
68
69     # create ourselves a keyword
70     PRIME_AUTHOR=$(grep "AU  -" -m 1 $1 | awk 'BEGIN{FS = " - "}; {print $2}' | awk 'BEGIN {FS = ","};{print $2}')
71     KEYWORD="$PRIME_AUTHOR$YEAR"
72
73     # Start making our file!
74     echo -ne $KEYWORD >> $2 ; echo "," >> $2
75     if [ "$DOI" ] ; then 
76         echo -ne "\tDoi = {" >> $2 ; echo -ne $DOI >> $2 ; echo "}," >> $2
77     fi
78     if [ "$AUTHOR" ] ; then 
79         echo -ne "\tauthor = {" >> $2 ; echo -ne $AUTHOR >> $2 ; echo "}," >> $2
80     fi
81     if [ "$TITLE" ] ; then 
82         echo -ne "\ttitle = {" >> $2 ; echo -ne $TITLE >> $2 ; echo "}," >> $2
83     fi
84     if [ "$JOURNAL" ] ; then 
85         echo -ne "\tjournal = {" >> $2 ; echo -ne $JOURNAL >> $2 ; echo "}," >> $2
86     fi
87     if [ "$VOLUME" ] ; then 
88         echo -ne "\tvolume = {" >> $2 ; echo -ne $VOLUME >> $2 ; echo "}," >> $2
89     fi
90     if [ "$ISSUE" ] ; then 
91         echo -ne "\tissue = {" >> $2 ; echo -ne $ISSUE >> $2 ; echo "}," >> $2
92     fi
93     if [ "$YEAR" ] ; then 
94         echo -ne "\tyear = {" >> $2 ; echo -ne $YEAR >> $2 ; echo "}," >> $2
95     fi
96     if [ "$URL" ] ; then 
97         echo -ne "\turl = {" >> $2 ; echo -ne $URL >> $2 ; echo "}," >> $2
98     fi
99     if [ "$PUBLISHER" ] ; then 
100         echo -ne "\tpublisher = {" >> $2 ; echo -ne $PUBLISHER >> $2 ; echo "}," >> $2
101     fi
102     if [ "$PAGES" ] ; then 
103         echo -ne "\tpages = {" >> $2 ; echo -ne $START_PAGE >> $2 ; echo -ne "-" >> $2 ; echo -ne $END_PAGE >> $2 ; echo "}," >> $2
104     fi
105     echo -e "}" >> $2
106
107     cat $2
108
109
110
111 }
112 if [ $# -ne 2 ] ; then
113     echo "Incorrect usage"
114     usage
115     exit 1;
116 fi
117
118 if [ ! -f "$1" ] ; then
119     echo "$1: No such file." 2>&1
120     usage                 # Print usage message and exit.
121     exit 2
122 fi 
123
124 parse $*