User:KingAragorn Bot/Scripts: Difference between revisions

From Tolkien Gateway
No edit summary
Line 1: Line 1:
__NOTOC__''Note: This code may need to be updated/amended before it can be used on different Wikis.''
==Common scripts==
=Tolkien Gateway=
===Changing categories===
==Mass re-linking==
<pre>
<pre>
using System;
using System;
Line 7: Line 6:
class MyBot : Bot  
class MyBot : Bot  
{  
{  
        public static void Main()  
public static void Main()  
        {  
{
                Site site = new Site("http://tolkiengateway.net", "KingAragorn Bot", "PASSWORD");
Site site = new Site("http://tolkiengateway.net", "KingAragorn Bot", "PASSWORD");  
 
 
 
                PageList b = new PageList(site);
                b.FillFromFile("PageList.txt");
                foreach (Page c in b) {
                PageList i = new PageList(site);
                i.FillFromLinksToPage(c.title);
            i.LoadEx3();   
                foreach (Page p in i) {
 
                      p.text = p.text.Replace("[[Rankin/Bass' The Hobbit]]", "[[The Hobbit (1977 film)]]");


PageList p = new PageList(site);
p.FillAllFromCategory("Vinyar Tengwar issues");
p.Load();
p.RemoveFromCategory("Vinyar Tengwar issues");
p.AddToCategory("Vinyar Tengwar");
p.SaveSmoothly(1, "Bot comment: changed category.", true);
}


                      p.text = p.text.Replace("Rankin/Bass' The Hobbit|", "The Hobbit (1977 film)|");
                      p.text = p.text.Replace("[[Ralph Bakshi's The Lord of the Rings]]", "[[The Lord of the Rings (1978 film)]]");
                      p.text = p.text.Replace("Ralph Bakshi's The Lord of the Rings|", "The Lord of the Rings (1978 film)|");
                      p.text = p.text.Replace("[[Rankin/Bass' The Return of the King]]", "[[The Return of the King (1980 film)]]");
                      p.text = p.text.Replace("Rankin/Bass' The Return of the King|", "The Return of the King (1980 film)|");
                p.Save("Bot comment: fixing links", true);
}
}
}
        }
}
</pre>
</pre>
Task history:
*Re-linked all links to correct MERP article rather than the redirect. (28/02/2011)
*Re-linked all articles to [[The Hobbit films]] rather than its redirects. (28/02/2011)
*Re-linked all articles from:
**''Rankin/Bass' The Hobbit'' to [[The Hobbit (1977 film)]];
**''Ralph Bakshi's The Lord of the Rings'' to [[The Lord of the Rings (1978 film)]];
**''Rankin/Bass' The Return of the King'' to [[The Return of the King (1980 film)]]. (29/03/2011)


==Re-linking==
===Re-linking===
<pre>
<pre>
using System;
using System;
Line 68: Line 27:
class MyBot : Bot  
class MyBot : Bot  
{  
{  
        public static void Main()  
public static void Main()  
        {  
{  
                Site site = new Site("http://tolkiengateway.net", "KingAragorn Bot", "PASSWORD");  
Site site = new Site("http://tolkiengateway.net", "KingAragorn Bot", "PASSWORD");  


                PageList p = new PageList(site);
PageList p = new PageList(site);
                p.FillFromCustomSpecialPage("Whatlinkshere/Narn i Hîn Húrin", 500);
p.FillFromLinksToPage("Melkor");
                p.Load();
p.Load();
                foreach (Page i in p)
foreach (Page i in p)
                        i.text = i.text.Replace("Narn i Hîn Húrin|", "Narn i Chîn Húrin|");
i.text = i.text.Replace("[[Melkor]]", "[[Morgoth|Melkor]]");
                foreach (Page j in p)
p.SaveSmoothly(1, "Bot message: re-linked.", true);
                        j.text = j.text.Replace("[[Narn i Hîn Húrin]]", "[[Narn i Chîn Húrin]]");
}  
                p.SaveSmoothly(2, "Re-linking.", true);
        }  


}
}
</pre>
</pre>
Task history:
*''Peter Jackson's The Lord of the Rings'' to [[The Lord of the Rings: The Motion Picture Trilogy]] (2 July 2010)
*''J.R.R. Tolkien's War in Middle-Earth (1988 video game)'' to [[J.R.R. Tolkien's War in Middle Earth]] (2 July 2010)
*''Greek Tolkien Society'' to [[Ellinikós Sýllogos Philon Tólkin]] (2 July 2010)
*''Birthday Party'' to [[Bilbo's Farewell Party]] (3 July 2010)
*<s>''Of Beleriand and its Realms'' to '''Of Beleriand and Its Realms''' (3 July 2010)</s>
*''Of Beleriand and Its Realms'' to [[Of Beleriand and its Realms]] (20 January 2011)
*Etc.


==Changing categories==
To avoid certain namespaces, add the following before p.Load():
<pre>
<pre>
using System;
p.RemoveNamespaces(new int[] {1,3});
using DotNetWikiBot;
class MyBot : Bot
{
public static void Main()
{
Site site = new Site("http://tolkiengateway.net", "KingAragorn Bot", "PASSWORD");
 
PageList p = new PageList(site);
  p.FillAllFromCategory("Images of The Lord of the Rings: The White Council");
  p.Load();
  p.RemoveFromCategory("Images of The Lord of the Rings: The White Council");
  p.AddToCategory("Images from The Lord of the Rings: The White Council");
  p.SaveSmoothly(5, "Bot Comment: Changing Categories", true);
}
 
}
</pre>
</pre>


=One Wiki to Rule them All=
To include specific namespaces only, add the following before p.Load():
 
== Add Category to Recently Uploaded Images ==
<pre>
<pre>
using System;
p.FilterNamespaces(new int[] {1,3});
using DotNetWikiBot;
class MyBot : Bot
{
public static void Main()
{
Site site = new Site("http://tolkiengateway.net", "KingAragorn Bot", "PASSWORD");
 
PageList p = new PageList(site);
        p.FillFromCustomSpecialPage("Log/Upload", 29);
        p.Load();
        p.AddToCategory("Images of Tengwar");
        p.SaveSmoothly(3, "Bot Comment: adding category", true);
}
}
 
</pre>
</pre>
List of built-in namespaces and their corresponding integers:
*0 - Main
*1 - Talk
*2 - User
*3 - User talk
*4 - Tolkien Gateway
*5 - Tolkien Gateway talk
*6 - File
*7 - File talk
*8 - MediaWiki
*9 - MediaWiki talk
*10 - Template
*11 - Template talk
*12 - Help
*13 - Help talk
*14 - Category
*15 - Category talk


== Removal of Spoiler Template from every page which has it ==
==Irregular scripts==
===Mass re-linking===
<pre>
<pre>
using System;
using System;
Line 142: Line 76:
class MyBot : Bot  
class MyBot : Bot  
{  
{  
public static void Main()  
        public static void Main()  
{  
        {  
Site site = new Site("http://lotr.wikia.com", "KingAragorn Bot", "PASSWORD");  
                Site site = new Site("http://tolkiengateway.net", "KingAragorn Bot", "PASSWORD");  
PageList p = new PageList(site);
        p.FillFromCustomSpecialPage("Whatlinkshere/Template:Spoiler", 500);
        p.Load();
        p.RemoveTemplate("Spoiler");
        p.SaveSmoothly(3, "Bot Comment: removing spoiler template", true);
}
}
</pre>


== Reverting a Vandal Accounts Contributions (not tested + needs rollback rights) ==
                PageList b = new PageList(site);
<pre>
                b.FillFromFile("PageList.txt");
using System;
                foreach (Page c in b) {
using DotNetWikiBot;
                PageList i = new PageList(site);
                i.FillFromLinksToPage(c.title);
            i.LoadEx3();  
                foreach (Page p in i) {


class MyBot : Bot
                      p.text = p.text.Replace("[[Rankin/Bass' The Hobbit]]", "[[The Hobbit (1977 film)]]");
{
                      p.text = p.text.Replace("Rankin/Bass' The Hobbit|", "The Hobbit (1977 film)|");
    public static void Main()
                      p.text = p.text.Replace("[[Ralph Bakshi's The Lord of the Rings]]", "[[The Lord of the Rings (1978 film)]]");
    {
                      p.text = p.text.Replace("Ralph Bakshi's The Lord of the Rings|", "The Lord of the Rings (1978 film)|");
        Site enLOTR = new Site("http://lotr.wikia.com/wiki/", "KingAragorn Bot", "PASSWORD")
                      p.text = p.text.Replace("[[Rankin/Bass' The Return of the King]]", "[[The Return of the King (1980 film)]]");
        p.FillFromUserContributions ("VANDAL USERNAME" "500",);
                      p.text = p.text.Replace("Rankin/Bass' The Return of the King|", "The Return of the King (1980 film)|");
        p.Load();
                p.Save("Bot comment: fixing links", true);
        p.Revert("Bot Comment: Automatic Reverting of a vandal accounts contributions", false);
    }
}
}
</pre>
}
 
        }
== Adding the Stub template to all pages in [[Special:Shortpages]] ==
<pre>
using System;
using DotNetWikiBot;


class MyBot : Bot
{
    public static void Main()
    {
        Site enLOTR = new Site("http://lotr.wikia.com/wiki/", "KingAragorn Bot", "PASSWORD");
        PageList p = new PageList(enLOTR);
        p.FillFromCustomSpecialPage("Shortpages", 1000);
        p.Load();
        p.RemoveTemplate("stub");
        p.AddTemplate("{{stub}}");
        p.SaveSmoothly(5, "Bot Comment: Adding stub template - article is listed under [[Special:Shortpages]]", true);
    }
}
}
</pre>
== Changing Categories ==
<pre>
using System;
using DotNetWikiBot;


class MyBot : Bot
{
public static void Main()
{
  Site enLOTR = new Site("http://lotr.wikia.com/wiki/", "KingAragorn Bot", "PASSWORD");
  PageList p = new PageList(enLOTR);
  p.FillAllFromCategory("Mountains of Middle-earth");
  p.load();
  p.RemoveFromCategory("Mountains of Middle-earth ")
  p.AddToCategory("Mountains")
  p.SaveSmoothly(5, "Bot Comment: Changing Categories", true)
  }
}
</pre>
</pre>
__NOTOC__

Revision as of 15:53, 20 March 2012

Common scripts

Changing categories

using System;
using DotNetWikiBot;
class MyBot : Bot 
{ 
	public static void Main() 
	{
		Site site = new Site("http://tolkiengateway.net", "KingAragorn Bot", "PASSWORD"); 

		PageList p = new PageList(site);
		p.FillAllFromCategory("Vinyar Tengwar issues");
		p.Load();
		p.RemoveFromCategory("Vinyar Tengwar issues");
		p.AddToCategory("Vinyar Tengwar");
		p.SaveSmoothly(1, "Bot comment: changed category.", true);
} 

}

Re-linking

using System;
using DotNetWikiBot;
class MyBot : Bot 
{ 
	public static void Main() 
	{ 
		Site site = new Site("http://tolkiengateway.net", "KingAragorn Bot", "PASSWORD"); 

		PageList p = new PageList(site);
 		p.FillFromLinksToPage("Melkor");
		p.Load();
		foreach (Page i in p)
			i.text = i.text.Replace("[[Melkor]]", "[[Morgoth|Melkor]]");
		p.SaveSmoothly(1, "Bot message: re-linked.", true);
	} 

}

To avoid certain namespaces, add the following before p.Load():

		p.RemoveNamespaces(new int[] {1,3});

To include specific namespaces only, add the following before p.Load():

		p.FilterNamespaces(new int[] {1,3});

List of built-in namespaces and their corresponding integers:

  • 0 - Main
  • 1 - Talk
  • 2 - User
  • 3 - User talk
  • 4 - Tolkien Gateway
  • 5 - Tolkien Gateway talk
  • 6 - File
  • 7 - File talk
  • 8 - MediaWiki
  • 9 - MediaWiki talk
  • 10 - Template
  • 11 - Template talk
  • 12 - Help
  • 13 - Help talk
  • 14 - Category
  • 15 - Category talk

Irregular scripts

Mass re-linking

using System;
using DotNetWikiBot;
class MyBot : Bot 
{ 
        public static void Main() 
        { 
                Site site = new Site("http://tolkiengateway.net", "KingAragorn Bot", "PASSWORD"); 

                PageList b = new PageList(site);
                b.FillFromFile("PageList.txt");
                foreach (Page c in b) {
                PageList i = new PageList(site);
                i.FillFromLinksToPage(c.title);
            i.LoadEx3();    
                foreach (Page p in i) {

                      p.text = p.text.Replace("[[Rankin/Bass' The Hobbit]]", "[[The Hobbit (1977 film)]]");
                      p.text = p.text.Replace("Rankin/Bass' The Hobbit|", "The Hobbit (1977 film)|");
                      p.text = p.text.Replace("[[Ralph Bakshi's The Lord of the Rings]]", "[[The Lord of the Rings (1978 film)]]");
                      p.text = p.text.Replace("Ralph Bakshi's The Lord of the Rings|", "The Lord of the Rings (1978 film)|");
                      p.text = p.text.Replace("[[Rankin/Bass' The Return of the King]]", "[[The Return of the King (1980 film)]]");
                      p.text = p.text.Replace("Rankin/Bass' The Return of the King|", "The Return of the King (1980 film)|");
                p.Save("Bot comment: fixing links", true);
}
}
        } 

}