-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplanet.py
More file actions
executable file
·105 lines (84 loc) · 2.83 KB
/
Copy pathplanet.py
File metadata and controls
executable file
·105 lines (84 loc) · 2.83 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/env python
"""The Planet aggregator.
A flexible and easy-to-use aggregator for generating websites.
Visit http://www.planetplanet.org/ for more information and to download
the latest version.
Requires Python 2.1, recommends 2.3.
"""
__authors__ = [ "Scott James Remnant <scott@netsplit.com>",
"Jeff Waugh <jdub@perkypants.org>" ]
__license__ = "Python"
import os
import sys
def _print_help():
"""Print the supported CLI usage and exit."""
print("Usage: planet.py [options] [CONFIGFILE]")
print()
print("Options:")
print(" -v, --verbose DEBUG level logging during update")
print(" -o, --offline Update the Planet from the cache only")
print(" -h, --help Display this help message and exit")
print(" -n, --only-if-new Only spider new feeds")
print(" -x, --expunge Expunge old entries from cache")
print(" -d, --debug-splice Write debug.atom before output generation")
def main(argv=None):
"""Run the maintained planet CLI."""
if argv is None:
argv = sys.argv[1:]
config_file = []
offline = 0
verbose = 0
only_if_new = 0
expunge = 0
debug_splice = 0
for arg in argv:
if arg == "-h" or arg == "--help":
_print_help()
return 0
elif arg == "-v" or arg == "--verbose":
verbose = 1
elif arg == "-o" or arg == "--offline":
offline = 1
elif arg == "-n" or arg == "--only-if-new":
only_if_new = 1
elif arg == "-x" or arg == "--expunge":
expunge = 1
elif arg == "-d" or arg == "--debug-splice":
debug_splice = 1
elif arg.startswith("-"):
print("Unknown option:", arg, file=sys.stderr)
return 1
else:
config_file.append(arg)
from src import config
config.load(config_file or 'config.ini')
if verbose:
import src as planet
planet.getLogger('DEBUG',config.log_format())
if not offline:
from src import spider
try:
spider.spiderPlanet(only_if_new=only_if_new)
except Exception as e:
print(e)
from src import splice
doc = splice.splice()
if debug_splice:
from src import logger
logger.info('writing debug.atom')
debug=open('debug.atom','w')
try:
from lxml import etree
from io import StringIO
tree = etree.tostring(etree.parse(StringIO(doc.toxml())))
debug.write(etree.tostring(tree, pretty_print=True))
except:
debug.write(doc.toprettyxml(indent=' ', encoding='utf-8'))
debug.close
splice.apply(doc.toxml('utf-8'))
if expunge:
from src import expunge
expunge.expungeCache()
return 0
if __name__ == "__main__":
raise SystemExit(main())