#!/usr/bin/env python #using the awesome pysnap library: https://github.com/martinp/pysnap from __future__ import print_function import os.path import sys from getpass import getpass from zipfile import is_zipfile, ZipFile from pysnap import get_file_extension, Snapchat def process_snap(s, snap, path): filename = '{0}_{1}.{2}'.format(snap['sender'], snap['id'], get_file_extension(snap['media_type'])) abspath = os.path.abspath(os.path.join(path, filename)) if os.path.isfile(abspath): return data = s.get_blob(snap['id']) if data is None: return with open(abspath, 'wb') as f: f.write(data) print('Saved: {0}'.format(abspath)) return abspath if is_zipfile(abspath): zipped_snap = ZipFile(abspath) unzip_dir = os.path.join(path, '{0}_{1}'.format(snap['sender'], snap['id'])) zipped_snap.extractall(unzip_dir) print('Unzipped {0} to {1}'.format(filename, unzip_dir)) return abspath def upload_story(s, snap_path): media_id = s.upload(snap_path) if media_id: s.send_to_story(media_id, time=5) def main(): username = # Your username goes here password = # Your password goes here path = 'Documents/snaps' #where you download the snaps to s = Snapchat() if not s.login(username, password).get('logged'): print('Invalid username or password') sys.exit(1) new_snaps = [] for snap in s.get_snaps(): result = process_snap(s, snap, path) if result: new_snaps.append(result) for snap_path in new_snaps: upload_story(s, snap_path) if __name__ == '__main__': main()