Script edit

This is a script that generates an alphabetical index of a month's worth of WP:CFD logs. Assumes the entries are closed with the {{Cfd top}} template.

Rick Block (talk) 00:20, July 31, 2005 (UTC)


#!/bin/bash

# usage: CFDindexer month year
# example: CFDindex June 2005

MONTH=$1
YEAR=$2

WGET="/usr/bin/curl"  # on a mac OS X
# WGET="wget -q -O -"   # on a linux box with wget

# files 
CFDCATS="CFDcats"

# 
# get all log articles for the given month
if [ "$3" != "CFDcats" ]; then
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31; do
  echo ""
  echo "LOGFILE: Wikipedia:Categories for deletion/Log/$YEAR $MONTH $i"
  echo "DATE: $MONTH $i"
  $WGET "http://en.wikipedia.org/w/index.php?title=Wikipedia:Categories_for_deletion/Log/${YEAR}_${MONTH}_${i}&action=raw"
done >$CFDCATS
fi

case $MONTH in
  January) PREVMONTH="December"; let PREVYEAR=$YEAR-1; NEXTMONTH="February"; NEXTYEAR=$YEAR;;
  February) PREVMONTH="January"; PREVYEAR=$YEAR; NEXTMONTH="March"; NEXTYEAR=$YEAR;;
  March) PREVMONTH="February"; PREVYEAR=$YEAR; NEXTMONTH="April"; NEXTYEAR=$YEAR;;
  April) PREVMONTH="March"; PREVYEAR=$YEAR; NEXTMONTH="May"; NEXTYEAR=$YEAR;;
  May) PREVMONTH="April"; PREVYEAR=$YEAR; NEXTMONTH="June"; NEXTYEAR=$YEAR;;
  June) PREVMONTH="May"; PREVYEAR=$YEAR; NEXTMONTH="July"; NEXTYEAR=$YEAR;;
  July) PREVMONTH="June"; PREVYEAR=$YEAR; NEXTMONTH="August"; NEXTYEAR=$YEAR;;
  August) PREVMONTH="July"; PREVYEAR=$YEAR; NEXTMONTH="September"; NEXTYEAR=$YEAR;;
  September) PREVMONTH="August"; PREVYEAR=$YEAR; NEXTMONTH="October"; NEXTYEAR=$YEAR;;
  October) PREVMONTH="September"; PREVYEAR=$YEAR; NEXTMONTH="November"; NEXTYEAR=$YEAR;;
  November) PREVMONTH="October"; PREVYEAR=$YEAR; NEXTMONTH="December"; NEXTYEAR=$YEAR;;
  December) PREVMONTH="November"; PREVYEAR=$YEAR; NEXTMONTH="January"; let NEXTYEAR=$YEAR+1;;
esac

cat $CFDCATS | awk '
/^LOGFILE:/ {
  logfile = $0;
  sub("^LOGFILE: ","",logfile);
}
  
/^DATE:/ {
  date = $0;
  sub("^DATE: ","",date);
}
  
/^====[^=]/ {
  # line might be like ====[[:Category:Airports_of_Yukon]]====
  # or like ====Category:xxxx xFC Pro Bowl players====
  # or like ===={{{2|Category:xxxx xFC Pro Bowl players}}====
  cat = $0;
  sub("^==== *","",cat);
  sub(" *==== *$","",cat);
  sub("^{{{.[|]","[[:",cat);
  sub("}}}$","]]",cat);
  sub("Category: *","Category:",cat);
}

/^The result of the debate was/ {
  result = $0;
  sub("^The result of the debate was ","",result);
  sub("[[][[][uU]ser.*","",result);
  sub(".mdash;.*","",result);
  sub(" [^a-zA-Z0-9]+ <small.*","",result);
  sub("[. -]*$","",result);
  if (cat != "") {
    justcat = cat;
    gsub("[[][[]:[cC]ategory:[^|[]*[|]","",justcat);
    gsub("[[][[]:Category:","Category:",justcat);
    gsub("[[][[]:category:","category:",justcat);
    gsub("[[][[]:","",justcat);
    gsub("[[][[]","",justcat);
    gsub("]]","",justcat);
    gsub("'"'''"'","",justcat);
    gsub("'"''"'","",justcat);
    gsub("<[^>]*>","",justcat);
    gsub("{{cl[|]","Cat:",justcat);
    gsub("}}","",justcat);
    gsub("{{cl[|]","[[:Category:",cat);
    gsub("}}","]]",cat);
    sortcat = justcat;
    sub("^[cC]ategory:","",sortcat);
    print sortcat "%%%%%| " cat " || " result " || [[" logfile "#" justcat "|" date "]]"
  }
  cat = "";
}
' | sort -f | awk -v prevmonth=$PREVMONTH -v prevyear=$PREVYEAR -v nextmonth=$NEXTMONTH -v nextyear=$NEXTYEAR '
BEGIN {
  print "<div class=\"boilerplate metadata vfd\" style=\"background-color: #F3F9FF; margin: 0 auto; padding: 0 1px 0 0; border: 1px solid #AAAAAA; font-size:10px\">"
  print "{| width = \"100%\""
  print "|-"
  print "! width=\"50%\" align=\"left\"  | <font color=\"gray\"><</font> [[Wikipedia:Categories for deletion/Archive debates/" prevyear " " prevmonth " index|" prevyear " " prevmonth "]]"
  print "! width=\"50%\" align=\"right\" | [[Wikipedia:Categories for deletion/Archive debates/" nextyear " " nextmonth " index|" nextyear " " nextmonth "]] <font color=\"gray\">></font>"
  print "|}"
  print "</div>"
  print "The following is an alphabetical index of decisions made at [[Wikipedia:Categories for deletion]]."
  print ""
  print "{| class=\"wikitable\""
  print "! Category !! Decision !! Discussion_log"
}

{
  print "|-"
  row=$0
  sub("^.*%%%%%","",row)
  print row
}

END {
  print "|}"
}' >$MONTH