Skip to content

Instantly share code, notes, and snippets.

@rizaumami
Last active March 3, 2017 08:47
Show Gist options
  • Save rizaumami/05ab15ceaba910974ad416d10ed4e4bf to your computer and use it in GitHub Desktop.
Save rizaumami/05ab15ceaba910974ad416d10ed4e4bf to your computer and use it in GitHub Desktop.
Script Bash untuk mengambil tautan Buku Sekolah Elektronik dari http://bsd.pendidikan.id.
#!/bin/bash
# Script ini untuk mengambil tautan berkas Buku Sekolah Elektronik dari
# http://bsd.pendidikan.id.
#
# Hasil script berupa berkas berisi daftar tautan menuju berkas PDF BSE yang
# kemudian dapat dijadikan input bagi download manager (misal wget).
#
# Sahri Riza Umami @ 2017/02/28 21:22:24 WIB
# VARIABLES --------------------------------------------------------------------
THIS_DIR=$(cd "$(dirname "$0")"; pwd)
BASEDIR="bsd.pendidikan.id/data"
LINKFILE="$THIS_DIR/link.txt"
# FUNCTIONS --------------------------------------------------------------------
# How to use this script
usage() {
cat << EOF
TeleBSE adalah script untuk mengambil tautan berkas Buku Sekolah Elektronik
dari http://bsd.pendidikan.id.
Usage: $0 [options]
Options:
index Unduh indeks
link Ambil tautan dari berkas indeks
start Unduh indeks kemudian ambil tautan darinya
EOF
}
get_index() {
# Buat direktori untuk buku kurikulum 2006
mkdir -p $BASEDIR/{SD_{1..6},SMP_{7..9},SMA_{10..12},SMK_{10..12}}
# Buat direktori untuk buku kurikulum 2013
mkdir -p $BASEDIR/2013/kelas_{{1..6}sd/{guru,siswa},{7..9}smp/{guru,siswa},{10..12}sma/{guru,siswa},{10..12}smk}
# Unduh indeks buku Kurikulum 2006
for kelas in {SD_{1..6},SMP_{7..9},SMA_{10..12},SMK_{10..12}}; do
wget http://bsd.pendidikan.id/data/$kelas/index.php -O $BASEDIR/$kelas/index.html
done
# Unduh indeks buku Kurikulum 2013
for kelas in kelas_{{1..6}sd,{7..9}smp,{10..12}sma}; do
for buku in {guru,siswa}; do
for rilis in {index,arsip-2014}; do
wget http://bsd.pendidikan.id/data/2013/$kelas/$buku/$rilis.php -O $BASEDIR/2013/$kelas/$buku/$rilis.html
done
done
done
for kelas in kelas_{10..12}smk; do
wget http://bsd.pendidikan.id/data/2013/$kelas/index.php -O $BASEDIR/2013/$kelas/index.html
done
printf '\e[1;32m%s\n\e[0;39;49m' ">> Berkas indeks telah diunduh ke dalam $BASEDIR"
}
get_link() {
# Hapus berkas sebelumnya
[ -f "$LINKFILE" ] && rm $LINKFILE
# Ambil tautan buku Kurikulum 2006
for kelas in {SD_{1..6},SMP_{7..9},SMA_{10..12},SMK_{10..12}}; do
# Ganti tanda kutip oleh baris baru
awk '{gsub(/"/, "\n")};1' $BASEDIR/$kelas/index.html | \
# Tambah tautan di awal nama berkas
awk -v bd="${BASEDIR}" -v kls="${kelas}" '{gsub(/^/, "http://"bd"/"kls"/")};1' >> $LINKFILE
done
# Ambil tautan buku Kurikulum 2013
for kelas in kelas_{{1..6}sd,{7..9}smp,{10..12}sma}; do
for buku in {guru,siswa}; do
for rilis in {index,arsip-2014}; do
awk '{gsub(/"/, "\n")};1' $BASEDIR/2013/$kelas/$buku/$rilis.html \
| awk -v bd="${BASEDIR}" -v kls="${kelas}" -v bk="${buku}" '!/http/{gsub(/^/, "http://"bd"/2013/"kls"/"bk"/")};1' >> $LINKFILE
done
done
done
for kelas in kelas_{10..12}smk; do
awk '{gsub(/"/, "\n")};1' $BASEDIR/2013/$kelas/index.html \
| awk -v bd="${BASEDIR}" -v kls="${kelas}" '!/http/{gsub(/^/, "http://"bd"/2013/"kls"/")};1' >> $LINKFILE
done
# Ambil tautan pdf dan jpg
awk -i inplace '/pdf|thumb.jpg/{print}' $LINKFILE
# Buang baris ganda (serupa uniq)
awk -i inplace 'a !~ $0; {a=$0}' $LINKFILE
printf '\e[1;32m%s\n\e[0;39;49m' ">> Tautan telah disimpan ke dalam $LINKFILE"
}
# MAIN -------------------------------------------------------------------------
case $1 in
index)
get_index
;;
link)
get_link
;;
start)
get_index
get_link
;;
*|help)
usage
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment