Автор Тема: Feeds 2 SMS  (Прочетена 8520 пъти)

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Feeds 2 SMS
« -: Jul 10, 2010, 16:04 »
Цел на задачата: при нови feeds да се изпраща sms.
В началото почнах със скрипта на vstoykov (http://vstoykov.hit.bg/sensors_send_sms.html), обаче греда. След това видях, че в liferea има script manager (който след търсене и четене как се ползва LUA разбрах, че е ужасен). Pingie изобщо не разбрах как работи, а това Ozeki NG SMS Gateway не стига че е за windows ами е и платено. Та май ми трябва нещо, което през 10 мин. да събира новите feeds и след това да ги тъпче в скрипта на vstoykov. Също така гледах и разни RSS to Email, ама като ми ги прати там аз кво да ги правя? Абе всякакви идеи са добре дошли :)
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

betso

  • Напреднали
  • *****
  • Публикации: 281
    • Профил
Re: Feeds 2 SMS
« Отговор #1 -: Jul 10, 2010, 20:26 »
В каква форма изкаш да ти изпраща feeds на sms? Само заглавията или и (съкратено) съдържание?
Ако ползваш решението на vstoykov, значи имаш PHP, а там със SimpleXML можеш да си извадиш, каквото искаш от XML-а на feed-а. А иначе можеш да кажеш на lynx да ти изплюва периодично (с cron или в цикъл, примерно) XML-a, който после конзолно да си обработиш и да го подадеш нататък.
Може и аз да не съм разбрал нещо. Сподели малко повече! :)
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #2 -: Jul 10, 2010, 20:35 »
Трябва да се получава смс само при нови feeds, това с lynx не доумявам как ще стане. Да, смс-а трябва да съдържа целия feed, но сега като се замисля май и само заглавията ще ми свършат работа. SimpleXML така като гледам за да го напиша, ще трябва първо да науча из основи PHP, а в момента малко не ми е до програмиране, просто разсъжденията ми убягват.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

betso

  • Напреднали
  • *****
  • Публикации: 281
    • Профил
Re: Feeds 2 SMS
« Отговор #3 -: Jul 10, 2010, 23:47 »
Ето примерен начин за извеждане на заглавията от заглавната страница на linux-bg.org:
Код
GeSHi (PHP):
  1. <?php
  2. $rss_feed='http://www.linux-bg.org/linux-bg-news.rdf';
  3. $rss_content = file_get_contents ($rss_feed);
  4. $xml = new SimpleXMLElement ($rss_content);
  5. foreach ($xml->channel->item as $i) { echo '<a href="' . $i->link . '">' . $i->title . '</a><br/>'; }
  6. ?>
А така би могъл да ги извадиш с lynx:
Код:
lynx -source http://www.linux-bg.org/linux-bg-news.rdf | grep '<title>' | sed -e "s/^.*<title>//;s/<\/title>.*$//"
(Убеден съм, че има достатъчно други по-елегантни начини.)

Предполагам, че има не малко решения от рода на xml2txt, които също биха ти свършили работа под команден ред.
Успех! :)
« Последна редакция: Jul 13, 2010, 12:12 от VladSun »
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #4 -: Jul 11, 2010, 12:18 »
Решение може да се напише много бързо и лесно, както на PHP, така и на bash. Само да доизясним някои неща:
1. Скриптът през браузъра ли ще се ползва или искаш да го сложиш в crontab, откъдето периодично автоматично да проверява за нови записи и да ти праща sms?
2. Ако в sms-а, пращан чрез услугата mail2sms, сложим само двете задължителни полета From и Text, то сборът от символите в тези две полета може да бъде максимално 145. Т.е., ако за From въведеш feed@domain.com, за Text ти остават налични 130 символа, в които е трудно да се побере подробна информация. Така че трябва да решиш какво точно искаш да побереш в тези общо 145 символа (само заглавие на feed, или и малко текст, ако е останало място...), както и дали sms-ът ще бъде само един, в който някак да се натъпче възможно най-много и най-окастрена информация, или за всеки нов feed да се праща отделен sms.

Пращането на sms-и чрез услугата mail2sms не се различава по нищо от пращането на email, като има само две разлики:
1. Трябва строго да се съблюдава дължината на изпращаната информация, тъй като позволеният брой символи в един sms е малък, а не трябва и да се прекалява с твърде голямо количество sms-и на ден, тъй като това няма да се хареса на оператора и ще ти поискат немалко пари, за да ти позволят да продължиш да пращаш много sms-и през mail2sms;
2. Изпращаната информация трябва да е на латиница, тъй като изпратеният email не минава през gsm декодерите в оператора и sms-ът няма да се чете.

Ако искаш да избегнеш тези две ограничения, ще се наложи да не ползваш mail2sms, а да си изградиш sms gateway, през който да изпращаш съобщенията. За целта трябва да имаш вързан gsm апарат към gateway-а с активна sim карта. Тогава sms-ите ще се изпращат като обикновени sms-и, а не като email-и, но (както сигурно се сещаш) и ще се плаща за тях като обикновени sms-и според тарифата.
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #5 -: Jul 11, 2010, 12:30 »
@neter - въх-х-х... Значи скрипта ще се стартира в cron-a, т.е. не ми трябва web. Мислех да използвам mail2sms, но ти сега ме накра да се замисля, ако feed-а е написан на бългърски дали ще получа маймуница? За From няма да слагам нищо, а текста исках да е 145 символа и те да са от съдържанието на feed-a. Достатъчно е sms-а да е един, но не съм сигурен дали ако почна да получавам целия feed на смс-и mtel ще поискат пари за това. Значи имам 17 страници, т.е. 17 feed-а и в момента се чудя как да направя да изпраща смс само при нови feeds. Горе-долу ще получвам от 2 до 8 смс-а на ден (което май не е много).
Това за sms gateway-а ще ми излезе много скъпо, за това се насочих към идеята на vstoykov.
PS: Сега опитах да си пратя съобщение на БГ - не стана :(. Значи си прав.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #6 -: Jul 11, 2010, 13:03 »
Полето From е задължително, така че няма как да го избегнеш. Препоръчително е ти да го зададеш, за да ти е информативно и максимално кратко, тъй като, ако не го зададеш, MTA-то ти ще си сложи потребителя, с който е изпълнена командата, като From (например backtolife@localhost), което ти харчи символи.
Относно кирилицата, текстовете ще трябва да се конвертират към латиница и тогава да се изпращат. Има решение, така че не е проблем.
Лимитът за безплатно пращане на sms-и през mail2sms зависи от много неща и (доколкото знам) е силно плаващ, но 8 sms-а на ден не е никакъв проблем. Аз си пращам редовни 10 sms-а на ден, като в някои редки дни съм стигал и до 50, без да са ми казвали от оператора, че това е проблем, надявам се да не е и за в бъдеще :)
Не ми стана ясно какви са тези 17 страници с feed-ове... Дай по-добре да ги видим, че да стане по-ясно за какво количество информация говорим и какви налични полета има в тези feed-ове. Ако не е хубаво да ги пускаш тук на обществено място, ми прати адресите на ЛС.

P.S.: Забравих да вметна, че най-краткият вариант за полето From е "a@b", както и, че ако общият текст на съобщението е по-дълъг от 145 символа, съобщението ще бъде отрязано от оператора до 145-ия символ, а останалото няма да се прати. Съобщения, които са по-дълги от 145 символа, не увеличават броя на изпратените съобщения, така че няма да те закачат за това откъм бройка, но трябва да се внимава с големите надхвърляния на 145 символа, тъй като изпратеният email към оператора може да стане голям и това да стане причина за забележка.
« Последна редакция: Jul 11, 2010, 13:18 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #7 -: Jul 11, 2010, 17:15 »
Ето ти едно решение на въпроса:
Код
GeSHi (PHP):
  1. #!/usr/bin/php
  2. <?php
  3.  
  4. $path = '/пълен/път/до/папката/на/скрипта';
  5. $smsfrom = 'кратък@email.адрес';
  6. $smsto = '359xxxxxxxxx@sms.mtel.net';
  7. $delimiter = ' > '; // Разделящият елемент между името на feed-а и текста на новината в sms-а
  8. $rssfeed[0] = array('name' => 'име_на_латиница_без_интервали_и_специални_знаци',
  9.                    'address' => 'http://адрес',
  10.                    'element' => 'име на полето, което съдържа една новина',
  11.                    'getfield' => 'име на полето, което искаш да ти се праща');
  12. $rssfeed[1] = array('name' => 'друго_име_на_латиница_без_интервали_и_специални_знаци',
  13.                    'address' => 'http://друг.адрес',
  14.                    'element' => 'име на полето, което съдържа една новина',
  15.                    'getfield' => 'име на полето, което искаш да ти се праща');
  16.  
  17. ##### НЕ Е НУЖНО ПОВЕЧЕ РЕДАКТИРАНЕ #####
  18.  
  19. foreach ($rssfeed as $source) {
  20.    $i = 0;
  21.    $cachefile = $path.'/'.$source['name'].'.cache';
  22.    if (file_exists($cachefile)) {
  23.        $lastentry = file_get_contents($cachefile);
  24.    }
  25.  
  26.    $doc = new DOMDocument();
  27.    $doc->load($source['address']);
  28.    foreach ($doc->getElementsByTagName($source['element']) as $node) {
  29.        $content = $node->getElementsByTagName($source['getfield'])->item(0)->nodeValue;
  30.        if ($content == $lastentry) {
  31.            break;
  32.        } else {
  33.            $contentstrip = strip_tags($content);
  34.            if (!$i) {
  35.                $newlastentry = $contentstrip;
  36.            }
  37.            $convert = file_get_contents('http://translate.google.bg/translate_t?sl=bg&tl=bg&q='.urlencode($contentstrip));
  38.            $spos = strpos($convert, '<div id="translit" dir="ltr" style="text-align:left">') + strlen('<div id="translit" dir="ltr" style="text-align:left">');
  39.            $epos = strpos($convert, '</div>', $spos);
  40.            $contentconv = substr($convert, $spos, $epos - $spos);
  41.            $contentclear = str_replace('&#38;#774;', '', str_replace('&#38;#365;' , 'a', str_replace('&quot;', '"', $contentconv)));
  42.            $maxlength = 145 - strlen($smsfrom.$source['name'].$delimiter);
  43.            $contentcut = substr($contentclear, 0, $maxlength);
  44.            system('echo "'.$source['name'].$delimiter.$contentcut.'" | mail -a "From: '.$smsfrom.'" '.$smsto);
  45.            $i++;
  46.        }
  47.    }
  48.  
  49.    if ($newlastentry) {
  50.        $cache = fopen($cachefile, 'w');
  51.        fwrite($cache, $newlastentry);
  52.        fclose($cache);
  53.    }
  54. }
  55.  
  56. ?>
Понеже не ми се изписва конвертор на кирилица към латиница, в скрипта ползвам този на Google. За пращането на sms-а ползвам bash командата, тъй като не знам да има начин за махане на Subject полето при php функцията mail(), а това ще харчи символи. Задаването на From хедъра може и да не става точно така при теб (зависи какво MTA ползваш), така че изпробвай bash командата самостоятелно, за да се увериш, че работи, а ако не работи, да я напаснем за твоите нужди. Всеки feed си го слагаш в нов ред $rssfeed[номер]. Относно елементите 'element' и 'getfield' в масива $rssfeed, ето един пример от rss-а на Дарик:
Код
GeSHi (XML):
  1. <rss version="2.0">
  2. <channel>
  3. <title>DarikNews.bg: света и България</title>
  4. <link>http://dariknews.bg/</link>
  5. <description>DARIK News - актуалните новини от света и България</description>
  6. <language>bg</language>
  7. <copyright>2005-2010 DarikNews</copyright>
  8. <image>
  9. <title>DarikNews.bg</title>
  10. <link>http://dariknews.bg/</link>
  11. <url>http://dariknews.bg/images/logo.gif</url>
  12. </image>
  13. <item>
  14. <title>Сърбия отменя визите за турските граждани</title>
  15. <link>http://dariknews.bg/view_article.php?article_id=558566</link>
  16. <guid>http://dariknews.bg/view_article.php?article_id=558566</guid>
  17. <category>Свят</category>
  18. <pubDate>Sun, 11 Jul 2010 16:19:13 +0300</pubDate>
  19. <description>&lt;img src=&quot;http://dariknews.bg/uploads/news_images/201007/photo_medium_558566.jpg&quot; width=&quot;108&quot; border=&quot;0&quot; hspace=&quot;10&quot; alt=&quot;&quot; align=&quot;left&quot;&gt;Сърбия реши да отмени визовия режим за турските граждани, съобщи говорител на правителството.
  20. &quot;Правителството взе решение да въведе безвизов режим за притежателите на турски паспорт&quot;, заяви говорителят Миливое Михайлович.
  21. Очаква се решението да влезе в сила още утре. Сръбските граждани все още се нуждаят от визи, за да пътуват до Турция. Те могат да се снабдяват с тях на пропускателните пунктове. Безвозивият режим се въвежда преди посещението в Белград на турския премиер Реджеп Тайип Ердоган утре, пише БГНЕС. Очаква се той да се срещне със сръб...</description>
  22. </item>
  23.  
  24. <item>
  25. <title>Словения победи с 5:0 България</title>
  26. <link>http://dariknews.bg/view_article.php?article_id=558567</link>
  27. <guid>http://dariknews.bg/view_article.php?article_id=558567</guid>
  28. <category>Спорт</category>
  29. <pubDate>Sun, 11 Jul 2010 16:17:03 +0300</pubDate>
  30. <description>&lt;img src=&quot;http://dariknews.bg/uploads/news_images/201007/photo_medium_558567.jpg&quot; width=&quot;108&quot; border=&quot;0&quot; hspace=&quot;10&quot; alt=&quot;&quot; align=&quot;left&quot;&gt;Словения победи с 5:0 България в двубоя от втора група на Евро-африканската зона.
  31. Днес номер 500 в световната ранглиста Блаж Рола се наложи с 6:0, 6:2 над Валентин Димов, а втората ракета на домакините Блаж Кавчич победи с 6:2, 6:1 рекордьора по брой победи на националния ни отбор в мачовете от купа Дейвис Тодор Енев.
  32. След успеха Словения се класира за третия кръг, а България запазва мястото си във втора група на турнира.
  33. ...</description>
  34. </item>
  35.  
  36. </channel>
  37. </rss>
В този случай, за елемента 'element' трябва да се въведе 'item', понеже той съдържа една цялостна новина с всичките й данни (име, линк, описание, дата...), а за елемента 'getfield' трябва да се въведе 'description', ако искаш да ти праща sms с текста на новината, тъй като това поле го съдържа.
Сядаш да прегледаш всеки feed поотделно, за да извлечеш нужната информация, която ти трябва за всеки $rssfeed масив, въвеждаш ги и си готов ;)

P.S.: Оказва се, че PHP полето тук заменя знака '&' с '&#38;', така че ще се наложи като копираш скрипта от тук, да промениш следните неща на реда за променливата $contentclear:
'&#38;#774;' да стане '&#774;'
'&#38;#365;' да стане '&#365;'

edit 0: Понеже ще пускаш скрипта в crontab, добавих и пълен път към папката, в която се намира скриптът, тъй като ще ти е нужен. Тъй като при файла на скрипта се създават и допълнителни файлове, които пазят информацията за последните записи във feed-овете, хубаво е да сложиш скрипта в отделна папка, за да не ти се мешат файловете.

edit 1: Още малко доизкусуряване :)

edit 2: Добавих ти в sms-а пред текста да изписва името на feed-а, което си въвел в полето 'name' за $rssfeed. Слагай имената на латиница (по това име се създава и файлът, който пази последната новина) и гледай да са кратки, за да не си харчиш символи.
« Последна редакция: Jul 12, 2010, 10:12 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #8 -: Jul 11, 2010, 17:59 »
Аз нямам пуснат mail server (може би това е чудесна причина да си пусна един такъв). Останалите неща ги направих, само че забелязах, че в cache файловете feed-a е на BG и там това с google не го разбрах. Смисъл - google може ли да превежда от кирилица на щльокавица. Понеже аз си написах една функция която ми транслира feed-овете, които са на BG в шльокавица. Горе-долу се получава (обръщам ги буква по буква) стига да няма някакви засукани изречения.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #9 -: Jul 11, 2010, 18:13 »
@neter  [_]3 [_]3 [_]3 [_]3 [_]3 [_]3 [_]3

Имай късмет да дойдеш до Варна това лято и да не се обадиш ей!!!! Всичко работи перфектно. Благодаря!

PS: Само да уточня за някой, който иска да ползва скрипта, не го тествах с командата през конзола за пращане на mail защото нямам MTA, но на нейно място добавих скрипта на vstykov (като смених променливите).
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #10 -: Jul 11, 2010, 18:19 »
Сложих ги да се пазят в кешовете на кирилица, за да се четат по-лесно (например, ако искаш да видиш в кешовете коя е последната новина на даден feed, да си го прочетеш на кирилица). Номерът с Google е точно това - конвертиране от кирилица към латиница. Когато в транслатора превеждаш от български на английски, можеш да видиш, че има един линк "Показване на романизацията". Цъкни го и ще видиш текста конвертиран към латиница. В заявката задавам превод от български на български, за да не се превеждат думите, които са написани на латиница във feed-а. Спестява код, когато не е от значение малкото забавяне от конвертирането през Google, вместо да се конвертира веднага в кода. Но, щом си си драснал конвертор, ако ти е по-удобен, може да го вмъкнеш в кода, на мястото на заявката към Google. Ако не можеш да го вмъкнеш, дай ми кода аз да го вмъкна.
Ако имаш нужда от цял mail сървър, пусни си. Но по принцип ти е достатъчен и един exim без настройки, който няма да действа като mail сървър, но ще ти праща писмата, подадени към него с mail ;)

P.S.: backtolife, това лято май няма да си вземам отпуска, но ако по някаква случайност се врътна във Варна, не очаквай да имам такъв късмет да не се обадя ;D [_]3
« Последна редакция: Jul 11, 2010, 18:21 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #11 -: Jul 11, 2010, 18:48 »
Ами знаеш ли, сега ще пробвам с моята функция, понеже google на някой места ми връща символи от рода на: &#773, &#lt, etc. :) :)
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #12 -: Jul 11, 2010, 19:03 »
Баш за тези символи ти обърнах внимание в единия едит на поста ми, че не излизат правилно публикувани тук и трябва да ги оправиш, явно не си ги оправил. Но пък и далеч не съм сигурен дали съм описал всички (описах само за символите, които транслатора връща за буквите "ъ" и "й"), така че може и да си трябва добавяне на още в скрипта.
Както и да е де, то си е по-хубаво да ползваш личен конвертор :)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #13 -: Jul 11, 2010, 19:12 »
Сооориии :) :) Сега прочетох едита. Значи аз си добавих RSS-сите, и написах имената. После във функцията на vstoykov си направих From да ми излиза от името на съответния $rssfeed, сега едитнах &#774 и другото число. А от къде да взема таблица с тези кодове? Смисъл какво да търся в google. Даже не знам как се казва това, не са ASCII кодове, някакви HTML-ски са.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Feeds 2 SMS
« Отговор #14 -: Jul 11, 2010, 21:15 »
Тръгнах да ти обяснявам кое защо излиза така и как може да се поправи, но в процеса на обясненията установих, че беше голяма грешка от моя страна да предложа конвертиране с Google, така че ето версия на скрипта със самостоятелен конвертор :)
Код
GeSHi (PHP):
  1. #!/usr/bin/php
  2. <?php
  3.  
  4. $path = '/пълен/път/до/папката/за/кеш';
  5. $smsfrom = 'кратък@email.адрес';
  6. $smsto = '359xxxxxxxxx@sms.mtel.net';
  7. $delimiter = ' > '; // Разделящият елемент между името на feed-а и текста на новината в sms-а
  8. $rssfeed[0] = array('name' => 'име_на_латиница_без_интервали_и_специални_знаци',
  9.                    'address' => 'http://адрес',
  10.                    'element' => 'име на полето, което съдържа една новина',
  11.                    'getfield' => 'име на полето, което искаш да ти се праща',
  12.                    'maxsend' => '1'); // Максимален брой sms-и (брой записи), които да се изпращат от този feed
  13. $rssfeed[1] = array('name' => 'друго_име_на_латиница_без_интервали_и_специални_знаци',
  14.                    'address' => 'http://друг.адрес',
  15.                    'element' => 'име на полето, което съдържа една новина',
  16.                    'getfield' => 'име на полето, което искаш да ти се праща',
  17.                    'maxsend' => '1'); // Максимален брой sms-и (брой записи), които да се изпращат от този feed
  18.  
  19. $alphabet = array('а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ж' => 'j', 'з' => 'z', 'и' => 'i', 'й' => 'y',
  20.                 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u',
  21.                 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sht', 'ъ' => 'y', 'ь' => 'y', 'ю' => 'yu', 'я' => 'ya',
  22.                 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ж' => 'J', 'З' => 'Z', 'И' => 'I', 'Й' => 'Y',
  23.                 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U',
  24.                 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sht', 'Ъ' => 'Y', 'Ь' => 'Y', 'Ю' => 'Yu', 'Я' => 'Ya');
  25.  
  26. ##### НЕ Е НУЖНО ПОВЕЧЕ РЕДАКТИРАНЕ #####
  27.  
  28. foreach ($rssfeed as $source) {
  29.    $i = 0;
  30.    if (!$source['maxsend'] || !is_numeric($source['maxsend'])) {
  31.        $source['maxsend'] = 1;
  32.    }
  33.    $cachefile = $path.'/'.$source['name'].'.cache';
  34.    if (file_exists($cachefile)) {
  35.        $lastentry = file_get_contents($cachefile);
  36.    }
  37.  
  38.    $doc = new DOMDocument();
  39.    $doc->load($source['address']);
  40.    foreach ($doc->getElementsByTagName($source['element']) as $node) {
  41.        $content = $node->getElementsByTagName($source['getfield'])->item(0)->nodeValue;
  42.        $contentstrip = strip_tags($content);
  43.        if ($contentstrip == $lastentry) {
  44.            break;
  45.        } else {
  46.            if (!$i) {
  47.                $newlastentry = $contentstrip;
  48.            }
  49.            $contentconv = $contentstrip;
  50.            foreach ($alphabet as $key => $value) {
  51.                $contentconv = str_replace($key, $value, $contentconv);
  52.            }
  53.            $maxlength = 145 - strlen($smsfrom.$source['name'].$delimiter);
  54.            $contentcut = substr($contentconv, 0, $maxlength);
  55.            $contentescaped = escapeshellarg($contentcut);
  56.            system('echo '.$contentescaped.' | mail -a "From: '.$smsfrom.'" '.$smsto);
  57.            $i++;
  58.            if ($i == $source['maxsend']) {
  59.                break;
  60.            }
  61.        }
  62.    }
  63.  
  64.    if ($newlastentry) {
  65.        $cache = fopen($cachefile, 'w');
  66.        fwrite($cache, $newlastentry);
  67.        fclose($cache);
  68.    }
  69. }
  70.  
  71. ?>
« Последна редакция: Jul 16, 2010, 11:06 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Feeds
Предложения за подобрения на сайта
astronom 1 1705 Последна публикация Nov 13, 2005, 12:23
от july