Luna Part 2 : Repository and Django Models

Luna is what I'm calling my project to take back my photos.

You can follow along with the code here: https://github.com/issackelly/luna

The repository and the data models are the first step in any code base.

I'm not yet going to cover many of the choices that I made in the project (pipenv, dj-database-url, celery, etc). In this installment, I'll be describing the folder structure and the basic model setup at backend/backend/models.py .

The project is a pair of small applications. A "backend" application built on Python 3 and Django 2 ...

read more...


Luna: Taking My Photos Back - Part 1 : Motivation & Description

Digital Photos are probably the most personal digital-relics from my life.

Tech companies want this foothold, and I'm going to try to opt-out with as few compromises as possible.

From a data perspective, my photo and video collection is the most complex and interesting of data sets that I interact with regularly.

This is an opportunity to explore and to use the data in interesting ways. I can build interesting things on top of it, and use the data to experiment with different approaches, UI patterns, or technologies in a way that is meaningful to me.

The fact that ...

read more...


Podcast Scraping: Radiolab

Radiolab seems to make their page out of javascript. that made it slightly more annoying to find the right download link, but otherwise it's straight forward.


import time
import requests
from bs4 import BeautifulSoup
import os.path
def download(href, title, extension="mp3", dirname='.'):
    print(href, title, extension, dirname)
    filename = "%s.%s" % (title, extension)
    filename = filename.replace("/", "-")
    # todo, path management
    local_filename = os.path.join(dirname, filename)
    if not os.path.exists(dirname):
        print("making dir %s" % dirname)
        os.makedirs(dirname)
    local_filename = os.path.join(dirname, filename)
    r = requests.get(href, stream=True)
    with open(local_filename, 'wb') as f:
        for ...

read more...


Podcast Scraping: 99Percent Invisible

Today in desert island podcast scraping:

99 Percent Invisible

import time
import requests
from bs4 import BeautifulSoup
import os.path
def download(href, title, extension="mp3", dirname='.'):
    filename = "%s.%s" % (title, extension)
    filename = filename.replace("/", "-")
    # todo, path management
    local_filename = os.path.join(dirname, filename)
    if not os.path.exists(dirname):
        print("making dir %s" % dirname)
        os.makedirs(dirname)
    local_filename = os.path.join(dirname, filename)
    r = requests.get(href, stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024):
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)
    return local_filename
for i in range(1 ...

read more...



Issac Kelly