Posts Tagged rapidshare
Script in Ruby for validating rapidshare links
Posted by jcubic in Programming on September 15, 2010
This is script which I wrote for testing if file exist on rapidshare hosting service, it use Rapidshare API
require 'net/http'
require 'uri'
require 'optparse'
class FalseException < Exception
end
def check(file, quiet=nil)
file.each_line {|url|
begin
url = url.stript
#skip blank lines, comments and invalid urls
if url =~ /^\s*$/ or url =~ /^\s*#/ or
not url =~ /^http:\/\// or
not url =~ /files\/([0-9]*)\/(.*)/
next
else
fileid = $1
filename = $2
query = "?sub=download_v1&fileid=#{fileid}&filename=#{filename}"
apiurl = URI.parse('http://api.rapidshare.com/cgi-bin/rsapi.cgi')
page = Net::HTTP.new(apiurl.host).get(apiurl.path + query).body
if page =~ /File deleted/ or
page =~ /This file is marked as illegal/ or
page =~ /Filename invalid./ or
page =~ /File not found/
if quiet
raise FalseException
end
if RUBY_PLATFORM =~ /(:?mswin|mingw)/i
puts "#{url} [FAIL]"
else
#display red FAIL on n*ix system
system("echo \"#{url} [\x1b[31m\x1b[1m\"FAIL\"\x1b[0m]\"")
end
else
if quiet == nil
if RUBY_PLATFORM =~ /(:?mswin|mingw)/i
puts "#{url} [OK]"
else
#display green OK on *nix system
system("echo \"#{url} [\x1b[32m\x1b[1m\"OK\"\x1b[0m]\"")
end
end
end
end
rescue Timeout::Error, Errno::ETIMEDOUT
puts "Timeout Error, try again"
redo
end
}
end
def usage()
puts "rapidtest.rb [-f (filename | - )] [-h]"
end
opts = ARGV.getopts('f:hq')
if opts['h']
usage
exit(0)
end
filename = opts['f']
if filename
begin
if filename == '-'
check(ARGF)
else
File.open(filename) {|file|
check(file, opts['q'])
}
end
rescue Interrupt, Errno::EINTR
exit(1)
rescue FalseException
exit(1)
end
end
exit(0)
It will display url and [FAIL] or [OK] (on unix like system it display in color), or return true or false when used with -q option.
You can use it with -f option which must be filename with urls or – to read from stdin
If you using linux you can use xclip program to get data from clipboard.
If you have some urls in clipboard you can use:
xclip -o -sel clip | rapidtest.rb -f -
You can download it from here.
you can test if all files are valid with:
xclip -o -sel clip | rapidtest -f- && echo 'all fine' || echo 'some are invalid'
You can put this script in panel and display GUI message dialogs with zenity
function ok() {
zenity --info --title "rapidtest" --text "all links are valid"
}
function error() {
zenity --error --title "rapidtest" --text "some links are invalid"
}
xclip -o -sel clip | rapidtest.rb -q -f- && ok || eror
File Hosting Downloader Project
Posted by jcubic in Programming on July 5, 2010
I’ve create my first github project Downloader. It’s a Ruby script for download files from file hosting services. You can download files from 4shared, rapidshare, przeklej, filesonic and wrzuta. You can download it from github or from here.
You can use it:
download.rb <url>
or
download.rb -f <file with urls>
If you download files from rapidshare and you have Orange livebox, you can provide livebox possword for reconnection (change dynamic ADSL IP)
download.rb -l <livebox password> -f <filename>
If you download files from przeklej you can provide you user name and password if you want to download file larger than 50MB
download.rb -u <user> -p <password> -f <filename>
Dowload files from rapidshare
Posted by jcubic in Programming on May 18, 2010
Here are function writen in Python for downloading files from Rapidshare. Unfortunetly you must wait couple of seconds, you can’t skip this because it seems that counting is on server side too.
from urllib2 import urlopen, Request
from urllib import urlencode
import os
import re
import time
import base64
class DownloadLimitException(Exception):
def __init__(self, *arg):
Exception.__init__(self, *arg)
def download(url):
page = urlopen(url).read()
action_url_regex = '<form id="[^"]*" action="([^"]*)"'
s_url = re.search(action_url_regex, page)
if s_url:
url = s_url.group(1)
data = urlencode({'dl.start': 'Free'})
request = Request(url, data)
page = urlopen(request).read()
action_url_regex = '<form name="[^"]*" action="([^"]*)"'
c_regex = 'var c=([0-9]*);'
limit_regex = 'You have reached the download limit for free-users'
if re.match(limit_regex, page):
raise DownloadLimitException(limit_regex)
s_url = re.search(action_url_regex, page)
s_c = re.search(c_regex, page)
if s_url and s_c:
url = s_url.group(1)
c = int(s_c.group(1))
print "wait %i seconds" % c
time.sleep(c)
os.system('wget "%s"' % url)
You could use this function like this. Notice that you must have wget installed on your system.
def main():
from sys import argv
if len(argv) == 2:
try:
download(argv[1])
except DownloadLimitException,
print "limit reached"
if __name__ == '__main__':
main()

