Вікіпедія:Проєкт:Комп'ютерні науки/Енциклопедія кібернетики

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Список статей що містяться в енциклопедії кібернетики.

  • Загалом енциклопедія кібернетики містить статей: 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()