Fanfic: Difference between revisions
From Betamountain.org
(Created page with "=How This Page Works= Due to the large number of elements, this page is built on information from this Google [https://docs.google.com/spreadsheets/d/1U_mtxhf4Qjx8RQWuWQoQFk5...") |
m (→Perl Example) |
||
Line 19: | Line 19: | ||
my $filename='temp.txt'; | my $filename='temp.txt'; | ||
my $NAME_CHECK=""; | my $NAME_CHECK=""; | ||
my $COUNTER=0; | my $COUNTER=0; | ||
Line 33: | Line 31: | ||
open(my $DATA_IN, '<:encoding(utf8)', $INPUT_FILE) or die "Could not open '$INPUT_FILE' $!\n"; | open(my $DATA_IN, '<:encoding(utf8)', $INPUT_FILE) or die "Could not open '$INPUT_FILE' $!\n"; | ||
open (my $DATA_OUT, '>:encoding(utf8)', "output.txt") or die "Could not open: $!\n"; | open (my $DATA_OUT, '>:encoding(utf8)', "output.txt") or die "Could not open: $!\n"; | ||
SETUP (); | SETUP (); #create page setup | ||
while (my $fields = $CSV->getline( $DATA_IN )) | while (my $fields = $CSV->getline( $DATA_IN )) | ||
{ | { | ||
##1 #2 Title Author PERM Done? BM FF AO3 . Other1 . RATING LANGUAGE STYLE Chapter # Length Published Updated Description | |||
my $skip_1; | my $skip_1; | ||
my $SORT; | my $SORT; | ||
Line 62: | Line 57: | ||
my $DESC; | my $DESC; | ||
my $NOTES; | my $NOTES; | ||
my $SHADE; | my $SHADE; | ||
#### | #### | ||
$skip_1 = $fields->[0]; | |||
$SORT = $fields->[1]; | $SORT = $fields->[1]; | ||
$TITLE = $fields->[2]; | $TITLE = $fields->[2]; | ||
$AUTHOR = $fields->[3]; | $AUTHOR = $fields->[3]; | ||
$PERMISSION = $fields->[4]; | $PERMISSION = $fields->[4]; | ||
$DONE = $fields->[5]; | $DONE = $fields->[5]; | ||
$BM = $fields->[6]; | $BM = $fields->[6]; | ||
$FANFIC = $fields->[7]; | $FANFIC = $fields->[7]; | ||
$AO3 = $fields->[9]; | $AO3 = $fields->[9]; | ||
$OTHER = $fields->[11]; | $OTHER = $fields->[11]; | ||
$RATING = $fields->[13]; | $RATING = $fields->[13]; | ||
$LANGUAGE = $fields->[14]; | $LANGUAGE = $fields->[14]; | ||
$STYLE = $fields->[15]; | $STYLE = $fields->[15]; | ||
$CHAPTERS = $fields->[16]; | $CHAPTERS = $fields->[16]; | ||
$LENGTH = $fields->[17]; | $LENGTH = $fields->[17]; | ||
$PUBLISHED = $fields->[18]; | $PUBLISHED = $fields->[18]; | ||
$UPDATED = $fields->[19]; | $UPDATED = $fields->[19]; | ||
$DESC = $fields->[20]; | $DESC = $fields->[20]; | ||
$NOTES = $fields->[21]; | $NOTES = $fields->[21]; | ||
############# | |||
if ($skip_1=~ "X") | if ($skip_1=~ "X") | ||
{ | { | ||
#IGNORE ANYTHING WITH AN X IN THE FIRST COLUMN | |||
} | } | ||
else | else | ||
{ | { | ||
$COUNTER++; | |||
$COUNTER++; | if (0 == $COUNTER % 2) | ||
{ | |||
if (0 == $COUNTER % 2) { | |||
$SHADE="style=\"background:#D3D3D3\""; | $SHADE="style=\"background:#D3D3D3\""; | ||
} | |||
else | |||
{ | |||
$SHADE=""; | $SHADE=""; | ||
} | |||
} | |||
#print $DATA_OUT "| $SORT\n"; | #print $DATA_OUT "| $SORT\n"; | ||
#print $DATA_OUT "| {{#ifexist: $TITLE | [[$TITLE]] | $TITLE }} \n"; #Too intensive for Mediawiki | |||
#print $DATA_OUT "| {{#ifexist: $TITLE | [[$TITLE]] | $TITLE }} \n"; | |||
print $DATA_OUT "|$SHADE|$COUNTER\n"; | |||
if ($DONE =~ "N") | if ($DONE =~ "N") | ||
Line 167: | Line 146: | ||
print $DATA_OUT "|$SHADE|\n"; | print $DATA_OUT "|$SHADE|\n"; | ||
} | } | ||
print $DATA_OUT "|$SHADE|$RATING\n"; | |||
#print $DATA_OUT "| $LANGUAGE\n"; | |||
#print $DATA_OUT "| $STYLE\n"; | |||
print $DATA_OUT "|$SHADE|$RATING\n"; | #print $DATA_OUT "| $CHAPTERS\n"; | ||
#print $DATA_OUT "| $LANGUAGE\n"; | print $DATA_OUT "|$SHADE|$LENGTH\n"; | ||
#print $DATA_OUT "| $STYLE\n"; | print $DATA_OUT "|$SHADE|$PUBLISHED\n"; | ||
#print $DATA_OUT "| $CHAPTERS\n"; | #print "UPDATED: $UPDATED\n"; | ||
print $DATA_OUT "|$SHADE|$LENGTH\n"; | #print "DESC: $DESC\n"; | ||
print $DATA_OUT "|$SHADE|$PUBLISHED\n"; | #print "NOTES: $NOTES\n"; | ||
#print "UPDATED: $UPDATED\n"; | print $DATA_OUT "|-\n"; | ||
#print "DESC: $DESC\n"; | print "$COUNTER - $TITLE-\n"; | ||
#print "NOTES: $NOTES\n"; | |||
print $DATA_OUT "|-\n"; | |||
print "-- | |||
} | } | ||
######## | ######## | ||
$skip_1=""; | $skip_1=""; | ||
$SORT=""; | $SORT=""; | ||
$TITLE=""; | $TITLE=""; | ||
$AUTHOR=""; | $AUTHOR=""; | ||
$PERMISSION=""; | $PERMISSION=""; | ||
$DONE=""; | $DONE=""; | ||
$BM=""; | $BM=""; | ||
$FANFIC=""; | $FANFIC=""; | ||
$AO3=""; | $AO3=""; | ||
$OTHER=""; | $OTHER=""; | ||
$RATING=""; | $RATING=""; | ||
$LANGUAGE=""; | $LANGUAGE=""; | ||
$STYLE=""; | $STYLE=""; | ||
$CHAPTERS=""; | $CHAPTERS=""; | ||
$LENGTH=""; | $LENGTH=""; | ||
$PUBLISHED=""; | $PUBLISHED=""; | ||
$UPDATED=""; | $UPDATED=""; | ||
$DESC=""; | $DESC=""; | ||
$NOTES=""; | $NOTES=""; | ||
#### | #### | ||
} | } | ||
if (not $CSV->eof) | if (not $CSV->eof) | ||
{ | { | ||
Line 215: | Line 189: | ||
close $DATA_IN; | close $DATA_IN; | ||
print $DATA_OUT "|}\n"; | print $DATA_OUT "|}\n"; | ||
FINISHED (); | |||
close $DATA_OUT; | close $DATA_OUT; | ||
sub CATEGORY | sub CATEGORY | ||
Line 244: | Line 216: | ||
print $DATA_OUT "'''''Note:''' This page is under construction and there are parts missing from the list (apologies to AKK)!.''\n\n"; | print $DATA_OUT "'''''Note:''' This page is under construction and there are parts missing from the list (apologies to AKK)!.''\n\n"; | ||
print $DATA_OUT "{| class=\"wikitable sortable\" style=\"margin: 1ex auto 1ex auto\"\n"; | print $DATA_OUT "{| class=\"wikitable sortable\" style=\"margin: 1ex auto 1ex auto\"\n"; | ||
print $DATA_OUT "! Sort\n"; | |||
print $DATA_OUT "! Title\n"; | print $DATA_OUT "! Title\n"; | ||
print $DATA_OUT "! Author\n"; | print $DATA_OUT "! Author\n"; | ||
Line 258: | Line 230: | ||
print $DATA_OUT "! Published\n"; | print $DATA_OUT "! Published\n"; | ||
print $DATA_OUT "|-\n"; | print $DATA_OUT "|-\n"; | ||
} | |||
sub FINISHED | |||
{ | |||
print $DATA_OUT "\n\n\n"; | |||
print $DATA_OUT "[[Category:Spreadsheet]]\n"; | |||
print $DATA_OUT "[[Category:Perl]]\n"; | |||
} | } | ||
</pre> | </pre> |
Revision as of 10:29, 24 March 2019
How This Page Works
Due to the large number of elements, this page is built on information from this Google spreadsheet.
Content adds\edits\etc are made to the spreadsheet and then downloaded as a CSV.
The CSV is pulled through a Perl script and formatted for the page information, then posted. There should be no direct edits to the page itself, only exports from the Perl output.
Perl Example
Example code
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Text::CSV; my $filename='temp.txt'; my $NAME_CHECK=""; my $COUNTER=0; my $INPUT_FILE = $ARGV[0] or die "Need to get CSV file on the command line\n"; my $CSV = Text::CSV->new ({ binary => 1, auto_diag => 1, sep_char => ',' # not really needed as this is the default } ); open(my $DATA_IN, '<:encoding(utf8)', $INPUT_FILE) or die "Could not open '$INPUT_FILE' $!\n"; open (my $DATA_OUT, '>:encoding(utf8)', "output.txt") or die "Could not open: $!\n"; SETUP (); #create page setup while (my $fields = $CSV->getline( $DATA_IN )) { ##1 #2 Title Author PERM Done? BM FF AO3 . Other1 . RATING LANGUAGE STYLE Chapter # Length Published Updated Description my $skip_1; my $SORT; my $TITLE; my $AUTHOR; my $PERMISSION; my $DONE; my $BM; my $FANFIC; my $AO3; my $OTHER; my $RATING; my $LANGUAGE; my $STYLE; my $CHAPTERS; my $LENGTH; my $PUBLISHED; my $UPDATED; my $DESC; my $NOTES; my $SHADE; #### $skip_1 = $fields->[0]; $SORT = $fields->[1]; $TITLE = $fields->[2]; $AUTHOR = $fields->[3]; $PERMISSION = $fields->[4]; $DONE = $fields->[5]; $BM = $fields->[6]; $FANFIC = $fields->[7]; $AO3 = $fields->[9]; $OTHER = $fields->[11]; $RATING = $fields->[13]; $LANGUAGE = $fields->[14]; $STYLE = $fields->[15]; $CHAPTERS = $fields->[16]; $LENGTH = $fields->[17]; $PUBLISHED = $fields->[18]; $UPDATED = $fields->[19]; $DESC = $fields->[20]; $NOTES = $fields->[21]; ############# if ($skip_1=~ "X") { #IGNORE ANYTHING WITH AN X IN THE FIRST COLUMN } else { $COUNTER++; if (0 == $COUNTER % 2) { $SHADE="style=\"background:#D3D3D3\""; } else { $SHADE=""; } #print $DATA_OUT "| $SORT\n"; #print $DATA_OUT "| {{#ifexist: $TITLE | [[$TITLE]] | $TITLE }} \n"; #Too intensive for Mediawiki print $DATA_OUT "|$SHADE|$COUNTER\n"; if ($DONE =~ "N") { print $DATA_OUT "|$SHADE|$TITLE\n"; } else { print $DATA_OUT "|$SHADE|[[$TITLE]]\n"; #print $DATA_OUT "|\n"; } print $DATA_OUT "|$SHADE|$AUTHOR\n"; #print "PERMISSION: $PERMISSION\n"; #print "DONE: $DONE\n"; #print $DATA_OUT "|[[$TITLE]]\n"; if ($FANFIC=~ "^http(.*)") { print $DATA_OUT "|$SHADE|[$FANFIC FF]\n"; } else { print $DATA_OUT "|$SHADE|\n"; } if ($AO3=~ "^http(.*)") { print $DATA_OUT "|$SHADE|[$AO3 Ao3 ]\n"; } else { print $DATA_OUT "|$SHADE|\n"; } if ($OTHER=~ "^http(.*)") { print $DATA_OUT "|$SHADE|[$OTHER Site]\n"; } else { print $DATA_OUT "|$SHADE|\n"; } print $DATA_OUT "|$SHADE|$RATING\n"; #print $DATA_OUT "| $LANGUAGE\n"; #print $DATA_OUT "| $STYLE\n"; #print $DATA_OUT "| $CHAPTERS\n"; print $DATA_OUT "|$SHADE|$LENGTH\n"; print $DATA_OUT "|$SHADE|$PUBLISHED\n"; #print "UPDATED: $UPDATED\n"; #print "DESC: $DESC\n"; #print "NOTES: $NOTES\n"; print $DATA_OUT "|-\n"; print "$COUNTER - $TITLE-\n"; } ######## $skip_1=""; $SORT=""; $TITLE=""; $AUTHOR=""; $PERMISSION=""; $DONE=""; $BM=""; $FANFIC=""; $AO3=""; $OTHER=""; $RATING=""; $LANGUAGE=""; $STYLE=""; $CHAPTERS=""; $LENGTH=""; $PUBLISHED=""; $UPDATED=""; $DESC=""; $NOTES=""; #### } if (not $CSV->eof) { $CSV->error_diag(); } close $DATA_IN; print $DATA_OUT "|}\n"; FINISHED (); close $DATA_OUT; sub CATEGORY { my $in=shift; if (defined $in && length $in > 0) { #print $fh "[[Category:$in]]\n"; } } sub BOX_OUTPUT { my ($type, $val) = @_; if (defined $val && length $val > 0) { print "$type: $val\n"; } } sub SETUP { print $DATA_OUT "See Also [[:Category:Fanfic]]\n\n"; print $DATA_OUT "'''''Note:''' This page is under construction and there are parts missing from the list (apologies to AKK)!.''\n\n"; print $DATA_OUT "{| class=\"wikitable sortable\" style=\"margin: 1ex auto 1ex auto\"\n"; print $DATA_OUT "! Sort\n"; print $DATA_OUT "! Title\n"; print $DATA_OUT "! Author\n"; #print $DATA_OUT "! BM\n"; print $DATA_OUT "! FF\n"; print $DATA_OUT "! AO3\n"; print $DATA_OUT "! Site\n"; print $DATA_OUT "! Rating\n"; #print $DATA_OUT "! Language\n"; #print $DATA_OUT "! Style\n"; #print $DATA_OUT "! Chapters\n"; print $DATA_OUT "! Length\n"; print $DATA_OUT "! Published\n"; print $DATA_OUT "|-\n"; } sub FINISHED { print $DATA_OUT "\n\n\n"; print $DATA_OUT "[[Category:Spreadsheet]]\n"; print $DATA_OUT "[[Category:Perl]]\n"; }