#!/usr/bin/env bash # This file is part of FreeAMO # Copyright (C) 2017 David Hedlund # # FreeAMO is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # FreeAMO is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . cd "$run_path/build/json/search-pages" || exit function search-pages--download() { echo "$debug" echo -e "\\nDownloading search pages:" echo "This file is used to describe the settings that were used to generate the files. build/json/search-pages/ $wget_uri" > "$run_path/build/declared_settings.txt" # indicate that the page page variable are the page files sed -i "s|page=1|page=\$page|g" "$run_path/build/declared_settings.txt" ##################################################### function wget_page { base_uri="https://addons.mozilla.org/api/v3/addons/search/?platform=linux&sort=users&type=extension&app=firefox&appversion=$latest_trisquel_icecat_version&page_size=50&page="; # sort=users. sort=name not working yet - https://github.com/mozilla/addons-server/issues/7600 # page_size=50 -- this is the maximum accepted number, it makes the download much faster: 20 seconds for 10 x page_size=50, 35 seconds for 20 x page_size=25 (default) # page. Add this dynamic variable as the last variable to make it easy to read wget_uri="$base_uri$page"; wget -q "$wget_uri" --no-verbose -O "$page.json" average_daily_users="$(jq ".results[].average_daily_users" "$page.json" | tail -n 1)" } page="1"; wget_page page_count="$(jq ".page_count" "$page.json")"; pv__size="$page_count" source "$run_path/src/main_functions" if [ "$debug" = true ]; then pv__size="2"; else pv__size="$page_count" fi while [ "$page" -lt "$page_count" ]; do ((++page)) if ( [ "$debug" = true ] && [ "$page" -le "3" ] || [ "$debug" = false ] ) && ( [ "$average_daily_users" -ge "$minimum_average_daily_users" ] ); then echo "$page" wget_page else exit 0 fi echo "foo" # Must be here to work with pv done | progress } function search-pages--filter() { echo -e "\\nFilter search pages:" # source "$run_path/src/main_functions" # amo_variables echo " build/index-search-pages.txt has_eula=false nativeMessaging__pass=true minimum_average_daily_users=$minimum_average_daily_users" >> "$run_path/build/declared_settings.txt" pv__size=$(ls . | wc -l) output_file="$output_file_1"; source "$run_path/src/main_functions" rm -f $output_file_1 # Sort by file modification time stamp for the downloaded JSON files find . -type f | sort -n | while read -r file; do filename="$(echo $(basename "$file"))"; entry="0"; # Should not be 1 for id in $(jq ".results[].average_daily_users" "$file"); do source "$run_path/src/main_functions" amo_variables essential_addon if [ "$essential_addon" = true ]; then echo -e "$filename\\t$entry" >> "$output_file_1" fi ((++entry)) done echo "$filename" echo "foo" # Must be here to work with pv done | progress }