• Announcements

    Gizmodo eBay Strangeness Score Generator

    eBayLogoTM.gifWell, ask and you shall receive. Kind reader K sent us his homebrew GSS generator written in PHP. It's a fascinating piece of code using high-level algorithms and math to prove that the post length and number of uppercase characters can be used to measure the total insanity of any eBay post. Case in point:

    Auction 1 - PLEASE HELP!WHAT'S GROWING ON MY HEAD!! MYSTERY AUCTION GSS Score: 66,731

    Auction 2 - EXTRA LARGE HOBO BIG GREEN PURSE BAG RING NEW GSS Score: 1,273

    As we see, even if the poster tends to use capital letters, the GSS generator is not fooled.

    The GSS Generator is available after the jump for further study. I suspect it might be slightly insecure and therefore would like a few pairs of eyes to ensure that we can indeed host this valuable tool on a server someday, thereby allowing millions of men and women to separate the eBay wheat from the eBay insane people.

    Related
    eBay Deal of the Day: Vampire Killing Kit

    RUN AT YOUR OWN RISK - I'm not going to go through these to make sure they don't "rm -rf" your boot dir.

    <?Php
    /*
    Simple form to grab eBay auction page and calculate Gizmodo Strangeness Score

    I take no responsibility for anything done with any of this. Use at your own risk.
    More testing is proably needed.

    */

    ?>
    <html>
    <head>
    <title>GSS Generator Beta</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <form action="gss.php" method="post" name="url_form">
    <table width="75%" border="1" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF">
    <tr>
    <td bgcolor="#000000"><font color="#FFFFFF"><strong>Enter URL </strong></font></td>
    </tr>
    <tr>
    <td><input name="url" type="text" size="100"></td>
    </tr>
    <tr>
    <td><input type="submit" name="Submit" value="Submit"></td>
    </tr>
    </table>
    </form>
    <?Php

    if(isset($_POST['url']) ) {

    $url_to_calc = $_POST['url'];

    if( $buffer = file_get_contents($url_to_calc) ) {


    $begin_string = "<!— Begin Description —>";
    $end_string = "<!— End Description —>";

    //Find Begin and end auction crap
    $beg_pos = strpos($buffer,$begin_string);
    $end_pos = strpos($buffer,$end_string,$beg_pos);

    //grab just stuff between begin and end auction comments
    $desc_text = substr($buffer,($beg_pos + strlen($begin_string)),($end_pos - $beg_pos));

    //Strip out the tags then strip out space
    $strip_text = strip_tags($desc_text);
    $strip_text = str_replace(" ","",$strip_text);
    //Strip out line breaks and returns (proabbly don't need to do this)
    $strip_text = preg_replace("/(\r\n|\n|\r)/", "", $strip_text);

    //find lenght of stripped text
    $len_strip_text = strlen($strip_text);


    //Counter vars
    $num_lower = 0;
    $num_upper = 0;
    $num_other = 0;

    //loop through stripped text count upper, lower and other chars
    for($x = 0; $x < $len_strip_text; $x++) {
    $test_char = substr($strip_text,$x,1);

    $ascii_num = ord($test_char);

    if( ($ascii_num >= 97) && ($ascii_num <= 122) ){
    $num_lower++;
    } else {
    if( ($ascii_num >= 65) && ($ascii_num <= 90) ) {
    $num_upper++;
    } else {
    $num_other++;
    }
    }

    }

    //Calculate Gizmodo Strangeness Score
    $gss = ($len_strip_text - $num_other) * ($num_upper / $num_lower);



    echo "<em>URL = $url_to_calc</em>";
    ?>
    <table width="75%" border="1" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF">
    <tr bgcolor="#000000">
    <td colspan="2"><font color="#FFFFFF"><strong>Summary Data:</strong></font></td>
    </tr>
    <tr>
    <td width="33%" bgcolor="#666666"><div align="right"><strong><font color="#FFFFFF" size="-1">Total Chars</font></strong></div></td>
    <td width="67%" bgcolor="#CCCCCC"><strong>&nbsp; <?Php echo number_format($len_strip_text); ?></strong></td>
    </tr>
    <tr>
    <td bgcolor="#666666"><div align="right"><strong><font color="#FFFFFF" size="-1">Number uppercase</font></strong></div></td>
    <td bgcolor="#CCCCCC"><strong>&nbsp; <?Php echo number_format($num_upper); ?></strong></td>
    </tr>
    <tr>
    <td bgcolor="#666666"><div align="right"><strong><font color="#FFFFFF" size="-1">Number lowercase</font></strong></div></td>
    <td bgcolor="#CCCCCC"><strong>&nbsp; <?Php echo number_format($num_lower); ?></strong></td>
    </tr>
    <tr>
    <td bgcolor="#666666"><div align="right"><strong><font color="#FFFFFF" size="-1">Number other chars</font></strong></div></td>
    <td bgcolor="#CCCCCC"><strong>&nbsp; <?Php echo number_format($num_other); ?></strong></td>
    </tr>
    <tr>
    <td bgcolor="#666666"><div align="right"><strong><font color="#FFFFFF" size="-1">Gizmodo
    Strangeness Score* </font></strong></div></td>
    <td bgcolor="#CCCCCC"><strong>&nbsp; <?Php echo number_format($gss,4); ?></strong></td>
    </tr>
    </table>
    <BR><font size="-1"><em>*(Number Chars - Number Other Chars) x (Number Upper / Number Lower)</em></font><BR><BR>


    <?Php
    echo "<BR>Stripped Text (blank space removed): <BR>";
    echo $strip_text;

    } else {
    echo "ERROR fetching file";
    }

    }

    ?>
    </body>
    </html>

    Here is an interesting command-line version in Perl by Thomas:

    #!/usr/bin/perl

    use LWP::Simple;

    {

    if (@ARGV[0] eq "")
    {
    print "Usage: weirdness.pl <URL>\n";
    exit;
    }
    $url = @ARGV[0];

    $buffer = get "$url";

    $buffer =~ s/<(?:[^>'"]*|(['"]).*?\1)*>//gs;

    $length = length($buffer);
    @uppers = ($buffer =~ /([A-Z])/g);
    @lowers = ($buffer =~ /([a-z])/g);
    $num_upper = @uppers;
    $num_lower = @lowers;


    print "Non-html chars: $length\n";
    print "upper chars: $num_upper\n";
    print "lower chars: $num_lower\n\n";

    #$score = $num_upper/$num_lower;
    $ratio = $num_upper/$num_lower;
    $score = $ratio * $length;
    printf("upper-to-lower ratio: %.2f\n", $ratio);
    printf("Weirdness score: %.2f\n", $score);

    Loading comments ...