Added a checking algorithm V0.000000001 needs still work.

This commit is contained in:
jyamihud 2022-04-11 22:18:21 +03:00
parent a1bbbcb173
commit 2cd1122eb5
4 changed files with 150 additions and 3 deletions

View file

@ -2,9 +2,9 @@
"comment":"Browser which markets itself over good privacy and addblocker by default.", "comment":"Browser which markets itself over good privacy and addblocker by default.",
"links":{"website":"https://brave.com/", "links":{"website":"https://brave.com/",
"wikipedia":"https://en.wikipedia.org/wiki/Brave_(web_browser)", "wikipedia":"https://en.wikipedia.org/wiki/Brave_(web_browser)",
"git":"https://github.com/brave/brave-browser", "git":"https://github.om/brave/brave-browser",
"icon":"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fcryptoradar.org%2Fwp-content%2Fuploads%2F2019%2F08%2FBrave-logo.png&f=1&nofb=1"}, "icon":"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fcryptoradar.org%2Fwp-content%2Fuploads%2F2019%2F08%2FBrave-logo.png&f=1&nofb=1"},
"licenses":["MPL-2.0"], "licenses":["MPL-20"],
"platforms":["Android", "platforms":["Android",
"Windows", "Windows",
"MacOS", "MacOS",

108
check.py Normal file
View file

@ -0,0 +1,108 @@
# THIS SOFTWARE IS A PART OF FREE COMPETITOR PROJECT
# THE FOLLOWING SOURCE CODE I UNDER THE GNU
# AGPL LICENSE V3 OR ANY LATER VERSION.
# This project is not for simple users, but for
# web-masters and a like, so we are counting on
# your ability to set it up and running.
import os
import json
# TODO: Make a pull-request before starting
print("* Checking...")
# Check number one, list all missing software
try:
with open("data/missing.json") as json_file:
missing = json.load(json_file)
except:
missing = {}
if missing:
print()
print("* Missing Software found! Please copy-paste the next")
print(" section into our Missing Software Mega-Thread at: ")
print(" https://notabug.org/jyamihud/FreeCompetitors/issues/25")
print("===========================================================")
print()
# TODO: Make it check if the items in the missing.json already added
# in the last pull-request, or manually by the operator. If they
# are found. Remove them from the file. And from the list.
for i in missing:
name = i[0].upper()+i[1:].lower()
print(' - [ ] '+name+' *Searched at least '+str(missing[i]) +" times.*")
if missing:
print()
print("===========================================================")
print()
# Part two. Checking for healthy links
import urllib.request
import urllib.error
error = False
def iferror():
if not error:
print()
print(" * Some files in 'apps' folder have problems! Please")
print(" copy-paste the next section into our Problems with")
print(" Software Mega-Thread at: ")
print(" https://notabug.org/jyamihud/FreeCompetitors/issues/24")
print("===========================================================")
print()
return True
for f in os.listdir("apps"):
if f.endswith(".json"):
# Trying to read the file
try:
with open("apps/"+f) as json_file:
app = json.load(json_file)
except Exception as e:
error = iferror()
print(" - [ ] `apps/"+f+"` fails to load. Says: `"+str(e)+"`")
continue
# Links
for link in app.get("links",[]):
# TODO: Make the tester of the links closer to the kind
# of response that you will get in the web-browser.
try:
urllib.request.urlopen(app.get("links",[])[link])
except Exception as e:
if "403" not in str(e):
error = iferror()
print(" - [ ] `apps/"+f+"` "+link+" link doesn't seem to work.")
# Licenses
lices = app.get("licenses", [])
try:
with open("data/licenses.json") as json_file:
ll = json.load(json_file)["licenses"]
except:
ll = {}
for lic in lices:
found = False
for l in ll:
if lic in [l.get("licenseId",""),l.get("name","")]:
found = True
if not found:
error = iferror()
print(" - [ ] `apps/"+f+"` License '"+lic+"' is unknown.")
print("===========================================================")
print()
print("* Check is finished!")
print()

View file

@ -9,6 +9,7 @@
import os import os
from modules import search from modules import search
def html(page, json): def html(page, json):
# This function adds a rendering of the json into the page # This function adds a rendering of the json into the page

View file

@ -48,6 +48,44 @@ def search_app(name):
if closest: if closest:
return closest, match return closest, match
# If there was no match for the program by name
# we are saving the name into a special file so
# the operator of the website could see that there
# was a name that didn't have a file for it.
# We open the 'missing.json' file
try:
with open("data/missing.json") as json_file:
missing = json.load(json_file)
except:
missing = {}
# There could be a problem with writing so we look into it
# for a very close match. Up to about 60%. No more.
match_missing = 0
closest_missing = ""
for i in missing:
m = similar(i.lower(), name.lower())
if m > match_missing and m > 0.6:
closest_missing = i
match_missing = 0
write_to = closest_missing
if not write_to:
write_to = name
# Now we add one number to it's mention
if write_to not in missing:
missing[write_to] = 1
else:
missing[write_to] += 1
# Now we save the file
with open("data/missing.json", 'w') as f:
json.dump(missing, f, indent=4, sort_keys=True)
match = 0 match = 0
closest = {} closest = {}
@ -119,5 +157,5 @@ def is_free(app):
if l in [al.get("licenseId",""),al.get("name","")]\ if l in [al.get("licenseId",""),al.get("name","")]\
and al.get("isFsfLibre", False): and al.get("isFsfLibre", False):
return True return True
print("License Error! "+app.get("names",[])[0], "Check with data/licenses.json 'licenseId'") #print("License Error! "+app.get("names",[])[0], "Check with data/licenses.json 'licenseId'")
return False return False