this post was submitted on 10 Jul 2023
16 points (69.0% liked)

No Stupid Questions

35893 readers
1284 users here now

No such thing. Ask away!

!nostupidquestions is a community dedicated to being helpful and answering each others' questions on various topics.

The rules for posting and commenting, besides the rules defined here for lemmy.world, are as follows:

Rules (interactive)


Rule 1- All posts must be legitimate questions. All post titles must include a question.

All posts must be legitimate questions, and all post titles must include a question. Questions that are joke or trolling questions, memes, song lyrics as title, etc. are not allowed here. See Rule 6 for all exceptions.



Rule 2- Your question subject cannot be illegal or NSFW material.

Your question subject cannot be illegal or NSFW material. You will be warned first, banned second.



Rule 3- Do not seek mental, medical and professional help here.

Do not seek mental, medical and professional help here. Breaking this rule will not get you or your post removed, but it will put you at risk, and possibly in danger.



Rule 4- No self promotion or upvote-farming of any kind.

That's it.



Rule 5- No baiting or sealioning or promoting an agenda.

Questions which, instead of being of an innocuous nature, are specifically intended (based on reports and in the opinion of our crack moderation team) to bait users into ideological wars on charged political topics will be removed and the authors warned - or banned - depending on severity.



Rule 6- Regarding META posts and joke questions.

Provided it is about the community itself, you may post non-question posts using the [META] tag on your post title.

On fridays, you are allowed to post meme and troll questions, on the condition that it's in text format only, and conforms with our other rules. These posts MUST include the [NSQ Friday] tag in their title.

If you post a serious question on friday and are looking only for legitimate answers, then please include the [Serious] tag on your post. Irrelevant replies will then be removed by moderators.



Rule 7- You can't intentionally annoy, mock, or harass other members.

If you intentionally annoy, mock, harass, or discriminate against any individual member, you will be removed.

Likewise, if you are a member, sympathiser or a resemblant of a movement that is known to largely hate, mock, discriminate against, and/or want to take lives of a group of people, and you were provably vocal about your hate, then you will be banned on sight.



Rule 8- All comments should try to stay relevant to their parent content.



Rule 9- Reposts from other platforms are not allowed.

Let everyone have their own content.



Rule 10- Majority of bots aren't allowed to participate here.



Credits

Our breathtaking icon was bestowed upon us by @Cevilia!

The greatest banner of all time: by @TheOneWithTheHair!

founded 1 year ago
MODERATORS
 

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.

top 39 comments
sorted by: hot top controversial new old
[–] [email protected] 13 points 1 year ago* (last edited 1 year ago) (1 children)

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)
[–] [email protected] 4 points 1 year ago (2 children)

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

Like this!Yeahhhhh

[–] [email protected] 6 points 1 year ago (1 children)

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

[–] [email protected] 3 points 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.

[–] [email protected] 1 points 1 year ago (1 children)

I don't really understand how spoilers are relevant here.

[–] [email protected] 3 points 1 year ago (1 children)

Let me explain:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Accumsan tortor posuere ac ut. Aliquet nec ullamcorper sit amet risus nullam eget felis eget. Sagittis vitae et leo duis ut diam quam nulla. Sed egestas egestas fringilla phasellus faucibus. Sapien faucibus et molestie ac feugiat sed lectus vestibulum. Habitant morbi tristique senectus et. Massa enim nec dui nunc mattis. Urna porttitor rhoncus dolor purus non enim praesent. Volutpat ac tincidunt vitae semper. Lectus magna fringilla urna porttitor rhoncus dolor. Tellus id interdum velit laoreet. Varius morbi enim nunc faucibus. Feugiat nibh sed pulvinar proin gravida hendrerit lectus a. Lacus luctus accumsan tortor posuere ac ut. Vitae justo eget magna fermentum iaculis eu non.

Ac ut consequat semper viverra nam. Id venenatis a condimentum vitae sapien pellentesque habitant morbi tristique. Enim nulla aliquet porttitor lacus luctus accumsan. Fermentum leo vel orci porta non pulvinar neque laoreet suspendisse. Tellus orci ac auctor augue mauris augue neque. Laoreet id donec ultrices tincidunt arcu non sodales neque. Ac tincidunt vitae semper quis lectus. Semper eget duis at tellus at urna condimentum mattis pellentesque. Est placerat in egestas erat imperdiet sed. Arcu bibendum at varius vel.

Enim lobortis scelerisque fermentum dui faucibus in ornare. Malesuada fames ac turpis egestas maecenas pharetra convallis posuere morbi. Morbi quis commodo odio aenean sed adipiscing diam donec adipiscing. Ornare arcu odio ut sem nulla pharetra diam sit. Ut venenatis tellus in metus vulputate eu. Purus gravida quis blandit turpis cursus in hac habitasse platea. Placerat vestibulum lectus mauris ultrices eros in. Vitae nunc sed velit dignissim. Nisi vitae suscipit tellus mauris a. Eu feugiat pretium nibh ipsum consequat nisl. Congue quisque egestas diam in. Dui sapien eget mi proin. Maecenas pharetra convallis posuere morbi leo. Ultrices dui sapien eget mi proin sed. Enim eu turpis egestas pretium aenean pharetra magna ac.

Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Eu scelerisque felis imperdiet proin fermentum leo vel. Aliquam ultrices sagittis orci a scelerisque. Eu facilisis sed odio morbi. Purus in massa tempor nec. Interdum posuere lorem ipsum dolor sit amet consectetur adipiscing elit. Ac odio tempor orci dapibus ultrices. Scelerisque varius morbi enim nunc faucibus a pellentesque sit amet. Bibendum ut tristique et egestas quis ipsum suspendisse ultrices gravida. Integer vitae justo eget magna fermentum iaculis eu non diam.

Vitae semper quis lectus nulla at volutpat diam ut. Mi sit amet mauris commodo quis. Pharetra vel turpis nunc eget lorem dolor sed. Egestas maecenas pharetra convallis posuere morbi leo urna molestie at. Enim sit amet venenatis urna cursus eget. Ornare lectus sit amet est placerat in egestas erat imperdiet. Bibendum at varius vel pharetra vel turpis nunc eget. Eget velit aliquet sagittis id consectetur purus ut faucibus pulvinar. Commodo quis imperdiet massa tincidunt nunc pulvinar sapien et. Vel risus commodo viverra maecenas accumsan lacus vel facilisis volutpat.

Fermentum posuere urna nec tincidunt praesent. Neque ornare aenean euismod elementum. Arcu dictum varius duis at consectetur lorem donec. Proin nibh nisl condimentum id venenatis a condimentum. Consectetur a erat nam at lectus. Risus commodo viverra maecenas accumsan lacus vel facilisis. At tempor commodo ullamcorper a lacus vestibulum sed arcu. Neque ornare aenean euismod elementum. Interdum velit euismod in pellentesque massa placerat duis ultricies lacus. Sed sed risus pretium quam vulputate. Lectus nulla at volutpat diam ut venenatis tellus in. Lectus quam id leo in vitae. A scelerisque purus semper eget. Scelerisque purus semper eget duis at tellus. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Egestas egestas fringilla phasellus faucibus scelerisque eleifend. Sed vulputate mi sit amet mauris commodo quis imperdiet. Mauris augue neque gravida in fermentum et. Pellentesque diam volutpat commodo sed egestas egestas. Feugiat in fermentum posuere urna nec tincidunt.

Dui id ornare arcu odio ut. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae nunc. Nulla aliquet porttitor lacus luctus. Morbi tristique senectus et netus et malesuada fames ac turpis. Donec ac odio tempor orci dapibus ultrices in iaculis nunc. Nibh praesent tristique magna sit amet purus gravida quis. Semper auctor neque vitae tempus quam. Nascetur ridiculus mus mauris vitae ultricies leo integer. Sed enim ut sem viverra aliquet eget sit amet. Sodales neque sodales ut etiam sit.

Facilisis mauris sit amet massa vitae tortor condimentum. In aliquam sem fringilla ut morbi tincidunt augue interdum velit. Bibendum arcu vitae elementum curabitur vitae nunc sed velit dignissim. Pulvinar etiam non quam lacus suspendisse faucibus. Massa massa ultricies mi quis hendrerit. Cras fermentum odio eu feugiat pretium nibh ipsum consequat. Gravida quis blandit turpis cursus in. Diam volutpat commodo sed egestas egestas fringilla phasellus. Massa sed elementum tempus egestas sed. Eu facilisis sed odio morbi quis. Ut tellus elementum sagittis vitae et leo. Ullamcorper malesuada proin libero nunc consequat interdum varius sit amet. Et magnis dis parturient montes nascetur ridiculus. Eleifend mi in nulla posuere sollicitudin aliquam.

Odio morbi quis commodo odio aenean sed adipiscing. Mollis aliquam ut porttitor leo a diam sollicitudin. Eu volutpat odio facilisis mauris sit amet massa vitae tortor. Adipiscing commodo elit at imperdiet dui accumsan sit. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Adipiscing elit pellentesque habitant morbi tristique senectus et netus. Non tellus orci ac auctor augue mauris augue. Amet nulla facilisi morbi tempus iaculis urna id volutpat. Facilisis magna etiam tempor orci eu lobortis. Magna eget est lorem ipsum dolor sit amet consectetur. Rutrum tellus pellentesque eu tincidunt tortor aliquam nulla. Est lorem ipsum dolor sit amet consectetur. Erat pellentesque adipiscing commodo elit at. Phasellus faucibus scelerisque eleifend donec pretium vulputate sapien. Urna et pharetra pharetra massa massa. Amet est placerat in egestas erat imperdiet sed euismod nisi. Sed id semper risus in hendrerit gravida rutrum. Velit dignissim sodales ut eu sem integer vitae. Aliquam nulla facilisi cras fermentum odio eu feugiat.

Ipsum dolor sit amet consectetur adipiscing elit duis tristique sollicitudin. Vel orci porta non pulvinar neque laoreet suspendisse. Erat pellentesque adipiscing commodo elit at imperdiet. Sed viverra ipsum nunc aliquet bibendum. At elementum eu facilisis sed odio morbi. Metus dictum at tempor commodo ullamcorper a. Rhoncus urna neque viverra justo nec ultrices. Ut faucibus pulvinar elementum integer enim neque volutpat. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Posuere sollicitudin aliquam ultrices sagittis orci a. Eu facilisis sed odio morbi quis commodo odio aenean. Amet nulla facilisi morbi tempus iaculis urna id. In ante metus dictum at tempor commodo ullamcorper. Curabitur vitae nunc sed velit dignissim. Vel fringilla est ullamcorper eget nulla facilisi.

Est sit amet facilisis magna etiam tempor orci eu lobortis. Arcu felis bibendum ut tristique. Commodo viverra maecenas accumsan lacus vel facilisis volutpat. Arcu odio ut sem nulla pharetra diam. Pretium fusce id velit ut. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque. Nulla facilisi nullam vehicula ipsum. Pellentesque diam volutpat commodo sed egestas egestas. Id interdum velit laoreet id donec ultrices. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Morbi quis commodo odio aenean sed adipiscing diam. In mollis nunc sed id semper risus in. Eros in cursus turpis massa tincidunt. Eu volutpat odio facilisis mauris. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Lectus mauris ultrices eros in.

Auctor urna nunc id cursus metus aliquam eleifend mi in. Mi tempus imperdiet nulla malesuada pellentesque elit eget gravida. Molestie a iaculis at erat. Ut ornare lectus sit amet est placerat in egestas erat. Pretium fusce id velit ut tortor pretium viverra suspendisse potenti. Quisque egestas diam in arcu cursus euismod. Faucibus a pellentesque sit amet porttitor eget dolor morbi non. Non pulvinar neque laoreet suspendisse interdum consectetur libero id. Massa tempor nec feugiat nisl. Velit ut tortor pretium viverra suspendisse. Enim lobortis scelerisque fermentum dui faucibus in ornare. Faucibus interdum posuere lorem ipsum dolor sit amet. Faucibus in ornare quam viverra orci. Lorem mollis aliquam ut porttitor leo a diam sollicitudin.

Risus nullam eget felis eget nunc lobortis mattis. Faucibus interdum posuere lorem ipsum dolor sit amet consectetur adipiscing. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium vulputate. Sit amet purus gravida quis blandit. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc. In dictum non consectetur a erat nam at lectus urna. Etiam dignissim diam quis enim lobortis scelerisque. Feugiat in ante metus dictum at. At quis risus sed vulputate odio. Diam vulputate ut pharetra sit amet aliquam. Bibendum arcu vitae elementum curabitur vitae. Viverra justo nec ultrices dui.

So after you read this forced you probably know not EVERYBODY wants to scroll like 15 seconds just to see the next comment!

Thank You!

[–] [email protected] 2 points 1 year ago (1 children)

Thank you for explaining. 2 points of consideration:

  1. Next time explain why something would be useful instead of just stating that they are. We can't read your mind.
  2. Your spoiler doesn't work on my app so it just looks like regular text to me. Hence more confusion.

Regards, Yearly1845

[–] [email protected] 1 points 1 year ago

Yeah thats the app problem. Thank you!

[–] [email protected] 4 points 1 year ago

PRAW is the Python wrapper for Reddit's API, and searching github for "lemmy api python" revealed some results, so you'd use one API to download a post, and the other to upload it.

There's existing bots that do this though, and they all seem to just fill feeds with indiscriminate, un-replied to, spam

[–] [email protected] 3 points 1 year ago (6 children)

Why does everybody wants to use python 😔

[–] [email protected] 7 points 1 year ago (1 children)

It's easy to learn, has many packages, one of the most well known languages

[–] [email protected] -3 points 1 year ago* (last edited 1 year ago) (1 children)

easy to learn yeah ig. But for anything more than a simple 1 file organized script is not (easily) doable. I dont even want to start with the indentations. Yeah many packages :) But why? Because like half of vanilla stuff from other languages cant be done without it. Most known? Most started to learn language. Those "script" kiddies count in there too. I have to work with it everyday and i dont know how such bs could ever been created from a sane person.

Most of it is personal opinion and will spark like html is not a programming language some heated discussions here.

[–] [email protected] 2 points 1 year ago (1 children)

A project that is seperated in different files is as difficult as in C(++), Java or Rust. Regarding the itendation I agree, but that's personal preference. What 'vanilla' stuff can't you do without libs?

[–] [email protected] 0 points 1 year ago* (last edited 1 year ago) (2 children)

Typing, Interfaces, enums, abstract classes ( i didnt meant 3rd party libs ). I dont statet those difficult but stable programming languages. Java is simple and is organized. the default JSON encoder is not good implemented too. As it is f*cked when there is not a build in type like date, dateTime etc. as date and datetimes are still build in types.

[–] [email protected] 3 points 1 year ago* (last edited 1 year ago)

What can you do in C without including stdio.h? Almost nothing. Far less than with python. Ignoring built in libraries is no fair criticism imo. Also all that you listed can be done without importing anything, just with oop (yes, in a turing complete language you can already anything but I meant it is not even that complicated to implement these things with basic python)

I think it is an mediocre language if you're into compiter science or dev, but for scientific programming and simple tasks it is great. So for some it is the best beginner programming language.

[–] [email protected] 0 points 1 year ago* (last edited 1 year ago) (1 children)

Python 3 has all those things built-in, and datetime has been there forever:

import abc
Import typing
Import enum
Import datetime

What's wrong with the json encoder?

[–] [email protected] 0 points 1 year ago

yeah i meant internal libs.

Json encoder does shit with datetime objects.

[–] [email protected] 5 points 1 year ago (1 children)

I can't speak for everybody, but I found python easier to understand than the other language I tried (C++).

Also, python has Pandas which was really good because my initial track was related to data scientist.

[–] [email protected] 2 points 1 year ago

Yeah c++ is a bit difficult.

[–] [email protected] 5 points 1 year ago (1 children)

What language would you suggest for scripting like this?

[–] [email protected] -2 points 1 year ago (1 children)
[–] [email protected] 2 points 1 year ago (1 children)

Really? You hate python but recommend typescript? All the problems you cited about python are there, too!

Garbage stack traces that go through a hundred lines of node modules.

Dependency hell. Peer deps. Npm or yarn? An ecosystem where packages have a half life of weeks. A new major version of node comes out literally every six months. SIX MONTHS. MAJOR VERSION CHANGE. And you complained about python2 vs 3!

Typescript also has a garbage debugger compared to python.

There's also just too many ways of doing things because the standard lib is thin. How many ways to loop over an object are there? For in, for each, object keys, lodash, underscore, object.entries, what am I forgetting?

Newer versions have stuff in the standard lib like Array.at, but if you're targeting an older browser that won't work unless you enter the wonderful world of transpiling and polyfills. And you thought virtualenv was bad??

And let's not forget the language's obsession with being async, even when you don't expect or want it. How many hours have been lost because someone forgot to await response.json()?

Oh right and remember how there's like six ways of declaring a function. The function keyword, when it's in a class, and like four variations on arrow function syntax. And arrow functions are different than ones with the function keyword.

And lots of other little weird gotchas like

const foo = "hello";
const bar = { foo: "world"};

Go on. What do you think that object key is? The syntax is insane . You need to do { [foo]: "world"} to reference a variable as a key. Which looks like a list. Because typescript/javascript is kind of bad.

Typescript is used in the browser because that's the only thing really supported there for front ends. It's a horrible tool for anything else.

[–] [email protected] -1 points 1 year ago (1 children)
  1. Yeah BECAUSE THEY ARE NOT DEAD PACKAGES LIKE 90% pip packages.
  2. Yeah at last we have different declarations
  3. its simple we USE THE GOD DAMN STAMDARD. { myvar:string } and we dont have to use any LIBRARIES FOR THAT
  4. typescript is just a language that transcompiles to js so you dont have any experience with js or ts them dont fucking talk bad thx
[–] [email protected] 2 points 1 year ago (1 children)

There are far more dead packages on npm than pip.

Why is having multiple different ways of declaring a function a good thing??

The standard in JavaScript for object declaration "is stupid*. It is a bad standard that is unintuitive and error prone. This has nothing to do with libraries. And JavaScript is notorious for "oh get a library for that*. Why do you think momentjs became mega popular? And momentjs is dead now! Move to datefns! The JavaScript ecosystem is full of that nonsense! Underscore got big because the standard library was kind of bad, but then people moved to lodash.

I don't know what you're responding to with point four. Honestly I don't think you're actually that familiar with python, and you ignored a lot of my points, so this probably isn't a very fruitful conversation.

[–] [email protected] 2 points 1 year ago (1 children)

Sadly i work with it 35 hours a day ( and i hate it every millisecond ). And we both know you and the other cant convince me that python is good and i cant convince you ( all ) that python is bad.

[–] [email protected] 2 points 1 year ago

I acknowledge this truce. I hope you find more enjoyable work.

[–] [email protected] 3 points 1 year ago (1 children)

It's a widely supported language with comparably fewer gotchas and foot guns.

[–] [email protected] 0 points 1 year ago (2 children)

Ohh you got python3 installed but this script is only for python2. Oh no you want a specific version of a package you gotta create a fucking venv for it! And hope that you dont forget next time you start :) Oh you renamed a variable of a class. You gotta catch them all! With the (sorry) worst error messages i have ever seen. You can still delete system32 with it.

[–] [email protected] 2 points 1 year ago (1 children)

Almost every language has versions. Python's is fairly stable. Python2 has been end of life for a few years now, and I don't think there's a python 4 even on the horizon.

Almost every language has dependency management. Use an IDE.

Use an IDE with refactor->rename. I've never had a problem with renaming. Right now when I went to see what it would do, it suggested correctly "did you mean [correct variable name]?". But even without that it just says my class has no attribute with the incorrect name, which is about what I would expect. If you think these are bad error messages you should stay away from JavaScript.

Most languages running as admin can delete files. I don't see how that's a relevant critique of python.

[–] [email protected] -1 points 1 year ago (1 children)
  1. Yeah ok ig
  2. IDE doesnt have anything to do with pip, it can install it sometimes, but for version controll its uterly garbo
  3. IDE is sometimes impossible to catch the variable. ( VS Code, Pycharm )

You wont change my mind about that pile of trash named python.

I would cite some cool dude ;)

Python is an immature language that was populated because the academic computer science business is immature and does not have a definition for "best practices"

[–] [email protected] 0 points 1 year ago (1 children)

Just use a virtual environment and let your ide manage it. Or a docker container if you're doing production work.

Any language may have trouble if you willy-nilly rename things by hand. That's not specific to python.

[–] [email protected] 0 points 1 year ago

Like said IDEs work 90% of the time not or there are 50 packages with the god damn same name ( mostly malicious )

[–] [email protected] 1 points 1 year ago (1 children)

I have such mixed emotions about Python. I have to concede its uses. Especially when working with data and data scientists. A lot of people use it. There is a good amount of existing code floating around that can be re-used, etc. Its never the first language I reach for, but I have to accept that a lot of people use it.

But OMG, I have had to re-install my OS more than once due to python versioning issues. Not recently sure, I think I have it figured out now with virtualenv and pyenv, but it literally has caused me to reformat twice after getting too deep into dependency version mismatch hell.

[–] [email protected] 0 points 1 year ago

You are the first who understand those issues. And yeah Data scientists use it.

The only one thing i really like in python are the decorators. Those are neat.

[–] [email protected] 1 points 1 year ago

Python is what is being taught in schools these days.

[–] [email protected] 1 points 1 year ago

i started learning it bc i was told it was easy, and it was, but i switched to JS because I had no practical uses for python, but i can say it did help me understand JS better

load more comments
view more: next ›