Revision history for WWW::Myspace 0.60 2006-11-19 - Added get_photo_ids method - Added set_default_photo method - Added set_random_photo sample script - _go_home and get_page now return undef if there's an error - Added 14-photos.t test. - Added missing tests 12-bulletin.t and 13-blog.t to distribution. - Added a trace mode by defining a method called "trace_func" which allows detailed user-specifiable tracing of retrieved web pages - Fixed bug in get_comments that could cause a person's image code to be returned as the friendID if the person is online. Reported by Costas Calamvokis. - Updated RE in _get_friend_id to match change in Myspace code. This fixes login errors among other things. (CPAN Ticket 23487 reported by Paul Smith). 0.59 2006-10-18 - Added mech_params method to provide greater control over mech object. - Added follow_to method (mostly for internal use) to simulate clicking links. - Updated many methods to use "follow_to". - Fixed inbox method to work with new Myspace "messaging" server. - Updated delete_message to work on new "messaging" server and severly simplified the code. - Updated read_message to work with new server. - Added delete_message sample script. - Added check_notifications and get_login_form sample scripts. - Added get_notifications method which returns a hash of codes and displayable "New" notifications (New Messages!, etc) - Added get_login_form method which returns an HTML login form. - Minor humanization updates in get_friends, friends_in_group, friends_who_emailed, friends_from_profile. - Fixed error checking in get_friends, friends_in_group, friends_who_emailed, friends_from_profile per trouble ticket: http://rt.cpan.org/Ticket/Display.html?id=20354 - Added Dave's "date.patch" to distribution directory with instructions for those who want to stop the "Sec too big", "Day too big" warnings on login. - Optimized regular expression handling in the module, specifically precompiling many regular expressions. - Removed "inbox" source from get_friends. - Updated "friends_who_emailed" to use "inbox" method instead of "get_friends" method. - Added semi-internal "follow_link" method. - Added "send_group_invitations" method. - Added send_group_invitations and send_event_invitations sample scripts into distribution. - Changed warnings in "get_friends" to warn if a page has less than 30 friends (was 35). - Fixed minor bug in submit_form that could cause unnecessary errors or warnings if a named form was not on the page. It now sets error appropriately and returns 0. - post_bulletin test now properly handles end user tests (i.e. it's skipped because you're not logged in). - Added post_blog method and post_blog sample script. - Fixed send_group_invitations sample script's cache handling. - Removed Poster.pm from distribution. Moved to separate (currently unreleased) module. - Made send_group_invitations more efficient if called repeatedly (doesn't reload the page). - Reset test count in 00-load.t - Added Class::Factory::Util 1.3 as prereq to account for possible bug in DateTime::Format::MySQL (I believe it's a prereq that isn't listed in the latter module's Build.PL)? - Updated approve_friend_requests to use new button name. - Fixed bug in read_message that would cause blank lines to be stripped from message body. - Updated "From:" RE in read_message so that "from" will be properly read again. - Disabled "delete_message" method and tests. "Delete" button on Myspace doesn't work (you can only delete from the Inbox, and that's a bit trickier to handle than this method is worth :). 0.58 2006-09-17 - Added post_bulletin method and 12-bulletin.t test (don't worry, doesn't confirm the bulletin when testing). 0.57 2006-09-16 - Added FL status code to send_message (can't find Send Message link on profile page). - Fixed condition in send_message that would cause "FN" to be returned instead of "FF" (private profile, must be friend to send message). - Updated "post_comment" for new form field names. - Updated RE in friend_user_name to use "nametext" span tag instead of comment link (name attribute was removed from there). - Added WARNING to Myspace.pm, Comment.pm, and Message.pm regarding account crippling. WARNING: DO NOT USE THIS MODULE FOR MASS MESSAGING OR MASS COMMENTING. YOUR ACCOUNT WILL BE CRIPPLED OR DISABLED. See docs for details. 0.56 2006-09-09 - Added "FL" response code to post_comment. Returns FL if it can't find the "Add Comment" link on the profile page. (0.55 will die if this condition exists). On a side note, this condition "shouldn't" exist, but does if Myspace incorrectly says a profile is private even though they're your friend. Yes, it happened and so I had to add this. 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.