Во овој пост ќе објаснам како да креирате сопствен твитер бот кој ќе твита рандом настани. Доколку сеуште не знаете на што мислам можеби ќе ви биде појасно доколку ги погледнете @eventsonthisday и @nadeneshenden. Се работи за два твитер бота кои секојдневно твитаат по некој рандом настан кој се случил тој ден неколку години наназад.

Пред да започмене со инструкциите потребни се неколку работи

  1. Твитер профил (ќе креираме сопствена апликација)
  2. Линукс оперативен систем со инсталиран curl
  3. И овие 3 фајлови OAuth.sh TwitterOAuth.sh и tcli.sh

Одиме по ред. По креирање на твитер акаунт, треба да креираме сопствена апликација која ќе ни служи за твитање на настаните. Со креирање на оваа апликација кога ќе ги праќаме твитовите под нив ќе стои, пример via nadeneshenden. Апликацијата ја креираме од следниов линк dev.twitter.com/apps/new каде ги пополнуваме задолжителните полиња, име на апликацијата, опис и веб страна.
create new twitter app

По креирањето на апликацијата во делот Settings мораме да го смениме пристапот на апликацијта од Read only во Read and Write кој ќе ни овозможи да праќаме твитови од твитер скриптата која ќе ја креираме за некој момент.
twitter app access

Следно што треба да направиме е да ги симнеме фајловите од точка 3. Сите овие фајлови ги ставаме во нов фолдер по сопствена желба. Креираме нов фајл со име .tcli.rc и го сместуваме во истиот фолдер. Во овој фајл го додаваме следниов код:

oauth_consumer_key=”ВашПотрошувачкиКлуч”
oauth_consumer_secret=”ВашаПотрошувачкаЛозинка”

Овие податоци се наоѓаат во делот OAuth tool кој можете да го најдете дколку кликнете на вашата апликација која ја креиравте и е достапна на следниов линк dev.twitter.com/apps

Го едитираме фајлот tcli.sh така што

TCLI_RC=”$HOME/.tcli.rc”

го заменуваме со

TCLI_RC=”.tcli.rc”

и

in tcli.sh replace
OAuth_sh=$(which TwitterOAuth.sh)
(( $? != 0 )) && echo ‘Unable to locate TwitterOAuth.sh! Make sure it is in searching PATH.’ && exit 1
source “$OAuth_sh”

го заменуваме со

source TwitterOAuth.sh

Сличното го повторуваме за фајлот TwitterOAuth.sh каде

OAuth_sh=$(which OAuth.sh)
(( $? != 0 )) && echo ‘Unable to locate OAuth.sh! Make sure it is in searching PATH.’ && exit 1
source “$OAuth_sh”

го заменуваме со

source OAuth.sh

Преостана само да креираме bash скрипта која ќе ни служи за твитање. Тука можете да експериментирате, односно да направите скрипта која ќе твита она што вие го замислувате. За демонстрација на нас ни е потребен еден обичен текст фалј во кој ќе ги чуваме настаните. Овој фајл ќе служи како извор на настани кои ќе ги твита bash скриптата. Нека овој фајл го именуваме nasatani и во него ја сместиме следната содржина:

29 Ное 1958 Скопје и некои други градови од Македонија имаа можност со добар прием да ја гледаат италијанската телевизија.
29 Ное 1962 Велика Британија и Франција потпишуваат спогодба за изработка на суперсоничен авион од типот „Конкорд“.
29 Ное 1973 Во Маврови Анови е формирано Здружението на радиостаниците во Република Македонија.

bash скриптата nadeneshenden.sh е следнава:

#!/bin/bash
#пребројување на линиите во фајлот
linii=`cat /home/alifaan/nadeneshenden/nastani | wc -l`

#избирање на ранром број во зависност од бројот на линии во фајлот
rbroj=$(((($RANDOM % $linii))+1))

#креирање на твитот
tweet=”`awk -v linenum=$rbroj ‘NR == linenum {print; exit}’ /home/alifaan/nadeneshenden/nastani`”

#твитање
/home/alifaan/nadeneshenden/tcli.sh -c statuses_update -s “$tweet”

Локацијата /home/alifaan/nadeneshenden/ кај вас ќе биде различна.

При првото извршување на скриптата во терминал ќе се појави линк, на кој ќе мора да клинете и да овозможите на апликацијата која ја креиравме да твита од вашиот профил. За тоа ќе ви биде даден PIN број кој ќе морате да го внесете во терминал, и со тоа во фајлот .tcli.rc ќе се додадат уште 2 линии.

За да го автоматизирате овој процес, да немора мануелно да ја извршувате скриптата можете да користите cron. Со внесување на командата crontab -e во терминал го едитирате фајлот каде кажувате во кој период да се изврши вашата скрипта. Моментално јас ја коситам следнава конфигурација:

00,45 0,3,6,9,12,15,18,21 * * * /home/alifaan/nadeneshenden/nadeneshenden.sh
30 1,4,7,10,13,16,19,22 * * * /home/alifaan/nadeneshenden/nadeneshenden.sh
15 2,5,8,11,14,17,20,23 * * * /home/alifaan/nadeneshenden/nadeneshenden.sh

Оваа конфигувација овозможува твитање на настан на секои 45 минути.

Крајниот резултат од сето ова е

Бидете креативни, креирајте свој твитер бот и споделетего акаунтот во коментари за да го следиме.

Објавено од alifaan

Димитар Крстевски, студент @ finki.ukim.mk | CCNA & CCNA Security | NetAcad амбасадор | Arch корисник | страст за дизајнирање, развивање и конфигурирање компјутерски мрежи

  • http://twitter.com/taskovskig Gjorgji Taskovski

    Да се пофалам и јас :) Го направив ботот AskMe43 кој секој час твита по еден fortune. За разлика од твојот пристап, јас одам со bash и perl.

    Bash скриптата која се става во cron

    #!/bin/bash/usr/games/fortune -s -n 100 > /home/gjorgjit/tmp/fortune.txt/home/gjorgjit/tmp/twitter-fortune.pl

    Perl скриптата:

    #!/usr/bin/perl -wuse strict;use Net::Twitter;binmode STDOUT, “:utf8″;my $nt = Net::Twitter->new( traits => [qw/OAuth API::REST/], consumer_key  => ‘KEY’, consumer_secret => ‘SECRET’, access_token => ‘TOKEN’, access_token_secret => ‘TOKEN SECRET’);open (FILE, “</home/gjorgjit/tmp/fortune.txt");my @lines = ;close FILE;my $fortune_text = ‘#fortune >';foreach (@lines) { chomp; $fortune_text = $fortune_text . ‘ ‘ . $_;}my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);$year += 1900;$mon += 1;$mon = ‘0’ . $mon if (length($mon) == 1);$mday = ‘0’ . $mday if (length($mday) == 1);$hour = ‘0’ . $hour if (length($hour) == 1);$min = ‘0’ . $min if (length($min) == 1);#$sec = ‘0’ . $sec if (length($sec) == 1);#my $date = $year . ‘-‘ . $mon . ‘-‘ . $mday . ‘ ‘ . $hour . ‘:’ . $min . ‘:’ . $sec . ‘+01′;my $date = $year . ‘-‘ . $mon . ‘-‘ . $mday . ‘ ‘ . $hour . ‘:’ . $min;#print $fortune_text . ‘ > ‘ . $date;#print “n”;my $result = $nt->update($fortune_text . ‘ > ‘ . $date);print “$resultn”;1;
    Твитовите можеш да ги видиш со следење на @AskMe43.