Skip to content

Python tool used to download, extract, and apply date, time, and location metadata to Snapchat Memories when exporting them from the app.

License

Notifications You must be signed in to change notification settings

bransoned/MemorEasy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues project_license


Logo

MemorEasy

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
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

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.

(back to top)

Getting Started

Prerequisites

  1. 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.html file. 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.

Quick Start (Recommended)

... Especially for Windows users

  1. Download the pre-built executable for your platform from the latest release
  2. NOTE: For MacOS and Linux, you must install the required exiftool dependency:
    • MacOS: brew install exiftool
    • Linux: apt install exiftool
  3. Move the downloaded executable/binary to the folder or directory where you want the images to be downloaded
    • Windows Example: Move MemorEasy.exe to C:\Users\username\Pictures\
    • Linux/macOS Example: Move MemorEasy-Linux or MemorEasy-macOS to ~/Pictures/
  4. Place the memories_history.html file in the same folder or directory as the executable/binary file

Installation from Source (Advanced)

  1. Clone and enter the repo where you would like the Memories to be imported
    git clone https://github.com/bransoned/MemorEasy.git
    cd MemorEasy
  2. 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
  3. Install the required libraries
    pip3 install -r requirements.txt
  4. Install the required dependencies
    • Windows: Download exiftool and ffmpeg executables and add them to your PATH to be found by the OS/Python
    • Linux:
      sudo apt-get update
      sudo apt-get install -y ffmpeg exiftool
    • macOS:
      brew install ffmpeg exiftool
  5. Copy your memories_history.html file into the top level of the project directory

(back to top)

Running MemorEasy

  1. For Quickstart:

    • Run the script by double clicking the file if in a graphical interface or if in terminal by running ./MemorEasy.exe or ./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
  2. For Installation from Source:

    • Once the required libraries, dependencies, and user-specific memories_history.html file are installed and copied into the directory, you can run the script
      python3 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
  3. NOTE: If exporting many memories, this may take some time. Go get a coffee :)

Usage

Running the script:

Running

Results after script is finished:

Memories Downloaded

(back to top)

Roadmap

  • 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).

(back to top)

Contributing

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!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. 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.

(back to top)

Top contributors:

contrib.rocks image

License

Distributed under the AGPL-3.0 license. See license.txt for more information.

(back to top)

Contact

bransoned - Discord

Project Link: https://github.com/bransoned/MemorEasy

(back to top)

Acknowledgments

  • 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.

(back to top)

About

Python tool used to download, extract, and apply date, time, and location metadata to Snapchat Memories when exporting them from the app.

Resources

License

Stars

Watchers

Forks

Languages