Add Scripts/browsertrix.sh
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
|
||||
#set -e
|
||||
|
||||
list="seg_XYZ.txt"
|
||||
|
||||
run_worker() {
|
||||
|
||||
mkdir -p noblogs
|
||||
slug="$1"
|
||||
list="$2"
|
||||
today=`date +%Y-%m-%d`
|
||||
|
||||
# Test if var is empty
|
||||
if [[ -z $slug ]]; then
|
||||
echo "No domain found. Exiting.."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Test if domain has already been archived
|
||||
if [[ -f "./noblogs/noblogs-$slug.wacz" ]]; then
|
||||
echo "Archive of $slug already exists. Exiting.."
|
||||
sed -i "/$slug/d" $list
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Test if domain is currently archiving
|
||||
if docker ps | grep $slug; then
|
||||
echo "Archiving of $slug is already running. Skipping.."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Archiving $slug.."
|
||||
|
||||
# Run browsertrix in Docker using n workers per container
|
||||
workers="6"
|
||||
|
||||
docker run \
|
||||
--rm \
|
||||
--name "${slug}" \
|
||||
--shm-size=2g --log-opt max-size=100m --log-opt max-file=3 -e NODE_OPTIONS="--max-old-space-size=12288" \
|
||||
--volume ./crawls:/crawls \
|
||||
webrecorder/browsertrix-crawler:latest crawl \
|
||||
--workers $workers \
|
||||
--sitemap \
|
||||
--pageLoadTimeout 1440 --behaviorTimeout 600 --postLoadDelay 1 --maxPageRetries 3 \
|
||||
--saveState always --saveStateInterval 300 \
|
||||
--screenshot thumbnail \
|
||||
--text final-to-warc \
|
||||
--generateWACZ --generateCDX \
|
||||
--scopeType prefix \
|
||||
--exclude '.*[?]query.*' \
|
||||
--exclude '.*[?]action.*' \
|
||||
--exclude '.*[?]edit.*' \
|
||||
--url "https://${slug}.noblogs.org" \
|
||||
--collection "noblogs-${slug}" \
|
||||
--title "${slug} (noblogs)" \
|
||||
--description "crawl of read-only version from ${today}" > /dev/null
|
||||
|
||||
mv "crawls/collections/noblogs-$slug/noblogs-$slug.wacz" noblogs/
|
||||
rm -rf "crawls/collections/noblogs-$slug"
|
||||
|
||||
# Remove slug from list, after successful archiving
|
||||
sed -i 's/$slug//g' $list
|
||||
}
|
||||
|
||||
# Create backup of the list
|
||||
cp -n $list $list.bak
|
||||
|
||||
# Run the worker function in parallel
|
||||
export -f run_worker
|
||||
cat $list | parallel -j $(nproc --all) run_worker '{1}' "$list"
|
||||
Reference in New Issue
Block a user