Script
editThis 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