Net::Rapidshare - Perl interface to the Rapidshare API
This document describes Net::Rapidshare version 0.03
use Net::Rapidshare; ## Initialize with account info my $rs = Net::Rapidshare->new( type => 'prem', login => 'mylogin', password => 'mypassword' ); ## Initialize and then add account info my $rs = Net::Rapidshare->new(); $rs->type('col'); $rs->login('mylogin'); $rs->password('mypassword'); ## Initialize with a cookie my $rs = Net::Rapidshare->new( cookie => 'ASJHDGSASJDHAKSD6543.....', ); # OR my $rs = Net::Rapidshare->new(); $rs->cookie('JHASGDASAAKSJHD65465.....');
This module provides a Perl interface to the Rapidshare API. You can view the full API Documentation at http://images.rapidshare.com/apidoc.txt.
Note: Always make sure you do not make more API calls than necessary. Rapidshare servers use a IP-based credit system, which will ban a IP making very many small requests or just a few unnecessary big requests. Everything you do will add POINTS to your IP address. If you exceed a certain point limit, API calls are denied for 30 minutes. If you exceed this limit multiple times, your account is banned as well.
Construct a new Net::Rapidshare object
my $rs = my $rs = Net::Rapidshare->new(); my $rs = my $rs = Net::Rapidshare->new(\%potions);
Options allowed:
"type" - Account Type
"login" - Account Login
"password" - Account Password
"cookie" - Rapidshare Cookie string
Get or set the type of account. Use col for Collector and prem for Premium accounts. Free accounts are not supported.
Get or set account login
Get or set account password
Get or set authentication cookie. Setting a cookie causes it to override account type/login/password.
Use http instead of https for all API calls. This is the default
$rs->unsecure;
Use https instead of http for all API calls. Using this will double your points for all API calls.
$rs->secure
Get or set a proxy server
Returns the current and maximum allowed Rapidshare API CPU usage. Your account maybe banned if you go over. It is a good idea to check it before/after intensive operations.
my ($curr, $max) = $rs->getapicpu or die $rs->errstr;
Returns a hash (or reference) containing your account details.
my %account = $rs->getaccountdetails( withrefstring => 1, withcookie => 1, ) or die $rs->errstr;
Options:
withrefstring Returned hash includes a key 'refstring' with your referrer string as its value
withcookie Returned hash includes a key 'cookie' with your Rapidshare cookie as its value
Returned Hash contains following keys -
Premium Account: accountid, type, servertime, addtime, validuntil, username, directstart, protectfiles, rsantihack, plustrafficmode, mirror, mirror2, mirror3, jsconfig, email, lots, points, curfiles, curspace, bodkb, prempoints, premkbleft, refpoints, refrate, refstring, cookie
Collectors Account: accountid, type, servertime, addtime, username, email, jsconfig, rsantihack, lots, points, curfiles, curspace, prempoints, refpoints, refrate, refstring, cookie
Update your Rapidshare account information.
$rs->setaccountdetails( email => 'john@smith.com', newpassword => 'secret', # you might want to use secure if setting password directstart => 1, mirror => 'l3', ) or die $rs->errstr;
Required. Your email ID
Optional. New account password
Optional. New username/alias
Optional. Choose what mirrors you want to use
Optional. Direct downloads, requested files are saved without redirection via RapidShare. '0' to disable, '1' to enable. Skipping disables it.
Optional. A custom value, which can be set as you like. Max. 64 alphanumeric characters.
Optional. Modes valid are 0=No auto conversion. 1=Only TrafficShare conversion. 2=Only RapidPoints conversion. 3=Both conversions available.
Enabled the RS AntiHack mode. This mode is highly recommended for every account, as it makes account manipulations impossible without unlocking it first.
$rs->enablersantihack or die $rs->errstr;
Sends an email to the email ID on your account containing unlock code.
$rs->sendrsantihackmail or die $rs->errstr;
Disables the RS AntiHack mode, allowing account changes
$rs->disablersantihack('unlock code') or die $rs->errstr;
Exchanges RapidPoints to lots. You will get one lot for 50 RapidPoints. You cannot own more than 50.000 lots.
Return total number of lots after buying.
my $num_of_lots = $rs->buylots('how many') or die $rs->errstr;
Cast your vote in a (running) mass poll.
$rs->masspoll( '34534535342', # Poll ID '10' # Vote ) or die $rs->errstr;
Get the next upload server. Returns a full Rapidshare URL
my $upload_server = $rs->nextuploadserver or die $rs->errstr;
Check if a file has been uploaded successfully. Returns size on server
my $size_on_server = $rs->checkincomplete( '1234323423', # File ID '25298475092437502' # Kill Code ) or die $rs->errstr;
List all the files in your account. This is API Points intensive. Use sparingly.
my @rows = $rs->listfiles( fields => "killcode,name,size", order => 'size' ) or die $rs->errstr; foreach (@rows) { my ( $fileid, $killcode, $name, $size ) = split( /,/, $_ ); print "Found $name ($size) with ID $fileid and KillCode $killcode\n"; }
Returns 'NONE' or an array (or reference) of results. Each element will contain a comma separated list of file ID and requested fields
Realfolder ID to list files from. Defaults to all
List all files who's file names are that specified.
Fields to include in the result list. fileid is always included. This should be a comma separated string.
You can use any of the following => downloads,lastdownload,filename,size,killcode,serverid,type,x,y,realfolder,bodtype,uploadtime,ip,md5hex.
Order your results by any of the fields queried
Result is in descending order when '1'. Defaults to '0'
Rename a file
$rs->renamefile( '23424342', # file ID '817269847623843', # Kill code 'newname' # New name ) or die $rs->errtsr;
Delete files
$rs->deletefiles( "476535874,34959483,94354533" # File IDs, can also use an ARRAY REF ) or die $rs->errstr;
Move files to a specified folder
$rs->movefilestorealfolder( "876453453", # Target Folder ID "476535874,34959483,94354533" # File IDs, can also use an ARRAY REF ) or die $rs->errstr;
Transfer files between accounts
my $response = $rs->filemigrator( fromtype => 'col', # Source accnt type fromlogin => 'collector', # Source accnt login frompassword => 'password', # Source accnt password totype => 'prem', # Target account type tologin => 'premium', # Target account login topassword => 'passwd', # Target account password fileids => [ '32524354', '423452345' ], # File IDs. ) or die $rs->errstr; my ($number_of_files_moved, $files_in_src_accnt_before, $space_in_src_accnt_before, $files_in_tgt_accnt_before, $space_in_tgt_accnt_before, $files_in_src_accnt_after, $space_in_src_accnt_after, $files_in_tgt_accnt_after, $space_in_tgt_accnt_after, ) = split( /,/, $response );
Returns a comma separated string with -
1:Number of moved files 2:Files in source account before action 3:Space in source account before action 4:Files in target account before action 5:Space in target account before action 6:Files in source account after action 7:Space in source account after action 8:Files in target account after action 9:Space in target account after action
Moving a linked list returns only #1 above.
Source account type. free/col/prem
Source account credentials. Not required if fromtype is free.
Target account type. prem/col
Target account credentials
Array REF of file ids to move or '*' for all. Linked list ID if moving linked lists
set to '1' if moving a linked list
Set to '1' indicating that you have accepted the fee of 300 points which will be deducted from the target account. This call will fail unless accepted.
Set the Traffic Share type (0=off 1=on 2=on with encryption 101=on with logging 102=on with logging and encryption)
$rs->trafficsharetype( '101', # On with logging [ '87346543', '945934534' ] # File IDs ) or die $rs->errstr;
Check if file exists on server and is downloadable. Returns a data structure containing each file's information. Also includes file MD5sums if $md5 is true.
my $response = $rs->checkfiles( [ '87463528345', '982736452345' ], # File IDs ['name1, name2'], # Corresponding names ) or die $rs->errstr; foreach ( keys %{$response} ) { my $id = $_; my $status = $response->{$_}->{status}; my $name = $response->{$_}->{name}; my $server = $response->{$_}->{server}; my $mirror = $response->{$_}->{mirror}; next if ($status eq '0' or $status eq '4'); my $file_to_load = "http://rs${server}${mirror}.rapidshare.com/${id}/${name}"; }
The Status value can be -
0=File not found 1=File OK (Downloading possible without any logging) 2=File OK (TrafficShare direct download without any logging) 3=Server down 4=File marked as illegal 5=Anonymous file locked, because it has more than 10 downloads already 6=File OK (TrafficShare direct download with enabled logging. Read our privacy policy to see what is logged.)
Add a new Folder
$rs->addrealfolder( 'newfolder', # Folder Name '1' # Parent ID, defaults to 0 ) or die $rs->errstr;
Move a folder.
$rs->moverealfolder( '657634345', # Folder ID '2', # New Parent, defaults to 0 ) or die $rs->errstr;
Rename a Folder
$rs->renamerealfolder( '87365345', # Folder ID 'new name' # New folder name ) or die $rs->errstr;
Delete a folder
$rs->delrealfolder( '87652' # Folder ID ) or die $rs->errstr;
Get the traffic share logs for a file
my ( $start_time, $stop_time, $size, $starting_position, $bytes_downloaded, $range, $custom ) = $rs->trafficsharelogs('fileid') or die $rs->errstr;
Get the traffic share logs for you account
my (@rows) = $rs->trafficsharebandwidth( 'start_time', 'end_time' ) or die $rs->errstr; foreach (@rows) { my ( $timestamp, $kbps ) = split( /,/, $_ ); }
Gets details about your earned RapidPoints
my @rows = $rs->getpointlogs or die $rs->errstr; foreach (@rows) { my ( $date, $free_points, $prem_points ) = split( /,/, $_ ); }
Gets details about your earned Referrer Points
my @rows = $rs->getreferrerlogs or die $rs->errstr; foreach (@rows) { my ( $timestamp, $refpoints, $fileid ) = split( /,/, $_ ); }
Create a new Link List. Returns the link list ID
my $new_ll_id = $rs->newlinklist( name => 'newlist', # Name headline => 'my new link list', # Headline nickname => 'll1', # Nickname password => 'secret', # Password ) or die $rs->errstr;
Create a sub link list (sub folder). Returns the sub folder ID
my $new_sub_id = $rs->newlinklistsubfolder( folderid => 'MJHG67', # Parent link list ID name => 'newsublist', # Name description => 'new links', # Description password => 'secret', # Password ) or die $rs->errstr;
Add files to a link list
$rs->copyfilestolinklist( folderid => 'MJHG67', # Parent link list ID fileids => [ '73876221', '7876523523' ], # File IDs ) or die $rs->errstr;
Edit a link list
$rs->editlinklist( folderid => 'HDKS778', # Link list ID name => 'newlist', # Name headline => 'my new link list', # Headline nickname => 'll1', # Nickname password => 'secret', # Password ) or die $rs->errstr;
Edit either a file or a sub folder in a link list
## Edit a file entry $rs->editlinklistentry( folderid => 'HFGSK87', # Link list ID fileid => '876872345', # File ID description => 'hey, get this file', # Description ) or die $rs->errstr;
Options -
folderid : The Link list ID that contains the entries
fileid : This can either be a file ID or a sub folder ID
description : Optional. Description will be applied to the fileid
fileid
password : Optional. Secure a sub folder with the password. This option is invalid when fileid is a file and not a sub folder
Get a listing of all of your link lists and (optionally) all link list entries. Returns a Data structure with each entry's details
my $lists = $rs->getlinklist or die $rs->errstr; my @ids = keys %{$lists}; foreach my $id (@ids) { my $name = $list->{$id}->{name}; my $headline = $list->{$id}->{headline}; }
folderid : When provided with a folder ID, the returned list will contain the following details all entries in that link list.
'subfolderid' The sub folder ID. '0' means root 'fileid' File ID or Sub folder ID 'name' Name 'size' Size 'description' Description 'addtime' Time entry was added (UNIX)
showsubs : When set to true, the returned data structure will return all of the link lists as well as all entries within those lists. This cannot be used with folderid. The following details are returned for each link list
folderid
'subfolderid' The sub folder ID. '0' means root 'name' File or Sub folder Name 'headline' Headline 'views' Number of views 'lastview' Last viewed time (UNIX) 'password' Password 'nickname' Nickname
Delete file or sub folder entries
$rs->deletelinklistentries( folderid => 'HHSKL76', # Link list ID fileids => [ '73876221', '7876523523' ], # File IDs to delete ) or die $rs->errstr;
fileids can be sub folder IDs as well.
fileids
Delete a link list
$rs->deletelinklist('JHSDS7') or die $rs->errstr;
All methods return 'undef' and set $obj->errstr on errors. The $obj->errstr will also contain any errors reported by Rapidshare.
LWP::UserAgent
HTML::Entities
Please report any bugs or feature requests at http://github.com/mithun/perl-net-rapidshare/issues
Mithun Ayachit <mithun at cpan dot org>
<mithun at cpan dot org>
Copyright (c) 2009, Mithun Ayachit <mithun at cpan dot org>. All rights reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
To install Net::Rapidshare, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Net::Rapidshare
CPAN shell
perl -MCPAN -e shell install Net::Rapidshare
For more information on module installation, please visit the detailed CPAN module installation guide.