47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import argparse
|
|
import logging
|
|
import time
|
|
from atproto import Client
|
|
|
|
# --- Logging ---
|
|
LOG_PATH = "rss2bsky_test.log"
|
|
logging.basicConfig(
|
|
format="%(asctime)s %(message)s",
|
|
filename=LOG_PATH,
|
|
encoding="utf-8",
|
|
level=logging.INFO,
|
|
)
|
|
|
|
def main():
|
|
# --- Parse command-line arguments ---
|
|
parser = argparse.ArgumentParser(description="Post RSS to Bluesky.")
|
|
parser.add_argument("rss_feed", help="RSS feed URL")
|
|
parser.add_argument("bsky_handle", help="Bluesky handle")
|
|
parser.add_argument("bsky_username", help="Bluesky username")
|
|
parser.add_argument("bsky_app_password", help="Bluesky app password")
|
|
parser.add_argument("--service", default="https://bsky.social", help="Bluesky server URL (default: https://bsky.social)")
|
|
|
|
args = parser.parse_args()
|
|
bsky_username = args.bsky_username
|
|
bsky_password = args.bsky_app_password
|
|
service_url = args.service
|
|
|
|
# --- Login ---
|
|
# SOLUCIÓ: Passem el base_url directament al constructor del Client
|
|
client = Client(base_url=service_url)
|
|
|
|
backoff = 60
|
|
while True:
|
|
try:
|
|
logging.info(f"Attempting login to server: {service_url} with user: {bsky_username}")
|
|
client.login(bsky_username, bsky_password)
|
|
logging.info(f"Login successful for user: {bsky_username}")
|
|
break
|
|
except Exception as e:
|
|
logging.exception("Login exception")
|
|
time.sleep(backoff)
|
|
backoff = min(backoff + 60, 600)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|