Compare commits
3 Commits
c7fd1da457
...
22e024ab90
Author | SHA1 | Date | |
---|---|---|---|
22e024ab90 | |||
813b58a4b0 | |||
afcda27417 |
50
code/Python/ssl_expiry_datetime.py
Normal file
50
code/Python/ssl_expiry_datetime.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
"""
|
||||||
|
https://stackoverflow.com/questions/41620369/how-to-get-ssl-certificate-details-using-python
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import socket
|
||||||
|
import ssl
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
domains = [
|
||||||
|
'iiiypuk.me',
|
||||||
|
'a2s.su',
|
||||||
|
'ya.ru'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def ssl_expiry_datetime(hostname):
|
||||||
|
ssl_dateformat = r'%b %d %H:%M:%S %Y %Z'
|
||||||
|
|
||||||
|
context = ssl.create_default_context()
|
||||||
|
context.check_hostname = False
|
||||||
|
|
||||||
|
conn = context.wrap_socket(
|
||||||
|
socket.socket(socket.AF_INET),
|
||||||
|
server_hostname=hostname,
|
||||||
|
)
|
||||||
|
|
||||||
|
# 5 second timeout
|
||||||
|
conn.settimeout(5.0)
|
||||||
|
|
||||||
|
conn.connect((hostname, 443))
|
||||||
|
ssl_info = conn.getpeercert()
|
||||||
|
|
||||||
|
# Python datetime object
|
||||||
|
return datetime.datetime.strptime(ssl_info["notAfter"], ssl_dateformat)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
for value in domains:
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
try:
|
||||||
|
expire = ssl_expiry_datetime(value)
|
||||||
|
diff = expire - now
|
||||||
|
print(
|
||||||
|
"Domain name: {} Expiry Date: {} Expiry Day: {}".format(
|
||||||
|
value, expire.strftime("%Y-%m-%d"), diff.days
|
||||||
|
)
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
42
projects/CV/CapToRTMP/__main__.py
Normal file
42
projects/CV/CapToRTMP/__main__.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
import subprocess
|
||||||
|
import cv2
|
||||||
|
rtmp_url = "rtmp://127.0.0.1:1935/stream/pupils_trace"
|
||||||
|
|
||||||
|
# In my mac webcamera is 0, also you can set a video file name instead, for example "/home/user/demo.mp4"
|
||||||
|
path = 0
|
||||||
|
cap = cv2.VideoCapture(path)
|
||||||
|
|
||||||
|
# gather video info to ffmpeg
|
||||||
|
fps = int(cap.get(cv2.CAP_PROP_FPS))
|
||||||
|
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
|
||||||
|
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
||||||
|
|
||||||
|
# command and params for ffmpeg
|
||||||
|
command = ['ffmpeg',
|
||||||
|
'-y',
|
||||||
|
'-f', 'rawvideo',
|
||||||
|
'-vcodec', 'rawvideo',
|
||||||
|
'-pix_fmt', 'bgr24',
|
||||||
|
'-s', "{}x{}".format(width, height),
|
||||||
|
'-r', str(fps),
|
||||||
|
'-i', '-',
|
||||||
|
'-c:v', 'libx264',
|
||||||
|
'-pix_fmt', 'yuv420p',
|
||||||
|
'-preset', 'ultrafast',
|
||||||
|
'-f', 'flv',
|
||||||
|
rtmp_url]
|
||||||
|
|
||||||
|
# using subprocess and pipe to fetch frame data
|
||||||
|
p = subprocess.Popen(command, stdin=subprocess.PIPE)
|
||||||
|
|
||||||
|
|
||||||
|
while cap.isOpened():
|
||||||
|
ret, frame = cap.read()
|
||||||
|
if not ret:
|
||||||
|
print("frame read failed")
|
||||||
|
break
|
||||||
|
|
||||||
|
# YOUR CODE FOR PROCESSING FRAME HERE
|
||||||
|
|
||||||
|
# write to pipe
|
||||||
|
p.stdin.write(frame.tobytes())
|
@ -47,6 +47,5 @@ class SingleMotionDetector:
|
|||||||
(x, y, w, h) = cv2.boundingRect(c)
|
(x, y, w, h) = cv2.boundingRect(c)
|
||||||
(minX, minY) = (min(minX, x), min(minY, y))
|
(minX, minY) = (min(minX, x), min(minY, y))
|
||||||
(maxX, maxY) = (max(maxX, x + w), max(maxY, y + h))
|
(maxX, maxY) = (max(maxX, x + w), max(maxY, y + h))
|
||||||
# otherwise, return a tuple of the thresholded image along
|
# otherwise, return a tuple of the thresholded image along with bounding box
|
||||||
# with bounding box
|
|
||||||
return (thresh, (minX, minY, maxX, maxY))
|
return (thresh, (minX, minY, maxX, maxY))
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="video">
|
<div class="video">
|
||||||
<h1>OpenCV – Stream video to web browser/HTML page</h1>
|
<h1>OpenCV – Stream video to web browser/HTML page</h1>
|
||||||
<img class="video-frame" src="{{ url_for('video_feed') }}">
|
<img class="video-frame rounded" src="{{ url_for('video_feed') }}">
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user