Re: Show currently playing song in signature/some talk about music & sigs

Connorhd wrote:

scottywz you should look at making your signature cache itself, its REALLY slow for me, rather annoying since it loads about 3 min after the rest of the page and makes everything move

What would we do without browser caches?

Re: Show currently playing song in signature/some talk about music & sigs

scottywz wrote:

To get a random quote without looking at my signature, go:
Random Quote
Random Quote (no title)
All Quotes (see below)
or All Quotes (no title) (see below)

In the query string, you can put in ?action=all_quotes and it will dump all the quotes. One problem: It does the same thing as ?action=random_quote which I have that way because, with variables $q[1], $q[2], etc., I want to display all those variables (they contain ^the quotes), but I don't know how. How do I get it to do that?

The code I have now is:

<?php 

/* A Huge Comment */ 

/* Start App */ 

$nlt = "\n";

/*                      Define quotes                      */
/***********************************************************/
/* (Use ".$nlt at the end of each string except the last.) */

    /* Quote 1 */
    $q1t1 = "\"You know I was thinking hype could really help you, Harold. You're hyper now, so just".$nlt;
    $q1t2 = "back off one letter, and you're there.\" - Red, The Red Green Show";
    $q[1] = $q1t1.$q1t2;

    /* Quote 2 */
    $q2t1 = "\"It's the Possom Lodge Word Game. You know everybody dreams about a two-week vacation".$nlt;
    $q2t2 = "in Hawaii. Well, now you can do more than just dream about it! Ha-ha! Now, you can sit".$nlt;
    $q2t3 = "down and plan it out on your brand new pad of paper!\" - Harold, The Red Green Show";
    $q[2] = $q2t1.$q2t2.$q2t3;

    /* Quote 3 */
    $q3t1 = "\"Can you hear me? Am I talking?\" - Red, The Red Green Show".$nlt;
    $q3t2 = "(After shooting holes inside his Possum van with the doors shut.)";
    $q[3] = $q3t1.$q3t2;

    /* Quote 4 */
    $q4t1 = "\"BOBBY, EAT YOUR CHICKEN!\" - Peggy, King of the Hill".$nlt;
    $q4t2 = "(After being angry at someone else.)";
    $q[4] = $q4t1.$q4t2;

    /* Quote 5 */
    $q5t1 = "Red: \"... This week, we got some good news, got some bad news.\"".$nlt;
    $q5t2 = "Harold: \"What's the bad news?\"".$nlt;
    $q5t3 = "Red: \"Meet my nephew, Harold. And, now, the good news....\"".$nlt;
    $q5t4 = "- Dialog from \"The Group Photo Project\", The Red Green Show";
    $q[5] = $q5t1.$q5t2.$q5t3.$q5t4;

/* End Define Quotes */

$st = $q[rand(1,5)].$nlnt; // The number after the comma should be replaced the number of quotes defined above

/* Don't mod past here unless you know the risks. */

$action = isset($_GET['action']); 

if (!$action) { 

$action = ""; 

} 

else { 

$action = $_GET['action']; 

} 

$title = isset($_GET['html_title']); 

if (!$title) { 

$title = ""; 

} 

else { 

$title = $_GET['html_title']; 

} 

/* If $title == 'yes' or undefined */

if ($action == 'random_quote' && !$title) {
header("Expires: Thu, 04 Jul 1776 00:00:00 GMT");              //
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //
header("Cache-Control: no-store, no-cache, must-revalidate");  // We don't want it cached. And, yes, the Declaration of Independence was signed on a Thursday.
header("Cache-Control: post-check=0, pre-check=0", false);     //
header("Pragma: no-cache");                                    //
echo '<title>Random Quote</title>'."\n\n".'<pre>'.$st.'</pre>'; // Where's the quote?
}

else if ($action == 'all_quotes' && !$title) {
header("Expires: Thu, 04 Jul 1776 00:00:00 GMT");              //
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //
header("Cache-Control: no-store, no-cache, must-revalidate");  // We don't want it cached. And, yes, the Declaration of Independence was signed on a Thursday.
header("Cache-Control: post-check=0, pre-check=0", false);     //
header("Pragma: no-cache");                                    //
echo '<title>All Quotes</title>'."\n\n".'<pre>'.$st.'</pre>'; // Where's the quote? // The All Quotes feature is not available yet.
} 

else if ($action == 'random_quote' && $title == 'yes') {
header("Expires: Thu, 04 Jul 1776 00:00:00 GMT");              //
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //
header("Cache-Control: no-store, no-cache, must-revalidate");  // We don't want it cached. And, yes, the Declaration of Independence was signed on a Thursday.
header("Cache-Control: post-check=0, pre-check=0", false);     //
header("Pragma: no-cache");                                    //
echo '<title>Random Quote</title>'."\n\n".'<pre>'.$st.'</pre>'; // Where's the quote?
}

else if ($action == 'all_quotes' && $title == 'yes') {
header("Expires: Thu, 04 Jul 1776 00:00:00 GMT");              //
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //
header("Cache-Control: no-store, no-cache, must-revalidate");  // We don't want it cached. And, yes, the Declaration of Independence was signed on a Thursday.
header("Cache-Control: post-check=0, pre-check=0", false);     //
header("Pragma: no-cache");                                    //
echo '<title>All Quotes</title>'."\n\n".'<pre>'.$st.'</pre>'; // Where's the quote? // The All Quotes feature is not available yet.
}

/* If $title == 'no' */ 

else if ($action == 'random_quote' && $title == 'no') {
header("Expires: Thu, 04 Jul 1776 00:00:00 GMT");              //
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //
header("Cache-Control: no-store, no-cache, must-revalidate");  // We don't want it cached. And, yes, the Declaration of Independence was signed on a Thursday.
header("Cache-Control: post-check=0, pre-check=0", false);     //
header("Pragma: no-cache");                                    //
echo '<pre>'.$st.'</pre>'; // Where's the quote?
}

else if ($action == 'all_quotes' && $title == 'no') {
header("Expires: Thu, 04 Jul 1776 00:00:00 GMT");              //
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //
header("Cache-Control: no-store, no-cache, must-revalidate");  // We don't want it cached. And, yes, the Declaration of Independence was signed on a Thursday.
header("Cache-Control: post-check=0, pre-check=0", false);     //
header("Pragma: no-cache");                                    //
echo '<pre>'.$st.'</pre>'; // Where's the quote? // The All Quotes feature is not available yet.
} 

/* End App */ 

?>

where /* A Huge Comment */ is, well, a huge comment.

Also html_title can be in the query string, but is optional. If it's not there or set to yes it will add an HTML <title> </title> to the output. If it's set to no it won't.

I got it to work but how do I put it into an image like you have in your sig?

53 (edited by scottywz 2005-06-29 19:05)

Re: Show currently playing song in signature/some talk about music & sigs

Here's how I have it:

NOTE. My host charges an extra $20 USD/year for unlimited subdomains. (I just have to make a directory called subdomain.scottywz.com or sig.scottywz.com or whatever.)
1. I made a directory called sig.scottywz.com (see above); however, you can call it whatever. Or, you can just skip this step.
2. Make a file called quotes.php like you did. It is easiest to call it that, but if you HAVE to call it something else, edit

include "quotes.php";

(see below code) to whatever.
3. Make a file called index.php with:

<?php 
    /* ScrobblerSig 2.1 by Timothy Humphrey (Humpty), http://timothyhumphrey.name/scrobblersig 
     * 
     * Contributors 
     * 
     * electrichamster - The original creator of ScrobblerSig 
     * russ 
     */ 
     
    /* ---------- Main User Config ---------- */ 
     
    /* 
     * The options that are listed below may be specified in the url if the allowParameters option is 
     * true.  To do so first append a question mark ? to the end of the url.  Next, specify the option 
     * name followed by an equal sign = and then the value; for example, option=value.  Multiple options 
     * are specified by separating them with an ampersand &; for example, option1=value1&option2=value2. 
     * Enter %26 to specify an ampersand & character in the url, %3D for an equal = sign. 
     * 
     * The username option is an exception and is always allowed to be specified in the url, but whether 
     * or not it is actually used depends on other options. 
     * 
     * All parameters may be specified by their regular name or by a short form; the short form that can 
     * be used is specified in parenthesis at the beginning of the parameter's description.  The general 
     * naming convention for the short name is to use the first letter of each word comprising the name. 
     * Be aware of conflicts though, such as backgroundColor (bc) and borderColor (bdc).  Whether the 
     * full or short name is used specify the parameter name in lowercase. 
     * 
     * Examples 
     * 
     * scrobblersig.php 
     * scrobblersig.php?fontsize=24 
     * scrobblersig.php?labelcolor=aa0000&trackcolor=a9b200 
     * scrobblersig.php?fs=24 
     * scrobblersig.php?lc=aa0000&tc=a9b200 
     */ 
    //(u) Audioscrobbler username, see the allowAnyUser and allowWhitelistedUser options for info about 
    //using this option in the url. 
    $username = "ScottyWZ"; 

    /* 
     * All of the "-label" options below can display the time the track is played by specifying time 
     * variables: 
     *    - <date> Outputs the date according to the dateFormat option 
     *    - <time> Outputs the time according to the timeFormat option 
     *    - <zone> Outputs the timezone according to the timeZoneOffset and timeZoneLabel options.  The 
     *      timeZoneLabel is output instead of the timeZoneOffset if it is present. 
     * 
     * Example 
     * 
     * "This song was played at <time> <zone> on <date>" 
     */ 

    //This must be defined 
    $nlnt = "\n\n"; 

    //Sig text 
    include "quotes.php"; 
     
    //(cpl) Text to display if track is currently playing 
    $currentlyPlayingLabel = $st.".   (Updated every 15 seconds) Currently listening to this song / Last song listened to was:"; 
     
    //(lpl) Text to display if track isn't currently playing 
    $lastPlayedLabel = $st.":   (Updated every 15 seconds) Currently listening to this song / Last song listened to was:"; 

    //(el1 and el2) Text to display if the song parse failed 
    $errorLabel1 = $st.".:  (Updated every 15 seconds) Currently listening to this song / Last song listened to was:"; 
    $errorLabel2 = "Song parse failed"; 

    /* 
     * Time formats, see http://www.php.net/date for details about the dateFormat and timeFormat 
     */ 
    //(df) Format used to replace the <date> pattern 
    $dateFormat = "D, M j, Y"; 
     
    //(tf) Format used to replace the <time> pattern 
    $timeFormat = "g:i A"; 
     
    //(tzo) Time between your time zone and GMT in [-]hour[:minute] format; that is the beginning minus 
    //sign is optional and so are the minutes, if minutes are included separate from hours with a colon. 
    //This is also used to replace the <zone> pattern if the timeZoneLabel option isn't specified. 
    $timeZoneOffset = "-5"; 
     
    //(tzl) Replaces the <zone> pattern 
    $timeZoneLabel = "EST"; 
     
    /* 
     * Formatting options.  The various "-color" options specify colors using the RRGGBB format, where 
     * RR represents the hexadecimal numerical amount of red, GG the amount of green, and BB the amount 
     * of blue; for example FF0000 is red, A9B200 is a dull golden color. 
     */ 
    //(f) The filename of the truetype font to use.  Native PHP font searching rules are used: 
    // - If the .ttf extension is not specified it is appended. 
    // - Most systems will search in the same directory as the script for the font and if it can't be 
    //   found search system font directories, this allows you to use any font on the system as well as 
    //   custom fonts. 
    $font = "Tahoma.ttf"; 

    //(fs) The size of the font in points 
    $fontSize = 8; 
     
    //(fc) The foreground color; the labelColor and trackColor parameters override this if set. 
    $foregroundColor = "000000"; 

    //The foreground color for Pastures of Plenty; the labelColor and trackColor parameters override this if set. 
    $foreground_color_Pastures = "FF0000"; 
     
    //(lc) The color of the track label, the first line of text 
    $labelColor = null; 
     
    //(tc) The color of the track text, the second line of text 
    $trackColor = null; 
     
    //(a) Whether antialiasing should be applied to the text; specify 1 for true and 0 for false in the 
    //url.  If set to true you should set the backgroundColor to match the background of the page the 
    //image will appear on for best results. 
    $antialias = true; 
     
    //(ha) Horizontal alignment of the text, can be "left" or "right" 
    $horizontalAlign = "left"; 
     
    //(b) Whether or not a border is drawn around the image; specify 1 for true and 0 for false in the 
    //url. 
    $border = false; 
     
    //(bdc) The color of the image border, see the border option 
    $borderColor = "FFFFFF"; 
     
    //(p) The padding to appear on the sides of the image; the horizontalPadding and verticalPadding 
    //parameters override this if set. 
    $padding = 3; 
     
    //(hp) The padding to appear on the left and right side of the image 
    $horizontalPadding = null; 
     
    //(vp) The padding to appear on the top and bottom of the image 
    $verticalPadding = null; 
     
    //(bc) The background color 
    $backgroundColor = "FFFFFF"; 
     
    //(bi) Background image to use; may be GIF, PNG, or JPEG format 
    $backgroundImage = null; 
     
    //(bt) Whether the backgroundColor appears; specify 1 for true and 0 for false in the url. 
    $backgroundTransparent = false; 
     
    //(it) The image format, may be "png" or "jpg" 
    $imageType = "jpg"; 
     
    //(mw) The maximum width of the image, 0 means unrestricted; ignored if a backgroundImage is used. 
    $maxWidth = 479; 
     
    //(mh) The maximum height of the image, 0 means unrestricted; ignored if a backgroundImage is used. 
    $maxHeight = 127; 
     
     
    /* 
     * The following options may NOT be specified in the url 
     */ 
    //Whether or not parameters specified in the url are used; setting this to false will result in 
    //fewer variations of images being cached on the server. 
    $allowParameters = true; 
     
    //Whether or not any username can be specified for the username option in the url; this takes 
    //precedence over the allowWhitelistedUser option. 
    $allowAnyUser = false; 
     
    //Whether or not whitelisted users can be specified for the username option in the url, see the 
    //whitelistedUserFilename option. 
    $allowWhitelistedUser = true; 
     
    //The filename of a list of usernames, one on each line, that are allowed to be specified for the 
    //username option; also see the allowWhitelistedUser option. 
    $whitelistedUserFilename = "scrobblersig-whitelist.txt"; 
     
    //Whether or not the browser's cache should be used to help minimize bandwidth usage 
    $useBrowserCache = true; 
     
    //Number of seconds information is cached from Audioscrobbler 
    $cacheDuration = 15; 
     
    //Number of seconds to wait for a response from the Audioscrobbler server 
    $timeout = 10; 



    /* ---------- Main code, do not edit past this point (Yeah, right) ---------- */ 
     
    //error_reporting(E_ERROR | E_WARNING); 
     
    function GetParameter($name, $altName, &$value, $bypassExtensionCheck = false) { 
        //Get parameter while checking for disguising file extension 
        if(isset($_GET[$name]) || isset($_GET[$altName])) { 
            $name = isset($_GET[$name]) ? $name : $altName; 
            $value = !$bypassExtensionCheck 
                ? preg_replace("/(.*?)(\.png|\.jpg|\.gif)*/i", "\\1", $_GET[$name]) 
                : $_GET[$name]; 
        } 
    } 
     
    /* Get values from parameters */ 
    if($allowAnyUser) 
        GetParameter("username", "u", $username); 
    elseif($allowWhitelistedUser) { 
        GetParameter("username", "u", $paramUsername); 
        if($paramUsername) { 
            $whitelistedUsers = @file_get_contents("./$whitelistedUserFilename"); 
            $username = preg_match("/\b$paramUsername\b/", $whitelistedUsers) ? $paramUsername : $username; 
        } 
    } 
     
    if($allowParameters) { 
        GetParameter("antialias", "a", $antialias); 
        GetParameter("backgroundcolor", "bc", $backgroundColor); 
        GetParameter("backgroundimage", "bi", $backgroundImage, true); 
        GetParameter("backgroundtransparent", "bt", $backgroundTransparent); 
        GetParameter("border", "b", $border); 
        GetParameter("bordercolor", "bdc", $borderColor); 
        GetParameter("currentlyplayinglabel", "cpl", $currentlyPlayingLabel); 
        GetParameter("dateformat", "df", $dateFormat); 
        GetParameter("errorlabel1", "el1", $errorLabel1); 
        GetParameter("errorlabel2", "el2", $errorLabel2); 
        GetParameter("font", "f", $font); 
        GetParameter("fontsize", "fs", $fontSize); 
        GetParameter("foregroundcolor", "fc", $foregroundColor); 
        GetParameter("horizontalalign", "ha", $horizontalAlign); 
        GetParameter("horizontalpadding", "hp", $horizontalPadding); 
        GetParameter("image_type", "it", $imageType); //supported for compatibility 
        GetParameter("imagetype", "it", $imageType); 
        GetParameter("labelcolor", "lc", $labelColor); 
        GetParameter("lastplayedlabel", "lpl", $lastPlayedLabel); 
        GetParameter("maxheight", "mh", $maxHeight); 
        GetParameter("maxwidth", "mw", $maxWidth); 
        GetParameter("padding", "p", $padding); 
        GetParameter("trackcolor", "tc", $trackColor); 
        GetParameter("timeformat", "tf", $timeFormat); 
        GetParameter("timezonelabel", "tzl", $timeZoneLabel); 
        GetParameter("timezoneoffset", "tzo", $timeZoneOffset); 
        GetParameter("verticalpadding", "vp", $verticalPadding); 
    } 
     
    /* Fix certain parameters to ensure proper values */ 
    if(!isset($labelColor)) $labelColor = $foregroundColor; 
    if(!isset($trackColor)) $trackColor = $foregroundColor; 
    if(!isset($horizontalPadding)) $horizontalPadding = $padding; 
    if(!isset($verticalPadding)) $verticalPadding = $padding; 
     
    $antialias = (bool) $antialias; 
    $backgroundTransparent = (bool) $backgroundTransparent; 
    $border = (bool) $border; 
    $fontSize = (int) $fontSize; 
    $horizontalAlign = $horizontalAlign == "right" ? "right" : "left"; 
    $horizontalPadding = (int) $horizontalPadding; 
    $maxHeight = (int) $maxHeight; 
    $maxWidth = (int) $maxWidth; 
    $verticalPadding = (int) $verticalPadding; 
     
    $temp = explode(":", $timeZoneOffset); 
    $timeZoneOffset = (int) $temp[0]; 
    if(count($temp) > 1) 
        $timeZoneOffset += (int) $temp[1] / 60 * (substr($temp[0], 0, 1) == "-" ? -1 : 1); 
     
    /* Check to see if the song info needs updating */ 
    $safeUsername = escapeshellcmd($username); 
    $dataFilename = "./sig-$safeUsername.txt"; 
    if(!file_exists($dataFilename) || (filemtime($dataFilename) + $cacheDuration < time())) { 
        //Delete cached images 
        $tempFiles = array_merge(glob("./sig-$safeUsername*.png"), glob("./sig-$safeUsername*.jpg")); 
        if($tempFiles != null) { 
            foreach($tempFiles as $filename) 
                @unlink($filename); 
        } 
         
        //Get user track data from Audioscrobbler 
        $data = ""; 
        $fp = @fopen("http://ws.audioscrobbler.com/txt/recent/$username", "r"); 
        if($fp != null) { 
            stream_set_timeout($fp, $timeout); 
            $data = fread($fp, 100000); 
            fclose($fp); 
        } 
         
        if(trim($data) != "") { 
            $dataFile = @fopen($dataFilename, "wt"); 
            if($dataFile != null) { 
                @fwrite($dataFile, $data); 
                @fclose($dataFile); 
            } 
        } 
        elseif(file_exists($dataFilename)) { 
            //Remove currently playing track info and preserve cached Audioscrobbler data 
            if($data = @file($dataFilename)) { 
                $data[0] = "\n"; 
                if($dataFile = @fopen($dataFilename, "wt")) { 
                    @fwrite($dataFile, implode("", $data)); 
                    @fclose($dataFile); 
                } 
            } 
        } 
    } 
     
    /* Determine if client cache should be used */ 
    if($useBrowserCache 
        && isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && file_exists($dataFilename) 
        && strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) == filemtime($dataFilename) 
        ) { 
        header("Status: 304 Not Modified", true, 304); //HTTP status set this way to work on IIS 
        exit; 
    } 
     
    /* Create image if no cached version of it exists */ 
    $imageFilename = "./sig-$safeUsername" . ($allowParameters && $_SERVER["QUERY_STRING"] ? "-" . md5($_SERVER["QUERY_STRING"]) : "") . ".$imageType"; 
    $image = null; 
    if(!file_exists($imageFilename)) { 
        $trackData = @file($dataFilename); 
        if($trackData != null) { 
            $trackData[0] = trim($trackData[0]); 

            //Check if a track is currently playing 
            if($trackData[0] != "") { 
                $track = "$trackData[0]"; 
                $label = $currentlyPlayingLabel; 
                $date = time(); 
            } 
            else { 
                $track = "$trackData[1]"; 
                $label = $lastPlayedLabel; 
                $date = strtotime($trackData[2]); 
            } 
             
            $track = html_entity_decode($track); 
             
            if($timeZoneOffset != "") 
                $date = strtotime((int) ($timeZoneOffset * 60) . " minute", $date); 
        } 
        else { 
            $label = $errorLabel1; 
            $track = "$errorLabel2"; 
            $date = time(); 
        } 
         
        //Replace time format variables with actual values 
        $label = str_replace("<date>", gmdate($dateFormat, $date), $label); 
        $label = str_replace("<time>", gmdate($timeFormat, $date), $label); 
        $label = str_replace("<zone>", $timeZoneLabel ? $timeZoneLabel : ($timeZoneOffset < 0 ? "-" : "+") . sprintf("%'02d", abs($timeZoneOffset)) . sprintf("%'02d", round(abs(($timeZoneOffset - (int) $timeZoneOffset) * 60))), $label); 
         
        $label = trim($label); 
        $track = trim($track); 

        /* Generate the image */ 
        //Get the text sizes 
        $labelBounds = imagettfbbox($fontSize, 0, $font, $label); 
        $labelWidth = $labelBounds[2] - $labelBounds[0] + 1; 
        $labelHeight = -$labelBounds[7] + $labelBounds[1] + 1; 
         
        $trackBounds = imagettfbbox($fontSize, 0, $font, $track); 
        $trackWidth = $trackBounds[2] - $trackBounds[0] + 1; 
        $trackHeight = -$trackBounds[7] + $trackBounds[1] + 1; 
         
        //Get image dimensions 
        $dimension = max($labelWidth, $trackWidth) + ($horizontalPadding * 2) + ($border ? 2 : 0); 
        $maxWidth = ($maxWidth > 0 && $dimension > $maxWidth) ? $maxWidth : $dimension; 
        $dimension = $labelHeight + $trackHeight + ($verticalPadding * 2) + ($border ? 2 : 0); 
        $maxHeight = ($maxHeight > 0 && $dimension > $maxHeight) ? $maxHeight : $dimension; 

        //Generate image canvas 
        if($backgroundImage != "") { 
            preg_match("/[^\.]+$/", $backgroundImage, $extension); 
            switch($extension[0]) { 
                case "gif": 
                    $image = @imagecreatefromgif($backgroundImage); 
                    break; 
                case "png": 
                    $image = @imagecreatefrompng($backgroundImage); 
                    break; 
                case "jpg": 
                    $image = @imagecreatefromjpeg($backgroundImage); 
                    break; 
            } 
        } 
        if($image == null) 
            $image = imagecreate($maxWidth, $maxHeight); 

        //Set the colors 
        preg_match_all("/[\dabcdef]{2}/i", $backgroundColor, $backColorParts); 
        preg_match_all("/[\dabcdef]{2}/i", $borderColor, $borderColorParts); 
        preg_match_all("/[\dabcdef]{2}/i", $labelColor, $labelColorParts); 
        preg_match_all("/[\dabcdef]{2}/i", $trackColor, $trackColorParts); 
        $blackColorPart = array(0, 0, 0); 
        if(count($backColorParts[0]) != 3) $backColorParts[0] = $blackColorPart; 
        if(count($borderColorParts[0]) != 3) $borderColorParts[0] = $blackColorPart; 
        if(count($labelColorParts[0]) != 3) $labelColorParts[0] = $blackColorPart; 
        if(count($trackColorParts[0]) != 3) $trackColorParts[0] = $blackColorPart; 
         
        $backColorIndex = imagecolorallocate($image, hexdec($backColorParts[0][0]), hexdec($backColorParts[0][1]), hexdec($backColorParts[0][2])); 
        $borderColorIndex = imagecolorallocate($image, hexdec($borderColorParts[0][0]), hexdec($borderColorParts[0][1]), hexdec($borderColorParts[0][2])); 
        $labelColorIndex = imagecolorallocate($image, hexdec($labelColorParts[0][0]), hexdec($labelColorParts[0][1]), hexdec($labelColorParts[0][2])); 
        $trackColorIndex = imagecolorallocate($image, hexdec($trackColorParts[0][0]), hexdec($trackColorParts[0][1]), hexdec($trackColorParts[0][2])); 
        if($backgroundTransparent) 
            imagecolortransparent($image, $backColorIndex); 

        //Check to see if antialiasing is used 
        if(!$antialias) { 
            $labelColorIndex = -$labelColorIndex; 
            $trackColorIndex = -$trackColorIndex; 
        } 

        //Draw border 
        if($border) 
            imagerectangle($image, 0, 0, $maxWidth - 1, $maxHeight - 1, $borderColorIndex); 
         
        //Draw label 
        $x = ($horizontalAlign == "right" ? max($labelWidth, $trackWidth) - $labelWidth : 0) + $horizontalPadding + ($border ? 1 : 0); 
        $y = $labelHeight - abs($labelBounds[1]) + $verticalPadding + ($border ? 1 : 0); 
        imagettftext($image, $fontSize, 0, $x, $y, $labelColorIndex, $font, $label); 
         
        //Draw track 
        $x = ($horizontalAlign == "right" ? max($labelWidth, $trackWidth) - $trackWidth : 0) + $horizontalPadding + ($border ? 1 : 0); 
        $y = $trackHeight - abs($trackBounds[1]) + $verticalPadding + $labelHeight + ($border ? 1 : 0); 
        imagettftext($image, $fontSize, 0, $x, $y, $trackColorIndex, $font, $track); 
         
        //Save image 
        if($imageType == "jpg") 
            @imagejpeg($image, $imageFilename); 
        else 
            @imagepng($image, $imageFilename); 
         
        if(file_exists($imageFilename)) { 
            imagedestroy($image); 
            $image = null; 
        } 
    } 

    /* Output the image */ 
    //Output image headers 
    if($imageType == "jpg") 
        header("Content-type: image/jpeg"); 
    else 
        header("Content-type: image/png"); 
     
    if(file_exists($dataFilename)) { 
        header("Last-Modified: " . gmdate("D, d M Y H:i:s", filemtime($dataFilename)) . " GMT"); 
        header("Expires: " . gmdate("D, d M Y H:i:s", filemtime($dataFilename) + $cacheDuration) . " GMT"); 
    } 
     
    //Output image 
    if(!$image) 
        readfile($imageFilename); 
    else { 
        if($imageType == "jpg") 
            imagejpeg($image); 
        else 
            imagepng($image); 
        imagedestroy($image); 
    } 
?>

Fiddle around with this if you don't have/want a song to be displayed.
4. Fiddle with quotes.php so that it contains the quotes you want.
5. In your sig, add [img ]*&&**&&*&&^^*&%%*&%[/img ] (where *&&**&&*&&^^*&%%*&% is the path to the index.php (or whatever) file).

I wrote:

In the query string, you can put in ?action=all_quotes and it will dump all the quotes. One problem: It does the same thing as ?action=random_quote which I have that way because, with variables $q[1], $q[2], etc., I want to display all those variables (they contain ^the quotes), but I don't know how. How do I get it to do that?

How?

Re: Show currently playing song in signature/some talk about music & sigs

Err I got a list of errors

Re: Show currently playing song in signature/some talk about music & sigs

scottywz wrote:
Connorhd wrote:

scottywz you should look at making your signature cache itself, its REALLY slow for me, rather annoying since it loads about 3 min after the rest of the page and makes everything move

What would we do without browser caches?

well i don't think browsers will cache your image since your serving it as php

Re: Show currently playing song in signature/some talk about music & sigs

No, it would, unless the headers were set up to tell the browser not to cache it.

shinko_metsuo wrote:

Err I got a list of errors

Did you follow the instructions?

Re: Show currently playing song in signature/some talk about music & sigs

yeah I did

58 (edited by scottywz 2005-06-30 18:45)

Re: Show currently playing song in signature/some talk about music & sigs

What errors did you get?

Re: Show currently playing song in signature/some talk about music & sigs

server wrote:

Warning: imagettfbbox(): Could not find/open font in /home/www/videogamenation.ath.cx/sig/index.php on line 352

Warning: imagettfbbox(): Could not find/open font in /home/www/videogamenation.ath.cx/sig/index.php on line 356

Warning: imagettftext(): Could not find/open font in /home/www/videogamenation.ath.cx/sig/index.php on line 415

Warning: imagettftext(): Could not find/open font in /home/www/videogamenation.ath.cx/sig/index.php on line 420

Warning: Cannot modify header information - headers already sent by (output started at /home/www/videogamenation.ath.cx/sig/index.php:352) in /home/www/videogamenation.ath.cx/sig/index.php on line 437

Warning: Cannot modify header information - headers already sent by (output started at /home/www/videogamenation.ath.cx/sig/index.php:352) in /home/www/videogamenation.ath.cx/sig/index.php on line 442

Warning: Cannot modify header information - headers already sent by (output started at /home/www/videogamenation.ath.cx/sig/index.php:352) in /home/www/videogamenation.ath.cx/sig/index.php on line 443
ÿØÿà

60

Re: Show currently playing song in signature/some talk about music & sigs

Connorhd: what do you use to get your recently played songs in your signature image?

-gezz

Re: Show currently playing song in signature/some talk about music & sigs

Nibbler(cpg) wrote:

XMMS has a plugin called "Song Change" that runs a command you specify when the song changes. I set it to the command

php send.php "%s"

the script base64 encodes the title to keep the special chars, and calls a file on the server with ?song=whatever that decodes and writes it to a text file. The file song.php makes the graphic when called.

$im = imagecreatetruecolor(600, 30);
$bg = imagecolorallocate($im, 255, 255, 255);
imagecolortransparent($im, $gb);
$textcolor = imagecolorallocate($im, 0, 0, 255);
$song = file_get_contents('song.txt');
$song = $song ? $song : '[Offline]';
imagestring($im, 5, 0, 0, "Now playing: $song", $textcolor);
header("Content-type: image/png");
imagepng($im);

You need to be running php locally to use this method of course , but I'm sure there are other ways,

that was posted earlyer and I think that's what he uses

62 (edited by scottywz 2005-07-01 01:30)

Re: Show currently playing song in signature/some talk about music & sigs

No, I think he uses Audioscrobbler and [ScrobblerSig(Thx) or modified or code from that] like I do.

shinko_metsuo wrote:
server wrote:

Warning: imagettfbbox(): Could not find/open font in /home/www/videogamenation.ath.cx/sig/index.php on line 352

Warning: imagettfbbox(): Could not find/open font in /home/www/videogamenation.ath.cx/sig/index.php on line 356

Warning: imagettftext(): Could not find/open font in /home/www/videogamenation.ath.cx/sig/index.php on line 415

Warning: imagettftext(): Could not find/open font in /home/www/videogamenation.ath.cx/sig/index.php on line 420

Warning: Cannot modify header information - headers already sent by (output started at /home/www/videogamenation.ath.cx/sig/index.php:352) in /home/www/videogamenation.ath.cx/sig/index.php on line 437

Warning: Cannot modify header information - headers already sent by (output started at /home/www/videogamenation.ath.cx/sig/index.php:352) in /home/www/videogamenation.ath.cx/sig/index.php on line 442

Warning: Cannot modify header information - headers already sent by (output started at /home/www/videogamenation.ath.cx/sig/index.php:352) in /home/www/videogamenation.ath.cx/sig/index.php on line 443
ÿØÿà

Upload your tahoma.ttf file to the same folder as the script.
Also, make sure the case of the filename is ALL LOWERCASE.
In the image script, use something like

include "quotes.php";

$currentlyListeningText = $st."Listening to:";
$LastListenedText = $st."Last listened to:";
$ErrorText1 = $st."Error:";

or whatever.

The $st is the KEY to getting it to work in this situation.

I'll look into the headers problem maybe tomorrow.

Re: Show currently playing song in signature/some talk about music & sigs

I am now...But those other times it wasn't rendering I guess.

Re: Show currently playing song in signature/some talk about music & sigs

gezz wrote:

Connorhd: what do you use to get your recently played songs in your signature image?

sorry but this is disappointly bad code atm, i really need to make it cache it in a text file or cache the actual image maybe

//Get user track data from Audioscrobbler
$data = "";
$fp = @fopen("http://ws.audioscrobbler.com/txt/recent/Connorhd", "r");
if($fp != null) {
    stream_set_timeout($fp, 10);
    $data = fread($fp, 100000);
    fclose($fp);
}
$tracks = array();
$tracks = explode("\n",$data);

then use $tracks[1] for the last played track