示例#1
0
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
示例#2
0
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
示例#3
0
    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
示例#4
0
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
示例#5
0
 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
示例#6
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'))
示例#7
0
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"])
示例#8
0
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(
    )
示例#9
0
 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
示例#10
0
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)
示例#11
0
    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'])
示例#12
0
    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(', ')
示例#13
0
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
示例#14
0
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)
示例#15
0
    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'])
示例#16
0
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
示例#17
0
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()
示例#19
0
 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")
示例#20
0
    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()
示例#21
0
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
示例#22
0
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)
示例#23
0
    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
示例#24
0
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.")
        )
示例#25
0
    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'])
示例#26
0
# ---- 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):
示例#27
0
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(
示例#28
0
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
示例#29
0
#!/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)
示例#30
0
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