Go to file
2021-06-23 01:10:06 +03:00
camsutil add camsutil 2021-06-23 01:10:06 +03:00
.gitignore Initial commit 2021-06-14 08:50:35 +03:00
ffmpeger.py srchproc.py rename to procutil.py 2021-06-21 00:05:04 +03:00
LICENSE Initial commit 2021-06-14 08:50:35 +03:00
procutil.py srchproc.py rename to procutil.py 2021-06-21 00:05:04 +03:00
README.md add camsutil 2021-06-23 01:10:06 +03:00
sendmail.py change @staticmethod to @classmethod 2021-06-17 07:32:58 +03:00

utils


camsutil

Description: Creation of a request to the camera API based on the prepared template
Dependencies: Python 3 (tested version 3.9.5)

PARAMETERS DESCRIPTION DEFAULT
--host hostname or ip address REQUIRED
--user valid user REQUIRED
--password valid password REQUIRED
--template the name of an existing template REQUIRED
[-h] print help and exit
[--protocol] http, https, etc. http
[--port] port number 80
[--channel] ptz channel number 101
[--vid] video channel id 1
[--x] horizontal positioning: azimuth, pan 0
[--y] vertical positioning: elevation, tilt 0
[--z] zoom direction, absolute zoom 0
[--speed] positioning speed: from 1 to 7 1
[--time] momentary duration, max 100000ms 100000
[--text] overlay text content None
[--enabled] enabled (true) or disabled (false) overlay text true

Example usage in terminal with Python:

python3 ./ptz.py --host HOST --user USER --password PASS --template Hikvision_GetCapabilities.html

Example usage in terminal with make the script executable:

chmod u+x ./ptz.py
ptz.py --host HOST --user USER --password PASS --template Hikvision_PtzPreset.html --vid 2 --speed 5

Example usage in Python:

from camsutil import ptz

data = ptz.API(host='HOST', user='USER', password='PASS', template='Hikvision_GetJPEG.html', x=1920, y=1080).call()
with open('img.jpg', 'wb') as output:
    output.write(data)

ffmpeger.py

Description: FFmpeg management from Python
Dependencies: Python 3 (tested version 3.9.5), installed or downloaded ffmpeg, procutil.py in the same directory

PARAMETERS DESCRIPTION DEFAULT
-s, --src sources urls REQUIRED
[-h] print help and exit
[--preset] 240p, 360p, 480p, 720p, 1080p, 1440p, 2160p None
[--fps] frame per second encoding output None
[--dst] destination url None
[--ffpath] alternative path to bin None
[--watchdog] detect ffmpeg freeze and terminate
[--sec] seconds to wait before the watchdog terminates 15
[--mono] detect ffmpeg running copy and terminate

Example usage in cron with Python:

* * * * * /usr/bin/python3 ~/ffmpeger.py -s rtsp://user:pass@host:554/Streaming/Channels/101 --dst rtmp://a.rtmp.youtube.com/live2/YOUKEY --mono --watchdog --sec 30 >> /dev/null 2>&1

Example usage in terminal with make the script executable:

chmod u+x ./ffmpeger.py
ffmpeger.py -s rtsp://user:pass@host:554/Streaming/Channels/101 --dst rtp://239.0.0.1:5554

Example usage in Python:

from ffmpeger import FFmpeg

FFmpeg.run(src='null, anull', preset='240p', fps=10)

procutil.py

Description: Find a running process from Python
Dependencies: Python 3 (tested version 3.9.5)

PARAMETERS DESCRIPTION DEFAULT
[-h] print help and exit
[--find] find process pid, name or arguments
[--exclude] exclude process pid, name or arguments None
[--self] find a clones of self True
[--kill] kill the process with pid

Example usage in terminal with Python for find all running processes:

python3 ./procutil.py

Example usage in terminal with make the script executable for find all specified processes:

chmod u+x ./procutil.py
./procutil.py --find ssh --exclude sftp

Example usage in Python for find a clones of self:

from os import getpid
from sys import argv
from procutil import Proc

processes = Proc.search(' '.join(argv), str(getpid()))
if processes:
    for process in processes:
        print(process)

sendmail.py

Description: Sending email from Python
Dependencies: Python 3 (tested version 3.9.5)

PARAMETERS DESCRIPTION DEFAULT
-u, --user smtp valid user REQUIRED
-p, --pass smtp valid password REQUIRED
-d, --dest destination addresses REQUIRED
[-h] print help and exit
[--smtp] smtp hostname or ip address smtp.gmail.com
[--port] smtp port number 587
[--stls] smtp required TLS True
[--from] mail from alias --user value
[--subj] mail subject 'no subject'
[--text] mail body text 'no text'
[--type] mail body type: plain, html plain
[--file] mail attachment files None

Example usage in terminal with Python:

python3 ./sendmail.py -u user@gmail.com -p pass -d addr1@gmail.com,addr2@gmail.com

Example usage in terminal with make the script executable:

chmod u+x ./sendmail.py
./sendmail.py -u user@gmail.com -p pass -d addr1@gmail.com,addr2@gmail.com

Example usage in Python:

from sendmail import Mail

msg = Mail(smtp_user='user@gmail.com', smtp_pass='pass', mail_dest='addr1@gmail.com,addr2@gmail.com')
log = msg.send()
print(log)