Автоматическое наполнение WordPress контентом

Как и обещал, выкладываю скрипт для создания контента под блог на wordpress (о том, как наполнять блоги на wordpress контентом я уже писал в заметке Автоматическое добавление контента в WordPress-блоги).
Выкладываю опять же «как есть» — работоспособность присутствует, а осталное не гарантируется 🙂
Кстати, именно на основе этого скрипта и родилась бесплатная программа для создания импортируемого в WordPress XML-файла — WordPress XML Creator.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/perl -w
# (c) dimio
# http://dimio.org
use strict;
use DBI;

# die "НЕ ЗАБУДЬ СКОНВЕРТИРОВАТЬ ВХОДНОЙ ФАЙЛ В ЮНИКОД! NE ZABUD SKONVERTIROVAT VHODNOY FILE V UTF!";

my $game_descr_file = 'game_descr.txt';
my $db_type = 'SQLite';
my $db_name = '../sqlite_db/gb_blogs.sqlite';
my $db_login = '';
my $db_password = '';

my $dbh = db_connect($db_type,$db_name,$db_login,$db_password);
database_filling($game_descr_file, $dbh);
$dbh->disconnect;

exit 0;

sub database_filling {
# Парсинг исходного файле с описаниями игр, заголовками и тегами для них.
# Каждая запись разбирается на составляющие и обновляется соответствующая таблица в БД.
 my ($infile, $dbh) = @_;
 my ($GameID, $PostHeader, $PostBody, $PostTags, $file, $BlogID);
 open (IN_FILE, '< ', $infile) or die "Can't open file $infile: ". $!, "\n";
{
 local $/ = "\n\n"; # локально внутри блока из { } изменям признак конца входной строки, т.к. отдельные тексты в файле разделены пустой строкой.
 while (<IN_FILE>){
    ++$BlogID;
    chomp;
    s/^\s+//;
    s/\s+$//;
    if(m!<game_id>(\d+)</game_id>\n
       <header>(.+)</header>\n<body>(.+)</body>\n<tags>(.+)</tags>!xsi)
    {
        ($GameID, $PostHeader, $PostBody, $PostTags) = ($1, $2, $3, $4);
        # print "GID: $GameID\nBLOG: $BlogID\nHEAD: $PostHeader\nBODY: $PostBody\nTAGS: $PostTags\n";
        put_to_db ($dbh, $GameID, $PostHeader, $PostBody, $PostTags, $BlogID); # кладем полученные данные в базу
    }
    else {die "Check input file format! (end of line (must be \\n - unix) or encoding (must be UTF-8)\n";}
 }
}
 close (IN_FILE);
}


sub db_connect {
my ($db_type,$db_name,$db_login,$db_password) = @_;
my $dbh = DBI->connect("DBI:$db_type:$db_name","$db_login","$db_password",
                        # {Unicode => 1}
                    )
    or die "Connecting: $DBI::errstr\n"; # подключаемся к базе SQL (открывается дескриптор БД)
$dbh->{unicode} = 1 if $db_type eq 'SQLite';

return $dbh
}


sub put_to_db {
 my ($dbh, $GameID, $PostHeader, $PostBody, $PostTags, $BlogID) = @_;
 # my $db_data = $dbh->do("INSERT INTO BlogsMainData (BlogID) VALUES $BlogID;");
 
 my $query = "UPDATE BlogsContent SET PostHeader = '$PostHeader', PostBody = '$PostBody', PostTags = '$PostTags' WHERE GameID = $GameID AND BlogID = $BlogID AND PostHeader IS NULL;";
 my $db_data = $dbh->do($query);
 $query > 0 ? print "$GameID added\n" : print "$GameID not added\n";
}


Category Рубрики: seo, Блоггинг, Кодинг | Tag Метки: , , , , | Comments 7 комментариев »

7 комментариев

  1. Артем says:

    Если бы Вы сделали это всё плагином для wp, то цены бы Вам не было!!!

  2. Спасибо! Теперь все понял.

  3. Witch_You says:

    А на php тоже самое сделать может кто — нибудь?

  4. Виктор says:

    Отличная статья.Спасибо за полезную информацию. Ваши результаты впечатляют! Сильно мотивирует, есть к чему стремиться и на кого равняться. Удачи!

Добавить комментарий