Hacker News new | ask | show | jobs
by greggman3 2053 days ago
I don't know if this is related or not but back when Flickr was popular in like 2005 or 2006 my friends and I were uploading pictures of our events there (they're all still there AFAIK. We'd upload them to either our own accounts or for certain events to a shared account. One shared account is here: https://www.flickr.com/photos/sourpower/albums

I wanted copies of those pictures and the easiest way to get them was the write a tool to download them rather than have to coordinate with 3 to 15 friends and ask them to copy the images to a CD or USB stick or some other nonsense. Dropbox wasn't a thing and not all my friends were tech heads that would want to setup FTP servers.

Flickr had also come out with an API. APIs for online services seemed kind of new at that point and Flickr was one of the first AFAIK.

So I wrote the app https://blog.greggman.com/blog/flickrdown/ and a few months later it was accused by other users of flickr of being solely for the purpose of downloading copywritten images. Not once did I ever use it for such a purpose nor, AFAIK did any of my friends. None of us had any interest in other people's images on flickr, only shared images of mutually attended parties, bbq, picnics, events.

Those users reported the app to Flickr and the app was banned.

It was banned by the app's id. That meant you could register your own app and then hack in your app's id and still use it. IIRC I continued to use it to download pictures from our events but it always pissed me off they banned it. It also pissed me off because it wasn't accessing anything you couldn't just scrape for. The API made it easy to get a list of URLs, search for albums or people etc but you could easily write a script that just scraped the HTML to find all the same data. Didn't matter, flickr didn't budge.

It further pissed me off that over zealous flickr members accused me of lying about its purpose. Like many topics today, there is often absolutely nothing you can say that will convince someone else your intensions are not bad.

4 comments

This story clearly illustrates the purpose behind "web APIs". To limit access.

As a user (not a web developer), I personally never saw the practical point of web APIs; I have always just "scraped the HTML". Many times the solutions I write outlive the corresponding "API"; IME, often the non-API method of data retrieval is more robust and reliable than using the so-called API.

YouTube used to have a freely accessible search API. Not anymore. However "scraping" the YT search result pages continues to work fine.

The purpose of APIs it to provide a “uniform” interface. HTML layouts can change. JavaScript could be added to download the images after page load. An API shouldn’t change as often. And if the API is “versioned”, you can usually use the old version (old HTML layout) for a while before you upgrade (compared to your tool breaking as soon as the HTML changes).
The purpose of an API is like a company mission statement: There's one version written on the wall and then there's the actual version everybody knows is true but they don't say it out loud.

You described the written one above. GP described the actual one.

That is the promise of APIs, but there is no guarantee.
In theory, yes. In practice, no.
> YouTube used to have a freely accessible search API.

Twitter used to have RSS/Atom feeds for each account so you could follow someone without a client, just a regular old news aggregator.

AFAIK they still do, just without any way to find it except by digging into the channel page’s HTML to find the channel_id and then constructing the feed URL from that (“https://www.youtube.com/feeds/videos.xml?channel_id=$channel...) — or (edit) using something like https://github.com/rss-bridge/rss-bridge that presumably does something like that under the hood — so I guess scraping for an undocumented API.
I have used that /feeds/videos.xml URL for retrieving a list of all videos in a playlist (playlist_id), but I have not used it for channels. What is the maximum number of results that one can retrieve. Without any additional parameters, it looks like it only returns 15 videos by default.

Personally, for channels, I use a script only needs to access the channel's page; it outputs a list of all the videos in the channel. One of the more recent web development trends I dislike are sites that "load more results" using additional Javascript-triggered HTTP requests in response to scrolling a page. YouTube channels with multiple pages of videos are one example.

With custom scripts I wrote for searching YouTube, outputting lists of videos from channels, and downloading non-commercial videos, I can use YouTube without the need a graphical browser.

You are talking about Youtube: I am talking about Twitter.
Oops, my bad. https://nitter.net/ is a nice alternative Twitter frontend with RSS feeds btw.
https://aur.archlinux.org/packages/nitter-git/

It's even on AUR, for easy usage.

> Like many topics today, there is often absolutely nothing you can say that will convince someone else your intensions are not bad.

Sometimes it's better to not even try. Acting is always the more powerful move. Just do your thing. You wrote an awesome program that downloads stuff, they got offended and banned it. You've already accomplished your goal so you let it go... But if you cared enough you could just write a scraper for the website itself. What are they gonna do about it?

In an ideal world, downloading copywritten data would be so easy and ubiquitous that the intellectual property laws would be unenforceable. Sure, they would get mad but who cares? There's very little they can do about it.

Funnily enough IP laws do little to protect authors, it's more like a framework to make money for big organisations who pretend they protect authors' interests.
I have a very similar story!

I maintain a similar project for SoundCloud called SoundScrape: https://github.com/Miserlou/soundscrape which I started for a similar reason, to save my own 'likes' and tracks that I've made and my friends have made.

SoundCloud made this very easy, as they had an API which exposed the endpoint MP3/WAV location in a field. The tool used an API key provided by SoundCloud to fetch the response.

Overnight and without warning, they removed that field from responses, changed the terms of service, banned my application for terms of service violations, and deleted all of my personal music and likes because I had used my own account to create the API key.

I was very angry at the time since all my my music got deleted, but these days I'm just sad. Things like this have little by little destroyed all of my enthusiasm for technology.

I want to be a carpenter now.

> I was very angry at the time since all my my music got deleted, but these days I'm just sad. Things like this have little by little destroyed all of my enthusiasm for technology. I want to be a carpenter now.

When I was a kid, I watched with wonder and delight at all the amazing things we were doing and inventing. We were poor so I didn't get much tech, but I always marveled at it. I saved up for ages to buy one of those personal organizers that were all the rage in the mid 90's. I saw myself as part of a world working together to build a brighter future for all of us, and I think I wasn't alone in that.

It is true that the seeds of many issues we face today were already firmly planted in those days and that it was unrealistic. But there is value in dreams because dreams tell us who we want to be and give us the engine to get there.

Today, I couldn't care less about tech, actively see it as a negative influence on human life, and understand the Amish and Luddites alot better.

I'm currently planning to build a farm out in the middle of nowhere and then Apple can have its fiefdom, Google can own everyone's data and control what people think, they all can tell people what they're allowed to say as our new overlords and I just won't care at all.

Did they at least provide an API that allowed to download your own account? I think they should have such feature thanks to GDPR.
While I can understand your frustration, I also understand the frustration of photographers and other creators trying to make a living who have their work stolen. Their anger was wrongly directed at you, but it is a real problem.
While I agree with you that photographers are hurt by having their photos copied I'm not convinced my app was a problem. I personally doubt anyone was using it to bulk download copywritten photos and somehow use those photos. I could be wrong but I believe most people that steal photos still them a few at time. Basically they're making some article, they need a related photo, they search, grab a 2 to 5 and stick them in their article. They'd do this with the browser, not my app.

My app didn't let you search by keyword, only by user. Further it didn't remove watermarks or do anything else. If photographers put their photos on flickr and they care about stealing they usually both watermark and only put relatively low-res versions there and you have to pay them for high res versions.

If flickr provided logs that showed bulk download and further some proof that even with bulk download that it was actually affecting professional photographers and not just a few geeks collecting some pictures they liked then I'd be more inclined to buy into their ban but without that I'm pretty confident the ban had no basis in reality.

I wasn't intending to suggest you were contributing to the problem. If others used your tool improperly, that's not your fault. But I can understand why some photographers who have had their content stolen could be upset. As far as Flickr's response in banning your app, it does seem at least misguided. I also wonder if they were concerned about making it too easy for people to move to another platform.
I would argue that the "stealing" does not happen at the time of download; after all the photos are free to view on Flickr as many times as you want, and your browser needs to 'download' them in order to show them to you. Saving a copy to your own hard drive for offline viewing does not fundamentally change that interaction.

It is only when you re-publish the photos that it becomes theft of intellectual property.

Either way it's not "theft", as the original owner of the exclusive rights to copy (etc.) the work still has those rights.

After all that's what the "property" in "intellectual property" is - the bundle of exclusive rights. Owners of those rights aren't deprived of them by somebody copying the works over which the rights exist.

Try convincing the RIAA of your (perfectly valid IMO) argument...
I would agree with that, although it could still be the case where a tool which technically does not violate any laws is still used to ultimately facilitate illegal activity. In which case I think it would be reasonable for a platform to ban the use of such a tool.
It's also off-topic, and it's especially off-topic because it was misdirected. The response to "my legitimate tool was attacked because people thought it was for X" should not be to talk about the problem of X and why it's important. It should be to figure out how we prevent useful tools from being taken down. Amplifying a different problem, the fear of which led to breaking a useful tool, does not help.

Also, if you don't want something downloaded, don't post it on the Internet in the first place. The problem you're talking about isn't that photos get downloaded, it's how those photos are subsequently used.

> It should be to figure out how we prevent useful tools from being taken down

I would argue that recognizing the reason that useful tools are taken down, even if you argue that reason is not legitimate, is an important part of figuring out how to stop those tools from being taken down.

> Also, if you don't want something downloaded, don't post it on the Internet in the first place.

I understand the argument although I do wish photographers could be free to post their work without fear of others taking it.

It's basically over now; since photographers don't have a cartel backing them like film or music, and photos are so easy to copy, everything is basically everywhere.

Newspapers will routinely rip off photos from social media, sometimes in the face of explicit non permission.

If I run that script in an infinite loop, downloading the same persons photos, can I make they go bankrupt?
this is as stupid as saying "evolution isn't real otherwise I could grow eyes on stalks when I want to see around corners"
Not really, being against copyright (or at least against calling it theft) is a pretty defensible stance.