Revision history for WWW::Myspace

0.55    2006-09-05
        - Changed default value of max_count from 300 to 100 in Message.pm
          since captcha kicks in around 102.
        - Added send_event_invite method.
        - Added send_event_invite sample script.
        - Tested browse method, updated docs, moved from
          IN PROGRESS area to FIND PEOPLE area.
        - Added "quiet" flag to mech object to stop superfluous warnings.
        - Set "stack_depth => 1" in mech object to save memory. Previously
          the module would store all page loads, which could eat up
          huge amounts of memory when dealing with large friend lists
          or event invitations.
        - Re-wrote approve_friend_requests method to use the new servers
          and act super-human.
        - Added "form" option to submit_form that allows passing a
          ready-to-post HTML::Form object.

0.54    2006-09-04
        - Corrected new method docs: replaced "username" parameter in
          examples with "account_name".
        - Fixed send_message to properly return "FC" instead of "F" when
          captcha input requested.

0.53	2006-09-01
		- Changed RE to identify "away" and "private" mail send errors to
		  allow for profiles with no user names (or myspace database errors).
		  The error would cause this message to appear for private profiles:
		  "You can't send a message to because you must be 's friend to
		  send them a message."
		- Modified send_message to get the profile, find and click the
		  Send Message link, and compensate for the two different mail
		  forms Myspace now has as they transition to the new messaging
		  servers.  Note that this both acts more naturally and may be more
		  stable, and enables use of the new servers, or the old one that
		  some accounts still apparently use.
		  Note that the new servers do issue CAPTCHA responses for mail. Not
		  sure of the limits yet.
		- Added "human" option which slows down gets and such.
		  IMPORTANT: THIS IS SET TO 1 (TRUE) BY DEFAULT. THIS WILL SLOW
		  DOWN YOUR SCRIPT. BUT BE SURE YOU READ THE ACCESSOR'S DOCUMENTATION
		  IF YOU WANT TO TURN IT OFF - MYSPACE MAY DISABLE YOUR ACCOUNT.
		  Currently adds a 6-11 second delay after each get, but should get
		  fancier later.
		- FriendChanges.pm: Now dies if error is set after get_friends is
		  called.
		- FriendAdder.pm:  Added last_login parameter using the myspace 
		  method of the same name.
		- send_message now takes named parameters.
		- Addad "skip_re" option to send_message. Allows you to skip
		  a profile if it matches the RE you specify.
		- Added skip_re handling to Message.pm.
		- post_comment now acts more human also.
		- is_band now looks for the "Upcoming Shows" box instead of
		  "My Bulletin Space" when determining if the logged in account
		  is a band or not.
		- Changed mech agent to identify itself as IE 6.

0.52	2006-08-08
		- Message.pm now displays "Sending to friendID" as expected when
		  displaying an inactive account failure instad of just displaying
		  the warning message.
		- Fixed a condition that would cause Myspace.pm to die if last_login
		  was called on a profile whose last login was in december.
		- last_login now returns the correct date instead of being
		  a month late.  Corrected last_login sample script to match.
		- "ADD TO FRIENDS" CODE IN SEND_MESSAGE IS NOW A "VIEW MY PROFILE"
		  LINK DUE TO MYSPACE BREAKING THE "ADD TO FRIENDS" CODE.
		- Added warning re: broken "Add to friends" code to send_message
		  docs in Myspace.pm and to "add_to_friends" method docs in Message.pm.
		- Enhanced RE check in post_comment to hopefully make it even more
		  robust.
		- Fixed bugs in post_comment so that FF and FI return codes should
		  now work instead of "die"ing (note that currently though an invalid
		  ID will return a "must be someone's friend" error or a general
		  error).
		- Fixed bug in submit_form that, when posting to form number 1,
		  would cause Myspace.pm to die if no forms were on the page
		  instead of returning an error.
		- Added post_comment sample script
	    - Updated RE in send_message to match myspace change.
	    - Updated RE for Subject field in read_message due to myspace change
	      that caused it to display the date.
	    - Added "if" statement to have subject be left out of hash if
	      the RE can't be matched.
	    - Added read_message and send_friend_request sample scripts.

	    PREVIOUS VERSIONS WILL FAIL WHEN SENDING MESSAGES

0.51    2006-08-03
        - If a value greater than 1 is passed to send_message as the
          "Add To Friends" flag, the value will be used as the friendID
          for the button's link.  This allows you to set a friendID that
          is different from the account from which you're sending the message.
        - Added message_delay and random_delay accessor methods to
          Message.pm.  These allow the user to set a delay between messages
          sent.
        - Added _is_fresh and _fresh_after to Data.pm
        - Added ability to set "freshness" parameters to update_friend and
          update_all_friends in Data.pm
        - Added DateTime::Format::MySQL to Makefile.PL
        - Added tests for _is_fresh and _fresh_after to 09-data.t 
        - Added Params::Validate routines to update_friend and update_all_friends
        - Added account disable/deletion warning to Message.pm.
        - friend_user_name will now return the user name from the last page
          retreived ("$myspace->current_page") if no friend_id is specified.
        - friend_url will now return the friend URL from the last page
          retreived ("$myspace->current_page") if no friend_id is specified.
        - Fixed probable bug in friend_id method. It "shouldn't" have worked.
        - If "friend_id" method is called without a friend URL it will scan
          the last page retreived ("$myspace->current_page") for the friendID.
        - Added new "last_login" method which returns the Last Login date
          of the specified profile (or the last page retreived) in "time"
          format.
        - Added test for last_login to 01-login.t
        - Removed test for friend_id method that checks for null value
          when no URL is passed (since this behavior has changed).
        - Added Time::Local prequisite to Makefile.PL
        - Fixed RE for _next_button and _previous button methods to be
          more robust.  This also fixes friends_in_group, which was broken
          by a change in Myspace formatting so that it would only return the
          first page of the group's friends.
        - Message.pm now checks the Last Login date of the friend before
          messaging.  If the account hasn't been logged into in the last
          60 days, Message will log "FL" and skip the friend.  The friend
          will be skipped on future runs also.
        - Fixed a couple typos in Data.pm's POD.
        - Added last_login and friends_in_group sample scripts.

0.50    2006-07-06
        - get_comments sample script now accepts a profile to scan for
          comments and an optional friendID to use as a filter (i.e. to
          show only the comments they left).
		- Created friend_id, to return a user's friend id when passed
		  their custom URL.
		- Changed return code for get_friends so that calling in any
		  scalar context will return a hashref.  This fixes a bug
		  which would produce an error stating that get_friends cannot
		  be called in a boolean context if the method was called in
		  any means not explicitly a list or a hash dereference.  That is:
		  "$myhashref = $myspace->get_friends" wouldn't work. Now it will.

0.49	2006-06-15
		- Added cool_new_people to sample_scripts.
		- Corrected cache_file example in Message.pm docs. Must be
		  complete path.
		- get_friends/friends_who_emailed no longer displays inaccurate
		  warning messages about page having only 7 friends and duplicate
		  friendIDs.
		- get_friends now actually checks each friend page loaded to
		  make sure it has the whole page (this was added before but
		  wasn't working).
		- Fixed a bug in get_friends in which a warning would be generated
		  stating the friend count was low when the "exclude" option was
		  used.
		- get_friends now returns an error if it encounters a friend
		  page with a duplicate friendID (i.e. if the URL breaks due
		  to a myspace change and the same page of friends loads again).
		- Fixed bug in get_friends/friends_in_group in which
		  erroneous "Une of initialized value in numeric gt (>)" warnings
		  would be generated when getting friends from a group.
		- Updated friend_from_profile docs and examples.
		- Updated page verification RE in search_music to include ".*<\/html>"
		  to make sure the full page is loaded.
		- Cleaned up code in get_friends, minor internal fixes elsewhere.

0.48    2006-06-15
        - Added get_comments method.  Returns a list of comments left
          for the specified profile.
        - Added get_comments sample script (mainly to test get_comments
          method).
        - approve_friends now "die"s if called with an invalid argument
          instead of displaying an error about calling an undefined
          subroutine "fail".
        - Message.pm now checks for consecutive failures and returns
          "FAILURES" if the message fails due to network error (FN)
          or unknown error (F) more than 50 times in a row.  This works
          around an issue discovered in version 0.47 in which a change in
          Myspace could cause messages to fail, which could cause Message.pm
          to continue trying to post to every friend on its list.
        - get_friends now sets $myspace->error if it can't read all of
          the friend pages.  That is, if there are 205 pages and it, for
          some reason, stops at page 197 and it's not reported as an
          error by the "get_page" method, get_friends will set error
          stating that the friends list is incomplete.  I'd do this
          with the "friend_count" warning, but I can't because Myspace's
          friend count is so inaccurate.
        - Added friends_from_profile, _add_friend_to_account, 
          _find_or_create_friend to Data.pm (friend lists can now be cached 
          in Data.pm)
        - Added get_data_object to FriendAdder.pm
        - Altered properties in db to allow for caching friend lists
          of any friend_id on Myspace
        - send_message and post_comment will now return "FI" if the
          friend they're sending to has been deleted (that is, the
          "invalid friend ID" error is encountered).
        - Message.pm, Comment.pm, and FriendAdder.pm count "FI" posts as
          items to exclude on subsequent runs.
        - In Comment.pm: Updated docs for post_comments and post_all,
          updated copyright, added SEE ALSO section and note about
          comment_myspace script in SYNOPSIS.
        - Updated synopsys in comment_myspace docs.
        - Added "-q" option to add_friends script.  Runs in "quiet" mode
          (Sets "interactive" to 0 in FriendAdder). 
        - Expanded cache_friend to cache much more info like last_login,
          country, region, city, tagline, member_since, age, sex
        - get_friends does a basic duplicates check and displays
          a warning if it finds one.

0.47    2006-05-31
        - send_message REs updated due to change in MySpace site.
        
        THE FOLLOWING METHODS WILL NOT WORK WITH PREVIOUS VERSIONS
        DUE TO MYSPACE CHANGES:
        - send_message
        - reply_message

0.46    2006-05-24
        - get_friends and friends_from_profile now accept an "exclude"
          option that lets you pass a reference to a list or hash of
          friendIDs to exclude.  Since friendIDs are excluded as they are
          read, passing an exclude list along with a max_count is much more
          efficient (and faster) than reading all friends, then excluding.
        - get_friends is now documented to accept a "source" option
          ( group, profile, or inbox ) and "id" option (friendID or groupID
          as appropriate to the source).  This both makes it possible to
          use the new features on a group (because friends_from_group doesn't
          take options yet), and makes the other methods convenience methods
          (which they really already were, it just wasn't documented).
        - Changed RE in friend_count to match Myspace formatting change.
          Made more "robust".
        - Changed RE in user_name to match Myspace formatting change.
          Made more "robust".
        - get_friends now sets $myspace->error if it encounters a page with
          no friends on it.
        - Changed RE in is_band to handle whitespace and account for Myspace
          formatting change.
        - Added _previous_button internal method.
        - Updated REs in internal save_friend_info method to check for
          whitespace instead of single space for robustness.
        - Updated "private profile" RE in _get_friend_page to check for
          whitespace instead of single spaces; added check for whitespace
          after <br>.
        - message_group will now die if get_friends returns with an error.
        - get_friends now checks for "View All Friends", a Previous or
          Next link, and for the </html> tag to make sure it's got a full
          page, and displays a warning if it encounters a page with less than
          35 friends on it.

        THE FOLLOWING METHODS WILL NOT WORK WITH PREVIOUS VERSIONS
        DUE TO MYSPACE CHANGES:
        - friend_count
        - user_name
        - is_band

0.45    2006-05-09
        - Added note regarding logins to test output.
        - Fixed bug in FriendAdder.pm that re-cached friend ids even
          if they already existed in the database
        - Added methods to FriendAdder.pm and Data.pm to take advantage
          of caching.  FriendAdder.pm's is_band will first attempt to
          get is_band info from the database before using the Myspace.pm 
          method
        - Cleaned up get_friends code
        - get_friends now accepts a hash of options.  Current options are
          max_count and end_page.
        - friends_from_profile accepts a hash of options like get_friends
          (same options).  IDs can be passed as an array reference or
          as a single ID ( id => 12345 ) or ( id => [ 12345, 123456 ] ).
        - Altered MySQL table structures to make timestamps consistent
        - add_log table has been dropped in database schema
        - date_stamp now allows user to provide an epoch value in 
          Data.pm
        - accelerated initial sorting of ids in FriendAdder when Data.pm
          is used
        - Added debugging code to Comment.pm to help track occasional
          error that causes the module to die with an error about calling
          post_comment in a boolean context.
        - Removed explicit "$self->current_page" from submit_form calls in
          post_comment method.
        - site_login now checks for the "You must be logged in" page
          immediately after submitting the login form.
          In short, if your password is wrong, it'll try once then
          return 0 and set $myspace->error.  Once logged in, it will cache
          the username/password as "valid", and subsequent "You must be
          logged in" pages will be retried more vigorously.
        - Added bad login test script.
        - post_comment now croaks unless friend_id and message are passed.
        - Fixed bug that would cause incorrect warning from get_friends if
          called a second time after adding or deleting friends within the
          same script.
        - Modified post_comment to check for SCALAR instead of STR in
          contextual "return" statement.  This hopefully fixes an
          error which caused WWW::Myspace::Comment::post_comments to fail
          with "Can't call WWW::Myspace::post_comment in boolean context
          at /Library/Perl/5.8.6/WWW/Myspace/Comment.pm line 448".
          (This most notibly affects approve_friends, which would trip this
          error when posting general comments after approving friends).
        - Modified send_message and send_friend_request to check for
          SCALAR instead of STR in contextual "return" statement.
        - Modularized site_login method code.
        - Added test to verify logged_in = 1 to 01-login.t.

0.44    2006-04-28
        - add_friends script now documents a known issue in which friend
          requests will be re-sent if they are denied.
        - FriendAdder.pm now reports the number of skipped profiles if 
          profile_type parameter is not set to 'all' and interactive
          mode is enabled
        - Updated docs for is_band to note that one cannot assume that
          a profile is a personal profile if is_band is false.
        - Fixed issue that was causing logins to fail.
        - Updated user_name and friend_count methods to work with new
          Myspace change.
        
        VERSIONS BEFORE 0.44 WILL FAIL LOGIN VERIFICATION as of 4/28/2006.

0.43    2006-04-19
        - Factored sleep and random sleeping into _sleep_now method
          in FriendAdder.pm
        - FriendAdder.pm now sleeps when skipping profile_type profiles
        - Updated FriendAdder.pm to skip adds if the following errors
          were encountered on a previous attempt: 'P', 'FA', 'FB', 'FF', 
          'FP'
        - post_comment and send_message now return status code and text
          description if called in a list context.
        - added cache_friend to Data.pm
        - added call to cache_friend in FriendAdder.pm
        - Added "set_options" method to MyBase.pm. Allows you to set options
          after calling "new".
        - Added "get_options" method to MyBase.pm. Allows you to get the
          value of one, more, or all options (generic accessor method).
        - fixed bug in FriendAdder.pm that returned inaccurate current
          friends when used with Data.pm
        - Message.pm no longer displays "Excluding" messages.
        - Message.pm's friend_ids method now creates an anonymous array
          when taking a list of friendIDs to avoid possible bugs.
        - search_music method now uses new format for call to submit_form.
        - Removed debugging code that limits search_music to 3 pages.
          Method functional but needs tests written.
        - search_music moved to the "Contact People" section, out of the
          development dungeon.
        - Removed unfinished Poster.pm from distribution.

0.42    2006-04-19
        - All page loads now check for "You must be logged in" error and
          re-login if necessary.  This fixes a bug many have reported in
          which they will start receiving "Failed, Network Error" messages
          for every post.
        - Recoded delete_form to allow it to delete more than one
          friend at a time.
        - Message.pm now excludes previously posted friends whose profiles
          were set to "private" or "away".
        - Message.pm now displays the "counter" value for each message it's
          sending.
        - Removed delete_friend note from TODO.
        - Corrected "Sorry! an unexpected error has occurred" RE check.
          (Wasn't identifying that error, now it will).
        - Re-wrote browse function. Returns proper number of friends,
          needs testing to make sure filters are working, and needs
          proper docs to make it more useful.
        - Re-wrote submit_form to use hashref of options and accept some
          more options needed for browse.
        - Updated browse sample script. Doesn't require login, displays
          error if one occurs.
        - "Detabbed" Myspace.pm code.
        - get_inbox sample script can now take a friendID as an argument to
          display messages from that friendID.
        - Comment.pm no longer prints "Excluding " messages.
        - Switched Data.pm from add_log to post_log table
        - Added get_account_id to Data.pm
        - Added DateTime.pm dependancy to Data.pm 
        - Added time_zone parameter to FriendAdder
        - Changed $logged to be true on 'P', 'FF', 'FP' in FriendAdder
        - Added Class::DBI::AbstractSearch dependancy to FriendAdder
        - Added profile_type parameter to FriendAdder
        - Myspace.pm now correctly recognizes "doing some maintenance on the
          mail for certain users" as an error page.
        - Changed get_account_id to get_account in Data.pm
        - Changed add_account to set_account in Data.pm
        - Myspace object no longer needs to be passed to Data.pm to get
          account info
        - FF response code in FriendAdder now automatically logs friends if
          Data.pm is used 
        - Added db documenation to Data.pm
        - Removed add_log from database scheme
        - Added date_stamp routine to Data.pm

0.41    2006-04-15
        - Fixed tiny typo in Data.pm docs.
        - Fixed possible bug in FriendAdder.pm that would cause failed add
          attempts to never be retried.
        - Added Poster.pm to MANIFEST.

0.40    2006-04-14
        - Fixed a bug in FriendAdder.pm that caused an invalid captcha 
          message to appear
        - Updated Myspace.pm docs, putting options at top.
        - Added auto_login option, which turns off auto-login if called
          with a false value like so: "new WWW::Myspace( auto_login => 0 )".
        - Added routines to croak if a function that requires login is
          called when not logged in.
        - Moved methods and their docs around in an attempt to
          better organize things.
        - Added search_music method. Still in testing.
        - Removed test account logins.  Only tests that don't require login
          will be run by default.  You can add a config file with personal
          test accounts if you want to run full tests (see README for more
          info and sample config file).
        - Updated TestConfig.pm to use user-specific config file for full test
          with generic fallback file.
        - Fixed bug in Data.pm where friend_id was not passed to is_band
        - add_account and update_friend in Data.pm now croak if database 
          connection cannot be created 
        - Fixed bug in send_message that would cause it to delay and return
          "FN" if it encountered a user whose status was set to "away" or
          who only accepts messages from friends.  It should now return the
          appropriate status code.
        - submit_form now accepts a null URL, meaning it should search the
          contents of $self->current_page for the form.
        - Added delete_message method.
        - Added bug in delete_friends to TODO.
        - Added cleanup_inbox script to sample_scripts (deletes messages
          from inbox, leaving most recent 40 messages).
        - Added mail suite test in 05-message that tests send,
          read, and delete (not reply yet).
        - get_friends now displays a warning and sets "error" if it
          encounters a private profile.
        - get_friends correctly allows friend viewing when not logged in,
          but croaks if attempting to view a mailbox or group when not
          logged in.
        - Added 99-enduser test script that runs "end-user" test suite
          after full test suite to make sure everything works in both modes.

0.39    2006-04-08
        - Fixed bug in MyBase.pm that could cause an error in some
          cases when the new method was invoked.
        - Added fatal error in WWW:Myspace::FriendAdder if
          send_friend_requests is called and a myspace object hasn't
          been passed to the FriendAdder object.
        - Rewrote add_friends to use FriendAdder module. Still works the
          same except for different output format.
        - Updated FriendAdder to count passed attempts instead of all
          attempts.
        - Added save and load methods to MyBase.
        - Added previously_posted method to Poster.pm, fixed bugs,
          updated docs.
        - Poster.pm's friend_ids method can now take a list or arrayref
          to set its value.
        - Updated get_friends to start at page 1 when serarching friend
          lists, 0 for group and inbox due to myspace chage. (Note that this
          change doesn't seem to affect the results, it was just loading
          page 1 twice).
        - Added get_friend_page to sample_scripts
        - Added delete_friend to sample_scripts
        - Fixed a bug in submit_form which could cause failures if an error
          page was encountered on the first submit.
        - Commented out "An Error Has Occurred" from the errors array in
          Myspace.pm because it conflicts with the "Exceeded Useage"
          (their typo, not mine) error message. It should fail, not try
          again.
        - Updated TODO with note about proper handling of Mech.
        - Updated send_message to semi-properly handle Mech. and to use
          the error method to check for failure from get_page.
        - Updated sample_scripts/send_message to display any errors
          encountered.
        - Added mention of YAML indent to message_group synopsis
          documentation.
        - Added usage comments to get_friends sample script.
        - Changed nomenclature of incrementing internals in FriendAdder.pm
        - Changed max_attempts param to max_adds in FriendAdder.pm
        - Fixed wrapping in FriendAdder.pm
        - Added documentation for _report() and return_params to FriendAdder.pm
        - Expanded documentation for new() on FriendAdder.pm
        - Added beta dB schema "mysql.txt"
        - Changed method update_friends to update_all_friends in Data.pm
        - Added method update_friend to Data.pm
        - Added table to schema to distinguish between friends from different accounts
        - Modified update_friend to add info for is_band, user_name, and url
        - Data.pm now a subclass of MyBase.pm
        - Added column my_friend_id to accounts table
        - Added internal method _die_pretty to Data.pm and FriendAdder.pm
        - Updated docs for FriendAdder.pm and Data.pm
        Made several enhancements to Myspace.pm:
        - Myspace.pm is now a subclass of WWW::Myspace::MyBase.pm, so the
          new method inherits options processing.
        - Added logout method.
        - Made "site_login" method public.
        - Started changes to not require login for functions that don't need it.
        - Added account_name and password accessor methods.
        - Updated docs and reviewed code for proper Mech usage (needs more).
        - Fixed delete_friends method broken by Myspace security enhancement.
        - delete_friends is now much more efficient if deleting multiple
          friends.
        - delete_friends now croaks if called when not logged in.

        - Added additional diagnostic output for failing "Post Comment" test
          in 01-login.t
        - Added test to 03-delete to check return status of delete_friends.

0.38    2006-03-28
        - Removed extra "&"s from end of URLs in get_friends routines.
        - get_friends methods (friends_from_profile, etc) will display
          a warning if it encounters a page with no friendIDs.
        - get_friends methods will display a warning if the friend count
          is off of myspace's friend count by more than 5% when getting
          friends from another user's profile (already did this when
          getting our friends).
        - get_friends methods will display a warning and return if they
          fail to get a page.
        - Enhanced get_friends sample script
        - Fixed bug that was making get_page fail too easily.
        - Added version 0.02 of FriendAdder.pm to the distribution
        - FriendAdder.pm is now (mostly) documented
        - FriendAdder->friend_request() renamed to
          FriendAdder->send_friend_requests()
        - Added convenience method FriendAdder->add_to_friends() for
          FriendAdder->send_friend_requests()
        - Added version 0.01 of Myspace::Data.pm to the distribution
        - Added test 09-data.t for Myspace::Data
        - Added test 10-mybase.t for MyBase.pm
        - FriendAdder.pm now uses MyBase.pm as a base class
        - Added MyBase.pm to dist (for internal modules to use).
        - Fixed bug in message_group - docs said to add "delay: 0"
          to the config file to stop it from sleeping. Correct setting
          is "delay_time: 0".  Fixed docs, and made "delay: 0" work
          also so it'll work as expected for people with old config files.
        - Removed dependency on IO::All in approve_friends, message_group,
          and Message.pm (no longer required in the distribution, removed
          from Makefile.PL also).
        - Updated output in approve_friends to display result of commenting
          (DONE, CAPTCHA, COUNTER). DONE means you've commented all your
          friends.
        - send_friend_request now checks to make sure there's a button
          before posting to avoid:
          "Can't call method "click" on an undefined value at
          /usr/local/ActivePerl-5.8/lib/site_perl/5.8.7/WWW/Mechanize.pm
          line 1345."
        - send_friend_request now returns FN if a known error page is returned
          even after the multiple attempts get_page makes at retreiving the
          page. Before it could cause the error above also.
        - Fixed a bug in which get_friends would produce a "use of
          unitialized value" error if called with no arguments.
        - Updated VERIFY_COMMENT_POST due to change in myspace.com profile
          page display.
        - Added eval around the "click" in submit_form to prevent the error
          above from all methods.  Failed form load will now just fail,
          not "die".
        - Added RE checks to post_comment to strengthen initial load.
          Helps overcome FN post errors due to network problems.
          
          EARLIER VERSIONS WILL REPORT FALSE COMMENT POST FAILURES.

0.37    2006-03-22
        - Added "We\'re doing some maintenance on the mail for certain users"
          error message to errors array.
        - Fixed and added example to friends_from_profile method's docs.
        - if get_friends is called in a HASHREF context, it returns
          a hash of info about each friend (currently just the page they're
          on in the friends list).
        - Added version 0.01 of FriendAdder.pm to the distribution
        - Added 07-friend_adder test script
        - Added cool_new_people method to Myspace.pm
        - Added 08-cool_new_people test script 
        comment_myspace:
        - Added -i flag to comment_myspace.  Causes comment_myspace to ignore
          duplicates when posting comments.
        - Added -r flag to comment_myspace.  Reset the exclusions file before
          running.

0.36    2006-03-22 - maintenance release, replaces 0.35.
        - Removed signature code - was breaking install.

0.35    2006-03-15
        - Added inbox method. Returns the contents of your inbox complete
          with sender, messageID, subject, and status (read, unread, sent,
          replied).
        - Removed commented-out libraries deprecated in version 0.34.
        - Added get_inbox sample script.
        - submit_form now properly returns a failure code if it can't
          load the form, instead of letting WWW::Mechanize choke on it.
          This hopefully fixes bug#18232, where post_comments can fail
          with no such field 'f_comments' at /.../WWW/Mechanize.pm line 1178.
          

0.34    2006-03-14
        - Switched to use WWW::Mechanize
          - Removed dependency on HTTP::Request::Form
          - Fixes "Use of initialized value" errors when sending
            friend requests.
        - Removed cookie_jar method. Cookies stored in memory only.
        - Moved login functions to more logical location in the code.
        - Fixed some docs typos.
        - logged_in will return false if my_friend_id couldn't be set for
          some reason.
        - If already_commented can't load the page, or if my_friend_id
          isn't set, it will return a false "true" value and set
          $myspace->error to a message describing the problem.
        - Added mortality to all "scripts" - if login fails, the script
          will die with "Login Failed".  This prevents continuing with
          unpredictable results.

0.33    2006-03-10
        - Added signature code to Makefile.PL
        - Added sample code to logged_in method to keep trying forever
          until logged in.
        - Added sample_scripts directory to MANIFEST
        - Converted tabs into spaces in Changes file.
        - Applied patch in bug#18055 to fix send_friend_request. Now
          properly returns status code instead of status description
          when called in a list context.
        - Added dependency for Contextual::Return to Makefile.PL
          (used in above bug fix).
        - Added is_band method. Returns true if the profile is a band profile.
        - Added code to send_friend_request to return "FB" if the
          friend we're trying to add doens't accept friend requests from
          bands, and the account we're sending from is a band.
        - Added is_band tests to 01-login.t.
        - Debugged response codes in send_friend_requests. The method
          returned mostly FN and F before, codes are accurate now.
        - Added "error" method and removed page-load warnings. They
          are returned in "error" now and can be displayed by your script if
          desired. See docs for "error" method.
        - Added code to friend_request to return "FA" (Short for
          Failed, Anonomyous adds rejected) if the user requires
          a last name or email address to add them.
        add_friends:
          - Added add_friends to Makefile.PL so it'll actually install.
          - add_friends will now die if it can't log in.
          - Converted tabs into spaces in code.
          - Fixed redundant status_codes code.
          - Debugged CAPTCHA prompt
          - Updated text.

0.32    2006-03-08
        - Added add_friends script to the distribution.  Simple script to
          help send friend requests to friends list of another profile.
        - Updated comment test script to skip post_all test if CAPTCHA
          encountered.
        - Corrected docs for comment_friends method.
        - Corrected potential bug in approve_friend_requests which could
          cause duplicate comments.
        - Added CAPTCHA check to new friend commenting in
          approve_friend_requests so it will not try to post any more
          comments after receiving a CAPTCHA response.
        - You can now check $myspace->captcha after runing
          approve_friend_requests to see if it hit a CAPTCHA response or not.
        - Updated approve test to skip comment testing if CAPTCHA was
          encountered to prevent unnecessary test failures.
        - Fixed Tom's ID in docs (it's 6221, not 6229). Note that it
          -was- correct in the code, just not in the docs.
        - Fixed test script bug that would cause friends_from_profile
          method test to fail.
        Comment.pm:
          - post_all method now returns CAPTCHA, COUNTER, or DONE like
            post_comments. (Only useful when delay = 0).

0.31    2006-03-06
        - Added reply_message method. Not tested.
        - Added friends_from_profile method which returns a list of
          one or more other profile's friends.
        - Updated login test script to work like the others,
          added tests for friend_from_profile method.
        - send_friend_request:
          - Applied patch from Olaf Alders to return human-readable
            status codes.  Added his CAPTCHA-handling sample code
            to docs.
        Message.pm:
          - send_all method now returns a response code (fixes a bug
            in message_group in which it would say "Stopped due to "
            instead of specifying why it had stopped).
        - approve_friends:
          - Added "-gc message" argument.  If used, approve_friends, after
            approving and commenting new friend requests, will leave
            "message" as a comment for existing friends.

0.30    2006-03-05
        - Added read_message method to Myspace.pm
        - Added tests for read_message
        - Moved Message.pm testing to 05-message.t
        - Renamed approve.t 04-approve.t
        - Renamed comment.t 05-comment.
        - Changed verification RE for get_profile so that
          profiles marked as "private" won't produce "Page doesn't
          match verification pattern." warnings.
        - Fixed bug#17999: Can't modify non-lvalue subroutine call.
          (When post_comment would return an FC response, the module
          would produce an error).

0.29    2006-02-27
        message_group:
          - Now accepts a reference to a list of groups or a single group.

0.28    2006-02-26
        - Fixed a bug in post_comment that would cause comments with
          multiple lines to display "<br>" tags when posted to pages that
          don't allow HTML comments.
        - Made same change in send_message, which makes no difference
          in MacOS X, but might on other platforms that interpret "\n"
          differently.  Should be "safer".
        - Updated test scripts to post multi-line messages.

0.27    2006-02-24
        - Added "An error has occurred trying to send this message" error RE.

        message_group:
        - Now displays the reason it stopped (CAPTCHA, USAGE, COUNTER, or DONE).
        

0.26    2006-02-20
        - Included approve_friends, message_group, and comment scripts
          in distribution.
        - Added browse method, but not yet functional.  If you want to
          help debug, please do. Otherwise, don't use it yet.
        - Added CAPTCHA handling (alpha stage):
          - post_comment sets $myspace->captcha and returns FC
          - Call post_comment with ID, message, captcha response to
            continue.
            Note: Using this is a bit tricky, needs better examples.
        - Fixed "t/02-dual.........Can't open test config file
          readline() on closed filehandle CONFIG at t/TestConfig.pm
          line 50." error in test.
        - CHANGED submit_friend_request. This implements feature request
          17587, but IS NOT BACKWARDS COMPATIBLE. It will DIE if you call
          it with more than one friend, so that it can tell you to update
          your code.  Now returns a status code like post_comment instead
          of a true/false value.
        - Added submit_friend_requests method for multiple adds (but see
          docs for a better example).

0.25    2006-02-20
        - Added debugging code.
        - Updated URLs for get_friends sub-methods. Versions before
          this one will not return all friends.
        - Added warning if friend_count and number of friends returned
          by get_friends differs by more than 10 friends or 5% of
          friend_count.
        - Added page verification RE to get_friends to help ensure all
          friends are accounted for.

0.24    2006-02-19
        - Added logged_in method. Returns true if login was successful.
        - Added login failure tests to test scripts.
        - Updated for changes in myspace.com. These fix install test
          errors and the get_friends method (whose URL relies on
          friend_count) as well.
          - user_name now gets name from "Hello, <name>!" line.
          - Included test for optional "<span>" in friend_count.
          
          PREVIOUS VERSION WILL FAIL INSTALL TESTS AND get_friends,
          user_name, AND friend_count METHODS (and possibly others)
          WILL NOT WORK.

0.23    2006-02-11
        - Added "profile undergoing routine maintenance" error RE to
          list of error pages.
        - Added add_to_friends convenience method.
        - Updated URL for inbox friends check. Fixes friends_who_emailed
          method and tests so install works.
        - Updated $SEND_MESSAGE_FORM URL. Fixes mail sending and tests.
        - Fixed POD for add_to_friends.

          PREVIOUS VERSIONS WILL FAIL INSTALL TESTS AND CAN'T SEND
          MESSAGES.

0.22    2006-02-10
        - Added regexp for "This user's profile has been temporarily
          disabled for special maintenance" error.
        - Added an array of regexps for error page handling.
        - Added ability to explicitly verify certain pages in get_pages.
          - Added explicit verify for get_profile method.
        - Updated known issues.
        - Added explicit check for verify form for post_comments.
        - Added dual RE check options for submit_form.

0.21    2006-02-07
        - Added example and "See also WWW::Myspace::Message" docs for
            send_message due to a user question.
        - Added "See also WWW::Myspace::Comment" for post_comment.
        - Removed unnecessary pre-requesite "IO::All" from Makefile.PL
        - Fixed condition in 03-delete.t in which test would fail if
          Perl 2 was not in friend list.
        - Added code to check for "unexpected error" page.
        - Made get_page and submit_form functions much more robost.
        - Updated URLs in send_friend_request, delete_friends,
          post_comment to use new myspace URLs.
        - Added flag to send_message to have it attach an "Add to Friends"
          button. This is mostly to save people having to update their
          message files manually if the code for this changes again.
        - Fixed delete_friends method, broken by myspace change.
        - Numerous other changes and bug fixes from extensive changes at
          Myspace.com.
        - Reinforcement of test script items so that tests should pass,
          so that end-user installations can include auto-update code
          without forcing install.
        Message.pm (0.8):
        - Added add_to_friends method which adds an "Add to friends"
          button after the message if set to true.
          If you include an "add to friends" button in your messages,
          YOU SHOULD UPDATE YOUR CODE TO USE THIS METHOD instead.

          PREVIOUS VERSIONS WILL ENCOUNTER MANY ERRORS:
          Posting comments, deleting friends, sending friend requests.
          Install tests will fail.


0.20    2006-02-04
        - Added Tom's friend_user_name method and test for it.
        - Added more output info to approve.t test.

0.19    2006-02-04
        Maintenance release
        - Added missing test files to distribution

0.18    2006-02-02
        - Added bug reporting note to docs.
        Message.pm (0.7):
        - Counter now only counts successful posts.
        Comment.pm (0.11):
        - Counter now only counts successful posts.     

0.17    2006-02-01/6:43pm
        - Updated Login script due to change in myspace.com login form.
        Unless Myspace.com changes the form back, NO PREVIOUS VERSION
        WILL WORK as of the date/time of this version above.

0.16    2006-01-26/8:09pm
        - Set test count correctly in approve.t
        Comment.pm:
        - Added post_all method
        - Added comment.t test.
        - Fixed a condition which could cause an "undefined variable"
          warning when reset_exclusions is called.
        - Fixed a bug that would produce an error:
          Can't use an undefined value as an ARRAY reference at
          /path/to/WWW/Myspace/Comment.pm line 124, <STDIN> line 2.
          if post_comments was called without any friends.
          (RT Bug 17379: http://rt.cpan.org/Ticket/Display.html?id=17379).
        - Added test for defaults to comment.t

0.15    2006-01-25/3:12pm
        - Fixed condition in submit_form so it'll try 5 times with 2
          second delay if there's a network error.
        - Updated test suite for new max_count in Message and removed
          extra "approve_friends" test in 01-login.t
        - Added handling of private profiles in send_message - returns "FF"
        - send_message converts literal '\n' into "\n".
        - Added handling of away messages - returns "FA"
        - Added handling of excess usage - returns "FE"
        Message.pm:
          - Added result code display (i.e. why are we sleeping?) when
            sleeping and "noisy" is on.
          - Det default max_count to 300.
          - Added handling of private profiles and away messages.
          - Added handling of usage being exceeded - returns "USAGE".

0.14    2006-01-25/11:41am
        - Added loop code to submit_form - will now try each
          submit 5 times if the submit fails.
        - Added optional "message" argument to approve_friend_requests.
          You can now call approve_friend_requests( message )
          and message will be posted to each approved friend.
        - Added TODO and CONTRIBUTING section to docs.
        - Updated docs for all methods.
        - Updated get_page to attempt GET 20 times instead of forever.
        - Added methods:
            - send_friend_request
            - add_as_friend
            - delete_friend
        Comment.pm (0.9):
            - Reworked module internals. Made Spiffy.
            - Numerous minor bug fixes.
            - Renamed "HTML" accessor "html".
            - Added "noisy" accessor.
            - Added "cache_file" to conform to Message and Myspace.

0.13    2006-01-20/7:43pm
        Fixed approve_friend_requests method. Was skipping valid friend
        requests.

0.12    2006-01-17/1:20pm
        Included Comment.pm, FriendChanges.pm, and Message.pm in
        distribution.
        Fixed bugs in cache_dir and cache_file handling.
        Made pathname handling OS-independent using File::Spec.
        Added friend_count and user_name accessors.
        Fixed retreival of user's friend list in get_friends.
        Added make_cache_dir method.
        Comment.pm:
            - Added exlusions_file method.
            - Renamed "set_HTML" method "HTML". Made it a
              standard accessor method.
        FriendChanges.pm:
            - Set default cache file to $myspace->cache_dir/friend_cache.
            - Added cache_file accessor method.
            - Obsoleted "set_cache_file" method.
        Message.pm, Comment.pm, FriendChanges.pm:
            - When cache_dir method is called to retreive its default
              value, it calls the make_cache_dir method in the
              WWW::Myspace object to create cache_dir if it
              doesn't exist.
            - File handling done by File::Spec for cross-platform
              portability.
        Message.pm:
            - Added extensive test suite.
            - Added "messaged" method.
            - Stabilized code to beta release state. Passes test suite.
            - Fixed bugs.
            - Noted obscure known "bugs".

0.11    2006-01-19/3:07am
        CPAN maintenance release. Removed stray ._ files from dist.

0.10    2006-01-16/8:12pm
        Fixed setting of HOME_DIR to work if $ENV{HOME} is not
        set (i.e. if running in a CGI script). Updated docs.

0.09    2006-01-11/10:24pm
        Chnaged name from "Myspace" to "WWW::Myspace"
        Made "Spiffy".
        Updated docs.
        Changed cache file to use $HOME/.www-myspace/login_cache by default.
        Fixed bugs:
        Known issues:
            - get_friends method does not work if user has > 40 friends
              (bug introduced by change in myspace site).
            - post_comment dies if it is told to post to a friendID that
              is not a friend of the logged-in user. (Myspace displays
              an error instead of a form).
        Added test suite.

0.08    2006-01-07/12:52pm
        *** REQUIRED VERSION AFTER 1/7/2006 ***
        Added explicit load of "Home" page when logging in.
        Note that this was done beacuse Myspace added an
        ad page which breaks any version of this module prior
        to this one.

0.07    2006-01-03/7:51pm
        Added CAPTCHA response code "FC" to send_message method. send_message
        returns FC if the $CAPTCHA regexp is found after submitting a message
        form.

0.06    2005-12-27/5:04pm
        Added friends_in_group method. Returns list of "friends" in a
        Myspace group when passed the group ID.

0.05    2005-12-14/7:49pm
        Added approve_friends method.

0.04    2005-12-11/9:38pm
        Minor documentation tweaks: Updated BUGS and Copyright secsions,
        added "send_messages" method in SYNOPSIS.

0.03    2005-12-11/9:21pm
        Added send_message method.
        Added already_commented method.
        Updated documentation to be in-line in the package file.

0.02    2005-12-08/10:41pm
        post_comments now adds "<br>" tags to the message
        like myspace's Javascript does.

0.01    2005-12-05/1:14
        First version, released on an unsuspecting world.