‌BashGNU / LINUX

یک اسکریپت برای گرفتن notification اینستاگرام و توییتر و … روی کامپیوتر

 

احتمالا درباره Push notification شنیدید. مدتی هست که بسیار معمول شده. به هر وبسایتی که سر می‌زنید، از شما میخواد که بهش اجازه بدید تا از طریق مرورگر اخبار جدید رو به صورت Notification (اعلان) برای شما ارسال کنه.

 

 

من این قابلیت رو برای ایمیل و توییتر و اینستاگرام فعال کردم. حالا وقتی پای کامپیوتر هستم و برای من در اینستاگرام یا … پیغامی برای من میاد یا … برای من اعلان میاد. من از مرورگر فایرفاکس استفاده میکنم و فایرفاکس رو به بقیه مرورگر‌ها ترجیح میدم(دعوای مرورگر راه نندازید! سلیقه هست). حالا یک مشکل وجود داره و اگر فایرفاکس بسته باشه برای من اعلان نمیاد! یک اسکریپت bash نوشتم تا این مشکل حل بشه.

#!/bin/bash
sleep 2m
# run firefox without gui
while [ 0 == 0 ];do
    # check is firefox instance is running
    output=`ps -A|grep 'firefox'|wc -l`
    echo "number of firefox's instance is running now: $output"

    # if firefox is not running, run firefox headless.
    if [ "$output" == 0 ];then
        echo "run firefox"
        firefox --headless &

        # wait 30 seconds for getting notifications
        sleep 30s

        echo "kill firefox"
        # kill firefox and wait 15 min
        pkill -f firefox

        sleep 15m
    else
        # check again after 15 min
        sleep 15m
    fi
done

 

برای دوستان تازه کار:

این اسکریپت رو در یک فایل با پسوند sh کپی کنید و یک اسم براش انتخاب کنید(مثلا push_notification.sh) . بهش با دستور زیر دسترسی اجرایی بدید.

chmod +x ./push_notification.sh

حالا این اسکریپت رو در استارت آپ میزکارتون قرار بدید تا هر وقت میزکار اجرا میشه این اسکریپت هم اجرا بشه.

 

این اسکریپت چه طور کار میکنه؟

دودقیقه صبر میکنه تار میزکار بالا بیاد! یک حلقه while وجود داره که همیشه تکرار میشه چون شرطش همیشه صحیح هست. در این حلقه ابتدا چک میکنه که فایرفاکس درحال اجرا هست یانه. چون اگر در حال اجرا باشه اعلان ها رو دریافت میکنید و نیاز به کار اضافی نیست.  اگر نبود فایرفاکس رو به شکل headless (بدون رابط گرافیکی) اجرا میکنه. چون بدون رابط گرافیکی اجرا کرده، پنجره ای باز نمیشه که کاربر ببینه. ۱۵ ثانیه صبر میکنه تا ناتیفیکیشن ها دریافت بشه. بعد از ۱۵ ثانیه فایرفاکس رو میبنده و این روند هر ۱۵ دقیقه تکرار میشه.

دقت کنید این اسکریپت برای فایرفاکس نوشته شده! و حتما دقت کنید در فایرفاکس برای سایت مورد نظرتون ناتیفیکیشن رو فعال کرده باشید و اگر اون سایت نیاز به لاگین کردن داره(مثل اینستاگرام)، در مرورگرتون این کار رو بکنید. گاهی ناتیفیکیشن های توییتر دیر میاد! ولی روی جیمیل و اینستاگرام اوضاع خوبه. دقت کنید در اون ۳۰ ثانیه که فایرفاکس داره به شکل headless اجرا میشه، شما نمیتونید مرورگر رو باز کنید 🙂 ۳۰ ثانیه هست دیگه! صبور باشید.

امیدوارم که به دردتون بخوره 🙂

 


مشکلی که بهش بر خوردم این بوده که هر از گاهی وقتی فایرفاکس رو باز میکنم در شروع از من میخوات که یا فایرفاکس رو با safe mode بیارم بالا یا refresh کنم.

در این حالت یک بار فایرفاکس رو safe mode بیارید بالا و بعد ببندید و دوباره باز کنید. هنوز راه حلی برای این مشکلی پیدا نکردم. اگر کسی راهی پیدا کرد خبر بده 🙂

 

6
دیدگاه بگذارید

avatar
3 Comment threads
3 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
علیرضا امیرصمیمیافشینکیا حامدیmohsen Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
افشین
مهمان
افشین

می‌توانید کاری کنید که وقتی اِعلان جدیدی می‌آید، یک هشدار صوتی هم بدهد؟

کیا حامدی
مهمان

واقعا جالب و مفید بود ممنون

mohsen
مهمان
mohsen

اگه دستور رو توی cron می گذاشتیم بهتر نبود؟ بهینه تر یا شاید باحال تر