#EXTM3U #EXT-X-MEDIA-SEQUENCE:6885 #EXT-X-TARGETDURATION:15 #EXT-X-ALLOW-CACHE:NO #EXT-X-PROGRAM-DATE-TIME:2012-10-27T11:02:08Z #EXTINF:13, /segment.ts?cid=f0ffd596-aaa6-4601-9432-70d717dd666a&var=orig&ts=1351335728.24-1351335741.20 #EXTINF:11, /segment.ts?cid=f0ffd596-aaa6-4601-9432-70d717dd666a&var=orig&ts=1351335741.20-1351335752.28 #EXTINF:11, /segment.ts?cid=f0ffd596-aaa6-4601-9432-70d717dd666a&var=orig&ts=1351335752.28-1351335763.40 #EXTINF:14, /segment.ts?cid=f0ffd596-aaa6-4601-9432-70d717dd666a&var=orig&ts=1351335763.40-1351335776.92 #EXTINF:11, /segment.ts?cid=f0ffd596-aaa6-4601-9432-70d717dd666a&var=orig&ts=1351335776.92-1351335788.36
# -*- coding: utf-8 -*- # vybory2012 (Proof of concept), yegorov-p import urllib import os from time import strftime, localtime, sleep import socket import threading # syslog, syslog_server='127.0.0.1' syslog_port=514 # , directory='dumps' # id , , cams=[ ['563-1', "f0ffd596-aaa6-4601-9432-70d717dd666a",["82.207.0.3","82.207.0.3","82.207.0.3"]] ] # LEVEL = { 'emerg': 0, 'alert':1, 'crit': 2, 'err': 3, 'warning': 4, 'notice': 5, 'info': 6, 'debug': 7 } #, . , =( def syslog(message, level=LEVEL['notice'], host=syslog_server, port=syslog_port): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) data = '<%d>%s' % (level + 24, message) sock.sendto(data, (host, port)) sock.close() # def cam_rip(num,hash,servers): syslog('Recording cam %s at %s'%(hash, num), level=LEVEL['info']) try: os.mkdir('./%s/%s'%(directory,num)) except: pass # while 1: try: server=servers[0] # page = urllib.urlopen("http://%s/variant.m3u8?cid=%s&var=orig"%(server,hash)).read() # , if '/segment' in page: for i in page.split('\n'): if '/segment' in i: filename=strftime("%d-%b-%H-%M-%S", localtime(int(i[-13:-3]))) f=open('./%s/%s/%s.ts'%(directory,num,filename),'wb') #syslog('Chunk %s saved'%(filename), level=LEVEL['notice']) f.write(urllib.urlopen("http://%s%s"%(server,i)).read()) f.close() else: # syslog('No signal!Rotating server on cam %s at %s'%(hash,num), level=LEVEL['err']) servers.append(servers[0]) del servers[0] sleep(60) except Exception,e: syslog('Error on cam %s: %s'%(hash,e), level=LEVEL['err']) servers.append(servers[0]) del servers[0] try: os.mkdir(directory) except: pass # for i in cams: threading.Thread(target=cam_rip, kwargs={"num": i[0],"hash": i[1],"servers": i[2]}).start() sleep(1) syslog('System started.', level=LEVEL['notice'])
Source: https://habr.com/ru/post/156417/
All Articles