Hi, i’m into programming, sexual transmutation and psychedelics!
Hi! First of all thank you so much for the detailed explanation!
What I’m trying to do is scraping some content.
Yes I’m trying to return all links (maybe in a vector), I have a list of elements (Select
, which actually is scraper::html::Select<'_, '_>
) which contain essentially html nodes selections, and I would like to grab each of them, extract the actual link value (&str
), convert it into an actual String
and push it firstly into a vector containing all the links and then in an istance of a struct which will contain several datas about the scraped page later.
I was trying to use a for loop because that was the first structure that came to my mind, I’m finding it hard to wrap my head around ownership and error handling with rust, using the if let
construct can be a good idea, and I didn’t consider the use of break
!
I also managed to build the “match version” of what I was trying to achieve:
fn get_links(link_nodes: scraper::html::Select<'_, '_>) -> Vec<String> {
let mut links = vec![];
for node in link_nodes {
match node.value().attr("href") {
Some(link) => {
links.push(link.to_string());
}
None => (),
}
}
dbg!(&links);
links
}
I didn’t understand that I had to return the same type for each of the Option
match arms, I thought enum variants could have different types, so if the Some
match arm returns ()
, also None
has to do the same…
If I try with a simpler example I still cannot understand why I cannot do something like:
enum OperativeSystem {
Linux,
Windows,
Mac,
Unrecognised,
}
let absent_os = OperativeSystem::Unrecognised;
find_os(absent_os);
fn find_os(os: OperativeSystem) -> String {
match os {
debian => {
let answer = "This pc uses Linux";
answer.to_string()
}
windows10home => {
let answer = "This pc uses Windows, unlucky you!";
answer.to_string()
}
ios15 => {
let answer = "This pc uses Mac, I'm really sorry!";
answer.to_string()
}
_ => {
let is_unrecognised = true;
is_unrecognised
}
}
}
match is much more intuitive for a beginner, there’s a lot of stuff which go under the hood with ?
I will add another amazing alternative i’ve found, currently working great: https://www.distractionfreeapps.com/ This was exactly what i was looking for.
I’m actually curious on Rust, i don’t like how dispersive can be JavaScript, i prefer to build smaller, maybe uglier things, but that work and are nicely stable, scalable and can be integrated on multiple different platforms. Also i love that almost everything runs on Cargo and i don’t have to choose between 100 things that essentially cover the same target. I also think the Discord idea is quite good, i just want to find someone who is on my same level to grow / build cool things toghether, or small projects on which i can actively partecipate, there’s also an association near me that promotes opensource projects and give free code lessons, i might give it a try as well and see if i meet someone there. I’m gonna give it another try before deciding of giving up, i think it is deserved.
And how you deal with that, how do you choose what to do and what not to do?
Honestly when i first got into coding i liked the fact it could give me jobs i could do from every part of the world, that is still on demand and that gave a certain freedom on how you approach technology and customize it to make it your own, i always liked to tinker around with computer and i even have a small home server i use for several stuff. I loved how useful internet was to find informations otherwise unreachable and share stuff without censorship woth everyone, as i said i love the story of the cypherpunk movement, i see bitcoin as a real solution to our obsolete economy, and i thought i would have liked to have a role into changing this shitty system paradigms, my target was to work with lightining network or similar protocols maybe one day. However i feel like i’m changing lately and i’m lacking human interactions so much, there’s no point in building something toghether if there’s no emotions to share with others before, during and after the process. Maybe it’s just how i’m made, but i cannot stick to it, i just get super depressed and i see no point in doing it. Maybe i’m just lazy i don’t know, but it is like that.
Adding the fact that sometimes i feel like technology controls me, and not the opposite despite all the efforts i make, feels just super wrong and not how i want to live.
I’m studying webdevelopment so i’ve had the opportunity to work only on simple stuff so far, but it already feels super overwhelming, sometimes i get lost just in setting up my coding environment, just to realize it will only be one of many i’ll need to learn how to work with.
The RSS feature is amazing, i wanted to do something like that with RSS Bridge, but it looks like both Instagram and Facebook are doing their best to block exactly these kind of things, so it works half of the times and it needs to be fixed quite often, i think now it doesn’t work very well either… Also it is very complicated to be set up if you don’t know a bit of PHP. Of course i’m willing to learn but all this blocking that projects like this (see Barinsta or Bibliogram) get is really discouraging. I think Meta content is probably one of the worst to scrape.
Regarding Proxygram: for now it works, i’m using a public istance to grab some RSS feeds, if it proves to be reliable i will be happy to host my own istance as well, if possible :) It’s sometimes slow to grab data (i guess because sessions get easily blocked/limited, getting error 500) but not really a problem as i just want to see new events every couple of days, one issue tho is that the RSS doesn’t show all the posts (only showing the last three of them), which can be annoying as you may lose something if you don’t see it and save it.
EDIT: It actually does get other posts as well, just reaaally slowly, meaning that if you follow really large accounts in a week or so you can find your feed full of older posts marked as unread.
Anyway thanks to whoever is making the hard job of building/owning an instagram scraper, I really know it can be tough.
Exactly lmao
I love Lemmy because you can see that people actually understand that foss platforms don’t keep themselves up magically but there’s actually people involved that work hard for making internet a better place without any economical incentive, but just their ideal.
Not necessarily, of course open source is better, but i really just want something that gives me power over the content i can see, this is usually what happens in open source, that’s why i posted here, but im open to closedsource solutions. I didn’t know of the existence of modded stuff like this. How can they mod a closed source app? Are they partner with instagram? How does it work? Do they just scrape content like anyone else? How are they not getting banned like other scraper apps?
Okay then, i think i’m buying a new guitar
This is actually something i wanna get more informed on, for example i see that e/os is still supporting the first google pixel (from 2016), it’s already 7 years of updates. However i think that applies just to the OS update, not the security patches, am i right?
Anybody knows what happened to the impervious browser?
Yeah i have microg but some of the apps don’t work very well either
This sounds like a torture
Come on guys, it’s our turn to remedy to this disaster and to make the world a better place!
We can totally do it. Let’s work togheter and let’s work hard, there’s nothing more beautiful than to think of possible solutions that would make us all live better.
Thank you so much, You are taking a lot of effort to answer my doubts and I really appreciate!
So essentially match can return different types, but of course I have to specify it in the function signature, wheter using an enum or other ways, this makes sense! This was a missing piece in my puzzle, I didn’t consider the fact that the match return here was the function return type as well, and i had encoded
-> String
as return type.