تبدیل لیست توییتر به یک صفحه HTML

تقریبا از یکی دو سال پیش به این نتیجه رسیده‌ام که شبکه‌های اجتماعی، برای فردی مثل من ابزار اتلاف وقت محسوب می‌شوند و تمرکز مرا از بین می‌برند. به همین خاطر شروع کردم به حذف یا کمرنگ کردن اثر آنها در زندگی؛ حساب کاربری‌ام در اکثر شبکه‌های اجتماعی حذف/غیرفعال کردم و راهکارهایی استفاده کردم که چندتا از آنها را در نوشته‌ی راهکارهایی برای مدیریت زمان در شبکه‌های اجتماعی در همین وبلاگ نوشتم. در این نوشته هم قصد دارم یک روش جدید برای خواندن مطالب لیست توییتر در قالب یک صفحه اچ‌تی‌ام‌ال (و بدون فیلتر) آموزش دهم.

من معمولا توییت‌های چند حساب کاربری (کمتر از ۱۰) در توییتر که در مورد تکنولوژی می‌نویسند را می‌خوانم، و فکر می‌کنم خواندن آنها برای فردی مثل من که اهل سایت‌های خبری یا تکنولوژی نیست، زیاد بد نباشد؛ اما توییتر پر است از مطالبی که اصطلاحاً دشمن وقت هستند و چرخی در آنها می‌تواند ساعت‌ها زمان بگیرد. گام اول من برای مقابله با این مشکل ایجاد یک لیست توییتری از این چند حساب بود؛ با این‌کار می‌شد حتی بدون لاگین در توییتر، مطالب لیست را خواند، اما هنوز هم امکان اتلاف وقت وجود داشت، پاسخ‌های هر توییت و هشتگ‌ها کاملا در دسترس بودند و از طرفی کادر جستجوی توییتر هم در بالای صفحه جا خوش کرده بود و همین موارد هم امکان بالقوه برای صرف وقت بودند که بالفعل شدن‌شان بسیار محتمل بود. چند وقت پیش روش بهتری برای خواندن مطالب لیست توییتر ایجاد کردم که در ادامه با آن آشنا می‌شوید. خروجی کار من با استفاده از کمی css و javascript مشابه تصویر زیر شده است:

توییتر بدون فیلتر

گام اول: ایجاد یک لیست در توییتر

ساخت لیست در توییتر خیلی ساده است،‌ کافی است از منوی کناری به گزینه List (یا فهرست‌ها) بروید و یک لیست عمومی جدید با یک نام بسازید،‌ و از اکانت‌هایی که می‌خواهید به آن عضو اضافه کنید. لیست شما به آدرس یکتای زیر در دسترس است:

https://twitter.com/{your-username}/lists/{your-list-name}

گام دوم: تبدیل لیست توییتر به RSS

من برای تبدیل لیست توییتر از twitrss.me استفاده می‌کنم، کافی است که عبارت {your-username}/lists/{your-list-name} را به کادر جستجویی که در وسط صفحه است بدهیم آدرسی که تولید می‌شود به صورت زیر است:

http://www.twitrss.me/twitter_user_to_rss/?user={your-username}/lists/{your-list-name}

گام سوم: تبدیل RSS به HTML

برای اینکار از ابزارهای آنلاینی مثل bloople.net می‌توان استفاده کرد و آدرس rss را به آنها داد و صفحه HTML تولیدی را بوکمارک کرد تا بتوان همیشه لیست توییتر در به صورت HTML خواند. ولی این کار دو مشکل داشت: یکی رابط کاربری آن در مرورگر موبایل زیاد دلچسب نبود و دومی عدم پشتیبانی از راست به چپ (RTL) برای زبان‌هایی مثل فارسی بود. به همین خاطر من تصمیم گرفتم یک تکه کد کوچک PHP برای parse این rss بنویسم.

<?php
$xml = ("http://www.twitrss.me/twitter_user_to_rss/?user={your-username}/lists/{your-list-name}");
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
$x = $xmlDoc->getElementsByTagName('item');
for ($i = 0;$i < $x->length;$i++){
    $item_title = $x->item($i)->getElementsByTagName('creator')->item(0)->childNodes ->item(0)->nodeValue;
    $item_link = $x->item($i)->getElementsByTagName('link')->item(0)->childNodes->item(0)->nodeValue;
    $item_desc = $x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;
    echo "<a href='" . $item_link . "'>" . $item_title . "</a>";
    //Here we show $item_desc & img
}
?>

اگر بخواهیم در متن هر توییت، تصاویر را هم بدون فیلتر ببینیم، می‌توانیم از تکه کد زیر استفاده کنیم که تصویر هر توییت را به base64 تبدیل می‌کند، بنابراین خط آخر حلقه for (که در کد بالا به صورت comment// است) به این شکل در خواهد آمد:

<?php
echo  "<p>" . preg_replace("/<img[^>]+\>/i", "", $item_desc) . "</p>";
if (strpos($item_desc, '<img ') !== false){
    preg_replace_callback('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', function ($matches){
        if (strpos($matches[0], 'pbs.twimg.com') !== false){
            $imageData = base64_encode(file_get_contents($matches[0]));
            echo '<img width="100%" src="' . 'data: ' . mime_content_type($matches[0]) . ';base64,' . $imageData . '">';
        }
    }, $item_desc);
?>

تمام شد! اکنون می‌توانید این تکه کد PHP را در یک سرور بگذارید (سرورهای رایگان PHP خیلی زیاد هستند،‌ کافی است کمی در گوگل جستجو کنید) و بوسیله‌ی آن لیست توییتر خود را به صورت HTML و بدون فیلتر مشاهده کنید، حتی می‌توانید کمی css به آن اضافه کنید تا ظاهری کاربرپسند پیدا کند.


برچسب‌ها:،،،،،
مرتضی اسدی
مرتضی اسدی
سلام! من مرتضی اسدی هستم، یک توسعه‌دهنده‌ی نرم‌افزار و در این وبلاگ دست‌نوشته‌هایم را می‌نویسم.