118 lines
3.1 KiB
Python
118 lines
3.1 KiB
Python
|
#!/usr/bin/env python3
|
||
|
# -*- coding: utf-8 -*-
|
||
|
# Copyright © 2023 Schimon Jehudah
|
||
|
# This program is free software: you can redistribute it and/or modify
|
||
|
# it under the terms of the MIT License.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful,
|
||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
# MIT License for more details.
|
||
|
#
|
||
|
# You should have received a copy of the MIT License along with
|
||
|
# this program. If not, see <https://opensource.org/license/mit/>
|
||
|
#
|
||
|
# Slixfeed - RSS news bot for XMPP
|
||
|
#
|
||
|
# SPDX-FileCopyrightText: 2023 Schimon Jehudah
|
||
|
#
|
||
|
# SPDX-License-Identifier: MIT
|
||
|
|
||
|
from slixfeed.__main__ import Jabber
|
||
|
from slixfeed.xmpp.client import Slixfeed
|
||
|
import slixfeed.file as filehandler
|
||
|
from argparse import ArgumentParser
|
||
|
import configparser
|
||
|
# import filehandler
|
||
|
# from filehandler import get_default_confdir
|
||
|
from getpass import getpass
|
||
|
import logging
|
||
|
import os
|
||
|
import sys
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
|
||
|
# Setup the command line arguments.
|
||
|
parser = ArgumentParser(description=Slixfeed.__doc__)
|
||
|
|
||
|
# Output verbosity options.
|
||
|
parser.add_argument(
|
||
|
"-q",
|
||
|
"--quiet",
|
||
|
help="set logging to ERROR",
|
||
|
action="store_const",
|
||
|
dest="loglevel",
|
||
|
const=logging.ERROR,
|
||
|
default=logging.INFO
|
||
|
)
|
||
|
parser.add_argument(
|
||
|
"-d",
|
||
|
"--debug",
|
||
|
help="set logging to DEBUG",
|
||
|
action="store_const",
|
||
|
dest="loglevel",
|
||
|
const=logging.DEBUG,
|
||
|
default=logging.INFO
|
||
|
)
|
||
|
|
||
|
# JID and password options.
|
||
|
parser.add_argument(
|
||
|
"-j",
|
||
|
"--jid",
|
||
|
dest="jid",
|
||
|
help="Jabber ID"
|
||
|
)
|
||
|
parser.add_argument(
|
||
|
"-p",
|
||
|
"--password",
|
||
|
dest="password",
|
||
|
help="Password of JID"
|
||
|
)
|
||
|
parser.add_argument(
|
||
|
"-n",
|
||
|
"--nickname",
|
||
|
dest="nickname",
|
||
|
help="Display name"
|
||
|
)
|
||
|
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
# Setup logging.
|
||
|
logging.basicConfig(
|
||
|
level=args.loglevel,
|
||
|
format='%(levelname)-8s %(message)s'
|
||
|
)
|
||
|
|
||
|
# Try configuration file
|
||
|
config = configparser.RawConfigParser()
|
||
|
config_dir = filehandler.get_default_confdir()
|
||
|
if not os.path.isdir(config_dir):
|
||
|
os.mkdir(config_dir)
|
||
|
# TODO Copy file from /etc/slixfeed/ or /usr/share/slixfeed/
|
||
|
config_file = os.path.join(config_dir, r"accounts.ini")
|
||
|
config.read(config_file)
|
||
|
if config.has_section("XMPP"):
|
||
|
xmpp = config["XMPP"]
|
||
|
nickname = xmpp["nickname"]
|
||
|
username = xmpp["username"]
|
||
|
password = xmpp["password"]
|
||
|
|
||
|
# Use arguments if were given
|
||
|
if args.jid:
|
||
|
username = args.jid
|
||
|
if args.password:
|
||
|
password = args.password
|
||
|
if args.nickname:
|
||
|
nickname = args.nickname
|
||
|
|
||
|
# Prompt for credentials if none were given
|
||
|
if username is None:
|
||
|
username = input("Username: ")
|
||
|
if password is None:
|
||
|
password = getpass("Password: ")
|
||
|
if nickname is None:
|
||
|
nickname = input("Nickname: ")
|
||
|
|
||
|
Jabber(username, password, nickname)
|
||
|
sys.exit(0)
|