6.8 KiB
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)
cronutil
Description: Control wrapper for the schedule package
Dependencies: Python 3 (tested version 3.9.5)
Scheduler works only on a weekly scale. This is due to the use of the schedule package .
Target format: wD:HH:MM:SS, where:
wD - day of week unit: '1'
, '2'
, ... , '6'
, '7'
, '*'
HH - hour unit in 24-hours format: '00'
, '01'
, ... , '22'
, '23'
, '**'
MM - minute unit: '00'
, '01'
, ... , '58'
, '59'
, '**'
SS - second unit: '00'
, '01'
, ... , '58'
, '59'
, '**'
Units can be listed separated by commas.
Examples:
'*:**:**:**'
- every second of every minute of every hour of every day
'*:**:**:*5'
- every 05,15,25,35,45,55 seconds of every minute of every hour of every day
'*:2*:**:**'
- every second of every minute of every 20,21,22,23 hours of every day
'*:2*:**:*5'
- every 05,15,25,35,45,55 seconds of every minute of every 20,21,22,23 hours of every day
'3,5:2*:**:*5'
- every 05,15,25,35,45,55 seconds every minute every 20,21,22,23 hours of Wednesday, Friday
'1,7:12:00:**'
- every second 00 minutes 12 hours of Monday, Sunday
'1:07:00:00'
- every 00 seconds 00 minutes 07 hours Monday
Example usage in Python:
from time import strftime
from cronutil import Scheduler
def now():
print(strftime('%Y.%m.%d %H:%M:%S'))
cron = Scheduler()
cron.add('2,4:**:*0:00,15,30,45', now)
cron.add('2,4:**:59:59', cron.stop)
cron.start()
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)