diff options
Diffstat (limited to 'tools/grab_adblocker')
-rwxr-xr-x | tools/grab_adblocker | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/tools/grab_adblocker b/tools/grab_adblocker new file mode 100755 index 00000000..4f750e0a --- /dev/null +++ b/tools/grab_adblocker @@ -0,0 +1,193 @@ +#!/bin/bash + +# Filterlist, uncomment to download lists, mutliple lists are supported, but +# don't choose too many lists since it will slow down the adblocker +URLS=( + +# Easylist +# Easylist English +#https://easylist-downloads.adblockplus.org/easylist.txt + +# Easylist Privacy, blocks tracking +#https://easylist-downloads.adblockplus.org/easyprivacy.txt + +# Easylist Without element hiding +#https://easylist-downloads.adblockplus.org/easylist_noelemhide.txt + +# Easylist additional subscriptions +# Easylist Germany +#https://easylist-downloads.adblockplus.org/easylistgermany.txt + +# Easylist Italy +#https://easylist-downloads.adblockplus.org/easylistitaly.txt + +# Easylist Dutch +#http://dutchadblockfilters.googlecode.com/svn/trunk/AdBlock_Dutch_hide.txt + +# Easylist French +#http://lian.info.tm/liste_fr.txt + +# Easylist China +#http://adblock-chinalist.googlecode.com/svn/trunk/adblock.txt + +# Easylist Bulgaria +#http://stanev.org/abp/adblock_bg.txt + +# Easylist Indonesia +#http://indonesianadblockrules.googlecode.com/hg/subscriptions/abpindo.txt + +# Easylist Finland +#http://www.wiltteri.net/wiltteri.txt + +# Easylist Greece +#http://www.void.gr/kargig/void-gr-filters.txt + +# Adversity +# Adversity English list +#https://adversity.googlecode.com/hg/Adversity.txt + +# Adversity Privacy +#https://adversity.googlecode.com/hg/Adversity-Tracking.txt + +# Fanboy +# Fanboy English list +#http://www.fanboy.co.nz/adblock/fanboy-adblock.txt + +# Fanboy Tracking list +#http://www.fanboy.co.nz/adblock/fanboy-tracking.txt + +# Antisocial +#https://adversity.googlecode.com/hg/Antisocial.txt +) + + +DESCRIPTION_INTERACTIVE=( +"Easylist English" +"Easylist privacy, blocks tracking" +"Easylist without element hiding" +"Easylist Germany" +"Easylist Italy" +"Easylist Dutch" +"Easylist French" +"Easylist China" +"Easylist Bulgaria" +"Easylist Indonesia" +"Easylist Finland" +"Easylist Greece" +"Adversity English list" +"Adversity Privacy" +"Fanboy English list" +"Fanboy Tracking list" +) +URLS_INTERACTIVE=( +https://easylist-downloads.adblockplus.org/easylist.txt +https://easylist-downloads.adblockplus.org/easyprivacy.txt +https://easylist-downloads.adblockplus.org/easylist_noelemhide.txt +https://easylist-downloads.adblockplus.org/easylistgermany.txt +https://easylist-downloads.adblockplus.org/easylistitaly.txt +http://dutchadblockfilters.googlecode.com/svn/trunk/AdBlock_Dutch_hide.txt +http://lian.info.tm/liste_fr.txt +http://adblock-chinalist.googlecode.com/svn/trunk/adblock.txt +http://stanev.org/abp/adblock_bg.txt +http://indonesianadblockrules.googlecode.com/hg/subscriptions/abpindo.txt +http://www.wiltteri.net/wiltteri.txt +http://www.void.gr/kargig/void-gr-filters.txt +https://adversity.googlecode.com/hg/Adversity.txt +https://adversity.googlecode.com/hg/Adversity-Tracking.txt +http://www.fanboy.co.nz/adblock/fanboy-adblock.txt +http://www.fanboy.co.nz/adblock/fanboy-tracking.txt +) + +# General not supported filterlists +_USP="object-subrequest|ping|xbl|xmlhttprequest|dtd|elemhide|other|collapse|donottrack|popup" +# Only remove rules, not exceptions +UNSUPPORTED="(^@@.*[\$,]~(${_USP})($|,))" +UNSUPPORTED+="|(^[^@].*[\$,](${_USP})($|,))" + + +declare PROFILE +# Parse settings +CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}" +CONFIG="${CONFIG_DIR}/dwb/settings" + +while read; do + if [[ ${REPLY} =~ ^\[ ]]; then + PROFILE=${REPLY:1:$((${#REPLY}-2))} + fi + if [ "${PROFILE}" = "default" ] && [[ ${REPLY} =~ ^adblocker-filterlist ]]; then + DEST=${REPLY//*=/} + break + fi +done < ${CONFIG} + +if [ ! ${DEST} ]; then + if ! test -z $(pgrep -U $(id -u) dwb); then + cat << ! +You haven't set 'adblocker-filterlist' in dwb yet. You can either set the path +in dwb or close all instances of dwb and run this script again. +! + exit 1 + fi + DEST=${CONFIG_DIR}/dwb/adblock_default + echo "No setting 'adblocker-filterlist' found for profile default, using '${DEST}'" + sed -i "0,/adblocker-filterlist/s#^adblocker-filterlist=.*#adblocker-filterlist=${DEST}#" ${CONFIG} +fi + +echo -e "The filterlist will be saved as ${DEST}\n" + +if [ -e ${DEST} ]; then + rm ${DEST} +fi + +AFTER=0 +BEFORE=0 +REMOVED=0 +TOTAL=0 + +get_list() { + local TMP=$(mktemp) + echo "Grabbing ${1}" + wget -O ${TMP} ${1} &>/dev/null + BEFORE=( $(wc -l "${TMP}") ) + + ((BEFORE+=TOTAL)) + sed -r "/${UNSUPPORTED}/d" "${TMP}" >> ${DEST} + rm ${TMP} + AFTER=( $(wc -l "${DEST}") ) + ((REMOVED=BEFORE-AFTER)) + TOTAL=${BEFORE} +} + +# Download the filterlists +if [ $# -gt 0 ]; then + URLS=$@ +fi +if [ ${#URLS[@]} -gt 0 ]; then + for URL in ${URLS[@]}; do + get_list ${URL} + done +else + OLDPS3=$PS3 + echo -e "Choose filterlists:\n" + PS3="Comma-separated list: " + select blub in "${DESCRIPTION_INTERACTIVE[@]}"; do + echo + REPURL=( ${REPLY//,/ } ) + for n in ${REPURL[@]}; do + if [ ! ${URLS_INTERACTIVE[$((n-1))]} ]; then + echo "Choose appropriate numbers next time." + exit 1 + fi + done + for n in ${REPURL[@]}; do + get_list ${URLS_INTERACTIVE[$((n-1))]} + done + break + done + PS3=${OLDPS3} +fi + +echo "Removed ${REMOVED} unsupported of ${BEFORE} filters." +echo "Removing comments." +sed -i "/^[!\[]/d" "${DEST}" +echo "Done." |