Notifikasi Mangastream menggunakan BASH

Apakah Anda penggemar serial komik (manga) Naruto dan One Piece ?
Apakah capek mereload browser Anda untuk menanti seri terakhir dari Mangastream ?
Jika jawabannya YA, maka hanya dengan beberapa baris skrip BASH dibawah ini mungkin bisa membuat Anda lebih tenang di akhir pekan tanpa berlama-lama didepan monitor untuk melihat apakah sudah ada seri terakhir atau belum :)

Skrip ini akan memeriksa apakah seri terbaru sudah ada dan memberitahu Anda melaulu email. Sederhana bukan? Yang dibutuhkan adalah links, MTA (misalnya: Postfix, Sendmail, qmail, Exim dll), akses crontab dan tentunya sistem operasi kesayangan Anda (Linux/BSD). Jangan lupa untuk membuat direktori /etc/mangadata serta bikin file /etc/mangadata/Naruto.last dan /etc/mangadata/One_Piece.last yang berisi data terakhir seri manga ybs. Pastikan user yang menjalankan crontab bisa menulis ke direktori tersebut.

#!/bin/bash
#
# Description : Skrip notifikasi serial manga terbaru dari Mangastream
# Author      : Asfihani 
# License     : GPL

# daftar penerima email notifikasi, pisahkan dengan spasi
RECIPIENTS="asfihani@domain.tld asfik@otherdomain.tld"
MANGA_LIST="Naruto One_Piece"
URL="http://twitter.com/mangastream"
STRING="is out"

for MANGA in $MANGA_LIST; do
        # biasanya manga seri baru hari Kamis sudah ada, hapus lock file pada cycle pertama
	if [ `date +%u` == "4" ] && [ `date +%H%M` == "0000" ]; then
		rm -rf /etc/mangadata/$MANGA.lck
	fi

        # periksa file lock
	if [ ! -f /etc/mangadata/$MANGA.lck ]; then
                # periksa file yang berisi data seri terakhir
		if  [ -f /etc/mangadata/$MANGA.last ]; then
			LAST_EPISODE=$(cat /etc/mangadata/$MANGA.last)
			let CURRENT_EPISODE=$LAST_EPISODE+1

                        MANGA_TITLE=$(echo $MANGA | sed -e "s/_/ /g")
			OUTPUT=$(links -dump $URL | grep -A1 "$MANGA_TITLE $CURRENT_EPISODE $STRING")

			if [ "$OUTPUT" != "" ]; then
                                SUBJECT="[MANGABOT] $MANGA_TITLE Chapter $CURRENT_EPISODE sudah keluar"
				echo $OUTPUT | mail -s $SUBJECT $RECIPIENTS
                                # update seri terakhir
				echo $CURRENT_EPISODE > /etc/mangadata/$MANGA.last
                                # buat file lock, agar looping selanjutnya dilewati
				touch /etc/mangadata/$MANGA.lck
			fi
		fi
	fi
done


Buat entry di crontab, misalnya untuk memeriksa setiap 15 menit dari hari Kamis s/d Minggu :

*/15 * * * 4-7 /etc/mangadata/check_manga.sh > /dev/null 2>&1

Kelemahan skrip ini adalah jika Mangastream merubah pola string maka skrip mungkin tidak akan bekerja sebagaimana yang diharapkan :)

2 Replies

Leave a Reply

Your email address will not be published. Required fields are marked *