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