Bot a Twitteren php, vr-online - ingyenes e-zine mindenki számára

Miután elolvasta ezt a rövid cikket, megtanulja a szent tudást, és képes lesz létrehozni egy klónt a híres twitterfeed szolgáltatásról. Egy vicc! A nyáladat vissza! Csak egy makettet, a legegyszerűbb prototípust fogunk megfontolni, amely nem áll készen a valóságos használatra. Most azonnal elmondom, nem fogom teljesen megnyitni a forráskódot. Csak azt szeretném megmutatni, hogyan hitelesítheted, együttműködhetsz rss, tweets, köszönetnyilvánítással és rosszindulatú emberekkel, akik régóta küldik üzeneteinket. Az érdekelt? Akkor olvass tovább!

Klónozunk twitterfeed php-vel

A mi forgatókönyvünkben megpróbáljuk végrehajtani a következő funkciókat:

* A konzolon fut, HTTP hozzáférés nélkül
* Hitelesítés és Twitter OAuthon keresztül
* Az RSS-t, az elemzést, a 140 karakteres korlátozott üzeneteket formázza, beleértve a postfixet (hashtag vagy RT).
* Köszönet azoknak a felhasználóknak, akik a botunk retweet üzeneteit készítették
* Foloving emberek, akik a retweet

Mindezeket telepítjük és konfiguráljuk Linux alatt. És akkor 15 perccel kezdjük el a krémet. Készen állsz? Akkor kezdjük el!

Ha úgy döntöttem, hogy az OAuthot használom (és határozottan eldöntöttük), akkor regisztrálnia kell az alkalmazását. Az alapszintű hitelesítést nem szabad használni, mert előbb vagy utóbb a twitter bezárhatja a kapcsolatot. Ezenkívül létrehozunk egy személyes botot, így a "from" karakterláncnak jelen kell lennie a tweetben.

Maga a regisztrációs folyamat meglehetősen egyszerű. Csak ellenőrizze, de elfelejtette kiválasztani az olvasást és az írást a regisztráció során? Ezenkívül ellenőrizze, hogy teljesen megszüntettük-e a http hozzáférést a bot kezeléséhez. Van OAuth-alapú PIN-kódunk, ezért győződjön meg róla, hogy a Client Appliaction telepítve van a regisztrációs űrlapon.

A regisztráció befejeztével a fogyasztói kulcs és a fogyasztó rendelkezésére áll. Ne semmisítse meg, és ne adja át ezeket a titkos adatokat!

Milyen környezetben? Szóval, mindent rendben. A mai leckében a következő dolgokat kell használnunk:

Ellenőrizze, hogy telepítve van-e és helyesen konfigurálta-e a gém és a görbe funkciók működnek, és a Twitter OAuth-osztály csatlakozik.

Hitelesítés: A hozzáférési kulcsok tárolása

Az egész projektet két részre osztjuk. Az első automatikusan elindul minden 15 percben, a második csak egyszer fog futni - a hitelesítéshez.

Előkészítő intézkedések befejeződtek. Hozzon létre egy új szkriptfájlt, és nevezze el azt oauth.php-nek (vagy bármi legyen szíved). Gondold el, és döntsd el, hol tárolják a fogyasztó kulcsát és titkát. Én inkább ilyen konfigurációs állományokat tartok a config.php fájlban, amelyet a banális include / require használatával kell csatlakoztatni az auth.php és a robot.php fájlokhoz.

Bot a Twitteren php, vr-online - ingyenes e-zine mindenki számára

Az oauth.php parancsfájl önállóan fog futni, és a parancssor paramétereit veszi át. Körülbelül:

php oauth.php regiszter

php oauth.php érvényesít 123456

Az OAuth munkamenet ellenőrzése után a hozzáférési kulcsok a lemezen valahol lesznek tárolva. Meghívtam az access_token és access_token_secret fájlokat. Ha vannak jelen, akkor az ebot küldhet tweeteket, különben megy a regisztrációhoz. Remélem, hogy minden itt világos.

Olvassa el az RSS hírlevelet

Te és én meg kell tanulnunk a botot, hogy megkülönböztessük a parancsokat, amelyeket továbbadunk. Ne felejtsük el, egyetértettünk abban, hogy az összes parancsot parancssori paraméterekként fogják továbbítani. A parancsfeldolgozó kódot bármilyen módon végrehajthatja. Az én verzióim így néz ki:

[code = php]
$ action = $ argv [1];
ha ($ action == "feed")
$ feed_name = $ argv [2];
// Olvassa el a hírcsatornákat, tweet a hírcsatornákat
>
elseif ($ action == "rthx")
// Olvassa el a neveket, tweet a neveket!
>
elseif ($ action == "válasz")
// Olvassa el a neveket, umm. Mondj valamit!
>
[/ code = php]

A botot így kezeljük:

# php robot.php feed wordpress
Wordpress cikkek olvasása
# php robot.php rthx
Köszönet azoknak az embereknek, akik az üzeneteink rövidsává tették
# php robot.php válasz
Üzenet küldése

Nos, most képzeld el, hogy az RSS hírcsatornában vagyunk. Állítson be egy társult tömböt, amely útvonalakat tartalmaz az RSS-hírcsatornákhoz:

Elég két hírcsatorna indul. Most tegyük közzé a bot csipogóját, olvassa el és csipogja a legfrissebb híreket @mashable-on keresztül. Ellenőrizze, hogy az access_token és access_secret ellenőrző kódja már meg van-e írva, és nem jelenik meg hibaüzenet. Feltételezem, hogy a kulcsokat a $ access_token és $ access_token_secret fájlokban tároltuk, és inicializáltuk a $ oauth objektumot:

[code = php]
$ oauth = új TwitterOAuth ($ oauth_consumer_key, $ oauth_consumer_secret,
$ access_token, $ access_token_secret);
[/ code = php]

A második paraméter ("wordpress", a fenti példában) a $ feed_name változóban lesz tárolva. Most nézzük meg a következő kódot:

[code = php]
// A feed beállításait $ feed-be tárolja
$ feed = $ feed [$ feed_name];

// Adja meg a hírcsatornát és tárolja az előtagot
$ rss = fetch_rss ($ feed ["url"]);
$ postfix = $ feed ["postfix"];

// Húzza át a feed elemeket
foreach ($ rss-> tételek $ tételként)
Mindez elég egyszerű itt
$ title = trim ($ item ["title"]);
$ url = $ item ["link"];

// Ha minden rendben volt, folytassa
ha ($ shortened_url-> errorCode ==
// A rövidebb url lekérése a json objektumból
foreach ($ shortened_url-> eredmények $ key => $ érték)
$ shorturl = $ value-> shortUrl;

// Hozzon létre egy új üzenetet a rövid URL-ből és a postfix-ből
$ message = "$ shorturl $ postfix";
$ length = strlen ($ üzenet);

// Meg kell vágnunk a címet, ha túl hosszú
// A tweetjeink 120 karakter vagy kevesebb
ha (strlen ($ title)> 120- $ hossza)
$ shorttitle = substr ($ title, 0, 117 - $ hossza). ";"; ";
más
$ shorttitle = $ title;

// Adja hozzá a címet az üzenethez
$ message = $ shorttitle. $ üzenet;

// Várjon néhány pénzverdét a következő csipesz előtt
// Ne próbáld meg elárasztani a Twittert, ne feledje, van
// Mindössze 150 API hívás óránként, használja őket bölcsen.
alvás (rand (60, 120));
>
>
>
[/ code = php]

Folovim, és köszönöm

Legyen óvatos, amikor létrehozza ezt a részt. Nem szeretnél megköszönni egy személyt a retweetnek többször is? Ha egyetértesz velem, akkor gondoskodnia kell az utolsó retweet id (id) tárolásáról, amelyért már hálát küldtek. Az azonosító a $ date_id paraméterben lesz. Elhagyom ezt az algoritmust a lelkiismeretére, de általában valami ilyesmit kell kapnod:

[code = php]
// Olvasd a file óta_id fájlt
$ since_id = @file_get_contents ("retweets_since_id");
ha ($ óta_id> <>
más <$since_id = 1;>

// Az XML egy objektum
$ említések = simplexml_load_string ($ említések);

// Beállít egy tömböt, amely tartalmazza a felhasználókat a retweetre és követni
$ users_to_rthx = array ();

// Olvassa el az utolsó tweet azonosítóját és tárolja a retweets_since_id fájlba
$ last_id = ($ említések-> állapot [0] -> id> $ since_id). $ megemlíti -> status [0] -> id. $ óta_id;
file_put_contents ("retweets_since_id", (string) $ last_id);

// Húzza át a tweeteket
foreach ($ megemlíti-> státusz állapotban)
// Nézzük meg, hogy valaki újra feltöltötte-e Önt.
// Err, ne felejtse el helyettesíteni a @ nevedet
ha (strpos (strtolower ($ status-> szöveg), "rt @ yourname")
|| strpos (strtolower ($ status-> szöveg), "via @name"))
// Adja hozzá a fickót a retweeters tömbhöz
$ users_to_rthx [] = $ status-> user-> screen_name;
>
>

// A másolatok eltávolítása (kétszer nem köszönjük meg valakinek a csipogát)
$ users_to_rthx = array_unique ($ users_to_rthx);

// A tweet előtag beállítása és a megemlítendő változó inicializálása
// A tweet_prefix éppen abban az esetben van
$ tweet_prefix = "Köszönjük a retweeteket!";
$ tweet_mentions = "";
$ tweet_prefix = "";

// Hajtsa át az áttelepítőket a változók kiiktatásával a tömbön
míg ($ mention_this_guy = array_pop ($ users_to_rthx))
// Ha az ugratott srác beilleszkedik a vadonatúj tweetbe, add hozzá
ha (strlen ($ tweet_prefix. $ tweet_mentions.
$ tweet_postfix. "@". $ mention_this_guy) <140)
$ tweet_mentions. = "@". $ mention_this_guy. "";

// Formázza az üzenetet és a kimenetet a képernyőre (hibakereséshez)
$ message = $ tweet_prefix. trim ($ tweet_mentions). $ tweet_postfix;
echo "Tweeting:". $ üzenetet. "(" strlen ($ message). ") \ n";

// Várjon néhány másodpercet a következő kör előtt
alvás (rand (5,30));

// Ha van valami a megjegyzésben, akkor ezt meg kell adnunk
ha (strlen ($ tweet_mentions)>
$ message = $ tweet_prefix. trim ($ tweet_mentions). $ tweet_postfix;
echo "Tweeting:". $ üzenetet. "(" strlen ($ message). ") \ n";

Véletlen válaszokat generál

Ez a rész legviccesebb része. Ha valaki megemlíti a nevünket (és ez nem retweet), a botunk szokatlan üzenetet küld neki, nem felejtve elnevezni a nevét. A kód úgy néz ki, mint a kód, amit mondtunk köszönöm a retweet. Az egyetlen kivétel az "rt @ yourname" és "@ yourname" keresése.

Ne felejtse el menteni a reply_since_idet, mert Nem szükséges, hogy az üzenetet többször küldjék el a felhasználóknak (végtelen számú alkalommal). Nem akarunk betiltani tőlünk? A kódom így néz ki:

[code = php]
A hurok
míg ($ mention_this_guy = array_pop ($ users_to_reply))
// Néhány véletlenszerű idézet hozzáadhatja a sajátját
$ random_quotes = array (
"Wha?", "Érdekes.", "Megerősítő uram!", "Hmm, gondolom,
"Tehát tényleg azt hiszed, hogy nem vagyok ember?" Umm. * Sigh * "
);

// Formázza az üzenetet és csipog egy gondos idézetet
$ message = "@". $ mention_this_guy. "".
$ random_quotes [array_rand ($ random_quotes)];

// Várj csak kicsit
alvás (rand (5,30));
>
[/ code = php]

Most konfigurálja a cron-ot. Nyissa meg a crontab fájlt, és adjon hozzá néhány sort:

# Feed mashable és wordpress tweets egyszer 15-16 percenként
* / 15 * * * * php /home/youruser/twibots/robot.php feed wordpress
* / 16 * * * * php /home/youruser/twibots/robot.php feed mashable
Köszönjük, és minden félóránként kövesse az átküldőket
* / 30 * * * * php /home/youruser/twibots/robot.php rthx
# Válasz embereknek óránként
01 * * * * php /home/youruser/twibots/robot.php válasz

Indítsa újra a cron démont és a voilát! Lehetőség van arra, hogy élvezhesse .

Ha egyszerű hosting szolgáltatást használ, akkor a crontab (vagy cron feladatok végrehajtása) keresztül érhető el a CPanel (hosting vezérlőpanel) segítségével. Ne felejtsd el megmondani a PHP-t a szükséges parancs előtt. Ne feledje, hogy a linux .php fájlok nem végrehajthatók.

Szeretném felhívni a figyelmet a következő pillanatra is. Ne próbálja meg tárolni a parancsfájlokat olyan könyvtárakban, amelyeket az Apache segítségével elérhet (pl. A böngészőben lévő fájl elérésével). Nem kell elmagyarázni, hogy ez azért történhet meg. Ha még mindig úgy dönt, hogy azokat nyilvános könyvtárakban tárolja, akkor vigyázzon egy .htaccess fájl létrehozására a "deny from all" bejegyzéssel. Nem szeretné, hogy jogosulatlan emberek használhassák az újszülött botot?

Kapcsolódó cikkek