From e6bba1dd9df9b5b5c724bbe40738fbd74e76d0b5 Mon Sep 17 00:00:00 2001 From: Alan Haggai Alavi Date: Wed, 15 Apr 2009 01:13:23 +0530 Subject: [PATCH] Initial commit --- .gitignore | 2 + Changes | 5 + MANIFEST | 13 + META.yml | 18 + Makefile | 814 +++++++++++++++++++++++++++++ Makefile.PL | 24 + README | 209 ++++++++ blib/arch/.exists | 0 blib/arch/auto/WWW/Rapidshare/Free/.exists | 0 blib/bin/.exists | 0 blib/lib/WWW/Rapidshare/.exists | 0 blib/lib/WWW/Rapidshare/Free.pm | 463 ++++++++++++++++ blib/lib/auto/WWW/Rapidshare/Free/.exists | 0 blib/man1/.exists | 0 blib/man3/.exists | 0 blib/man3/WWW::Rapidshare::Free.3pm | 346 ++++++++++++ blib/script/.exists | 0 example/download.pl | 60 +++ lib/WWW/Rapidshare/Free.pm | 463 ++++++++++++++++ pm_to_blib | 0 t/00-load.t | 9 + t/invalid.dl | 0 t/pod-coverage.t | 18 + t/pod.t | 12 + t/rapidshare.t | 89 ++++ t/valid.dl | 1 + 26 files changed, 2546 insertions(+) create mode 100644 .gitignore create mode 100644 Changes create mode 100644 MANIFEST create mode 100644 META.yml create mode 100644 Makefile create mode 100644 Makefile.PL create mode 100644 README create mode 100644 blib/arch/.exists create mode 100644 blib/arch/auto/WWW/Rapidshare/Free/.exists create mode 100644 blib/bin/.exists create mode 100644 blib/lib/WWW/Rapidshare/.exists create mode 100644 blib/lib/WWW/Rapidshare/Free.pm create mode 100644 blib/lib/auto/WWW/Rapidshare/Free/.exists create mode 100644 blib/man1/.exists create mode 100644 blib/man3/.exists create mode 100644 blib/man3/WWW::Rapidshare::Free.3pm create mode 100644 blib/script/.exists create mode 100644 example/download.pl create mode 100644 lib/WWW/Rapidshare/Free.pm create mode 100644 pm_to_blib create mode 100644 t/00-load.t create mode 100644 t/invalid.dl create mode 100644 t/pod-coverage.t create mode 100644 t/pod.t create mode 100644 t/rapidshare.t create mode 100644 t/valid.dl diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..596cff8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.*.swp +*~ diff --git a/Changes b/Changes new file mode 100644 index 0000000..ec1782c --- /dev/null +++ b/Changes @@ -0,0 +1,5 @@ +Revision history for WWW-Rapidshare-Free + +[0.01] Tue 23 Dec 2008 + - First version + diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..16b6049 --- /dev/null +++ b/MANIFEST @@ -0,0 +1,13 @@ +Changes +MANIFEST +Makefile.PL +README +lib/WWW/Rapidshare/Free.pm +example/download.pl +t/00-load.t +t/pod-coverage.t +t/pod.t +t/invalid.dl +t/valid.dl +t/rapidshare.t +META.yml Module meta-data (added by MakeMaker) diff --git a/META.yml b/META.yml new file mode 100644 index 0000000..bf9687c --- /dev/null +++ b/META.yml @@ -0,0 +1,18 @@ +--- #YAML:1.0 +name: WWW-Rapidshare-Free +version: 0.01 +abstract: Automates downloading from Rapidshare.com and checking links for free users +license: perl +author: + - Alan Haggai Alavi +generated_by: ExtUtils::MakeMaker version 6.42 +distribution_type: module +requires: + Data::Validate::URI: 0 + HTML::Form: 0 + HTML::Parser: 0 + Test::More: 0 + WWW::Mechanize: 0 +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.3.html + version: 1.3 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2b708ee --- /dev/null +++ b/Makefile @@ -0,0 +1,814 @@ +# This Makefile is for the WWW::Rapidshare::Free extension to perl. +# +# It was generated automatically by MakeMaker version +# 6.42 (Revision: 41145) from the contents of +# Makefile.PL. Don't edit this file, edit Makefile.PL instead. +# +# ANY CHANGES MADE HERE WILL BE LOST! +# +# MakeMaker ARGV: () +# +# MakeMaker Parameters: + +# ABSTRACT_FROM => q[lib/WWW/Rapidshare/Free.pm] +# AUTHOR => q[Alan Haggai Alavi ] +# LICENSE => q[perl] +# NAME => q[WWW::Rapidshare::Free] +# PL_FILES => { } +# PREREQ_PM => { HTML::Form=>q[0], Test::More=>q[0], HTML::Parser=>q[0], WWW::Mechanize=>q[0], Data::Validate::URI=>q[0] } +# VERSION_FROM => q[lib/WWW/Rapidshare/Free.pm] +# clean => { FILES=>q[WWW-Rapidshare-Free-*] } +# dist => { COMPRESS=>q[gzip -9f], SUFFIX=>q[gz] } + +# --- MakeMaker post_initialize section: + + +# --- MakeMaker const_config section: + +# These definitions are from config.sh (via /usr/lib/perl5/core_perl/Config.pm) + +# They may have been overridden via Makefile.PL or on the command line +AR = ar +CC = cc +CCCDLFLAGS = -fPIC +CCDLFLAGS = -Wl,-E +DLEXT = so +DLSRC = dl_dlopen.xs +EXE_EXT = +FULL_AR = /usr/bin/ar +LD = cc +LDDLFLAGS = -shared -march=i686 -mtune=generic -O2 -pipe -L/usr/local/lib +LDFLAGS = -L/usr/local/lib +LIBC = /lib/libc-2.8.so +LIB_EXT = .a +OBJ_EXT = .o +OSNAME = linux +OSVERS = 2.6.25-arch +RANLIB = : +SITELIBEXP = /usr/share/perl5/site_perl/5.10.0 +SITEARCHEXP = /usr/lib/perl5/site_perl/5.10.0 +SO = so +VENDORARCHEXP = /usr/lib/perl5/vendor_perl +VENDORLIBEXP = /usr/share/perl5/vendor_perl + + +# --- MakeMaker constants section: +AR_STATIC_ARGS = cr +DIRFILESEP = / +DFSEP = $(DIRFILESEP) +NAME = WWW::Rapidshare::Free +NAME_SYM = WWW_Rapidshare_Free +VERSION = 0.01 +VERSION_MACRO = VERSION +VERSION_SYM = 0_01 +DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\" +XS_VERSION = 0.01 +XS_VERSION_MACRO = XS_VERSION +XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\" +INST_ARCHLIB = blib/arch +INST_SCRIPT = blib/script +INST_BIN = blib/bin +INST_LIB = blib/lib +INST_MAN1DIR = blib/man1 +INST_MAN3DIR = blib/man3 +MAN1EXT = 1p +MAN3EXT = 3pm +INSTALLDIRS = site +DESTDIR = +PREFIX = $(SITEPREFIX) +PERLPREFIX = /usr +SITEPREFIX = /usr +VENDORPREFIX = /usr +INSTALLPRIVLIB = /usr/share/perl5/core_perl +DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB) +INSTALLSITELIB = /usr/share/perl5/site_perl/5.10.0 +DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB) +INSTALLVENDORLIB = /usr/share/perl5/vendor_perl +DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB) +INSTALLARCHLIB = /usr/lib/perl5/core_perl +DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB) +INSTALLSITEARCH = /usr/lib/perl5/site_perl/5.10.0 +DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH) +INSTALLVENDORARCH = /usr/lib/perl5/vendor_perl +DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH) +INSTALLBIN = /usr/bin +DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN) +INSTALLSITEBIN = /usr/bin +DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN) +INSTALLVENDORBIN = /usr/bin +DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN) +INSTALLSCRIPT = /usr/bin/perlbin/core +DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT) +INSTALLSITESCRIPT = /usr/bin/perlbin/site +DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT) +INSTALLVENDORSCRIPT = /usr/bin/perlbin/vendor +DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT) +INSTALLMAN1DIR = /usr/share/man/man1 +DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR) +INSTALLSITEMAN1DIR = /usr/share/man/man1 +DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR) +INSTALLVENDORMAN1DIR = /usr/share/man/man1 +DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR) +INSTALLMAN3DIR = /usr/share/man/man3 +DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR) +INSTALLSITEMAN3DIR = /usr/share/man/man3 +DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR) +INSTALLVENDORMAN3DIR = /usr/share/man/man3 +DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR) +PERL_LIB = /usr/share/perl5/core_perl +PERL_ARCHLIB = /usr/lib/perl5/core_perl +LIBPERL_A = libperl.a +FIRST_MAKEFILE = Makefile +MAKEFILE_OLD = Makefile.old +MAKE_APERL_FILE = Makefile.aperl +PERLMAINCC = $(CC) +PERL_INC = /usr/lib/perl5/core_perl/CORE +PERL = /usr/bin/perl +FULLPERL = /usr/bin/perl +ABSPERL = $(PERL) +PERLRUN = $(PERL) +FULLPERLRUN = $(FULLPERL) +ABSPERLRUN = $(ABSPERL) +PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +PERL_CORE = 0 +PERM_RW = 644 +PERM_RWX = 755 + +MAKEMAKER = /usr/share/perl5/core_perl/ExtUtils/MakeMaker.pm +MM_VERSION = 6.42 +MM_REVISION = 41145 + +# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle). +# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle) +# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar) +# DLBASE = Basename part of dynamic library. May be just equal BASEEXT. +MAKE = make +FULLEXT = WWW/Rapidshare/Free +BASEEXT = Free +PARENT_NAME = WWW::Rapidshare +DLBASE = $(BASEEXT) +VERSION_FROM = lib/WWW/Rapidshare/Free.pm +OBJECT = +LDFROM = $(OBJECT) +LINKTYPE = dynamic +BOOTDEP = + +# Handy lists of source code files: +XS_FILES = +C_FILES = +O_FILES = +H_FILES = +MAN1PODS = +MAN3PODS = lib/WWW/Rapidshare/Free.pm + +# Where is the Config information that we are using/depend on +CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h + +# Where to build things +INST_LIBDIR = $(INST_LIB)/WWW/Rapidshare +INST_ARCHLIBDIR = $(INST_ARCHLIB)/WWW/Rapidshare + +INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT) +INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT) + +INST_STATIC = +INST_DYNAMIC = +INST_BOOT = + +# Extra linker info +EXPORT_LIST = +PERL_ARCHIVE = +PERL_ARCHIVE_AFTER = + + +TO_INST_PM = lib/WWW/Rapidshare/Free.pm + +PM_TO_BLIB = lib/WWW/Rapidshare/Free.pm \ + blib/lib/WWW/Rapidshare/Free.pm + + +# --- MakeMaker platform_constants section: +MM_Unix_VERSION = 6.42 +PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc + + +# --- MakeMaker tool_autosplit section: +# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto +AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)' -- + + + +# --- MakeMaker tool_xsubpp section: + + +# --- MakeMaker tools_other section: +SHELL = /bin/sh +CHMOD = chmod +CP = cp +MV = mv +NOOP = $(SHELL) -c true +NOECHO = @ +RM_F = rm -f +RM_RF = rm -rf +TEST_F = test -f +TOUCH = touch +UMASK_NULL = umask 0 +DEV_NULL = > /dev/null 2>&1 +MKPATH = $(ABSPERLRUN) "-MExtUtils::Command" -e mkpath +EQUALIZE_TIMESTAMP = $(ABSPERLRUN) "-MExtUtils::Command" -e eqtime +ECHO = echo +ECHO_N = echo -n +UNINST = 0 +VERBINST = 0 +MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');' -- +DOC_INSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e perllocal_install +UNINSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e uninstall +WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist +MACROSTART = +MACROEND = +USEMAKEFILE = -f +FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)" + + +# --- MakeMaker makemakerdflt section: +makemakerdflt : all + $(NOECHO) $(NOOP) + + +# --- MakeMaker dist section: +TAR = tar +TARFLAGS = cvf +ZIP = zip +ZIPFLAGS = -r +COMPRESS = gzip -9f +SUFFIX = gz +SHAR = shar +PREOP = $(NOECHO) $(NOOP) +POSTOP = $(NOECHO) $(NOOP) +TO_UNIX = $(NOECHO) $(NOOP) +CI = ci -u +RCS_LABEL = rcs -Nv$(VERSION_SYM): -q +DIST_CP = best +DIST_DEFAULT = tardist +DISTNAME = WWW-Rapidshare-Free +DISTVNAME = WWW-Rapidshare-Free-0.01 + + +# --- MakeMaker macro section: + + +# --- MakeMaker depend section: + + +# --- MakeMaker cflags section: + + +# --- MakeMaker const_loadlibs section: + + +# --- MakeMaker const_cccmd section: + + +# --- MakeMaker post_constants section: + + +# --- MakeMaker pasthru section: + +PASTHRU = LIBPERL_A="$(LIBPERL_A)"\ + LINKTYPE="$(LINKTYPE)"\ + PREFIX="$(PREFIX)" + + +# --- MakeMaker special_targets section: +.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT) + +.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir + + + +# --- MakeMaker c_o section: + + +# --- MakeMaker xs_c section: + + +# --- MakeMaker xs_o section: + + +# --- MakeMaker top_targets section: +all :: pure_all manifypods + $(NOECHO) $(NOOP) + + +pure_all :: config pm_to_blib subdirs linkext + $(NOECHO) $(NOOP) + +subdirs :: $(MYEXTLIB) + $(NOECHO) $(NOOP) + +config :: $(FIRST_MAKEFILE) blibdirs + $(NOECHO) $(NOOP) + +help : + perldoc ExtUtils::MakeMaker + + +# --- MakeMaker blibdirs section: +blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists + $(NOECHO) $(NOOP) + +# Backwards compat with 6.18 through 6.25 +blibdirs.ts : blibdirs + $(NOECHO) $(NOOP) + +$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_LIBDIR) + $(NOECHO) $(CHMOD) 755 $(INST_LIBDIR) + $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists + +$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHLIB) + $(NOECHO) $(CHMOD) 755 $(INST_ARCHLIB) + $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists + +$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_AUTODIR) + $(NOECHO) $(CHMOD) 755 $(INST_AUTODIR) + $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists + +$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR) + $(NOECHO) $(CHMOD) 755 $(INST_ARCHAUTODIR) + $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists + +$(INST_BIN)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_BIN) + $(NOECHO) $(CHMOD) 755 $(INST_BIN) + $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists + +$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_SCRIPT) + $(NOECHO) $(CHMOD) 755 $(INST_SCRIPT) + $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists + +$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN1DIR) + $(NOECHO) $(CHMOD) 755 $(INST_MAN1DIR) + $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists + +$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN3DIR) + $(NOECHO) $(CHMOD) 755 $(INST_MAN3DIR) + $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists + + + +# --- MakeMaker linkext section: + +linkext :: $(LINKTYPE) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dlsyms section: + + +# --- MakeMaker dynamic section: + +dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dynamic_bs section: + +BOOTSTRAP = + + +# --- MakeMaker dynamic_lib section: + + +# --- MakeMaker static section: + +## $(INST_PM) has been moved to the all: target. +## It remains here for awhile to allow for old usage: "make static" +static :: $(FIRST_MAKEFILE) $(INST_STATIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker static_lib section: + + +# --- MakeMaker manifypods section: + +POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--" +POD2MAN = $(POD2MAN_EXE) + + +manifypods : pure_all \ + lib/WWW/Rapidshare/Free.pm + $(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW) \ + lib/WWW/Rapidshare/Free.pm $(INST_MAN3DIR)/WWW::Rapidshare::Free.$(MAN3EXT) + + + + +# --- MakeMaker processPL section: + + +# --- MakeMaker installbin section: + + +# --- MakeMaker subdirs section: + +# none + +# --- MakeMaker clean_subdirs section: +clean_subdirs : + $(NOECHO) $(NOOP) + + +# --- MakeMaker clean section: + +# Delete temporary files but do not touch installed files. We don't delete +# the Makefile here so a later make realclean still has a makefile to use. + +clean :: clean_subdirs + - $(RM_F) \ + *$(LIB_EXT) core \ + core.[0-9] $(INST_ARCHAUTODIR)/extralibs.all \ + core.[0-9][0-9] $(BASEEXT).bso \ + pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \ + $(BASEEXT).x $(BOOTSTRAP) \ + perl$(EXE_EXT) tmon.out \ + *$(OBJ_EXT) pm_to_blib \ + $(INST_ARCHAUTODIR)/extralibs.ld blibdirs.ts \ + core.[0-9][0-9][0-9][0-9][0-9] *perl.core \ + core.*perl.*.? $(MAKE_APERL_FILE) \ + perl $(BASEEXT).def \ + core.[0-9][0-9][0-9] mon.out \ + lib$(BASEEXT).def perlmain.c \ + perl.exe so_locations \ + $(BASEEXT).exp + - $(RM_RF) \ + WWW-Rapidshare-Free-* blib + - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL) + + +# --- MakeMaker realclean_subdirs section: +realclean_subdirs : + $(NOECHO) $(NOOP) + + +# --- MakeMaker realclean section: +# Delete temporary files (via clean) and also delete dist files +realclean purge :: clean realclean_subdirs + - $(RM_F) \ + $(MAKEFILE_OLD) $(FIRST_MAKEFILE) + - $(RM_RF) \ + $(DISTVNAME) + + +# --- MakeMaker metafile section: +metafile : create_distdir + $(NOECHO) $(ECHO) Generating META.yml + $(NOECHO) $(ECHO) '--- #YAML:1.0' > META_new.yml + $(NOECHO) $(ECHO) 'name: WWW-Rapidshare-Free' >> META_new.yml + $(NOECHO) $(ECHO) 'version: 0.01' >> META_new.yml + $(NOECHO) $(ECHO) 'abstract: Automates downloading from Rapidshare.com and checking links for free users' >> META_new.yml + $(NOECHO) $(ECHO) 'license: perl' >> META_new.yml + $(NOECHO) $(ECHO) 'author: ' >> META_new.yml + $(NOECHO) $(ECHO) ' - Alan Haggai Alavi ' >> META_new.yml + $(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.42' >> META_new.yml + $(NOECHO) $(ECHO) 'distribution_type: module' >> META_new.yml + $(NOECHO) $(ECHO) 'requires: ' >> META_new.yml + $(NOECHO) $(ECHO) ' Data::Validate::URI: 0' >> META_new.yml + $(NOECHO) $(ECHO) ' HTML::Form: 0' >> META_new.yml + $(NOECHO) $(ECHO) ' HTML::Parser: 0' >> META_new.yml + $(NOECHO) $(ECHO) ' Test::More: 0' >> META_new.yml + $(NOECHO) $(ECHO) ' WWW::Mechanize: 0' >> META_new.yml + $(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml + $(NOECHO) $(ECHO) ' url: http://module-build.sourceforge.net/META-spec-v1.3.html' >> META_new.yml + $(NOECHO) $(ECHO) ' version: 1.3' >> META_new.yml + -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml + + +# --- MakeMaker signature section: +signature : + cpansign -s + + +# --- MakeMaker dist_basics section: +distclean :: realclean distcheck + $(NOECHO) $(NOOP) + +distcheck : + $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck + +skipcheck : + $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck + +manifest : + $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest + +veryclean : realclean + $(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old + + + +# --- MakeMaker dist_core section: + +dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE) + $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \ + -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' -- + +tardist : $(DISTVNAME).tar$(SUFFIX) + $(NOECHO) $(NOOP) + +uutardist : $(DISTVNAME).tar$(SUFFIX) + uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu + +$(DISTVNAME).tar$(SUFFIX) : distdir + $(PREOP) + $(TO_UNIX) + $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME) + $(RM_RF) $(DISTVNAME) + $(COMPRESS) $(DISTVNAME).tar + $(POSTOP) + +zipdist : $(DISTVNAME).zip + $(NOECHO) $(NOOP) + +$(DISTVNAME).zip : distdir + $(PREOP) + $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME) + $(RM_RF) $(DISTVNAME) + $(POSTOP) + +shdist : distdir + $(PREOP) + $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar + $(RM_RF) $(DISTVNAME) + $(POSTOP) + + +# --- MakeMaker distdir section: +create_distdir : + $(RM_RF) $(DISTVNAME) + $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \ + -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');" + +distdir : create_distdir distmeta + $(NOECHO) $(NOOP) + + + +# --- MakeMaker dist_test section: +disttest : distdir + cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL + cd $(DISTVNAME) && $(MAKE) $(PASTHRU) + cd $(DISTVNAME) && $(MAKE) test $(PASTHRU) + + + +# --- MakeMaker dist_ci section: + +ci : + $(PERLRUN) "-MExtUtils::Manifest=maniread" \ + -e "@all = keys %{ maniread() };" \ + -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \ + -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});" + + +# --- MakeMaker distmeta section: +distmeta : create_distdir metafile + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } ' \ + -e ' or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"' -- + + + +# --- MakeMaker distsignature section: +distsignature : create_distdir + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \ + -e ' or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"' -- + $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE + cd $(DISTVNAME) && cpansign -s + + + +# --- MakeMaker install section: + +install :: all pure_install doc_install + $(NOECHO) $(NOOP) + +install_perl :: all pure_perl_install doc_perl_install + $(NOECHO) $(NOOP) + +install_site :: all pure_site_install doc_site_install + $(NOECHO) $(NOOP) + +install_vendor :: all pure_vendor_install doc_vendor_install + $(NOECHO) $(NOOP) + +pure_install :: pure_$(INSTALLDIRS)_install + $(NOECHO) $(NOOP) + +doc_install :: doc_$(INSTALLDIRS)_install + $(NOECHO) $(NOOP) + +pure__install : pure_site_install + $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site + +doc__install : doc_site_install + $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site + +pure_perl_install :: + $(NOECHO) $(MOD_INSTALL) \ + read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \ + write $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \ + $(INST_LIB) $(DESTINSTALLPRIVLIB) \ + $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \ + $(INST_BIN) $(DESTINSTALLBIN) \ + $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ + $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \ + $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR) + $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ + $(SITEARCHEXP)/auto/$(FULLEXT) + + +pure_site_install :: + $(NOECHO) $(MOD_INSTALL) \ + read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \ + write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \ + $(INST_LIB) $(DESTINSTALLSITELIB) \ + $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \ + $(INST_BIN) $(DESTINSTALLSITEBIN) \ + $(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \ + $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \ + $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR) + $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ + $(PERL_ARCHLIB)/auto/$(FULLEXT) + +pure_vendor_install :: + $(NOECHO) $(MOD_INSTALL) \ + read $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist \ + write $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist \ + $(INST_LIB) $(DESTINSTALLVENDORLIB) \ + $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \ + $(INST_BIN) $(DESTINSTALLVENDORBIN) \ + $(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \ + $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ + $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) + +doc_perl_install :: + $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod + -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(DOC_INSTALL) \ + "Module" "$(NAME)" \ + "installed into" "$(INSTALLPRIVLIB)" \ + LINKTYPE "$(LINKTYPE)" \ + VERSION "$(VERSION)" \ + EXE_FILES "$(EXE_FILES)" \ + >> $(DESTINSTALLARCHLIB)/perllocal.pod + +doc_site_install :: + $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod + -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(DOC_INSTALL) \ + "Module" "$(NAME)" \ + "installed into" "$(INSTALLSITELIB)" \ + LINKTYPE "$(LINKTYPE)" \ + VERSION "$(VERSION)" \ + EXE_FILES "$(EXE_FILES)" \ + >> $(DESTINSTALLARCHLIB)/perllocal.pod + +doc_vendor_install :: + $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod + -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(DOC_INSTALL) \ + "Module" "$(NAME)" \ + "installed into" "$(INSTALLVENDORLIB)" \ + LINKTYPE "$(LINKTYPE)" \ + VERSION "$(VERSION)" \ + EXE_FILES "$(EXE_FILES)" \ + >> $(DESTINSTALLARCHLIB)/perllocal.pod + + +uninstall :: uninstall_from_$(INSTALLDIRS)dirs + $(NOECHO) $(NOOP) + +uninstall_from_perldirs :: + $(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist + +uninstall_from_sitedirs :: + $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist + +uninstall_from_vendordirs :: + $(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist + + +# --- MakeMaker force section: +# Phony target to force checking subdirectories. +FORCE : + $(NOECHO) $(NOOP) + + +# --- MakeMaker perldepend section: + + +# --- MakeMaker makefile section: +# We take a very conservative approach here, but it's worth it. +# We move Makefile to Makefile.old here to avoid gnu make looping. +$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP) + $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?" + $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..." + -$(NOECHO) $(RM_F) $(MAKEFILE_OLD) + -$(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) + - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL) + $(PERLRUN) Makefile.PL + $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <==" + $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <==" + false + + + +# --- MakeMaker staticmake section: + +# --- MakeMaker makeaperl section --- +MAP_TARGET = perl +FULLPERL = /usr/bin/perl + +$(MAP_TARGET) :: static $(MAKE_APERL_FILE) + $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@ + +$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib + $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET) + $(NOECHO) $(PERLRUNINST) \ + Makefile.PL DIR= \ + MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \ + MAKEAPERL=1 NORECURS=1 CCCDLFLAGS= + + +# --- MakeMaker test section: + +TEST_VERBOSE=0 +TEST_TYPE=test_$(LINKTYPE) +TEST_FILE = test.pl +TEST_FILES = t/*.t +TESTDB_SW = -d + +testdb :: testdb_$(LINKTYPE) + +test :: $(TEST_TYPE) subdirs-test + +subdirs-test :: + $(NOECHO) $(NOOP) + + +test_dynamic :: pure_all + PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-e" "test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES) + +testdb_dynamic :: pure_all + PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) + +test_ : test_dynamic + +test_static :: test_dynamic +testdb_static :: testdb_dynamic + + +# --- MakeMaker ppd section: +# Creates a PPD (Perl Package Description) for a binary distribution. +ppd : + $(NOECHO) $(ECHO) '' > $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' $(DISTNAME)' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' Automates downloading from Rapidshare.com and checking links for free users' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' Alan Haggai Alavi <alanhaggai@alanhaggai.org>' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) '' >> $(DISTNAME).ppd + + +# --- MakeMaker pm_to_blib section: + +pm_to_blib : $(TO_INST_PM) + $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')' -- \ + lib/WWW/Rapidshare/Free.pm blib/lib/WWW/Rapidshare/Free.pm + $(NOECHO) $(TOUCH) pm_to_blib + + +# --- MakeMaker selfdocument section: + + +# --- MakeMaker postamble section: + + +# End. diff --git a/Makefile.PL b/Makefile.PL new file mode 100644 index 0000000..cfe4210 --- /dev/null +++ b/Makefile.PL @@ -0,0 +1,24 @@ +use 5.006000; +use strict; +use warnings; +use ExtUtils::MakeMaker; + +WriteMakefile( + NAME => 'WWW::Rapidshare::Free', + AUTHOR => 'Alan Haggai Alavi ', + VERSION_FROM => 'lib/WWW/Rapidshare/Free.pm', + ABSTRACT_FROM => 'lib/WWW/Rapidshare/Free.pm', + ( $ExtUtils::MakeMaker::VERSION >= 6.3002 + ? ( 'LICENSE' => 'perl' ) + : () ), + PL_FILES => {}, + PREREQ_PM => { + 'Test::More' => 0, + 'WWW::Mechanize' => 0, + 'HTML::Form' => 0, + 'HTML::Parser' => 0, + 'Data::Validate::URI' => 0, + }, + dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', }, + clean => { FILES => 'WWW-Rapidshare-Free-*' }, +); diff --git a/README b/README new file mode 100644 index 0000000..e7de74a --- /dev/null +++ b/README @@ -0,0 +1,209 @@ +WWW-Rapidshare-Free + + +NAME + WWW::Rapidshare::Free - Automates downloading from Rapidshare.com and + checking links for free users + +VERSION + Version 0.01 + +SYNOPSIS + use strict; + use warnings; + use WWW::Rapidshare::Free qw( verbose add_links check_links + download connection ); + + # We are going to let the module be verbose and display a delay metre and + # progress bar. + verbose(1); + + my @links = add_links( + qw{ + http://rapidshare.com/files/175658683/perl-51.zip + http://rapidshare.com/files/175662062/perl-52.zip + } + ); + + print "Added links:\n"; + map print("\t$_\n"), @links; + + my @erroneous_links = check_links; + map { + my ( $uri, $error ) = @{$_}; + print "URI: $uri\nError: $error\n"; + } @erroneous_links; + + download( + properties => \&properties, + file_complete => \&file_complete, + ); + + sub properties { + my ( $file_name, $file_size ) = @_; + print "Filename: $file_name\nFile size: $file_size bytes\n"; + } + + sub file_complete { + # Let us restart the modem. I have updated my /etc/sudoers file to allow me + # to execute sudo pppoe-start and sudo pppoe-stop without a password. + connection( + connect => 'sudo pppoe-start', + disconnect => 'sudo pppoe-stop', + ); + } + +FUNCTIONS + By default, the module does not export any function. An export tag "all" + has been defined to export all functions. The following functions can be + exported: + + * add_links + + Adds links to be downloaded and returns the added links as an array. + Accepts an array of values as argument. Ignores commented links + (links that start with a "#") and invalid links. + + * add_links_from_file + + Adds links from a file which is given as an argument and returns the + added links as an array. Ignores commented links (links that start + with a "#") and invalid links. + + * links + + Returns current links which have been added by "add_links" or + "add_links_from_file". + + * clear_links + + Clears current links and returns them as an array. + + * check_links + + Checks if the links are alive or not. Returns an array of array + references if there are dead links. The latter arrays are of the + form "[ link, error message ]". If all links are alive, returns + false. Additionally it also removes the dead links. + + my @erroneous_links = check_links; + map { + my ( $uri, $error ) = @{$_}; + print "URI: $uri\nError: $error\n"; + } @erroneous_links; + + * download + + Downloads files off valid links. Accepts a hash with a maximum of + four keys having callbacks as their values. The hash should be of + the form: + + ( + delay => \&delay_callback, + properties => \&properties_callback, + progress => \&progress_callback, + file_complete => \&file_complete + ) + + Callbacks are passed values as follows: + + * "delay" + + "delay" callback is passed the number of seconds until download + begins. It is called every second until the delay is zero. Delay + is decremented each time the callback is executed. + + * "properties" + + "properties" is passed the file name and file size as two + arguments. + + * "progress" + + Sole argument is the number of bytes of the current file + downloaded so far. This callback is executed every instant in + which data is written to the file which is being downloaded. + + * "file_complete" + + This callback passes control after each file is downloaded. + Disconnection/connection establishment or reconnection is + possible by invoking "connection". + + * verbose + + Controls the output verbosity. Pass it a false value such as 0 or '' + (empty string) to turn off the delay metre and progress bar. + Everything else turns on verbosity. Verbosity is true by default. + + * connection + + Most useful within the callback of "download" pertaining to the hash + key "file_complete". Accepts a hash: + + connection( + connect => '', # Command to start a connection + disconnect => '', # Command to disconnect + reconnect => '' # Command to reconnect + ); + + Either both "connect" and "disconnect" have to be specified, or + "reconnect" has to be specified. If a single command can reconnect, + then a value for "reconnect" will be apt, else "connect" and + "disconnect" should be assigned the respective commands to connect + and disconnect. The commands should be your operating system's + commands to connect/disconnect/reconnect the internet connection. + + Windows users can use the rasdial utility to connect/disconnect: + . + + Check "download.pl" file inside "example" directory for usage example of + the module. + +INSTALLATION + +To install this module, run the following commands: + + perl Makefile.PL + make + make test + make install + +AUTHOR + Alan Haggai Alavi, "" + +BUGS + Please report any bugs or feature requests to "bug-www-rapidshare-free + at rt.cpan.org", or through the web interface at + . I + will be notified, and then you will automatically be notified of + progress on your bug as I make changes. + +SUPPORT AND DOCUMENTATION + +After installing, you can find documentation for this module with the +perldoc command. + + perldoc WWW::Rapidshare::Free + +You can also look for information at: + + RT, CPAN's request tracker + http://rt.cpan.org/NoAuth/Bugs.html?Dist=WWW-Rapidshare-Free + + AnnoCPAN, Annotated CPAN documentation + http://annocpan.org/dist/WWW-Rapidshare-Free + + CPAN Ratings + http://cpanratings.perl.org/d/WWW-Rapidshare-Free + + Search CPAN + http://search.cpan.org/dist/WWW-Rapidshare-Free/ + + +COPYRIGHT AND LICENCE + +Copyright (C) 2008 Alan Haggai Alavi, all rights reserved. + +This program is free software; you can redistribute it and/or modify it +under the same terms as Perl itself. diff --git a/blib/arch/.exists b/blib/arch/.exists new file mode 100644 index 0000000..e69de29 diff --git a/blib/arch/auto/WWW/Rapidshare/Free/.exists b/blib/arch/auto/WWW/Rapidshare/Free/.exists new file mode 100644 index 0000000..e69de29 diff --git a/blib/bin/.exists b/blib/bin/.exists new file mode 100644 index 0000000..e69de29 diff --git a/blib/lib/WWW/Rapidshare/.exists b/blib/lib/WWW/Rapidshare/.exists new file mode 100644 index 0000000..e69de29 diff --git a/blib/lib/WWW/Rapidshare/Free.pm b/blib/lib/WWW/Rapidshare/Free.pm new file mode 100644 index 0000000..9ec7f5b --- /dev/null +++ b/blib/lib/WWW/Rapidshare/Free.pm @@ -0,0 +1,463 @@ +package WWW::Rapidshare::Free; + +use strict; + +BEGIN { + $^W = 1; + $| = 1; +} + +use WWW::Mechanize; +use HTML::Form; +use HTML::Parser; +use Data::Validate::URI qw( is_http_uri ); +use Carp qw( croak ); +use Exporter; + +our $VERSION = '0.01'; + +our @ISA = qw( Exporter ); +our @EXPORT_OK = qw( links add_links add_links_from_file check_links download + verbose connection clear_links ); +our %EXPORT_TAGS = ( all => \@EXPORT_OK ); + +my $parser = HTML::Parser->new( + api_version => 3, + start_h => [ \&_start, 'tagname, attr' ], + text_h => [ \&_text, 'text' ], + end_document_h => [ \&_end_document ], +); +my $mech = WWW::Mechanize->new; +my ( $tagname, $class, $verbose, $counter, $check_links, $error, @links, + @download_links ) + = ( '', '', 1, 0 ); +my $delay = 120; # An explicit value which will most likely be overwritten + +my @text; + +# Gets the tagname and also marks the start of the error tag: +#
+sub _start { + $tagname = shift; + $class = 'klappbox' + if ( exists $_[0]->{'class'} && $_[0]->{'class'} eq 'klappbox' ); +} + +# Stores contents of