Unai Tolosa

Garatzailea Talaios Koop.-en

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:

$ mkdir etzi-bot 

Proiektua jarriko dugun fitxategira sartu:

$ cd etzi-bot 

Npm instalatu eta proiektua hasieratu:

$ sudo apt-get install npm
$ npm init 

Exekutatzeko behar ditugun dependentziak instalatu:

$ npm install --save twit xml2js request path fs
$ touch azkena.txt

 

Twitterreko Tokenak sartzeko config.js ffitxategia sortuko dugu.

 $ sudo nano config.js 

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


/** 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'
}

konfigurazio fitxategia sortuko dugu giltzak beste fitxategi batean edukitzeko

$ sudo nano index.js

index.js dokumentuan hau sartuko dugu:

"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("http://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 + " #etziBot"
          },
          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  

Zerbitzaria martxan jarri

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

$ sudo npm install -g now

#packege.json sortu edo gainidatzi:

$ nano package.json

Gure package.json horrela geratuko da:

{
 "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"
 }
}

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

$ now #zerbitzua zerbitzarian martxan jarriko du

Zerbitzua ondo jarri badu, martxan horrelako zerbait erantzungo du:

> 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.

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

 

Kode guztia: github

Iruzkinak

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

    1. 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!

Utzi erantzuna

Zure e-posta helbidea ez da argitaratuko. Beharrezko eremuak * markatuta daude