File: release-notes.py

package info (click to toggle)
python-mitogen 0.3.25~a2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 6,220 kB
  • sloc: python: 21,989; sh: 183; makefile: 74; perl: 19; ansic: 18
file content (47 lines) | stat: -rw-r--r-- 1,051 bytes parent folder | download | duplicates (2)
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
# coding=UTF-8

# Generate the fragment used to make email release announcements
# usage: release-notes.py 0.2.6

import sys
import urllib
import lxml.html

import subprocess


response = urllib.urlopen('https://mitogen.networkgenomics.com/changelog.html')
tree = lxml.html.parse(response)

prefix = 'v' + sys.argv[1].replace('.', '-')

for elem in tree.getroot().cssselect('div.section[id]'):
    if elem.attrib['id'].startswith(prefix):
        break
else:
    print('cant find')



for child in tree.getroot().cssselect('body > *'):
    child.getparent().remove(child)

body, = tree.getroot().cssselect('body')
body.append(elem)

proc = subprocess.Popen(
    args=['w3m', '-T', 'text/html', '-dump', '-cols', '72'],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
)

stdout, _ = proc.communicate(input=(lxml.html.tostring(tree)))
stdout = stdout.decode('UTF-8')
stdout = stdout.translate({
    ord(u'¶'): None,
    ord(u'•'): ord(u'*'),
    ord(u'’'): ord(u"'"),
    ord(u'“'): ord(u'"'),
    ord(u'”'): ord(u'"'),
})
print(stdout)