source: scripts/xml-stats/stats.py@ 3000

Last change on this file since 3000 was 3000, checked in by Александър Шопов, 10 years ago

Статистика за преводите с Питон, трябва да се форматира

  • Property svn:executable set to *
File size: 2.5 KB
RevLine 
[3000]1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3
4from __future__ import unicode_literals, print_function
5
6import urllib2 as u2
7import xml.etree.ElementTree as ET
8import collections as col
9import sys
10
11
12def get_versions():
13 versions_url = 'https://l10n.gnome.org/releases/xml'
14 versions_data = u2.urlopen(versions_url)
15
16 versions_tree = ET.parse(versions_data)
17 versions_root = versions_tree.getroot()
18 versions_xpath = './object/field[@name="name"]'
19 version_elements = versions_root.findall(versions_xpath)
20 versions = [e.text for e in version_elements]
21 return versions
22
23def get_stats(version):
24 stats_url = 'https://l10n.gnome.org/languages/bg/{}/xml'.format(version)
25 stats_data = u2.urlopen(stats_url)
26 stats_tree = ET.parse(stats_data)
27 stats_root = stats_tree.getroot()
28 stats_xpath = './category/module'
29 stats_elements = stats_root.findall(stats_xpath)
30 results = []
31 for stats_el in stats_elements:
32 stat_id = stats_el.attrib['id']
33 stat_branch = stats_el.attrib['branch']
34 domains = stats_el.findall('./domain')
35 for dom in domains:
36 dom_id = dom.attrib['id']
37 if dom_id == 'po':
38 name = stat_id
39 elif dom_id.startswith('po-'):
40 name = stat_id + ' • ' + dom_id[3:]
41 else:
42 name = stat_id + ' • ' + dom_id
43 translated = int(dom.findtext('./translated'))
44 fuzzy = int(dom.findtext('./fuzzy'))
45 untranslated = int(dom.findtext('./untranslated'))
46 work = fuzzy + untranslated
47 s = {'name': name,
48 'branch': stat_branch,
49 'translated': translated,
50 'fuzzy': fuzzy,
51 'untranslated': untranslated,
52 'work': work}
53 results.append(s)
54 return results
55
56def max_lengths(stats):
57 result = {'name': 0,
58 'branch': 0,
59 'translated': 0,
60 'fuzzy': 0,
61 'untranslated': 0,
62 'work': 0}
63 for s in stats:
64 print(s)
65 result = {k:max(result[k], len(str(s[k]))) for k,v in result.items()}
66
67 result['count']=int(str(len(stats)))
68
69def main():
70 #a = sys.args
71 #versions = get_versions()
72 #if not len(a) == 1 or a[0] not in versions:
73 # print('Give single argument, one of: {} '.format(versions))
74 # print('Will use {}'.format(versions[0]))
75 stats = get_stats('gnome-3-18')
76 print(stats)
77 print(max_lengths(stats))
78
79
80if __name__ == '__main__':
81 main()
82
83
84
85
Note: See TracBrowser for help on using the repository browser.