1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
import copy, sys
from bs4 import BeautifulSoup as bs4
from pyranking.fetch import fetch_ranking
ranking_date = sys.argv[3]
subtitle = 'notowanie %s (%s), stan na %s' % (
sys.argv[1], sys.argv[2], '.'.join(ranking_date.split('-')[::-1])
)
ranking = fetch_ranking(ranking_date)
old_ranking = fetch_ranking(sys.argv[4], True) if len(sys.argv) > 4 else {}
for row in ranking:
if row['pid'] in old_ranking:
row['place-change'] = old_ranking[row['pid']]['place'] - row['place']
row['place-change-class'] = 'success' if row['place-change'] > 0 else 'danger'
row['place-change'] = '%+d' % (row['place-change'])
if row['place-change'] == '+0':
row['place-change'] = '='
row['place-change-class'] = 'default'
for category in ['gender', 'age', 'region']:
if row[category] == old_ranking[row['pid']][category]:
row[category + '-change'] = old_ranking[row['pid']][category + '-place'] - row[category + '-place']
row[category + '-change-class'] = 'success' if row[category + '-change'] > 0 else 'danger'
row[category + '-change'] = '%+d' % (row[category + '-change'])
if row[category + '-change'] == '+0':
row[category + '-change'] = '='
row[category + '-change-class'] = 'default'
table = bs4(file('templates/ranking.html'), 'lxml')
table_body = table.select('table.data-table tbody')[0]
table_row = table_body.select('tr')[0].extract()
table.select('.page-header h2 small')[0].string = subtitle
for row in ranking:
new_row = copy.copy(table_row)
new_row.select('td.pid')[0].string = str(row['pid'])
new_row.select('td.pidlink a')[0]['href'] = 'https://msc.com.pl/cezar/?p=21&pid=%d' % (row['pid'])
new_row.select('td.name')[0].string = row['player']
new_row.select('td.club')[0].string = row['club']
for category in ['gender', 'age', 'region']:
new_row.select('td.' + category)[0].string = row[category]
new_row.select('td.' + category + '-place .rank')[0].string = str(row[category + '-place'])
badge = new_row.select('td.' + category + '-place .change')[0]
badge.string = row[category + '-change']
badge['class'] = badge['class'] + ['label-' + row[category + '-change-class']]
score_cell = new_row.select('td.ranking span')[0]
score_cell['title'] = str(row['score'])
score_cell.string = '%.2f' % (row['score'])
new_row.select('td.place .rank')[0].string = str(row['place'])
badge = new_row.select('td.place .change')[0]
badge.string = row['place-change']
badge['class'] = badge['class'] + ['label-' + row['place-change-class']]
for category in ['gender', 'age', 'region']:
if row[category + '-place'] == 1:
new_row['class'] = new_row.get('class', []) + ['info']
table_body.append(new_row)
print table.prettify().encode('utf-8')
|