http://qs321.pair.com?node_id=1130817


in reply to Dates of Monk promotion

You can actually view the times of some of your promotions that were tracked by the site by appending ";displaytype=xml" to the URL to your own "home node" and searching for "levelchange". For example, ?node=u65;displaytype=xml will show (only to u65) information that includes timestamps of level changes (that happened during the time window when that feature of the site was working).

- tye        

Replies are listed 'Best First'.
Re^2: Dates of Monk promotion (covered)
by choroba (Cardinal) on Jun 17, 2015 at 17:18 UTC
    Thanks. That makes my script that extracted the information from the Wayback Machine useless.

    Interestingly, the outputs of the XML and my script are almost the same. Here's how I extracted the information from the XML (specify its filename as a parameter to the following script):

    #!/usr/bin/perl use warnings; use strict; use WWW::Mechanize; use HTML::TableExtract; use XML::XSH2; my $w = 'WWW::Mechanize'->new; $w->get('http://www.perlmonks.org/?node=Voting%2FExperience%20System') +; my $te = 'HTML::TableExtract'->new( headers => [qw[ Level XP ]] ); $te->parse($w->content); my $table = ($te->tables)[0]->rows; package XML::XSH2::Map; our $string; package main; xsh << 'end.'; open {$ARGV[0]} ; $string = xsh:subst(normalize-space(//var[@name="levelchange"]), ';', +"\n", 'g') ; end. $string =~ s/^[0-9]+-//gm; $string =~ s/^([0-9]+)(.*)/$1$2 $table->[$1-1][1]/gm; print $string;

    You have to insert dashes into the dates to the output of the Wayback Machine to make it work:

    perl -pe 's/(....)(..)/$1-$2-/'

    I then used gnuplot to compare them:

    set term pngcairo size 1024, 800 set xdata time set timefmt "%Y-%m-%d" set format x '%Y/%m' plot 'pm-xp.txt' using 2:4 with lines title 'XP',\ '' using 2:($1*1000) with lines title 'Level',\ 'wayback.txt' using 1:2 with lines title 'Wayback Machine'

    Update: The image.

    لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
Re^2: Dates of Monk promotion (covered)
by QM (Parson) on Jun 17, 2015 at 14:59 UTC
    Or QM's level history (<a href="/index.pl?node=QM;displaytype=xml">QM's level history</a>), for those who have a unique page name as their username?

    Or perhaps more canonically QM's level history ([href://?node=QM;type=user;displaytype=xml|QM's level history]), for those who don't?

    But you still have to search for "levelchange".

    As stated earlier, this only works for the logged in user. Non-you targets get something, but not everything, and not the levelchange: Not tye's level history

    -QM
    --
    Quantum Mechanics: The dreams stuff is made of

Re^2: Dates of Monk promotion (covered)
by u65 (Chaplain) on Jun 19, 2015 at 15:14 UTC
Re^2: Dates of Monk promotion (covered)
by chacham (Prior) on Jun 17, 2015 at 14:48 UTC

    Nice!

    Is the x-y from x to y? The format seems to be: 1-2, 2-3, 3-4. 0-1 is listed in the normal details under "User since."

      Yep...

      echo "1-2 2009-08-29 08:54:42;2-3 2009-09-02 01:29:29;3-4 2009-09-03 0 +8:24:46;4-5 2009-09-10 08:50:28;5-6 2010-06-29 08:26:43;6-7 2010-09-0 +3 10:45:47;7-8 2012-04-01 23:00:22;8-9 2012-04-28 12:09:22;9-10 2012- +05-30 03:34:59;10-11 2014-11-30 09:34:57;11-12 2015-06-17 08:24:20" | + \ \ perl -nE '@a=split(/;/);for(@a){($a,$b)=split(/\s+(?=\d{4})/);say "$a: + $b";}' 1-2: 2009-08-29 08:54:42 2-3: 2009-09-02 01:29:29 3-4: 2009-09-03 08:24:46 4-5: 2009-09-10 08:50:28 5-6: 2010-06-29 08:26:43 6-7: 2010-09-03 10:45:47 7-8: 2012-04-01 23:00:22 8-9: 2012-04-28 12:09:22 9-10: 2012-05-30 03:34:59 10-11: 2014-11-30 09:34:57 11-12: 2015-06-17 08:24:20 # ^^^^^^^^^^ <- today of all days :)

        :)

        And here it is in SQL, should you want to use some FUNctions on the data.

        Should work in most RDBMS's, as long as they support recursive CTEs. Just replace the initial string with your own. And remove or replace "FROM Dual" with whatever works in your RDBMS.

        WITH Levels(String) AS ( SELECT '1-2 2011-11-15 07:42:33;2-3 2011-11-27 13:51:37;3-4 2011-12-0 +6 07:12:37;4-5 2011-12-09 15:28:52;5-6 2011-12-30 10:53:44;6-7 2012-0 +2-02 07:06:41;7-8 2012-03-20 06:36:12;8-9 2012-05-25 11:46:56;9-10 20 +12-08-14 06:04:53;10-11 2013-09-04 07:38:12;11-12 2014-03-26 06:30:49 +;12-13 2014-06-18 10:51:18;13-14 2014-11-13 14:14:53;14-15 2015-06-10 + 09:12:30' FROM Dual ), Split(Lvl, When, String) AS ( SELECT SUBSTR(String, INSTR(String, '-') + 1, 2), REPLACE(SUBSTR(String, INSTR(String, '-') + 03, 20), ';'), REPLACE(SUBSTR(String, INSTR(String, '-') + 23), ';', ' ') FROM Levels UNION ALL SELECT CAST(Split.Lvl + 1 AS VARCHAR2(2)), SUBSTR(Split.String, INSTR(Split.String, '-') + 03, 20), SUBSTR(Split.String, INSTR(Split.String, '-') + 23) FROM Split, Levels WHERE Split.String IS NOT NULL ) SELECT Lvl, When FROM Split;
Re^2: Dates of Monk promotion (covered)
by stevieb (Canon) on Jun 17, 2015 at 14:43 UTC

    This is great, even for those who might not ever want such a thing. Thanks tye!

    -stevieb

Re^2: Dates of Monk promotion (covered)
by u65 (Chaplain) on Jun 17, 2015 at 16:40 UTC

    Just what I was looking for--thanks, tye!