Snapchat download all memories at once

有些话、适合烂在心里 提交于 2020-12-25 04:50:11

问题


Over the years on snapchat I have saved lots of photos that I would like to retrieve now, The problem is they do not make it easy to export, but luckily if you go online you can request all the data (thats great)

I can see all my photos download link and using the local HTML file if I click download it starts downloading.

Here's where the tricky part is, I have around 15,000 downloads I need to do and manually clicking each individual one will take ages, I've tried extracting all of the links through the download button and this creates lots of Urls (Great) but the problem is, if you past the url into the browser then ("Error: HTTP method GET is not supported by this URL") appears.

I've tried a multitude of different chrome extensions and none of them show the actually download, just the HTML which is on the left-hand side.

The download button is a clickable link that just starts the download in the tab. It belongs under Href A

I'm trying to figure out what the best way of bulk downloading each of these individual files is.


回答1:


So, I just watched their code by downloading my own memories. They use a custom JavaScript function to download your data (a POST request with ID's in the body).

You can replicate this request, but you can also just use their method. Open your console and use downloadMemories(<url>)

Or if you don't have the urls you can retrieve them yourself:

var links = document.getElementsByTagName("table")[0].getElementsByTagName("a");
eval(links[0].href);

UPDATE

I made a script for this: https://github.com/ToTheMax/Snapchat-All-Memories-Downloader




回答2:


Using the .json file you can download them one by one with python:

req = requests.post(url, allow_redirects=True)
response = req.text
file = requests.get(response)

Then get the correct extension and the date:

day = date.split(" ")[0]
time = date.split(" ")[1].replace(':', '-')
filename = f'memories/{day}_{time}.mp4' if type == 'VIDEO' else f'memories/{day}_{time}.jpg'

And then write it to file:

with open(filename, 'wb') as f:
    f.write(file.content)

I've made a bot to download all memories.

You can download it here

It doesn't require any additional installation, just place the memories_history.json file in the same directory and run it. It skips the files that have already been downloaded.



来源:https://stackoverflow.com/questions/61058637/snapchat-download-all-memories-at-once

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!