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)
|