Просмотр исходного кода

feat: add --from and --until arguments to compute for several dates

pull/62/head
Jérôme Deuchnord 5 лет назад
Родитель
Сommit
5fba530ae2
Не найден GPG ключ соответствующий данной подписи Идентификатор GPG ключа: BC6F3C345B7D33B0
1 измененных файлов: 32 добавлений и 11 удалений
  1. +32
    -11
      kosmorrolib/main.py

+ 32
- 11
kosmorrolib/main.py Просмотреть файл

@@ -21,7 +21,7 @@ import locale
import re
import sys

from datetime import date
from datetime import date, timedelta
from termcolor import colored

from kosmorrolib.version import VERSION
@@ -41,7 +41,12 @@ def main():
return 0 if args.special_action() else 1

try:
compute_date = get_date(args.date)
if args.until_date is None:
from_date = get_date(args.date)
until_date = from_date
else:
until_date = get_date(args.until_date)
from_date = get_date(args.from_date) if args.from_date is not None else date.today()
except ValueError as error:
print(colored(error.args[0], color='red', attrs=['bold']))
return -1
@@ -60,15 +65,24 @@ def main():
"coordinate."), 'yellow'))

try:
compute_date = from_date
selected_dumper = output_formats[args.format](None, None, date=None, timezone=args.timezone,
with_colors=args.colors)
ephemeris = EphemeridesComputer(position)
ephemerides = ephemeris.compute_ephemerides(compute_date)

events_list = events.search_events(compute_date)
output = []
while compute_date <= until_date:
ephemerides = ephemeris.compute_ephemerides(compute_date)
events_list = events.search_events(compute_date)

selected_dumper.date = compute_date
selected_dumper.ephemeris = ephemerides
selected_dumper.events = events_list

output.append(selected_dumper.to_string())

compute_date = compute_date + timedelta(days=1)

selected_dumper = output_formats[args.format](ephemerides, events_list,
date=compute_date, timezone=args.timezone,
with_colors=args.colors)
output = selected_dumper.to_string()
except UnavailableFeatureError as error:
print(colored(error.msg, 'red'))
return 2
@@ -81,7 +95,7 @@ def main():
print(_('Could not save the output in "{path}": {error}').format(path=args.output,
error=error.strerror))
elif not selected_dumper.is_file_output_needed():
print(output)
print('\n\n'.join(output))
else:
print(colored(_('Selected output format needs an output file (--output).'), color='red'))
return 1
@@ -150,8 +164,15 @@ def get_args(output_formats: [str]):
help=_("The observer's longitude on Earth"))
parser.add_argument('--date', '-d', type=str, default=today.strftime('%Y-%m-%d'),
help=_('The date for which the ephemerides must be computed (in the YYYY-MM-DD format). '
'Defaults to the current date ({default_date})').format(
default_date=today.strftime('%Y-%m-%d')))
'Defaults to the current date ({default_date}). Ignored if the --from and --to are '
'used.').format(default_date=today.strftime('%Y-%m-%d')))
parser.add_argument('--from', type=str, default=None, dest='from_date',
help=_('The first of the set of dates the computations must be done for. If this argument '
'is set, then the --until argument is mandatory. Defaults to the current date if only '
'the --until argument is set.'))
parser.add_argument('--until', type=str, default=None, dest='until_date',
help=_('The last of the set of dates the computations must be done for. Mandatory '
'if the --from argument is set, then this argument is mandatory.'))
parser.add_argument('--timezone', '-t', type=int, default=0,
help=_('The timezone to display the hours in (e.g. 2 for UTC+2 or -3 for UTC-3).'))
parser.add_argument('--no-colors', dest='colors', action='store_false',


Загрузка…
Отмена
Сохранить