Python tool used to downlad, extract, and apply date, time, and location data to Snapchat Memories EXIF data.
Report Bug
·
Request Feature
Table of Contents
This project is intended to provide a simplified and better-implemented approach for exporting Snapchat memories compared to the system provided by Snapchat and their Javascript implementation.
When using MemorEasy, you can rapidly download your Memories from Snapchat's cloud to your computer, while also tagging them with their relevant metadata in the EXIF section. Snapchat does not provide imbedded metadata in the images from their servers, which is what makes importing with MemorEasy so important.
Likewise, the script also saves filenames in an organized format of YYYY-MM-DD-HHMMSS.ext inside of a child directory named ./memories/ in the parent directory where the script is executed. No more dealing with
the naming conventions Snapchat employs with randomized SID values.
Lastly, the script combines PNG layers back with their parent JPG/MP4 files to reflect how your Memories look inside of Snapchat itself. MemorEasy also saves a master JPG/MP4 file with no layers to preserve the original photo.
- Download your Memories data from Snapchat.
- When asked which data you would like, only selecting the "Memories" option is required for this project, but you may select more data if you wish. NOTE: This will not export your My Eyes Only folder. This must be done manually in the app.
- Ensure that the date range you want selected is correct. We recommend toggling date selection off to query all Memories on your account if this is your first time exporting Memories and/or running this script.
- Lastly, when delivered the zip file from Snapchat with your data, unzip and find the
memories_history.htmlfile. MemorEasy will parse this file for all of the information needed to import your Memories. - TODO Add images or a GIF showing process of selecting data.
... Especially for Windows users
- Download the pre-built executable for your platform from the latest release
- NOTE: For MacOS and Linux, you must install the required exiftool dependency:
- MacOS:
brew install exiftool - Linux:
apt install exiftool
- MacOS:
- Move the downloaded executable/binary to the folder or directory where you want the images to be downloaded
- Windows Example: Move
MemorEasy.exetoC:\Users\username\Pictures\ - Linux/macOS Example: Move
MemorEasy-LinuxorMemorEasy-macOSto~/Pictures/
- Windows Example: Move
- Place the
memories_history.htmlfile in the same folder or directory as the executable/binary file
- Clone and enter the repo where you would like the Memories to be imported
git clone https://github.com/bransoned/MemorEasy.git cd MemorEasy - Create and source a virtual environment (skip this step if you already have a virtual environment you would like to use)
python3 -m venv .venv source .venv/bin/activate - Install the required libraries
pip3 install -r requirements.txt
- Install the required dependencies
- Copy your
memories_history.htmlfile into the top level of the project directory
-
For Quickstart:
- Run the script by double clicking the file if in a graphical interface or if in terminal by running
./MemorEasy.exeor./MemorEasy-OS_Name - A shell or terminal window should appear and show current progress of downloads
- MemorEasy will generate a
memories/folder that will contain all of the organized JPGs, MP4s, and folders with your images
- Run the script by double clicking the file if in a graphical interface or if in terminal by running
-
For Installation from Source:
- Once the required libraries, dependencies, and user-specific
memories_history.htmlfile are installed and copied into the directory, you can run the scriptpython3 script.py
- The script should output the progress of the downloads and will generate a
./memories/directory that will contain all of the organized JPGs, MP4s, and folders with your images
- Once the required libraries, dependencies, and user-specific
-
NOTE: If exporting many memories, this may take some time. Go get a coffee :)
Running the script:
Results after script is finished:
- Implement SQLite DB to track files that have been downloaded for fault-protection
- Write unit tests
- Implement better error handling and exception raising
- General refactoring of code, bug fixes when found
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
If you do not feel comfortable contributing code to the project, you can also leave feedback in the Issues or Discussion sections.
Distributed under the AGPL-3.0 license. See license.txt for more information.
bransoned - Discord
Project Link: https://github.com/bransoned/MemorEasy
- This is a personal project intended for my use-cases. I feel that others may be able to benefit from this tool, so I would like to share it, along with the development process, with others.

