Beispiel #1
0
def check_state(session):
    logger.debug('start')
    status = session['status']
    if 'key' not in session:
        status = bitops.sub(status, 3)
        status = bitops.sub(status, 4)
        status = bitops.sub(status, 5)
        status = bitops.add(status, 2)
        save_status(session, status)
Beispiel #2
0
def upload_to_flickr(session):
    """Upload matched photos to Flickr"""
    logger.debug('start')
    flickr = Flickr(token=session['token'])
    userdir, flickr_dir, btsync_dir = get_dirs(session)
    photos = [x for x in db.btsync.find({'download': 7, 'owner': session['username']})]
    matches = [x for x in db.matches.find({'owner': session['username']})
               if x['btsync'] in [y['name'] for y in photos]]

    logger.info('found %d available photos', len(photos))
    logger.info('found %d files to upload', len(matches))

    #print(photos)
    #print(matches)

    matches = [dict(match=x, btsync=[y for y in photos if y['name'] == x['btsync']][0],
                    flickr=[z for z in db.flickr.find({'instaflickr': {'status': 1}, 'owner': session['nsid']})
                            if z['id'] + '.jpg' == x['flickr']][0])
               for x in matches]

    for match in matches:
        if flickr.replace_photo(match, btsync_dir):
            btsync_img = match['btsync']
            btsync_img['download'] = 2
            flickr_img = match['flickr']
            flickr_img['instaflickr']['status'] = 3
            db.btsync.save(btsync_img)
            db.flickr.save(flickr_img)
            os.remove(os.path.join(flickr_dir, flickr_img['id']+'.jpg'))

    status = bitops.sub(session['status'], 4)
    save_status(session, status)
Beispiel #3
0
def download_from_flickr(session):
    """Download photos from Flickr.

    Statuses in db.flickr collection:
        0 - not downloaded
        1 - downloaded
        2 - not from instagram
        3 - replaced
    """
    logger.debug('start')
    check_dirs(session)

    flickr = Flickr(token=session['token'])
    dir = get_dirs(session)[1]

    # saving photos info to db
    db_photos = [x for x in db.flickr.find({'owner': session['nsid']})]  # photos already in db


    # todo: do intelligent requesting of photos
    # user_photos = flickr.photos(max([x['id'] for x in db_photos]))  # all user photos
    user_photos = flickr.photos()  # all user photos
    logger.info('%s has %d photos', session['username'], len(user_photos))

    new_photos = [x for x in user_photos if x['id'] not in [y['id'] for y in db_photos]]  # new photos
    logger.info('found %d new photos', len(new_photos))

    if new_photos:
        db.flickr.insert([dict(x, instaflickr={'status': 0}) for x in new_photos])

    # downloading images from flickr
    photos = [x for x in db.flickr.find({'owner': session['nsid'], 'instaflickr': {'status': 0}})]
    logger.info('%d photos to download', len(photos))

    flickr.download_photos(photos, dir)

    # for photo in downloaded_photos:
    #     db.flickr.save(photo)

    status = bitops.sub(session['status'], 1)
    save_status(session, status)
Beispiel #4
0
    #size = sum([os.path.getsize(f) for f in os.listdir(dir) if os.path.isfile(f)])
    size = sum([x['size'] for x in filter(download(1), db_files)])
    logger.info('occupied space: %.2f MB', size / 1024.0 / 1024.0)
    for file in sorted(filter(download(0), db_files), key=lambda x: x['name'], reverse=True):  # in descending order
        size += file['size']
        if size >= MAX_SIZE:  # if quota reached - stop loop
            break
        logger.info('beginning sync file %s (%d bytes)', file['name'], file['size'])
        response = btsync.request(method='set_file_prefs', secret=key, path=file['name'], download=1)
        logger.debug('response from btsync on file %s: %s', file['name'], response)
        file['download'] = 1
        db.btsync.save(file)

    if not filter(download(0, 1, 2), db_files):
        logger.info('All files synced, uploaded to Flickr and cleaned up')
        status = bitops.sub(status, 3)  #

    save_status(session, status)

    #logger.debug('response from btsync: %s', response)


def check_dirs(session):
    userdir, flickrdir, btsyncdir = get_dirs(session)
    if not os.path.exists(userdir):
        os.makedirs(userdir)
        os.makedirs(btsyncdir)
        os.makedirs(flickrdir)


def initial_status(session):