48 lines
1.0 KiB
Python
48 lines
1.0 KiB
Python
|
# 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)
|