diff --git a/absensi.json b/absensi.json
new file mode 100755
index 0000000..0637a08
--- /dev/null
+++ b/absensi.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/dataset.json b/dataset.json
index 0dfc571..6018942 100755
--- a/dataset.json
+++ b/dataset.json
@@ -1 +1 @@
-[{"name": "Naufal", "nik": "1"}]
\ No newline at end of file
+[{"name": "Naufal", "nik": "1"}, {"name": "Aran", "nik": "12345"}]
diff --git a/flask_app.py b/flask_app.py
index ae2bb24..c3eb2c2 100755
--- a/flask_app.py
+++ b/flask_app.py
@@ -2,8 +2,10 @@ from flask import Flask, render_template , request
import subprocess
import threading
import json
+import time
dataset = "dataset.json"
+absensi = "absensi.json"
app = Flask(__name__, static_folder='assets', template_folder='templates')
@@ -34,7 +36,55 @@ def run_main2_py():
@app.route('/')
def home():
- return render_template('index.html')
+ today_date = time.strftime("%d/%m/%Y")
+ all_data = None
+ len_all_data = 0
+ # open absensi file
+ with open(absensi, 'r') as f:
+ data = json.load(f)
+ len_data = len(data)
+
+ # if data is not empty
+ if len_data > 0:
+ # get the last data
+ last_data = data[len_data - 1]
+ # check if "date" is today
+ if last_data['date'] == today_date:
+ # get all the "absensi" data
+ all_data = last_data['absensi']
+ # get the length of the "absensi" data
+ len_all_data = len(all_data)
+
+
+
+
+ return render_template('index.html', data=all_data, length=len_all_data, today_date=today_date)
+
+@app.route('/cek_absensi')
+def cek_absensi():
+ today_date = time.strftime("%d/%m/%Y")
+ all_data = None
+ len_all_data = 0
+ # open absensi file
+ with open(absensi, 'r') as f:
+ data = json.load(f)
+ len_data = len(data)
+
+ # if data is not empty
+ if len_data > 0:
+ # get the last data
+ last_data = data[len_data - 1]
+ # check if "date" is today
+ if last_data['date'] == today_date:
+ # get all the "absensi" data
+ all_data = last_data['absensi']
+ # get the length of the "absensi" data
+ len_all_data = len(all_data)
+
+
+
+
+ return render_template('index2.html', data=all_data, length=len_all_data, today_date=today_date)
@app.route('/scan_face')
def scan_face():
diff --git a/main.py b/main.py
index 322c9ed..c09f911 100755
--- a/main.py
+++ b/main.py
@@ -5,6 +5,16 @@ import numpy as np
import math
import sys
import time
+import json
+from datetime import datetime
+
+absensi_file = "absensi.json"
+
+today_date = time.strftime("%d/%m/%Y")
+
+# open the dataset file
+with open(absensi_file, 'r') as f:
+ data = json.load(f)
def face_confidence(face_distance, face_match_threshold=0.6):
range = (1.0 - face_match_threshold)
@@ -49,7 +59,7 @@ class FaceRecognition:
sys.exit('Video capture is not opened')
no_face_timer = 0
- no_face_threshold = 2 # Adjust this to your desired timeout in seconds
+ no_face_threshold = 5 # Adjust this to your desired timeout in seconds
while True:
ret, frame = video_capture.read()
@@ -86,6 +96,118 @@ class FaceRecognition:
if float(confidence.split("%")[0]) > 55:
name = self.known_face_names[best_match_index]
confidence = face_confidence(face_distances[best_match_index])
+
+
+ time_now = time.strftime("%H:%M:%S")
+ current_time = datetime.strptime(time.strftime("%H:%M:%S"), "%H:%M:%S")
+
+ print('this is the time now: ', time_now)
+ print('this is the current time: ', current_time)
+
+ compare_time = datetime.strptime("12:00:00", "%H:%M:%S")
+
+ print('this is the compare time: ', compare_time)
+
+ # check the last data to see if today's date is already there
+ if len(data) > 0:
+ last_data = data[-1]
+ else:
+ last_data = None
+
+ if last_data:
+ if last_data["date"] == today_date:
+ # loop through the "absensi" key to see if the name is already there
+ data_absensi = last_data["absensi"]
+ name_found = False
+
+ for absensi in data_absensi:
+ if absensi["name"] == name:
+ name_found = True
+ break
+
+ if not name_found:
+ # add new data
+ # if time_now > "12:00:00": then add the "jam_keluar" key
+
+ if current_time > compare_time:
+ data_absensi.append({
+ "name": name,
+ "jam_masuk": time_now,
+ "jam_keluar": time_now,
+ })
+ else:
+ data_absensi.append({
+ "name": name,
+ "jam_masuk": time_now,
+ })
+
+
+ # else update the data and change the "jam_keluar" key
+ else:
+ for absensi in data_absensi:
+ if absensi["name"] == name:
+
+ if current_time > compare_time:
+ absensi["jam_keluar"] = time_now
+ # else do nothing
+ else:
+ pass
+
+
+ break
+
+ else:
+ # create new data
+ if current_time > compare_time:
+ data.append({
+ "date": today_date,
+ "absensi": [
+ {
+ "name": name,
+ "jam_masuk": time_now,
+ "jam_keluar": time_now,
+ }
+ ]
+ })
+ else:
+ data.append({
+ "date": today_date,
+ "absensi": [
+ {
+ "name": name,
+ "jam_masuk": time_now,
+ }
+ ]
+ })
+ else:
+ # create new data
+ if current_time > compare_time:
+ data.append({
+ "date": today_date,
+ "absensi": [
+ {
+ "name": name,
+ "jam_masuk": time_now,
+ "jam_keluar": time_now,
+ }
+ ]
+ })
+ else:
+ data.append({
+ "date": today_date,
+ "absensi": [
+ {
+ "name": name,
+ "jam_masuk": time_now,
+ }
+ ]
+ })
+
+
+ # write the data to the file
+ with open(absensi_file, 'w') as f:
+ json.dump(data, f, indent=4)
+
else:
name = "Unknown"
confidence = 'Unknown'
diff --git a/templates/index.html b/templates/index.html
index 900f96b..94518ce 100755
--- a/templates/index.html
+++ b/templates/index.html
@@ -24,6 +24,8 @@
+
+
@@ -51,15 +53,17 @@
-
-
-
Tambah Data Karyawan
+
+
Tambah Data Karyawan
@@ -67,7 +71,57 @@
+
+
+
+
+
+
Tanggal : {{today_date}}
+
+
+
+
+ Nama |
+ Jam Masuk |
+ Jam Keluar |
+
+
+
+
+ {%if data %}
+
+ {% for i in range(0, length) %}
+
+
+ {{data[i]['name']}} |
+
+ {% if data[i]['jam_keluar'] %}
+ {{data[i]['jam_masuk']}} |
+ {{data[i]['jam_keluar']}} |
+ {% else %}
+ {{data[i]['jam_masuk']}} |
+ - |
+ {% endif %}
+
+ {% endfor %}
+ {% else %}
+
+ Tidak ada data |
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
@@ -100,6 +154,10 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+