The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
vB Weather Mk. 2 Details »» | |||||||||||||||||||||||||
This is a post of a much-revised hack originally posted (by myself) here. I am posting this as a new hack because MSNBC, who the raw weather data is provided through, has changed their source provider (from AccuWeather to The Weather Channel), which required a retooling of the data parsing code, as well as completely new databases. I have also made obsolete the weather_functions.php file, moving the functions to admin/functions.php, simplifying the ability to show current weather data on any page (if desired). Finally, in what I'm sure will be welcome news to many people who have installed the original, I've completely rewritten the instructions, making them, as far as I can tell, much simpler.
If you are unfamiliar with the original: This hack provides current weather conditions and a five-day forecast to your members. Each member can select from over 34,000 cities, by narrowing down from region (like continents), country, and subdivision (like states). Each member can also select to see temperatures in Fahrenheit or Celsius, as well as metric or standard measurements for the other data. A demo is available on my test board: http://www.jjr512.com/testboard/. I have set up an account for anyone to use to test it out (username: test; pw: test). If you are not logged in, you will see default weather on the home page (default is set to New York City), and cannot change settings (I forget if you can view a detailed forecast, though; you may be able to). If you do log in, you can change the settings for the test account, to see how it works. *** If you have installed any previous version, you should completely uninstall it. Read the instructions and work backwards from there: Delete all templates added, remove changes to any existing templates (I forget if there were any or not), delete all new tables from the database, delete all new files added by the old hack. All have been changed to some extent, some more than others, and it would be easier to work from a clean slate. Especially since some of the template names have changes, so if you don't delete the old ones, they'll just be sitting there doing nothing at all. It is also vitally important to delete (or "drop") the tables--I believe there were six--you added for the original version. The new ones have different data and, for some, a different structure, so do not just empty them. Remove them totally. Good luck! Change Log v1.1a: Current Version: Corrects a small error where an incorrect variable was used in the code to show the local time of the last update. If you already have v1.1, you only need to do the fix described in Post #82 below. v1.1: Changes display of last update time to be the correct time in the user's own local time zone; previously, it was always Eastern Time (GMT-5) (Upgrade instructions are in Post #79 below). Also breaks the weather_city.sql into six smaller pieces (useful only to new installations; existing installations need not worry about this). v1.0a: Adds instructions on how to add location to current weather on forums home page (changes to code added to index.php and forumhome_weather template). v1.0: Original Release Show Your Support
|
Comments |
#382
|
|||
|
|||
ANT.menmusic
you could even remove the update time I did it allready, couse even this update time load the page hard. -nice forum -THX 4 try again image! |
#383
|
|||
|
|||
ANT.menmusic
you could even remove the update time I did it allready, couse even this update time load the page hard. -nice forum -THX 4 try again image! |
#384
|
|||
|
|||
ANT.menmusic
you could even remove the update time I did it allready, couse even this update time load the page hard. -nice forum -THX 4 try again image! |
#385
|
|||
|
|||
yeah - i think i'm gonna do that... just realized that any fetching of date is gonna slow my index page if the weather server is not responding. thanks for that.
oh, and np about the image. -ant |
#386
|
|||
|
|||
I dunno what it is but my forum main page loads super slow now! :cry:
|
#387
|
|||
|
|||
Quote:
think i need to change the call to the weather server codes on the index - since it still calls the msnbc server apparently the page still loads slow at times. |
#388
|
|||
|
|||
i changed:
Code:
// ###################### Get Weather ####################### if ($weatherpage!=1 or !isset($weatherpage)) { $usersettings = $DB_site->query_first("SELECT * FROM weather_usersettings WHERE userid=$bbuserinfo[userid]"); if (!isset($usersettings[userid])) { $usersettings[accid] = "USNY0996"; $usersettings[tpc] = "1"; $usersettings[tps] = "1"; $DB_site->query("INSERT INTO weather_usersettings (userid,accid,tpc,tps) VALUES ('$bbuserinfo[userid]','$usersettings[accid]','$usersettings[tpc]','$usersettings[tps]')"); } $userdata = $DB_site->query_first("SELECT * FROM weather_userdata WHERE userid=$bbuserinfo[userid]"); $datecut = $userdata[time]; if ((time()-3600)>$datecut or $forceupdate=="yes") { $rawdata = fsockopen("www.msnbc.com",80,$num_error,$str_error,30); if(!$rawdata) { $weather[error_num] = $num_error; $weather[error_str] = $str_error; } else { fputs($rawdata,"GET http://www.msnbc.com/m/chnk/d/weather_d_src.asp?acid=$usersettings[accid] HTTP/1.0\n\n"); while (!feof($rawdata)) { $getbit = fgets($rawdata,4096); $getbit = trim($getbit)."\n"; if (substr($getbit,7,4) == "City") { $weather[city] = substr($getbit,15,40); $weather[city] = substr($weather[city],0,strlen($weather[city])-3); } if (substr($getbit,7,6) == "SubDiv") { $weather[subdiv] = substr($getbit,17,20); $weather[subdiv] = substr($weather[subdiv],0,strlen($weather[subdiv])-3); } if (substr($getbit,7,7) == "Country") { $weather[country] = substr($getbit,18,20); $weather[country] = substr($weather[country],0,strlen($weather[country])-3); } if (substr($getbit,7,5) == "Temp ") { $weather[temp] = substr($getbit,15,20); $weather[temp] = substr($weather[temp],0,strlen($weather[temp])-3); } if (substr($getbit,7,5) == "CIcon") { $weather[cicon] = substr($getbit,16,20); $weather[cicon] = substr($weather[cicon],0,strlen($weather[cicon])-3); } if (substr($getbit,7,5) == "WindS") { $weather[wind_spd] = substr($getbit,16,20); $weather[wind_spd] = substr($weather[wind_spd],0,strlen($weather[wind_spd])-3); } if (substr($getbit,7,5) == "WindD") { $weather[wind_dir] = substr($getbit,16,20); $weather[wind_dir] = substr($weather[wind_dir],0,strlen($weather[wind_dir])-3); } if (substr($getbit,7,4) == "Baro") { $weather[barometer] = substr($getbit,15,20); $weather[barometer] = substr($weather[barometer],0,strlen($weather[barometer])-3); } if (substr($getbit,7,5) == "Humid") { $weather[humidity] = substr($getbit,16,20); $weather[humidity] = substr($weather[humidity],0,strlen($weather[humidity])-3); } if (substr($getbit,7,4) == "Real") { $weather[realfeel] = substr($getbit,15,20); $weather[realfeel] = substr($weather[realfeel],0,strlen($weather[realfeel])-3); } if (substr($getbit,7,6) == "LastUp") { $weather[lastup] = substr($getbit,17,25); $weather[lastup] = substr($weather[lastup],0,strlen($weather[lastup])-3); } if (substr($getbit,7,7) == "ConText") { $weather[context] = substr($getbit,18,25); $weather[context] = substr($weather[context],0,strlen($weather[context])-3); } } // Location Info $weatherdata[city] = $weather[city]; $weatherdata[subdiv] = $weather[subdiv]; $weatherdata[country] = $weather[country]; // Current Conditions $weatherdata[temp] = convert_temp($weather[temp],$usersettings[tpc]); $weatherdata[cicon] = $weather[cicon]; $weatherdata[wind_dir] = $weather[wind_dir]; $weatherdata[wind_spd] = convert_speed($weather[wind_spd],$usersettings[tps]); $weatherdata[barometer] = convert_press($weather[barometer],$usersettings[tps]); $weatherdata[humidity] = $weather[humidity]; $weatherdata[realfeel] = convert_temp($weather[realfeel],$usersettings[tpc]); $weatherdata[lastup] = $weather[lastup]; $weatherdata[context] = $weather[context]; fclose($rawdata); } } else { $weatherdata = $DB_site->query_first("SELECT city,subdiv,country,temp,cicon,wind_dir,wind_spd,barometer,humidity,realfeel,lastup,context FROM weather_userdata WHERE userid=$bbuserinfo[userid]"); } if ($weatherdata[subdiv]) { $weatherdata[showsubdiv] = "$weatherdata[subdiv], "; } else { $weatherdata[showsubdiv] = ""; } $time_lastup = strtotime($weatherdata[lastup]); $weather[updatedate] = vbdate($dateformat,$time_lastup); $weather[updatetime] = vbdate($timeformat,$time_lastup); eval("\$currentweather = \"".gettemplate("forumhome_weather")."\";"); } Code:
// ###################### Get Weather ####################### if ($weatherpage!=1 or !isset($weatherpage)) { $usersettings = $DB_site->query_first("SELECT * FROM weather_usersettings WHERE userid=$bbuserinfo[userid]"); if (!isset($usersettings[userid])) { $usersettings[accid] = "USNY0996"; $usersettings[tpc] = "1"; $usersettings[tps] = "1"; $DB_site->query("INSERT INTO weather_usersettings (userid,accid,tpc,tps) VALUES ('$bbuserinfo[userid]','$usersettings[accid]','$usersettings[tpc]','$usersettings[tps]')"); } eval("\$currentweather = \"".gettemplate("forumhome_weather")."\";"); } i think - either way, the index.php loads quick as heck now. i dont know much about hacking - i can follow directions pretty well, and i apologize if i have murdered your weather hack - it's just that i love the idea so much and this is the only compromise i could find... at least until msnbc gets a faster/better server. -ant. |
#390
|
|||
|
|||
Any updates on this yet?
|
#391
|
|||
|
|||
I don't suppose there is another weather server to pull the data off is there, because I love the idea of this feature, the only problem at the moment is that it is only working once every so often.
|
Thread Tools | |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|