środa, 11 sierpnia 2010

adderek Webmini 0.1

Webmini adder v 0.1
Bardzo prosty skrypt dodający wpisy do katalogów Webmini. Na dzień dzisiejszy:
  1. Obsługuje jedynie pytania o liczenie
  2. Pobiera listę katalogów z listy mara 
  3. Względnie działa
Wymagania:
  • Perl (pakiety WWW::Mechanize, Win32::IEAutomation, List::MoreUtils) 
  • lista własnych katalogów z bezpośrednimi linkami do formularza(chyba że korzystamy z listy Mara)
  • Przeglądarka Internet Explorer
Licencja: BSD
Formatowanie zjadł Blogger.

Webmini adder 

use Win32::IEAutomation;
use WWW::Mechanize;
use List::MoreUtils qw(uniq);
use strict;
use utf8;
my $mech = Win32::IEAutomation->new( visible => 1);
my $mechanize=WWW::Mechanize->new(autocheck => 0,timeout => 8);
$mechanize->agent_alias("Linux Mozilla");
my @katalogi=();
###################################################(###
my $www='http://webminiacz.blogspot.com/';
my $title='Webmini adder';
my $klucze='Webmini,adder,Webmini adder';
my $tresc='Bardzo prosty skrypt na licencji BSD dodający wpisy do części katalogów Webmini. Do działania programu wymagany jest perl i przeglądarka Internet Explorer';
#################################################
print "[0]Wczytac liste katalogow z pliku textowego\n[1]Pozyczyc od Mara\n";
my $wybor=<>;
if($wybor==0)
{
print "podaj nazwe pliku:\n";
my $nazwa=<>;
open(ODCZYT,'./'.$nazwa);
@katalogi=<ODCZYT>;
close(ODCZYT);
@katalogi=uniq(@katalogi);
}else{
czary_mary();
}
##########################################3
foreach(@katalogi)
{
my $url=$_;
$mechanize->get($url);
if($mechanize->response->is_success)
{
$mech->gotoURL($url);
my $content=$mech->Content();
eval{
$mech->getTextBox('name:','e_www')->SetValue($www);
$mech->getTextBox('name:','e_title')->SetValue($title);
$mech->getTextBox('name:','e_keywords')->SetValue($klucze);
$mech->getTextArea('name:','e_desc')->SetValue($tresc);
#open(DAZ,'>./data.html');
#print DAZ $content;
#close(DAZ);
#select(undef,undef,undef,20);
if($content=~/<\/TEXTAREA>(.+?)<DIV align=left><INPUT/gis)
{

my $zaw=$1;
while($zaw=~/<.*?>/)
{
$zaw=~s/<.*?>//;
}
$zaw=~s/Odpowiedz na pytanie//;
$zaw=~s/://;
while($zaw=~/(\n+|\s+|:|\?)/gi)
{
$zaw=~s/(\n+|\s+|:|\?)//;
}
my $wynik=eval($zaw);
print "$zaw = $wynik\n";
$mech->getTextBox('name:','answer')->SetValue($wynik);

}
$mech->getInputButton('name:','step2')->Click;
};
}
}

sub czary_mary
{
$mechanize->get('http://www.katalogiseo.info/WebMini.html');
my $zawartosc=$mechanize->content();
my @linki=();
while($zawartosc=~/<a href=\"(katalogi-WebMini,[^\"]+)/gi)
{
push(@linki,'http://www.katalogiseo.info/'.$1);
}
@linki=uniq(@linki);
foreach(@linki)
{
#print $_."\n";
$mechanize->get($_);
$zawartosc=$mechanize->content();
while($zawartosc=~/<div style=\"float:left;\"><a href=\"([^\"]+)\" class=\"linki\" target=\"_blank\">/gi)
{
my $url=$1;
if($url=~/\/$/)
{
push(@katalogi,$1.'?mode=add');
}else{
push(@katalogi,$1.'/?mode=add');
}
}
}
@katalogi=uniq(@katalogi);
print "Pobrano ".scalar(@katalogi)." katalogow\n";
}