Вікіпедія:Проєкт:Комп'ютерні науки/Енциклопедія кібернетики
Зовнішній вигляд
Список статей що містяться в енциклопедії кібернетики.
- Загалом енциклопедія кібернетики містить статей: 1707
- З них є у вікіпедії: 486
28.5%
З них серед джерел мають енциклопедію кібернетики: 41
8.4%
Скрипт для аналізу наповненості
[ред. код]import requests
import re
import pickle
import json
def main():
index = ek_content()
total = 0
in_wiki = 0
have_ek_source = 0
for line in index.splitlines():
match = PAGE_REGEX.match(line)
if match:
total += 1
page = match.group(1)
text = get_page(page)
if text:
in_wiki += 1
if '{{ЕК' in text:
ek_source = 'ya'
have_ek_source += 1
else:
ek_source = 'na'
print(
'| [[%s]]%s||%s|| %s || {{%s}}' % (
page, match.group(2), match.group(3), len(text), ek_source
))
else:
print(line)
print('* Загалом статтей:', total)
print('* Є у вікіпедії:', in_wiki)
print('{{Індикатор прогресу|%s}}' % (in_wiki / total * 100))
print('Серед джерел мають енциклопедію кібернетики:', have_ek_source)
print('{{Індикатор прогресу|%s}}' % (have_ek_source / in_wiki * 100))
PAGE_REGEX = re.compile(r'^\| \[\[(.+?)\]\](.+?)\|\|(.+?)\|\|', re.M)
INDEX_ADDRESS = "Вікіпедія:Проєкт:Комп'ютерні науки/Енциклопедія кібернетики/"
def ek_content():
return (
get_page(INDEX_ADDRESS + 'Том 1') + '\n\n' +
'' # get_page(INDEX_ADDRESS + 'Том 2')
)
def load_cache():
try:
with open('cache.pickle', 'rb') as f:
return pickle.load(f)
except Exception:
return {}
def get_page(name, cache=load_cache()):
if name in cache:
return cache[name]
r = requests.get(
'https://uk.wikipedia.org/w/api.php?action=query&prop=revisions&redirects&rvprop=content&format=json&formatversion=2&titles=%s' % name
)
data = json.loads(r.text)
page = data['query']['pages'][0]
try:
text = page['revisions'][0]['content']
except KeyError:
text = ''
cache[name] = text
save_cache(cache)
return text
def save_cache(cache):
with open('cache.pickle', 'wb') as f:
pickle.dump(cache, f)
if __name__ == '__main__':
main()