def getOutput(my_url_list): global client, all_creds, current_cred output_list = [] for my_url in my_url_list: if current_cred >= len(all_creds): current_cred = 0 raise Exception( 'You have reached the daily limit of 1500 requests!') break result = client.check('wad').set_url(my_url) while result['status'] != 'success': if current_cred >= len(all_creds): # if last credential reached current_cred = 0 raise Exception('API keys exhausted.') break current_cred += 1 client = SightengineClient(all_creds[current_cred][0], all_creds[current_cred][1]) result = client.check('wad').set_url(my_url) print('Using credentials ' + all_creds[current_cred][0] + ', ' + all_creds[current_cred][1]) print(result) print(result) output_list.append(result) for output in output_list: print(output) return output_list
def image_check(image_url): client = SightengineClient('1206340818', 'CMrhjLUJuUHYzvtYVy5y') output = client.check('nudity', 'offensive').set_url(image_url) print(output) # output = client.check('nudity').set_file() safe = output['nudity']['safe'] return safe
def find_meme(self, meme): sightclient = SightengineClient("1347331372", "BhoFasNuF3zAGp8XSRXi") try: height = int(meme) # meme represents height rawdata_meme = getJSON("%s/getmemedatabyheight/%s" % (self.api_root, meme))['result'] result = dict(rawdata_meme, **{'meme_identifier': height}) except ValueError as e: # meme represents ipfsid rawdata_meme = getJSON("%s/getmemedatabyhash/%s" % (self.api_root, meme))['result'] result = dict(rawdata_meme, **{'meme_identifier': rawdata_meme['hashlink']}) try: sight_output = sightclient.check('nudity').set_url( 'https://ipfs.io/ipfs/%s' % rawdata_meme['ipfs_id']) if sight_output['nudity']['safe'] > 0.5: return result else: return None except KeyError as e: return result
def check_sightengine(pic_url): try: client = SightengineClient(sightengine_user, sightengine_secret) output = client.check('nudity').set_url(pic_url) score = 'Sightengine: {}% NSFW'.format( round(100 * output["nudity"]["raw"])) except: score = '' return score
def check_safety(input_url): client = SightengineClient('265033791', 'E8KsSkGNjT4Em8aaCUpF') checkNudity = client.check('nudity') output1 = checkNudity.set_url(input_url) safety_level = output1['nudity']['safe'] if safety_level < 0.5: return 1 else: return 0
def process_file(): if not current_user.is_authenticated: flash('Only authenticated users can upload or delete images') return redirect(url_for('images')) if len(list(request.form.keys())) > 0 and request.form["delete"]: output = delete_file_from_s3(app.config["S3_BUCKET"], request.form["delete"]) models.Appimage.query.filter_by(URL=request.form["delete"]).delete() db.session.commit() return redirect(url_for('images')) file = request.files["user_file"] if file.filename and allowed_file(file.filename): file.filename = secure_filename(file.filename) output = upload_file_to_s3(file, app.config["S3_BUCKET"]) client = SightengineClient('1959849289', 'Wm9a6r2E8SnF7oBfNJUW') output2 = client.check('nudity', 'wad', 'celebrities', 'scam').set_url(app.config["S3_LOCATION"] + '/' + file.filename) #Get the probability that the face belongs to said celebrity celeProb = 0 for face in output2["faces"]: celebrities = face.get("celebrity") for cele in celebrities: if (celeProb < cele.get("prob")): celeProb = cele.get("prob") #Nudity check: probability that the image does not contain nudity #Celebrity check: Probability that the face belongs to said celebrity #Weapon check: Probability that the image contains weapons #Scammer check: Probability that there is a scammer on the image if (float(output2["nudity"]["safe"]) < 0.5 or celeProb > 0.8 or float(output2["weapon"]) > 0.4 or float(output2["scam"]["prob"]) > 0.3): delete_file_from_s3(app.config["S3_BUCKET"], file.filename) flash('Image denied') #flash(float(output2["nudity"]["safe"])) #flash(celeProb) #flash(float(output2["weapon"])) #flash(float(output2["scam"]["prob"])) else: user = models.Appuser.query.filter_by( email=current_user.get_id()).first() i = models.Appimage(appuser_id=user.get_id(), URL=file.filename) db.session.add(i) db.session.commit() return redirect(url_for('images')) else: return redirect(url_for('images'))
def get_celebs(url): client = SightengineClient(local_settings.SIGHTENGINE_USER, local_settings.SIGHTENGINE_KEY) output = client.check('celebrities').set_url({url}) # Returns names and probabilities results = output["faces"][0]["celebrity"] return results # for celeb in results: # return ("Name:", celeb["name"], "Probability:", celeb["prob"])
def check_image_moderation(image: bytes): header = "data:image/png;base64," headerless_image = image.decode().replace(header, "").encode() client = SightengineClient("831120097", "9SKvSye6HX2WJeboWbqA") response = client.check("nudity").set_bytes(headerless_image) # If is 95.7% safe return original if response["nudity"]["safe"] >= 0.80: return image return "data:image/jpeg;base64,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".encode( )
def check(self, photo): client = SightengineClient('265804968', 'kqyZakkeqA6GPRQEqXzE') output = client.check('wad').set_file(photo) weapon = output['weapon'] alcohol = output['alcohol'] drugs = output['drugs'] if weapon > 0.1: return "Weapon" if alcohol > 0.1: return "Alcohol" if drugs > 0.1: return "Drugs" return None
def enhance_contrast(pathtofile): client = SightengineClient('1809910925', 'uYAfi34tLkxCpTY2c4Ge') output = client.check('properties').set_file(pathtofile) if output['contrast'] < 0.8: orig_img = cv.imread(pathtofile, 1) ycrcb_convert = cv.cvtColor(orig_img, cv.COLOR_BGR2YCrCb) y, cr, cb = cv.split(ycrcb_convert) new_y = cv.equalizeHist(y) clahe = cv.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)) new_y = clahe.apply(new_y) merged_channels = cv.merge((new_y, cr, cb)) final_image = cv.cvtColor(merged_channels, cv.COLOR_YCrCb2BGR) cv.imwrite('enhanced.jpg', final_image)
def test_video(self): client = SightengineClient('1234', 'test') check = client.check('wad', 'nudity', 'properties', 'type', 'faces', 'celebrities') video_output = check.video( 'https://sightengine.com/assets/stream/examples/funfair.mp4', 'http://requestb.in/1nm1vw11') self.assertEqual('success', video_output['status']) video_output2 = check.video_sync( 'https://sightengine.com/assets/stream/examples/funfair.mp4') self.assertEqual('success', video_output2['status'])
def initCreds(self): # Read in Sightengine credentials credentials = open("sight_engine_KEY.txt", "r") api_user = credentials.readline() api_secret = credentials.readline() credentials.close() # Instantiate Sightengine client with credentials self.client = SightengineClient(api_user, api_secret) # Read in credentials for messenger email credentials = open("email_credentials.txt", "r") # Instantiate message object self.msg = MIMEMultipart() # Set up the parameters of the message self.msg['From'] = credentials.readline() self.msg['Subject'] = "Gun Detected! ACT IMMEDIATELY!" self.emailcontacts = app.emails.split(', ') # Get information for logging into email account password = credentials.readline() credentials.close() # Body of text and email Alerts message = "Gun Detected! ACT IMMEDIATELY!" # Add in the message body self.msg.attach(MIMEText(message, 'plain')) # Create server to send email self.server = smtplib.SMTP('smtp.gmail.com: 587') print('server started') self.server.starttls() # Login to the messenger account with proper credentials self.server.login(self.msg['From'], password) # Read in twilio credentials credentials = open("twilio_credentials.txt", "r") account_sid = credentials.readline() auth_token = credentials.readline() self.detectorNumber = credentials.readline() credentials.close() # Instantiate Twilio object self.twilioClient = Client(account_sid, auth_token) self.phoneNumbers = app.numbers.split(', ')
def check_sightengine_properties(path): """ Check some image properties offered by the sigthengine API (https://sightengine.com/) including: - Nudity Detection - Weapons, Alcohol, Drug detection - Offensive Signs an Gesture detection - Minors detection - Image Quality detection - Sunglasses detection """ #client = SightengineClient('1519637001','knEJCk3vyKorBydqMPek') client = SightengineClient('250594697', '54GphLZgSBoenkVfXMPX') output = client.check('nudity', 'wad', 'properties', 'offensive', 'scam', 'text-content', 'face-attributes', 'text').set_file(os.path.abspath(path)) # Adjust the dictionary to our requirements del output['status'] del output['request'] del output['colors'] del output['media'] del output['text'] # 0 = Low, 1 = High output['scam'] = 1 if output['scam']['prob'] > 0.75 else 0 print(output["nudity"]) output['nudity'] = 1 if output['nudity']['partial'] > 0.85 else 0 output[ 'minor'] = 1 if output['faces'][0]['attributes']['minor'] > 0.75 else 0 output['sunglasses'] = 1 if output['faces'][0]['attributes'][ 'sunglasses'] > 0.75 else 0 output['offensive'] = 1 if output['offensive']['prob'] > 0.75 else 0 output['sharpness'] = 1 if output['sharpness'] > 0.75 else 0 output['weapon'] = 1 if output['weapon'] > 0.75 else 0 output['alcohol'] = 1 if output['alcohol'] > 0.75 else 0 output['drugs'] = 1 if output['drugs'] > 0.75 else 0 # 0 = OK, 1 = High, 2 = Low output['contrast'] = 1 if output[ 'contrast'] > 0.85 else 2 if output['contrast'] < 0.15 else 0 output['brightness'] = 1 if output[ 'brightness'] > 0.85 else 2 if output['brightness'] < 0.15 else 0 del output['faces'] return output
def upload_file(): file = flask.request.files['image'] fpath = os.path.join(app.config['UPLOAD_FOLDER'], file.filename) ext = file.filename.split('.')[-1] file_read = file.read() if ext in ALLOWED_EXT: try: sightclient = SightengineClient("1347331372", "BhoFasNuF3zAGp8XSRXi") sight_output = sightclient.check('nudity').set_bytes(file_read) if sight_output['nudity']['safe'] > 0.5: if ext == 'jpg': ext = 'jpeg' headers = {'Content-Type': 'image/%s' % ext.lower()} req = requests.post("http://95.179.132.93:1337/api/addmeme", data=file_read, stream=True, headers=headers) json_response = req.json() try: if json_response['success'] == True: return flask.render_template('upload-success.html') except KeyError as e: error_msg = json_response['description'] return flask.render_template('upload-failed.html', error_msg=error_msg) else: error_msg = "Meme image has not passed profanity filter. Please do not upload offensive materials." return flask.render_template('upload-failed.html', error_msg=error_msg) except KeyError as e: error_msg = "Profanity filter max API call limit reached." return flask.render_template('upload-failed.html', error_msg=error_msg) else: error_msg = "Meme file extension not supported." return flask.render_template('upload-failed.html', error_msg=error_msg)
def test_nudityModel(self): client = SightengineClient('1234', 'test') checkNudity = client.check('nudity') image = os.path.join(os.path.dirname(__file__), 'assets', 'image.jpg') output = checkNudity.set_url('https://sightengine.com/assets/img/examples/example5.jpg') self.assertEqual('success', output['status']) output2 = checkNudity.set_file(image) self.assertEqual('success', output2['status']) with open(image, mode='rb') as img: binary_image = img.read() output3 = checkNudity.set_bytes(binary_image) self.assertEqual('success', output3['status'])
def check_image(pic): pic = os.path.join(current_app.root_path, 'static/profile_pics', pic) picsamp = pic.replace('\\', '/') client = SightengineClient('82714170', 'RT4oo9fZFDbNsrvV6VSp') output = client.check('nudity', 'wad', 'celebrities', 'scam', 'face-attributes').set_file(picsamp) invalidImage = False # contains nudity if output['nudity']['safe'] <= output['nudity']['partial'] and output[ 'nudity']['safe'] <= output['nudity']['raw']: invalidImage = True n = Nude(picsamp) n.parse() print(n.result, n.message) return invalidImage
def signup(request): if request.method == "POST": print("zzz", request.method) name = request.POST['name'] user_id = request.POST['user_id'] password = request.POST['password'] password2 = request.POST['password2'] nickname = request.POST['nickname'] gender = GENDER_OPTION[1] if request.POST[ 'gender'] == 'male' else GENDER_OPTION[0] age = request.POST['age'] file_to_upload = request.FILES.get('img') session = Session(aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, region_name=AWS_S3_REGION_NAME) # s3 = session.resource('s3') now = datetime.now().strftime("%Y%H%M%S") # img_object = s3.Bucket(AWS_STORAGE_BUCKET_NAME).put_object( # Key = user_id+now, # Body = file_to_upload # ) # s3_url = "https://tripmate-storage.s3.ap-northeast-2.amazonaws.com/" client = SightengineClient('1514919083', 'vHQ735wsS4nPrHYkyB2T') # output = client.check('nudity').set_url(s3_url + user_id + now) # output_nudity = output["nudity"] # raw = output_nudity['raw'] # safe = output_nudity['safe'] # partial = output_nudity['partial'] # print(raw,safe,partial) # if(raw > 0.6 or partial > 0.6 or len(output_nudity) != 3 ): # return redirect('check') # else: if password == password2: user = User.objects.create_user( username=user_id, password=password, ) user.profile.name = name user.profile.nickname = nickname user.profile.gender = gender user.profile.age = age # user.profile.photo = s3_url + user_id + now print(user) user.save() login_user = django_authenticate(username=user_id, password=password) django_login(request, login_user) return redirect('main') return render(request, 'accounts/signup.html')
def get_frame(self): # Using OpenCV to capture from device 0. If you have trouble capturing # from a webcam, comment the line below out and use a video file # instead. self.video = cv2.VideoCapture(0) img_counter = 0 while True: ret, frame = self.video.read() #cv2.imshow("test", frame) if not ret: break k = cv2.waitKey(1) if k%256 == 27: # ESC pressed print("Escape hit, closing...") break elif keyboard.is_pressed('space'): # SPACE pressed img_name = "opencv_frame_{}.png".format(img_counter) cv2.imwrite(img_name, frame) print("{} written!".format(img_name)) client = SightengineClient('523702522', 'SoMh4T2mBCTB848RmhqS') output = client.check('celebrities').set_file('/Users/jeffrosal1/Desktop/NUhomework/project3/combined/flasktest/opencv_frame_0.png') print(output) set_api_key("i0bqh0wRTlMqHMTHXZPxXFumRAcETw698GaIqBN9vuM") # when sending a image file path = "/Users/jeffrosal1/Desktop/NUhomework/project3/combined/flasktest/opencv_frame_0.png" emoout = paralleldots.facial_emotion(path) print(emoout) rete, jpeg = cv2.imencode('.jpg', frame) return jpeg.tobytes()
def main(): # 我使用的是 SightengineApi(“用戶api”,“秘密api”): client = SightengineClient('1069852127', 'tLNDZxAArCRND5p8qt7A') # 特別整數: theSpecialInteger = 18 # 獲取用戶輸入: dataLocation = input("Please input the data: \n") # 打開用戶輸入數據 __image = Image.open(dataLocation) # 使用 Numpy 將圖像轉換為數組 np__image = np.array(__image) # 打印出數組的結果 print("Converted Image to Array ", np__image) # 得到十八和以前結果的差別 np__image = np__image - theSpecialInteger # 從數組創建新圖像 new_image = Image.fromarray(np__image) # 保存圖片 #new_image.save("output.png") # 聲明 SightengineApi 檢測功能 output = client.check("nudity", "wad", "offensive", "faces", "face-attributes", "celebrities").set_file(dataLocation) # 將輸出和結果打印為 <<json>> 格式 print(json.dumps(output, indent=6, sort_keys=True)) # 基於操作系統打開圖像或視頻 computer_platform = p.system() if computer_platform == "Windows": __image.show() print("以下图像是明确的并且不合适的") elif computer_platform == "Darwin": __image.show() print("以下图像是明确的并且不合适的") elif computer_platform == "Linux": __image.show() print("以下图像是明确的并且不合适的") else: print("can't open image")
def get_frame(self): # Using OpenCV to capture from device 0. If you have trouble capturing # from a webcam, comment the line below out and use a video file # instead. self.video = cv2.VideoCapture(0) img_counter = 0 while True: ret, frame = self.video.read() #cv2.imshow("test", frame) if not ret: break k = cv2.waitKey(1) if k % 256 == 27: # ESC pressed print("Escape hit, closing...") break elif keyboard.is_pressed('space'): # SPACE pressed img_name = "opencv_frame_{}.png".format(img_counter) cv2.imwrite(img_name, frame) print("{} written!".format(img_name)) client = SightengineClient('', '') output = client.check('celebrities').set_file('') print(output) set_api_key("") # when sending a image file path = "" emoout = paralleldots.facial_emotion(path) print(emoout) rete, jpeg = cv2.imencode('.jpg', frame) return jpeg.tobytes()
class SightEngineParser(): def load_apis(self): with open('api_keys.json') as f: self.api_keys = json.load(f) def initialize_client(self): self.load_apis() self.client = SightengineClient(self.api_keys['SIGHTENGINE_API_ID'], self.api_keys['SIGHTENGINE_API_KEY']) def fetch_results(self, filepath): try: return self.client.check('nudity', 'type', 'properties', 'wad', 'face').set_file(filepath) except: return None
def process_image(): """Convert and analyze image, add to DB""" privacy = request.form["privacy"] img = request.files["img_file"] # Define path and save image to local directory img_path = UPLOAD_FOLDER + img.filename img.save(img_path) #SightEngine check image for nudity/weapons/drugs client = SightengineClient('860162422', 'eFiRDeywSC9mCCjXse5q') output = client.check('nudity','wad').set_file(img_path) print(output) if output['weapon'] > 0.8: message = "Weapons detected, please upload a different image." print("NO WEAPONS") return jsonify({'error_message': message}) elif output['alcohol'] > 0.8: message = "Drugs or alcohol detected, please upload a different image." print("NO ALCOHOLS") return jsonify({'error_message': message}) elif output['nudity']['raw'] > 0.5: message = "Nudity detected, please upload a different image." print("NO NAKEY PICS") return jsonify({'error_message': message}) else: # Convert image and analyze, redirect to homepage upload = convert_resize_image(img_path, privacy) img_id = upload.img_id img_url = upload.img_url results = {"id": img_id, "url": img_url} pillow_analyze_image(img_path) # Return results return jsonify(results)
def find(self, limit=100, start=0, memechain_height=0): sightclient = SightengineClient("1347331372", "BhoFasNuF3zAGp8XSRXi") timeline = [] for ident in range(start, start + limit): meme_height = memechain_height - ident rawdata_meme = getJSON("%s/getmemedatabyheight/%s" % (self.api_root, str(meme_height)))['result'] sight_output = sightclient.check('nudity').set_url( 'https://ipfs.io/ipfs/%s' % rawdata_meme['ipfs_id']) try: if sight_output['nudity']['safe'] > 0.5: timeline.append( dict(rawdata_meme, **{'meme_height': meme_height})) else: pass except KeyError as e: timeline.append( dict(rawdata_meme, **{'meme_height': meme_height})) return timeline
def post_news(request): """A function view to implement the post functionality with AJAX allowing to create News instances as parent ones.""" user = request.user post = request.POST["post"] post = post.strip() r_image = re.compile(r".*\.(jpg|png|gif).*$") image = None if request.FILES: image = request.FILES['image'] client = SightengineClient('137076993', 'XHSoBHy4jQM2yn8YEn8Y') output = client.check('nudity', 'faces').set_bytes(image.file.read()) if output['nudity']['raw'] > 0.5: return HttpResponseBadRequest( content=_( f"The image contains nudity. Please reconsider " f"your existence in this platform " f"or you will be banned.") ) post_url = re.search("(?P<url>https?://[^\s]+)", post) if post_url and r_image.match(post_url.group("url")): client = SightengineClient('137076993', 'XHSoBHy4jQM2yn8YEn8Y') output = client.check('nudity', 'faces').set_url(post_url.group("url")) if output['nudity']['raw'] > 0.5: return HttpResponseBadRequest( content=_( f"The image contains nudity. Please reconsider " f"your existence in this platform " f"or you will be banned.") ) if len(post) <= 280: posted = News.objects.create(user=user, content=post, image=image) html = render_to_string( "news/news_single.html", {"news": posted, "request": request} ) return HttpResponse(html) else: length = len(post) - 280 return HttpResponseBadRequest( content=_(f"Text is {length} characters longer than accepted.") )
def test_feedback(self): client = SightengineClient('1234', 'test') feedback1 = client.feedback('nudity', 'raw', 'https://sightengine.com/assets/img/examples/example5.jpg') self.assertEqual('success', feedback1['status']) image = os.path.join(os.path.dirname(__file__), 'assets', 'image.jpg') feedback2 = client.feedback('nudity', 'safe', image) self.assertEqual('success', feedback2['status']) feedback3 = client.feedback('model9999', 'raw', 'https://sightengine.com/assets/img/examples/example5.jpg') self.assertEqual('failure', feedback3['status']) self.assertEqual('argument_error', feedback3['error']['type']) feedback4 = client.feedback('nudity', 'raw9999','https://sightengine.com/assets/img/examples/example5.jpg') self.assertEqual('failure', feedback4['status']) self.assertEqual('argument_error', feedback4['error']['type'])
# ---- Change all the values that are marked with the comment CHANGE ---- # CHANGE root directory where photos are root_dir = '/Users/josephbarbosa/Desktop/Wedding' # CHANGE THIS IF YOU WANT TO CHANGE THRESHOLD threshold = 0.95 # CHANGE your SightEngine API Key (Upon Making Account) api_user_id = '1609359767' api_key = '6HKCsvjxvKDa6c4uk8md' ################################################################################# # Connecting to the Sight Engine API client = SightengineClient(api_user_id, api_key) # Holding the file_name and the associated sharpness value. result = {} results = open("analyzed.txt", "w+") results_analyzed = open("algorithm_results.txt", "w+") exception_stop = open("exception_stop.txt", "w+") results.write("ALL files and their sharpness values\n\n") results_analyzed.write( "Files and Sharpness values BASED ON GIVEN 0.95 THRESHOLD\n\n") # For each file/picture in the directory for directory, subdirectories, files in os.walk(root_dir):
from googletrans import Translator import requests from io import BytesIO from PIL import Image from sightengine.client import SightengineClient import pytesseract import urllib.request import speech_recognition as sr app = Flask(__name__) #with open('tokenizer.pickle', 'rb') as handle: #tokenizer = pickle.load(handle) pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' client = SightengineClient('510188098', 'WaehbLBjT3mYTmnxDsp3') model = pickle.load(open(r"hatespeech\saved_models\lr_model.pkl", 'rb')) #path to hate speech model vect = pickle.load(open(r"hatespeech\saved_models\vectorizer.pkl", 'rb')) #path to hate speech vectorizer spam_model = pickle.load( open(r"Spam Classifier\saved_models\lr_model.pkl", 'rb')) #path to spam model spam_vect = pickle.load( open(r"Spam Classifier\saved_models\vectorizer.pickle", 'rb')) ##path to spam vectorizer #model = keras.models.load_model('model.h5') violence_model = keras.models.load_model(
import os from flask import Flask, render_template, request from sightengine.client import SightengineClient app = Flask(__name__) client = SightengineClient('582470628', 'VbcsYgVEEwkWEMfbLqqi') # don't forget to add your credentials UPLOAD_FOLDER = os.path.basename('uploads') app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER @app.route('/') def hello_world(): return render_template('index.html') @app.route('/upload', methods=['POST']) def upload_file(): file = request.files['image'] filename = os.path.join(app.config['UPLOAD_FOLDER'], file.filename) file.save(filename) invalidImage = False output = client.check('nudity', 'wad', 'celebrities', 'scam', 'face-attributes').set_file(filename) # contains nudity if output['nudity']['safe'] <= output['nudity']['partial'] and output['nudity']['safe'] <= output['nudity']['raw']: invalidImage = True # contains weapon, alcohol or drugs if output['weapon'] > 0.2 or output['alcohol'] > 0.2 or output['drugs'] > 0.2: invalidImage = True
#!/usr/bin/env python3 import billiard as mp import twitterdata import csv_utils import pprint from sightengine.client import SightengineClient from creds import client_access, all_creds, current_cred import requests import json import sys import os from app import celery_app client = SightengineClient(all_creds[current_cred][0], all_creds[current_cred][1]) def getOutput(my_url_list): global client, all_creds, current_cred output_list = [] for my_url in my_url_list: if current_cred >= len(all_creds): current_cred = 0 raise Exception( 'You have reached the daily limit of 1500 requests!') break result = client.check('wad').set_url(my_url) while result['status'] != 'success': result = client.check('wad').set_url(my_url) print(result)
from sightengine.client import SightengineClient client = SightengineClient('API user', 'API secret') ##### feedback feedback1 = client.feedback( 'nudity', 'raw', 'https://d3m9459r9kwism.cloudfront.net/img/examples/example5.jpg') feedback2 = client.feedback('nudity', 'safe', '/path/to/local/file.jpg') print(feedback1) print(feedback2) ####### check image checkNudity = client.check('nudity') output = checkNudity.set_file('/path/to/local/file.jpg') output2 = checkNudity.set_url( 'https://d3m9459r9kwism.cloudfront.net/img/examples/example5.jpg') # assign binary_image output3 = checkNudity.set_bytes(binary_image) print(output) print(output2) print(output3) ####### check video