LINUX.ORG.RU

Телепрограмма в коньках


0

1

Есть желание поставить в коньки текущие и ближайшие передачи одного канала, но так как в программировании полный ноль спрошу - не завалялось ли у ого скриптика который бы парсил телепрограмму?

Ответ на: комментарий от Schnitzel
[00:07:27][aitap@Tarkus ~]> perl -MLWP::Simple -e '$text = get("http://2x2tv.ru/program"); $text =~ s/.*efirinner240_//s; @data = (split /<td class=/s,$text)[1..3]; for (@data) { ($time = $_) =~ s/.*>([0-9]+:[0-9]+)<.*/\1/s; ($title = $_) =~ s/.*<td style="text-align: right;">(.*)<\/td>.*/\1/s; $title =~ s/<[^>]*>//gs; $time =~ s/^\s*//s; $time =~ s/\s*$//s; $title =~ s/^\s*//s; $title =~ s/\s*$//s; print "$time -- $title\n";}' 2>/dev/null
23:40 -- Мужские истории 1№2
00:10 -- Большая игра Покер Старз-2 №33
01:10 -- 1:05 Летучие конкорды 1№6
[00:07:30][aitap@Tarkus ~]>

Yeah!

// А ведь правильно говорят, что парсить HTML регулярными выражениями - ПЛОХО.

AITap ★★★★★
()

....

Cерый добрый маньяк голос твой в каждом доме на ужин

Льёшь густой позитив на тарелки унылых надежд.

Вездесущий, звездатый, как воздух надушенный, нужен

В стране тяжких запоев и канущих в лету побед.

Пой, ласточка, пой....

....

(с) ЮЮШ

Зомбоящег не нужен.

А для задачи можно использовать perl если программа в rss или html

visual_pipe
()
Ответ на: комментарий от Schnitzel

Варианты:

1)

${execi период_в_секундах perl -MLWP::Simple -e '$text = get("http://2x2tv.ru/program"); $text =~ s/.*efirinner240_//s; @data = (split /<td class=/s,$text)[1..3]; for (@data) { ($time = $_) =~ s/.*>([0-9]+:[0-9]+)<.*/\1/s; ($title = $_) =~ s/.*<td style="text-align: right;">(.*)<\/td>.*/\1/s; $title =~ s/<[^>]*>//gs; $time =~ s/^\s*//s; $time =~ s/\s*$//s; $title =~ s/^\s*//s; $title =~ s/\s*$//s; print "$time -- $title\n";}'

2) Файл something.pl:

#!/usr/bin/perl
use LWP::Simple;
$text = get("http://2x2tv.ru/program"); $text =~ s/.*efirinner240_//s; @data = (split /<td class=/s,$text)[1..3]; for (@data) { ($time = $_) =~ s/.*>([0-9]+:[0-9]+)<.*/\1/s; ($title = $_) =~ s/.*<td style="text-align: right;">(.*)<\/td>.*/\1/s; $title =~ s/<[^>]*>//gs; $time =~ s/^\s*//s; $time =~ s/\s*$//s; $title =~ s/^\s*//s; $title =~ s/\s*$//s; print "$time -- $title\n";
и ${execi интервал_в_секундах perl /путь/к/something.pl}

AITap ★★★★★
()
Ответ на: комментарий от AITap

Лучше даже texeci, поскольку скачивание страницы занимает некоторое время, которое может быть сравнимым с update_interval: на время исполнения ${exec ...} conky «замирает», а в случае ${texec ...} продолжает работать.

AITap ★★★★★
()
Ответ на: комментарий от Dikar

Нет

user@desktop:~/documents$ perl program.pl
Can't locate LWP/Simple.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at program.pl line 2.
BEGIN failed--compilation aborted at program.pl line 2.

Schnitzel
() автор топика
 $ wget http://2x2tv.ru/program -O /tmp/2x2 2> /dev/null; perl 2x2.perl
01:10 -- 1:05 Летучие конкорды 1№6 
01:45 -- Мультреалити 3№14
02:10 -- Улетный Trip 2№8
artem@mgentoo ~/tmp $ cat 2x2.perl 
#!/usr/bin/perl
open(DATA, "/tmp/2x2");
$a = "";
while(<DATA>) {
$a = "$a$_";
}
close(DATA);

while ($a =~ /<tr>\s*<td class=\".*?\" height=\"25\"><strong>(\d{2}:\d{2})<\/strong><\/td>\s*<td style=\"text-align: right;\">(<strong>|\s*<a.*?>)\s*(.*?)<\/(strong|a)>\s*<\/td>\s*<\/tr>/mig)
{
print "$1 -- $3\n";
}

Не знаю я перл :). Только так могу.

Tanger ★★★★★
()
Ответ на: комментарий от Tanger

Поставил lwp пакеты и всё заработало, только как то криво


Wide character in print at program.pl line 6.
01:45 -- "efirredlight" height="25">01:45
                
                                            Мультреалити 3№14
Wide character in print at program.pl line 6.
02:10 -- "efirreddark" height="25">02:10
                        
                                                            Улетный Trip 2№8
Wide character in print at program.pl line 6.
02:35 -- "efirreddark" height="25">02:35
                        
                                                            Южный парк 10№13
                                                    
                    
                                
        
        
                     
    460 чел.



    
    
460 чел.

    
           
           
            В женском интернет-магазине косметика Holy Land - эффективный крем

Schnitzel
() автор топика
Ответ на: комментарий от Schnitzel
artem@mgentoo ~/tmp $ wget http://2x2tv.ru/program -O /tmp/2x2 2> /dev/null; perl 2x2.perl 2> /dev/null
02:10 -- Улетный Trip 2№8
02:35 -- Южный парк 10№13
03:05 -- Джек - на все руки мастер №25
artem@mgentoo ~/tmp $ cat 2x2.perl 
#!/usr/bin/perl
open(DATA, "/tmp/2x2");
$a = "";
while(<DATA>) {
    $a = "$a$_";
}
close(DATA);

while ($a =~ /<tr>\s*<td class=\".*?\" height=\"25\"><strong>(\d{2}:\d{2})<\/strong><\/td>\s*<td style=\"text-align: right;\">\s*(|<strong>)\s*(|<a.*?>)\s*(|<strong>)\s*([^<>]*)\s*(|<\/strong>)\s*(|<\/a>)\s*(|<\/strong>)\s*<\/td>\s*<\/tr>/mig)
{
        print "$1 -- $5\n";
}

А так? Вообще непонятно, почему оно по разному работает.. Вот этот код так же и тут: http://pastebin.com/Rjw5jnfa

Tanger ★★★★★
()
Ответ на: комментарий от Schnitzel

Эм? Где не отображаются? Только в коньках или в терминале тоже?
Что в системе по дефолту? utf-8 или koi8-r?

Tanger ★★★★★
()
Ответ на: комментарий от Schnitzel

Не пью. Давай что нибудь еще :).
Куда адрес кидать?)

PS. Ненавижу ЛОР! Хотел лечь спать 75 минут назад... :'(

Tanger ★★★★★
()
Ответ на: комментарий от Tanger
#!/bin/bash
#
PAGE=`curl -s http://2x2tv.ru/program`
TOP=`echo $PAGE | sgrep '"<div class=\"efirinner240top\">".."</div>"' | w3m -dump -T "text/html"`
BOTTOM=`echo $PAGE | sgrep '"<div class=\"efirinner240bottom\">".."</div>"' | w3m -dump -T "text/html"`
printf "$TOP\n"
printf "$BOTTOM\n"
#
Neksys ★★★
()
Ответ на: комментарий от Neksys
Backslash at end of string
Parse error in command line expression column 15 :
	Unknown word
"<div class=\"efirinner240top\">".."</div>"
              ^
No query to evaluate. Bailing out.
Backslash at end of string
Parse error in command line expression column 15 :
	Unknown word
"<div class=\"efirinner240bottom\">".."</div>"
              ^
No query to evaluate. Bailing out.

У меня не работает.
w3m - это чит!
Можно посмотреть на вывод?

Tanger ★★★★★
()
Ответ на: комментарий от Tanger
$ ./2x2_my.sh
14:05 Фантастические дни №1
14:35 Фантастические дни №2
15:05 Фриказоид 2№11
$ curl -s http://2x2tv.ru/program | sgrep '"<div class=\"efirinner240top\">".."</div>"' 
<div class="efirinner240top"><table>
            <tr>
                <td class="efirredlight" height="25"><strong>14:05</strong></td>
                <td style="text-align: right;"><strong>
                                            Фантастические дни №1                                    </strong></td>
            </tr>
        </table></div>

$ curl -s http://2x2tv.ru/program | sgrep '"<div class=\"efirinner240bottom\">".."</div>"' 
<div class="efirinner240bottom"><table>
        
                                    <tr>
                        <td class="efirreddark" height="25"><strong>14:35</strong></td>
                        <td style="text-align: right;">
                                                            Фантастические дни №2                                                    </td>
                    </tr>
                                    <tr>
                        <td class="efirreddark" height="25"><strong>15:05</strong></td>
                        <td style="text-align: right;">
                                                            <a href="/serial/freakazoid" class="telecast" >Фриказоид 2№11</a>
                                                    </td>
                    </tr>
                                
        </table></div>
Neksys ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.