Example #1
0
def validate_skype_username(username, validate_with_api=False):
    if username:
        username = to_string(username)
        if SKYPE_USERNAME_REGEX.match(username):
            if not validate_with_api:
                return True

            response = open_json_url(
                'https://login.skype.com/json/validator',
                data={'new_username': username},
                method='get')
            if response['data']['markup'].lower() == 'skype name not available':
                return True
    return False
Example #2
0
    def compress_images(self):
        month_str = TODAY_DATE().strftime('%Y%m')
        if not self.api_session_manager.tinypng_api or month_str in self.api_session_manager.tinypng_locked_months:
            return None

        headers = {
            'Authorization': b'Basic ' + b64encode(b'api:' + to_bytes(self.api_session_manager.tinypng_api))}

        while True:
            file_info = (
                self.session
                .query(File.id, File.file_id, File.filename)
                .filter(FilePath.compressed.is_(False))
                .filter(FilePath.mimetype.in_(['image/jpeg', 'image/png']))
                .filter(FilePath.id == File.file_id)
                .order_by(FilePath.size, File.filename.desc())
                .first())

            if not file_info:
                break

            binary = self.get_file_binary(file_info.id).read()
            response = open_json_url(
                'https://api.tinify.com/shrink',
                method='POST',
                data=binary,
                headers=headers)

            self.api_session_manager.tinypng_locked_months.append(month_str)

            if response['output']['ratio'] >= 1:
                self.direct_update(FilePath, FilePath.id == file_info.file_id, {'compressed': True})
            else:
                new_file_binary = get_url_file(response['output']['url'], headers=headers)
                file_path_id = self.save_file_path(new_file_binary, filename=file_info.filename, compressed=True).id
                if file_path_id == file_info.file_id:
                    self.direct_update(FilePath, FilePath.id == file_info.file_id, {'compressed': True})
                else:
                    self.direct_update(File, File.file_id == file_info.file_id, {'file_id': file_path_id})
                    self.delete_file_paths(file_info.file_id)