Nola sortu Twitterrerako bota

Unai Tolosa-ren avatar

Denoi gertatu zaigu noizbait. Twitterren lasai asko zabiltzala behar sozial bat badagoela jabetzen zara:

Teknologia behar sozialei erantzuteko dagoenez, bota nola egin ikusiko dugu gaur.

Baino guk etzibota egingo dugu. Izan ere, goiko txioak proposatzen duen bota egin dute iada:

 

Beraz, jar gaitezen etzibotarekin.

Aurrekoan Telegrameko bota nola sortu ikusi genuen. Gaurko honetan Twitter sare sozialean @etzipm erabiltzailearen txioak nola automatizatu ikusiko dugu.

Bot honek etzi.pm webak ea albiste berririk duen begiratuko du orduro eta baldin badu txiokatu egingo du albistea.

 

Twitter aplikazioa sortu

Twitterrekin lotura egiteko token batzuk eskatu behar dizkiogu twiterri. Hortarako http://apps.twitter.com-era joango gara. Logeatu ondoren aplikazio berria sortu botoiari eman eta bete eskatzen dituen parametroak.

 

Consumer key eta consumer tokenak emango dizkigu berehala.

Ondoren beste bi token eskatu behar dira: Access token eta Access token secret-a

 

 

Bot-aren kodea

Zerbitzaria sortzen hasteko fitxategi bat sortuko dugu proiektuarentzat:

[code lang=”bash”]
$ mkdir etzi-bot [/code]

Proiektua jarriko dugun fitxategira sartu:

[code lang=”bash”]
$ cd etzi-bot [/code]

Npm instalatu eta proiektua hasieratu:

[code lang=”bash”]
$ sudo apt-get install npm
$ npm init
[/code]

Exekutatzeko behar ditugun dependentziak instalatu:

[code lang=”bash”]
$ npm install –save twit xml2js request path fs
$ touch azkena.txt
[/code]

 

Twitterreko Tokenak sartzeko config.js ffitxategia sortuko dugu.

[code lang=”bash”] $ sudo nano config.js [/code]

Bertan hau idatziko dugu: (Gure tokenekin, noski!)

[code lang=”js”]

/** TWITTER APP CONFIGURATION
* consumer_key
* consumer_secret
* access_token
* access_token_secret
*/
module.exports = {
consumer_key: ‘LK6wgfdgewfwdf1alwmdk’,
consumer_secret: ‘Sq5km213123ewfwe1231231kqD8F45t45tdfsdaA2’,
access_token: ‘11111278-Vpd0sdgs7ZVFnwAaQVYs41R’,
access_token_secret: ‘YQ9twxUq321fd1321rdqwfwe2wqwr2312e12e’
}

[/code]

konfigurazio fitxategia sortuko dugu giltzak beste fitxategi batean edukitzeko

[code lang=”bash”]
$ sudo nano index.js
[/code]

index.js dokumentuan hau sartuko dugu:

[code lang=”js”]
"use strict";

const request = require("request");
const parseString = require("xml2js").parseString;
const stripPrefix = require("xml2js").processors.stripPrefix;
const fs = require("fs");
const path = require("path");
////twit
const twit = require("twit");
const config = require("./config.js");

var registered = [];
var lastTitle = "";
var twitErab = "";

/////////////////twitter konfigurazioa
const Twitter = new twit(config);

//////// ea azkena.txt badagoen

const AZKENA_FILE = process.env.DB_PATH
? path.join(process.env.DB_PATH, "azkena.txt")
: "azkena.txt";

///////irakurri piztean azken titulua
var lastTitle = fs.readFileSync(AZKENA_FILE).toString();

/////////////
//24 orduro exekutatzen den lan bat jartzen dugu martxan hemen
setInterval(() => {
console.log("setInterval begiratu berririk baden:");
request("https://etzi.pm/feed/", (err, res, body) => {
parseString(body, { tagNameProcessors: [stripPrefix] }, (err, result) => {
let newest = result.rss.channel[0].item[0];
if (lastTitle === newest.title[0]) {
console.log("Ez dago albiste berririk: " + lastTitle);
return;
}
//
fs.unlinkSync(AZKENA_FILE);
//console.log(‘azkena gorde’+newest.title[0]);
fs.appendFileSync(AZKENA_FILE, newest.title[0]);
//

lastTitle = newest.title[0];
twitErab = newest.creator;

// twit
Twitter.post(
"statuses/update",
{
status: twitErab + " – " + lastTitle + ": " + newest.link + " "
},
function(err, data, response) {
if (err) {
console.log("Error in tweeting azken posta");
} else {
console.log("Azken posta shown successfully");
}
}
);
});
});
}, 1000 * 60 * 24); //24 orduro begiratzen du
[/code]

Zerbitzaria martxan jarri

Sortutako kodea nahi den zerbitzarian jar dezakegu martxan. Edonork zerbitzari propioa ez dugunez, now zerbitzua erabiliko dugu:

[code lang=”bash”]
$ sudo npm install -g now
[/code]

#packege.json sortu edo gainidatzi:

[code lang=”bash”]
$ nano package.json
[/code]

Gure package.json horrela geratuko da:

[code lang=”js”]
{
"name": "twittols-bot",
"version": "1.0.0",
"description": "etzibot",
"main": "index.js",
"author": "tolosa",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/utolosa002/twittols-bot.git"
},
"license": "ISC",
"bugs": {
"url": "https://github.com/utolosa002/twittols-bot/issues"
},
"homepage": "https://github.com/utolosa002/twittols-bot#readme",
"dependencies": {
"fs": "0.0.1-security",
"path": "^0.12.7",
"request": "^2.83.0",
"twit": "^2.2.9",
"xml2js": "^0.4.19"
}
}
[/code]

Hasierako script-a gehitu ondoren, exekutatu honako komandoa proiektua dagoen karpetan bertan:

[code lang=”bash”]
$ now #zerbitzua zerbitzarian martxan jarriko du
[/code]

Zerbitzua ondo jarri badu, martxan horrelako zerbait erantzungo du:

[code lang=”bash”]
> Deploying ~/etzi-bot
> Using Node.js 8.9.0 (default)
> Ready! https://etzi-bot-zzzzz.now.sh
> You are on the OSS plan. Your code will be made public.
[/code]

Dena ondo egin badugu gure Bot-a martxan edukiko dugu eta artikulu berriren bat dagoenean automatikoki txiokatuko du.

 

Kode guztia: github

Iruzkinak

  1. Gari-ren avatar
    Gari

    zer da BOT bat? hori azaltzen hasi zintezkeen? norentzako testua osaru duzu? informatikarientzat? ez dut ezer ulertu

    1. Unai Tolosa-ren avatar
      Unai Tolosa

      Kaixo Gari, Bota gauzak automatikoki egiten dituen zerbitzu bat da. Kasu honetan txioa automatikoki argitaratzea da bot honen helburua.
      Bestalde, bai, informatikari/ saltsero/ teknofiloentzat atala ireki genuen: Zamaketariak. Kategoria hau pixka bat teknikoagoa izango da.
      Edozein duda baduzue galdetu lasai hemen edo Twitter bidez. Baldin badakigu behintzat saiatuko gara erantzuten.
      Ondo izan!