Malldiskussion:Antalsidor

Sidans innehåll stöds inte på andra språk.
Från Wikisource, det fria biblioteket.

Spöksidor[redigera]

Sedan en tid, omkring mitten av juli, så skiljer sig antalet sidor i sidnamnrymden (104) 17 364[24-03-01] jämfört med andra sätt att räkna med omkring 316 sidor, t.ex. här. Differensen tycks inte påverkas av nyskapade eller borttagna sidor och de andra namnrymderna verkar vara OK. Inte något jättestort problem alltså men det skulle vara bra om det gick att få bort.--Thurs (diskussion) 6 september 2015 kl. 16.09 (CEST)[svara]

Följande två tabeller visar vilka sidor som botkoden nedan hittar i namnrymd 104. Endast var 1000:e sida är med, men det kanske räcker för att jämföra med "andra sätt att räkna".
Sorterat på title Sorterat på pageid
--Larske (diskussion) 6 september 2015 kl. 22.59 (CEST)[svara]
Det verkar som om det API som robotkoden använder hittar sidor som "dynamicpagelist" missar. Det går bra att jämföra om man sorterar robotens resultat sorterat på pageid med dynamicpagelist sorterat på "created". Första diffen uppstår redan på rad 9.
dynamicpagelist api
  1. Regeringsform 1634
  2. Regeringsform 1809
  3. Regeringsform 1772
  4. Internationalen
  5. Regeringsform 1719
  6. Riddarhusordning
  7. Alexander I:s tal vid lantdagens avslutande den 19 juli 1809
  8. Finlands självständighetsförklaring
  9. Ridderskapets och adelns privilegier
  10. Jesus kär, gå ej förbi mig
  11. O du saliga, o du heliga
  12. Ack! vad jag hatar den man
  13. Den enda stunden
  14. Allt sen människor först
  15. Bergsmannen
  16. Bilden (Geijer)
  17. Reflexion
  18. Dalmarsch
  19. De små
  20. Epilog (Andersson)
1 5697 Sida:Forsskål, Tankar om borgerliga friheten, sid 1.jpg
2 5698 Sida:Forsskål, Tankar om borgerliga friheten, sid 2.jpg
3 5699 Sida:Forsskål, Tankar om borgerliga friheten, sid 3.jpg
4 5700 Sida:Forsskål, Tankar om borgerliga friheten, sid 4.jpg
5 5701 Sida:Forsskål, Tankar om borgerliga friheten, sid 5.jpg
6 5702 Sida:Forsskål, Tankar om borgerliga friheten, sid 6.jpg
7 5703 Sida:Forsskål, Tankar om borgerliga friheten, sid 7.jpg
8 5704 Sida:Forsskål, Tankar om borgerliga friheten, sid 8.jpg
9 5749 Sida:Whitlock, skolans ställning-1.jpg
10 5750 Sida:Whitlock, skolans ställning-3.jpg
11 5751 Sida:Whitlock, skolans ställning-2.jpg
12 5753 Sida:Whitlock, skolans ställning-4.jpg
13 5754 Sida:Whitlock, skolans ställning-5.jpg
14 5755 Sida:Whitlock, skolans ställning-6.jpg
15 5756 Sida:Whitlock, skolans ställning-7.jpg
16 5757 Sida:Whitlock, skolans ställning-8.jpg
17 5758 Sida:Whitlock, skolans ställning-9.jpg
18 5759 Sida:Whitlock, skolans ställning-10.jpg
19 5760 Sida:Whitlock, skolans ställning-11.jpg
20 5761 Sida:Whitlock, skolans ställning-12.jpg
Frågan är nu om Sida:Whitlock, skolans ställning-1.jpg ska räknas eller ej. Jag ser inget konstigt med den, så den borde väl räknas och frågan blir då varför den tappas bort av "dynamicpagelist". --Larske (diskussion) 7 september 2015 kl. 00.23 (CEST)[svara]
Just den sidan raderade jag som test ikväll och återskapade sedan och created räknar av någon märklig anledning inte ursprungsdatumet utan återskapandedatumet så den ligger i slutet nu.--Thurs (diskussion) 7 september 2015 kl. 00.36 (CEST)[svara]
Där blev jag lurad! --Larske (diskussion) 7 september 2015 kl. 21.42 (CEST)[svara]
I ID-nummerordning skiljer sig räkningssätten först efter 60000 vilket är förväntat eftersom det är därefter omkring den 17 juli som skillnaden uppkommit.--Thurs (diskussion) 7 september 2015 kl. 20.46 (CEST)[svara]
Det var Robinson Crusoe's lefverne och äfventyr som ställde till det. apcontinue innehöll html-kod för apostroftecknet vilket fick beräkningen av "next" att gå fel och trunkera sidnamnet vilket fick nästa tugga att starta drygt 300 sidor för tidigt och därmed räknades de sidorna dubbelt. Jag har ändrat källkoden nedan och provkört och får nu resultatet 60886 sidor i namnrymd 104. Om det finns risk för att andra "specialtecken" html-kodas bör man kanske överväga någon mer generell modifiering som ersätter alla html-koder, men just nu tycks det räcka med apostroftecknet.
OBS ändringen nedan ser bara obegriplig ut om man inte är i redigeringsläge eftersom koden jag lagt till är next = next.Replace("'","'"); och ' ersätts ju med '. --Larske (diskussion) 7 september 2015 kl. 21.42 (CEST)[svara]
Mycket tack för den buggfixen. Jag har lämnat en blänkare om det på Hangsnas sida på Wikipedia så han/hon kommer säkert att fixa det snart.--Thurs (diskussion) 7 september 2015 kl. 21.54 (CEST)[svara]
HAN har nu kompletterat koden med Larskes tillägg och jag antar att detta är avsedd effekt. /Hangsna (diskussion) 7 september 2015 kl. 22.14 (CEST)[svara]
Tack, nu hoppas jag vi slipper spökena ett tag framöver.--Thurs (diskussion) 7 september 2015 kl. 23.16 (CEST)[svara]

Källkod:[redigera]

using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Xml;
using System.Threading;
using DotNetWikiBot;

class MyBot : Bot
{
        public static void Main()
        {
                string mall = "{{#switch:{{{1|0}}}\n|0=$0$\n|1=$1$\n|2=$2$\n|3=$3$\n|4=$4$\n|5=$5$\n|6=$6$\n|7=$7$\n|8=$8$\n|9=$9$\n|10=$10$\n|11=$11$\n|12=$12$\n|13=$13$\n|14=$14$\n|15=$15$\n|90=$90$\n|91=$91$\n|92=$92$\n|93=$93$\n|104=$104$\n|105=$105$\n|106=$106$\n|107=$107$\n|108=$108$\n|109=$109$\n|828=$828$\n|829=$829$\n}}<noinclude>\n{{/dok}}\n</noinclude>";
                string[] ns = {"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","90","91","92","93","104","105","106","107","108","109","828","829"};
                string password = File.ReadAllText("koden.txt").Trim();    //Hämtar koden från en textfil lokalt på datorn
                string botkonto = "HangsnaBot";
                Site site = new Site("https://sv.wikisource.org", botkonto, password);
                PageList pl = new PageList(site);
                Page p = new Page(site, "Mall:Antalsidor");
                p.Load();
                foreach(string n in ns)
                {
                                string next = "";
                                int tot = 0;
                                while(next != "Happy ending")
                                {
                                        string urlstr = "http://sv.wikisource.org/w/api.php?action=query&apfilterredir=nonredirects&list=allpages&aplimit=5000&apnamespace="+n+"&rawcontinue=&format=xml&apfrom="+next;
                                        string material = site.PostDataAndGetResult(urlstr, "");
                                                                                int s = material.Length;
                                        material = material.Replace("<p pageid=","<ppageid=");
                                        s = s-material.Length;
                                        tot = tot+s;
                                        if(material.IndexOf("apcontinue=") != -1)
                                        {
                                                next = material.Substring(0,material.IndexOf("/>"));
                                                next = next.Replace("'","'"); // fixar Robinson Crusoe's lefverne och äfventyr 
                                                                                                next = next.Substring(next.IndexOf("apcontinue=")+12,next.Length-next.IndexOf("apcontinue=")-14);
                                        }
                                        else
                                                next = "Happy ending";
                                }
                                mall = mall.Replace("$"+n+"$", tot.ToString());
                }
                p.text=mall;
                    site.defaultEditComment = "Uppdaterar mall";
                    site.minorEditByDefault = false;
                p.Save();
        }
}