Advertisement
Guest User

xbmc batch script renamer

a guest
Jul 11th, 2012
1,274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.49 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. ProcessOneFolder()
  4. {
  5.     folder=$1
  6.     currentFolder=`pwd`
  7.     cd "$folder"
  8.     base=""
  9.     full=""
  10.     name=""
  11.    
  12.     for file in *.nfo; do
  13.         nfo=".nfo"
  14.         empty=""
  15.         slash="/"
  16.         and="&"
  17.         singleQuote="'"
  18.         singleQuoteReplaced="'"
  19.         base=${file/$nfo/$empty}
  20.         name=`cat "$file" | grep -i "<originaltitle>"`
  21.         if [[ ! -n $name ]]
  22.         then
  23.             name=`cat "$file" | grep -i "<title>"`
  24.         fi
  25.         name=`echo $name | sed 's/<[^>]*[>]//g'`
  26.         name="${name#"${name%%[![:space:]]*}"}"
  27.         name="${name%"${name##*[![:space:]]}"}"
  28.         name=${name// : / }
  29.         name=${name// :/ }
  30.         name=${name//: / }
  31.         name=${name//:/ }
  32.         name=${name//$and/And}
  33.         name=${name//$singleQuote/$singleQuoteReplaced}
  34.         name=${name//$slash/$empty}
  35.         year=`cat "$file" | grep -i "<year>" | sed 's/<[^>]*[>]//g'`
  36.         year=${year//[[:space:]]/}
  37.         full="$name ($year)"
  38.     done
  39.    
  40.     if [[ ! -n $name ]]
  41.     then
  42.         cd "$currentFolder"
  43.         return 0
  44.     fi
  45.    
  46.     for file in "${base}"*.*; do
  47.         if [[ "$file" == *$base* ]]
  48.         then
  49.             newFile=${file/$base/$full}
  50.             if [[ "$newFile" != "$file" ]]
  51.             then
  52.                 mv "$file" "$newFile"
  53.             fi
  54.         fi
  55.     done
  56.     cd "$currentFolder"
  57.    
  58.     if [[ "$folder" != "$full" ]]
  59.     then
  60.         mv "$folder"  "$full"
  61.     fi
  62. }
  63.  
  64. FindFolderByFirstLetter()
  65. {
  66.     letter=$1
  67.     for dir in ${letter}*; do
  68.         ProcessOneFolder "$dir"
  69.     done
  70. }
  71.  
  72. Main()
  73. {
  74.     #ProcessOneFolder "A Knight' Tale (2001)"
  75.    
  76.     for letter in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z;  do
  77.         FindFolderByFirstLetter $letter
  78.     done
  79.    
  80. }
  81.  
  82. Main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement