Using Python, How can I create a bot/script that let’s me re-post a subreddit’s post to Lemmy?

Just wanted to do a simple little project to practice my programming skills.

I just need to know the outline/backbone of things I should know to do this project.

  • CaspianXI@lemmy.world
    link
    fedilink
    arrow-up
    12
    ·
    edit-2
    1 year ago

    This should get you started:

    import requests
    
    # Fetch post from Reddit API
    def fetch_reddit_post():
        reddit_url = "https://www.reddit.com/r/{subreddit}/comments/{post_id}.json"
        subreddit = "python"  # Replace with the desired subreddit
        post_id = "abcdef"  # Replace with the desired post ID
    
        url = reddit_url.format(subreddit=subreddit, post_id=post_id)
        headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
    
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            post_data = response.json()
            return post_data
        else:
            print("Failed to fetch post from Reddit API")
            return None
    
    # Post to Lemmy API
    def post_to_lemmy(post_data):
        lemmy_url = "https://lemmy.ml/api/{version}/post"
        version = "v3"  # Replace with the desired Lemmy API version
    
        url = lemmy_url.format(version=version)
        headers = {"Content-Type": "application/json"}
    
        # Extract necessary information from the Reddit post
        title = post_data[0]["data"]["children"][0]["data"]["title"]
        content = post_data[0]["data"]["children"][0]["data"]["selftext"]
    
        # Create payload for Lemmy API
        payload = {
            "title": title,
            "body": content,
            "community_id": "abcdef",  # Replace with the desired Lemmy community ID
            "auth": "your_auth_token"  # Replace with your Lemmy API authentication token
        }
    
        response = requests.post(url, json=payload, headers=headers)
        if response.status_code == 200:
            print("Post successfully created on Lemmy")
        else:
            print("Failed to post to Lemmy API")
    
    # Fetch post from Reddit API
    post_data = fetch_reddit_post()
    
    if post_data:
        # Post to Lemmy API
        post_to_lemmy(post_data)
    
    • Rooki@lemmy.worldM
      link
      fedilink
      arrow-up
      5
      arrow-down
      1
      ·
      1 year ago

      Nice work! A tip for the future you can use spoilers!

      Like this!

      Yeahhhhh

      • Maximilious@kbin.social
        link
        fedilink
        arrow-up
        6
        ·
        1 year ago

        Your spoiler didn’t work when viewing on kbin but his proper use of code framing for this purpose did work on kbin.

        • Rooki@lemmy.worldM
          link
          fedilink
          arrow-up
          3
          ·
          1 year ago

          kbin could use a different markdown compiler. It framed correcty with a code block but it does literally just font and a bit color.