Last active
March 3, 2017 08:47
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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