Is there a way to do a mass download of photos from my airtable? The Bulk Upload worked well, now I need to do the reverse! Thanks, All
- Home
- Community
- Ask the Community
- Other Questions
- Bulk Download of photos from an AirTable?
Bulk Download of photos from an AirTable?
- August 27, 2019
- 40 replies
- 1192 views
40 replies
- Inspiring
- March 24, 2021
I just copied & pasted what the other guy wrote above. He has the “<” in his message above.
Anyways, I’m unsubscribing from this thread now. This is so unimportant, and I have REAL Airtable work to do. :winking_face:
I think there’s supposed to be a space after each “<”. His example doesn’t include one before the filename, but I think that’s a typo. Try:
xargs < wget < [insert path here]
That doesn’t solve the “No such file or directory” issue, though.
- Brainy
- March 30, 2021
LOL - And he didn’t use any code despite the fact that only he and only three other people on the planet can read it! That’s both the beauty and the irony of his bulk download approach.
@ScottWorld you need to retract the FYI and buy this clever dude a sandwich.
This is why I think that most people’s idea of what is and isn’t “code” is too narrow.
- Participating Frequently
- May 24, 2021
It’s certainly a “no-code” approach. :winking_face:
Sorry about that, I’m not here often, and I didn’t realize this was a no-code community. Or perhaps the degree to which it is.
I’ve mostly been browsing in the Airtable automations/scripting area of this community, where most people seem to have a JS background.
- Participating Frequently
- May 24, 2021
You lost me at step #2. I even tried to do it, too.
Just an FYI that this is not a UNIX programming community. This is a community which is primarily made up of no-coders and low-coders.
(Update: I finally got step #2 to work, but I couldn’t get step #3 to work.)
Sorry about that. I didn’t realize this was a no-code area.
I’m sure it’s moot now, but I had a typo. It should be xargs wget < sources.txt.
In your case, xargs wget < ~/Desktop/sources.txt
You’d also need wget if you don’t have it. I forget if it’s native on MacOS (brew install wget).
Anyway, apologies again for the confusion and technical approach.
- Participating Frequently
- May 24, 2021
This is why I think that most people’s idea of what is and isn’t “code” is too narrow.
In my case I didn’t know that code is avoided here (I’ll go so far as to say, seemingly kind of taboo) at all. I found this thread through a search, and I had been to the Airtable Automations category before, where Airtable scripts seem to be openly discussed.
I do consider a couple of shell commands to be on the low-code side personally, but of course experiences vary.
- Brainy
- May 24, 2021
In my case I didn’t know that code is avoided here (I’ll go so far as to say, seemingly kind of taboo) at all. I found this thread through a search, and I had been to the Airtable Automations category before, where Airtable scripts seem to be openly discussed.
I do consider a couple of shell commands to be on the low-code side personally, but of course experiences vary.
Oh, thank you very much for sharing your experiences, and for coming back and posting the correction. I’m sorry you did not feel welcome, and I hope that you will stick around.
Many Airtable users are no-code users, but certainly not all. In fact there are several people on these forums who enjoy code. Also, to be fair, the idea of your approach being “no code” was introduced by a different poster.
My comment was mostly to point out that the distinction between “code” and “no code” sometimes is an artificial one, depending on the point of view. The poster who called your shell commands “no code” is a highly experienced coder who writes code in text format, so two shell commands are not code to him. On the other hand, the poster who compared you shell commands to Unix considers himself a no-code user, even though he actually does write code, just not text based code.
Hard distinctions between code and no-code exist because no-coders are often afraid of code. However, the reality is that there is a huge gray area between code and no-code, and solutions like yours can help bridge the gap.
I think the emotions in this thread stem from the fact that the tone of your initial post says that you solution was quick and easy, but it was not quick and easy for the non-coder who tried it.
- New Participant
- June 2, 2021
I did it in 2 minutes with no 3rd party tooling, just the shell/terminal.
This works because it seems you don’t need to be authenticated to get files. Tested this in MacOS and should be fine for any *nix.
Steps
-
Copy the whole column of images you want (or multi select the ones you want and copy to clipboard) and paste into a file, for example,
sources.txt -
You’ll have to grab the URLs in the parentheses, which easy with
sed, just run
sed -i "" "s/.*(\(.*\))/\1/" sources.txt -
Now
wgetyour way through the file:
xargs < wget <sources.txt
Notes
-
This will download all the files to the current folder. You can also specific the folder you want with
-Pforwget. Likexargs < wget -P ~/Desktop/images <sources.txt -
If you don’t want to use
wget, you can usecurl -
Instead of step 2, you can just use your code editor to grab the context within the parentheses
wget is not natively available in MacOS terminal, this command however is:
xargs -n 1 curl -O < sources.txt
- New Participant
- July 13, 2021
I did it in 2 minutes with no 3rd party tooling, just the shell/terminal.
This works because it seems you don’t need to be authenticated to get files. Tested this in MacOS and should be fine for any *nix.
Steps
-
Copy the whole column of images you want (or multi select the ones you want and copy to clipboard) and paste into a file, for example,
sources.txt -
You’ll have to grab the URLs in the parentheses, which easy with
sed, just run
sed -i "" "s/.*(\(.*\))/\1/" sources.txt -
Now
wgetyour way through the file:
xargs < wget <sources.txt
Notes
-
This will download all the files to the current folder. You can also specific the folder you want with
-Pforwget. Likexargs < wget -P ~/Desktop/images <sources.txt -
If you don’t want to use
wget, you can usecurl -
Instead of step 2, you can just use your code editor to grab the context within the parentheses
This is brilliant and so helpful. The problem some fellow Mac users were experiencing is that wget is not installed by default on MacOS.
- New Participant
- August 22, 2021
Sorry about that. I didn’t realize this was a no-code area.
I’m sure it’s moot now, but I had a typo. It should be xargs wget < sources.txt.
In your case, xargs wget < ~/Desktop/sources.txt
You’d also need wget if you don’t have it. I forget if it’s native on MacOS (brew install wget).
Anyway, apologies again for the confusion and technical approach.
It will NOT work for multiple attachments in field.
With Copy column you get only first attachment url in every row.
regards
- New Participant
- March 31, 2022
In my case I didn’t know that code is avoided here (I’ll go so far as to say, seemingly kind of taboo) at all. I found this thread through a search, and I had been to the Airtable Automations category before, where Airtable scripts seem to be openly discussed.
I do consider a couple of shell commands to be on the low-code side personally, but of course experiences vary.
Thanks, i like to see any solution without constraints. Thanks for your ideas and time for sharing.
- Inspiring
- May 3, 2022
I did it in 2 minutes with no 3rd party tooling, just the shell/terminal.
This works because it seems you don’t need to be authenticated to get files. Tested this in MacOS and should be fine for any *nix.
Steps
-
Copy the whole column of images you want (or multi select the ones you want and copy to clipboard) and paste into a file, for example,
sources.txt -
You’ll have to grab the URLs in the parentheses, which easy with
sed, just run
sed -i "" "s/.*(\(.*\))/\1/" sources.txt -
Now
wgetyour way through the file:
xargs < wget <sources.txt
Notes
-
This will download all the files to the current folder. You can also specific the folder you want with
-Pforwget. Likexargs < wget -P ~/Desktop/images <sources.txt -
If you don’t want to use
wget, you can usecurl -
Instead of step 2, you can just use your code editor to grab the context within the parentheses
This is awesome, thank you. Indeed it should be xargs wget < sources.txt and if wget is not available on the mac a simple brew install wget works as you mentioned.
Maybe for it can also be helpful to remind ppl to save it as .txt and not as .rtf as it might add some extra formatting text on the file which will cause the download to fail.
- Inspiring
- May 3, 2022
It will NOT work for multiple attachments in field.
With Copy column you get only first attachment url in every row.
regards
It does not work because the sed is not accounting for the multiple links in one cell separated by a comma. Therefore it only gets the last link inside the parentheses.
In order to correct that I would first run sed to replace all commas with new lines like this:
sed -i "" 's/,/\'$'\n''/g' sources.txt
And then run the sed to get all the links inside parentheses like Orun has done:
sed -i "" "s/.*(\(.*\))/\1/" sources.txt
And then you can run the download command:
xargs wget < sources.txt
This should work to download all the files in the same cell.
- Inspiring
- May 3, 2022
The On2Air Backups can backup all your Airtable data, including attachments, to Google Drive, Dropbox, or Box
You can also check out The Essential Guide to Backups in Airtable
- New Participant
- June 14, 2023
I did it in 2 minutes with no 3rd party tooling, just the shell/terminal.
This works because it seems you don’t need to be authenticated to get files. Tested this in MacOS and should be fine for any *nix.
Steps
-
Copy the whole column of images you want (or multi select the ones you want and copy to clipboard) and paste into a file, for example,
sources.txt -
You’ll have to grab the URLs in the parentheses, which easy with
sed, just run
sed -i "" "s/.*(\(.*\))/\1/" sources.txt -
Now
wgetyour way through the file:
xargs < wget <sources.txt
Notes
-
This will download all the files to the current folder. You can also specific the folder you want with
-Pforwget. Likexargs < wget -P ~/Desktop/images <sources.txt -
If you don’t want to use
wget, you can usecurl -
Instead of step 2, you can just use your code editor to grab the context within the parentheses
This is awesome, but many of the "sources" URLs don't contain the original filename. The CSV has the original name next to the URL, any suggestions on automating wget -O to force original name?
- Participating Frequently
- February 19, 2024
Jumping in for anyone who finds this thread in the future -
I have created a (Free) python script that allows you to download your attachments,
you can read the code I wrote on github https://github.com/garygng/Airtable_python.
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.
Scanning file for viruses.
Sorry, we're still checking this file's contents to make sure it's safe to download. Please try again in a few minutes.
OKThis file cannot be downloaded
Sorry, our virus scanner detected that this file isn't safe to download.
OK