Commit c4ce8556 authored by zhangxiaojuan's avatar zhangxiaojuan

信息发布客户端代码

parent 16426571
#!/usr/bin/python
#coding=utf-8
import json
import os
import requests
import AnalyPtConf
import re
def ReadptConfig(li = []):
print('ReadptConfig......')
filename = "/home/loongson/InfoPublish/config.json"
with open(filename, 'r', encoding='utf-8') as file:
data = json.load(file)
status = AnalyPtConf.analycfg(data, li)
return status
def WriteptConfig():
print('WriteptConfig......')
headers = {'Content-Type':'application/json;charset = utf-8'}
data = {
"sn":"LXRWA00B",
"mac":"28-D2-44-08-55-13"
}
datas = json.dumps(data)
url = "http://192.168.1.11:8086/index.php/api/program/ptconfig"
ret = requests.post(url, data = datas, headers = headers)
if ret is not None:
json_obj1 = ret.json()
tmp = ret.text
jsonobj = json.loads(tmp)
confstr = json.dumps(tmp, ensure_ascii=False)
#analyjson(json_obj1)
linklist = get_Allurl(confstr)
#print(linklist)
Load_Resources(linklist)
with open('./config.json', 'w', encoding='utf-8') as f:
f.write(confstr)
f.close()
else:
print("config is null")
# traversing the json data
def analyjson(json_obj):
for key,value in json_obj.items():
if isinstance(value, list):
for val in value:
#print(val)
analyjson(val)
elif isinstance(value, dict):
analyjson(value)
else:
print(key, '===', value)
#return 'ok'
def get_target_value(key, dic, tmp_list):
if not isinstance(dic, dict) or not isinstance (tmp_list, list):
return 'argv[1] not an dict or argv[-1] not an list'
if key in dic.keys():
tmp_list.append(dic[key])
for value in dic.values():
if isinstance(value, dict):
get_target_value(key, value, tmp_list)
elif isinstance(value, (list, tuple)):
_get_value(key, value, tmp_list)
return tmp_list
def _get_value(key, val, tmp_list):
for val_ in val:
if isinstance(val_, dict):
get_target_value(key, val_, tmp_list)
elif isinstance(val_, (list, tuple)):
_get_value(key, val_, tmp_list)
# by url get data
def Load_Resources(urllist):
print('Load_Reaources......')
filepath = '/home/loongson/InfoPublish/resources/'
for url in urllist:
print(url)
filename = os.path.basename(url)
file = filepath + filename
page = requests.get(url)
page0 = page.content
# bytes change string
#page = page.decode('utf-8')
with open(file, 'wb') as f:
f.write(page0)
#return page
def get_Allurl(json_str):
print("get_Allurl......")
links = re.findall(r'((?:http://(?:(?:\d{1,3}\.){3}\d{1,3}:\d{4}))?[/\w+]+/\w+.(?:png|mp4|jpg))', json_str)
return links
#if __name__ == '__main__':
#urllist = ['i_url', 'adjkdkasdw', 'ksdoiwbbkihd', 'iew83h8fhefjeie']
#get_page(urllist)
#WriteptConfig()
#ReadptConfig()
#!/usr/bin/python
#coding=utf-8
import json
import os
import requests
import AnalyPtConf
import re
def ReadptConfig():
print('ReadptConfig')
filename = "/home/loongson/InfoPublish/config.json"
with open(filename, 'r', encoding='utf-8') as file:
data = json.load(file)
status = AnalyPtConf.analycfg(data)
return status
def WriteptConfig():
print('WriteptConfig')
headers = {'Content-Type':'application/json;charset = utf-8'}
data = {
"sn":"LXRWA00B",
"mac":"28-D2-44-08-55-13",
"pt_ids":"19"
}
datas = json.dumps(data)
url = "http://192.168.1.11:8086/index.php/api/program/ptconfig"
ret = requests.post(url, data = datas, headers = headers)
if ret is not None:
json_obj1 = ret.json()
tmp = ret.text
jsonobj = json.loads(tmp)
confstr = json.dumps(tmp, ensure_ascii=False)
#analyjson(json_obj1)
#print(tmp)
#urllist = get_target_value('i_url', json_obj1, [])
linklist = get_Allurl(confstr)
print(linklist)
#get_page(linklist)
#print(a)
with open('./config.json', 'w', encoding='utf-8') as f:
f.write(confstr)
else:
print("config is null")
# traversing the json data
def analyjson(json_obj):
for key,value in json_obj.items():
if isinstance(value, list):
for val in value:
#print(val)
analyjson(val)
elif isinstance(value, dict):
analyjson(value)
else:
print(key, '===', value)
#return 'ok'
def get_target_value(key, dic, tmp_list):
if not isinstance(dic, dict) or not isinstance (tmp_list, list):
return 'argv[1] not an dict or argv[-1] not an list'
if key in dic.keys():
tmp_list.append(dic[key])
for value in dic.values():
if isinstance(value, dict):
get_target_value(key, value, tmp_list)
elif isinstance(value, (list, tuple)):
_get_value(key, value, tmp_list)
return tmp_list
def _get_value(key, val, tmp_list):
for val_ in val:
if isinstance(val_, dict):
get_target_value(key, val_, tmp_list)
elif isinstance(val_, (list, tuple)):
_get_value(key, val_, tmp_list)
# by url get data
def Load_Resources(urllist):
print('Load_Resources')
for url in urllist:
print(url)
filepath = '/home/loongson/InfoPublish/resources/'
filename = os.path.basename(url)
file = filepath + filename
page = requests.get(url).content
#page = page.content
# bytes change string
#page = page.decode('utf-8')
with open(file, 'wb') as f:
f.write(page)
#return page
def get_Allurl(json_str):
print("get_Allurl")
links = re.findall(r'((?:http://192.168.2.2:8086)?[/\w+]+/\w+.(?:png|mp4|jpg))', json_str)
#print(links)
for i in links:
print(i)
return links
if __name__ == '__main__':
urllist = ['i_url', 'adjkdkasdw', 'ksdoiwbbkihd', 'iew83h8fhefjeie']
get_page(urllist)
#WriteptConfig()
#ReadptConfig()
This diff is collapsed.
#!/usr/bin/python
import tkinter
from tkinter.messagebox import showinfo,showwarning
from tkinter import *
from PIL import Image, ImageTk
#class Formclass:
#def __init__(self):
#pass
def get_image(filename, width, height):
im = Image.open(filename).resize((width, height))
return ImageTk.PhotoImage(im)
def Tkinter():
root = Tk()
root.title('streaming media player')
root.geometry('960x1280')
#photo = PhotoImage(file = './begin.gif')
cv = Canvas(root, width = 960, height = 1280)
im_root = get_image('begin.jpg', 960, 1280)
cv.create_image(480, 640, image = im_root)
region = (200, 120, 500, 300)
im = Image.open('begin.jpg')
cropped = im.crop(region)
tk_im = ImageTk.PhotoImage(cropped)
lab1 = Label(root, image=tk_im, highlightthickness=0, borderwidth=0, padx=0,
pady=0, text = 'this is my first object')
lab1.place(x = 200, y = 120)
cv.pack()
root.mainloop()
# add a image
def DrawImage(self, imagepath, imgwidth, imgheight):
img = PhotoImage(file = imagepath)
cv.create_image(imgwidth, imgheight, anchor = NW, image = img)
def DrawLable(self, txtwidth, txtheight, texts):
#cv.create_text(txtwidth, txtheight, txt =text)
txt = Lable(cv, text = texts, fg = 'red', image = img,
font = ('aaa', 18, bold), )
if __name__== '__main__':
#root = Tk()
#root.title('streaming media player')
#root.geometry('960x1280')
#anobject = Formclass()
#anobject.Tkinter(800, 1000)
Tkinter()
#root.mainloop()
#!/usr/bin/python
import os
import sys
from PyQt5 import QtGui, QtWidgets, QtCore
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette, QBrush, QPixmap, QImage, QFont, QColor
import subprocess
import AnalyCfg
import AnalyPtConf
class MyWidget(QtWidgets.QWidget):
def __init__(self, ProgramStruct, parent=None):
super(MyWidget, self).__init__(parent)
self.MyProgram = ProgramStruct
#self.setWindowFlags(Qt.FramelessWindowHint)
#self.resize(1024, 768)
#self.showMaximized()
self.drawn(self.MyProgram)
def initUI(self):
#self.setGeometry(300, 300, 300, 300)
self.setWindowIcon(QIcon('1.png'))
self.setWindowFlages(Qt.FramelessWindowHint)
def drawn(self, ProgramStruct):
print(ProgramStruct.width)
print(ProgramStruct.height)
self.desktop = QtWidgets.QApplication.desktop()
self.screenRect = self.desktop.screenGeometry()
# get screen size
#self.width = self.screenRect.width()
#self.width = self.geometry().width()
self.resize(int(ProgramStruct.width), int(ProgramStruct.height))
self.setAutoFillBackground(True)
def setAttribute(self, SceneStruct):
ResourcesPath = '/home/loongson/InfoPublish/resources/'
if SceneStruct is not None:
self.palette = QPalette()
if (SceneStruct.background_image is not None) or ((SceneStruct.background_image is not None)and(SceneStruct.background_color is not None)):
ResourcesName = os.path.basename(SceneStruct.background_image)
backgroundimage = ResourcesPath + ResourcesName
self.palette.setBrush(QPalette.Background,
QBrush(QPixmap
('/home/loongson/InfoPublish/bg.jpg').scaled
(int(ProgramStruct.width), int(ProgramStruct.height),
Qt.IgnoreAspectRatio)))
if SceneStruct.background_color is not None:
#color = int(SceneStruct.background_color.lstrip('#'), 16)
#hex_color = hex(color)
col = QColor(0, 0, 0)
col.setNamedColor(SceneStruct.background_color)
self.palette.setColor(QPalette.Background, col) #QColor(205,115,154,0) | 0xff00ff
self.setPalette(self.palette)
class MyText(QtWidgets.QWidget):
def __init__(self, FatherForm, ControlStruct):
super().__init__()
self.MyControl = ControlStruct
self.MyForm = FatherForm
self.initUI(self.MyControl, self.MyForm)
def initUI(self, ControlStruct, FatherForm):
if ControlStruct is not None:
font = QFont()
#print(ControlStruct.xpos)
#FatherForm.labeltxt = QtWidgets.QLabel(ControlStruct.font_content)
LblText = QtWidgets.QLabel(FatherForm)
LblText.setText(ControlStruct.font_content)
LblText.setWordWrap(True)
LblText.setGeometry(int(float(ControlStruct.xpos)), int(float(ControlStruct.ypos)),
int(float(ControlStruct.width)), int(float(ControlStruct.height)))
if ControlStruct.align == "left":
LblText.setAlignment(QtCore.Qt.AlignLeft)
elif ControlStruct.align == "right":
LblText.setAlignment(QtCore.Qt.AlignRight)
elif ControlStruct.align == "middle":
LblText.setAlignment(QtCore.Qt.AlignCenter)
if ControlStruct.font_style == "bold":
font.setBold(True) # jia cu
elif ControlStruct.font_style == "underline":
font.setUnderLine(True) # she zhi xiahuaxian
elif ControlStruct.font_style == "italic":
font.setItalic(True) # xie ti
elif ControlStruct.font_style == "bold,underline" or ControlStruct.font_style == "underline,bold":
font.setUnderLine(True) # she zhi xiahuaxian
font.setBold(True) # jia cu
elif ControlStruct.font_style == "bold,italic" or ControlStruct.font_style == "italic,bold":
font.setItalic(True) # xie ti
font.setBold(True) # jia cu
elif ControlStruct.font_style == "underline,italic" or ControlStruct.font_style == "italic,underline":
font.setItalic(True) # xie ti
font.setUnderLine(True) # she zhi xiahuaxian
elif ControlStruct.font_style == "bold,underline,italic" or ControlStruct.font_style == "bold,italic,underline" or ControlStruct.font_style == "underline,bold,italic" or ControlStruct.font_style == "underline,italic,bold" or ControlStruct.font_style == "italic,bold,underline" or ControlStruct.font_style == "italic,underline,bold":
font.setBold(True)
font.setItalic(True)
font.setUnderLine(True)
#font.setFamily(ControlStruct.font_family)
LblText.setFont(font)
#FatherForm.labeltxt.setStyleSheet("color:rgb(225, 22, 173, 255)")
LblText.setStyleSheet("font_size:"+ControlStruct.font_size)
if ControlStruct.font_color is not None:
LblText.setStyleSheet("color:"+ControlStruct.font_color)
if ControlStruct.background_transparent == "1":
LblText.setStyleSheet("background:transparent")
#self.labeltxt.setScaledContents(False)
#FatherForm.layout = QtWidgets.QVBoxLayout()
#FatherForm.layout.addWidget(LblText)
#FatherForm.setLayout(FatherForm.layout)
else:
print('ControlStruct is null')
class MyImage(QtWidgets.QWidget):
def __init__(self, FatherForm, ControlStruct):
super().__init__()
self.MyControl = ControlStruct
self.MyForm = FatherForm
self.initUI(self.MyControl, self.MyForm)
def initUI(self, ControlStruct, FatherForm):
lblimg = QtWidgets.QLabel(FatherForm)
lblimg.setGeometry(int(ControlStruct.xpos), int(ControlStruct.ypos),
int(ControlStruct.width), int(ControlStruct.height))
filename = os.path.basename(ControlStruct.i_url)
loadaddr = "/home/loongson/InfoPublish/resources/" + filename
print(ControlStruct.i_id)
#pix = QPixmap('/home/loongson/InfoPublish/1.jpg')
pix = QPixmap(loadaddr)
print(loadaddr)
lblimg.setPixmap(pix)
lblimg.setScaledContents(True)
FatherForm.layout1 = QtWidgets.QVBoxLayout()
FatherForm.layout1.addWidget(lblimg)
FatherForm.setLayout(FatherForm.layout1)
def ChangeImage(self, ):
filename = os.path.basename(i_url)
class MyVideo(QtWidgets.QWidget):
def __init__(self, ControlStruct):
super().__init__()
self.MyControl = ControlStruct
self.PlayerMovie(self.MyControl)
def PlayerMovie(self, ControlStruct):
VideoPath = '/home/loongson/InfoPublish/resources/'
VideoName = os.path.basename(ControlStruct.i_url)
VideoFile = VideoPath + VideoName
print('Videoname : ', VideoName)
print(ControlStruct.i_id)
program = "mplayer -noborder -geometry "+str(ControlStruct.xpos)+":"+str(ControlStruct.ypos)+" -zoom -x "+str(ControlStruct.width)+" -y "+str(ControlStruct.height)+" -ontop "+VideoFile+" </dev/null > /dev/null 2>1&"
#result = subprocess.Popen("mplayer -noborder -geometry 362:47 -zoom -x 280 -y 260 -ontop iqy.mp4 </dev/null > /dev/null 2>1&",
#shell=True,
#stdout=subprocess.PIPE)
result = subprocess.Popen(program, shell=True, stdout=subprocess.PIPE)
print(program)
if(result.poll == 0):
print("succes")
#result.communicate(input = "pause\n")
#result.suspend()
else:
print("fail")
class MyWeather(QtWidgets.QWidget):
def __init__(self, ControlStruct):
super().__init__()
self.MyControlStruct = ControlStruct
self.initUI(self.MyControlStruct)
def initUI(self, ControlStruct):
pix = QPixmap('/home/loongson/InfoPublish/1.jpg')
lblimg = QtWidgets.QLabel(self)
lblimg.setGeometry(x, y, w, h)
lblimg.setPixmap(pix)
lblimg.setScaledContents(True)
self.layout1 = QtWidgets.QVBoxLayout()
self.layout1.addWidget(lblimg)
self.setLayout(self.layout1)
class MyDateTime(QtWidgets.QWidget):
def __init__(self, ControlStruct):
super(DateTimeEditDemo, self).__init__()
self.MyControl = ControlStruct
self.initUI(self.MyControl)
def initUI(self, ControlStruct):
self.setWindowTitle('QDateTimeEdit example')
self.resize(300, 90)
vlayout = QVBoxLayout()
dateTimeEdit = QDateTimeEdit(QdateTime.currentDateTime(), self)
dateTimeEdit.setDisplayFormat('yyyy/MM/dd HH:mm:ss')
vlayout.addWidget(dateTimeEdit)
self.setLayout(vlayout)
if __name__ == '__main__':
# create a QApplication
app = QtWidgets.QApplication(sys.argv)
result = AnalyCfg.ReadptConfig()
print(result)
#print(AnalyPtConf.ControlStruct.xpos)
if result == True:
#mainwindow = QMainwindow()
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
#!/usr/bin/python
#coding=utf-8
import requests
import json
import os
import time
import AnalyCfg
import threading
if __name__ == '__main__':
Programlist = []
Programdict = {}
AnalyCfg.WriteptConfig()
AnalyCfg.ReadptConfig(Programlist)
#t = threading.Thread(target = HeartWork)
#t = threading.Thread(target=HeartWork, args=(threading.current_thread(),),name="aaa") )
#t.start()
#!/usr/bin/python3
import requests
import json
import os
headers = {'Content-Type':'application/json;charset = utf-8'}
data = {
"sn":"LXRWA00B",
"mac":"28-D2-44-08-55-13",
"pt_ids":"1"
}
datas = json.dumps(data)
url = "http://192.168.1.11:8086/index.php/api/program/ptconfig"
ret = requests.post(url, data = datas, headers = headers)
a = ret.text
str = json.dumps(a)
#str = ret.encode()
print(str)
with open('./config.json', 'w') as f:
f.write(str)
#!/usr/bin/python3
import requests
import json
import os
import time
import AnalyCfg
while True:
headers = {'Content-Type':'application/json;charset = utf-8'}
Heartdata = {
"sn":"LXRWA00B",
"mac":"28-D2-44-08-55-13",
"ip":"192.168.1.11",
"version":"V1.2.1",
"os":"linux-lx"
}
datas = json.dumps(Heartdata)
url = "http://192.168.1.11:8086/index.php/api/base/heartbeat"
ret = requests.post(url, data = datas, headers = headers)
a = ret.text
recvstr = json.dumps(a)
json_obj = json.loads(a)
print(recvstr)
ckarr = []
cmdarr = []
if json_obj.get('code') == 0 and json_obj.get('data') is not None:
json_data = json_obj.get('data')
for i in range(len(json_data)):
#print(len(json_data))
if json_data[i].get('type') == 0:
tmpck0 = json_data[i].get('ck')
tmpcmd0 = json_data[i].get('cmd')
print(tmpck0)
print(tmpcmd0)
ckarr.append(tmpck0)
cmdarr.append(tmpcmd0)
elif json_data[i].get('type') == 1:
tmpck1 = json_data[i].get('ck')
tmpcmd1 = json_data[i].get('cmd')
ckarr.append(tmpck1)
cmdarr.append(tmpcmd1)
Heartdata["cks"] = ckarr
requests.post(url, data = json.dumps(Heartdata), headers = headers)
for item in cmdarr:
if item == 'reboot':
print('reboot')
elif item == 'shutdown':
print('shutdown')
elif item == 'power-on':
print('power-on')
elif item == 'program_table':
AnalyCfg.WriteptConfig()
print('Heartbeat packet analysis is complete')
else:
print('No such command')
#break;
else:
time.sleep(30)
{"code":0,
"msg":"成功",
"time":"1622688471",
"data":[
{
"pt_id":1,
"pt_name":"节目表名",
"mode":1,"week":"",
"update_time":"2021-06-01 10:36:44",
"date_period":[
{
"week":"1010101",
"start_date":"2021-06-01",
"end_date":"2021-06-30"
},
{
"week":"1111111",
"start_date":"2021-06-02",
"end_date":"2021-06-06"
}
],
"programs":[
{
"p_id":1,
"p_name":"节目名",
"start_time":"10:31:21",
"end_time":"18:31:24",
"width":"1000",
"height":"900",
"proportion":"16:9",
"update_time":"2021-06-01 11:38:00",
"scene":[
{
"s_id":1,
"background_color":"red",
"control":[
{
"c_id":1,
"type":0,
"xpos":"0.0",
"ypos":"1",
"zpos":0,
"width":"400",
"height":"300",
"update_time":"2021-06-01 15:20:59",
"special":{
"font_size":"14"
},
"material":[
{
"i_id":"26",
"i_url":"http:\/\/192.168.1.11:8086\
/uploads\/20210531\
/2c560e5e7be1b5f22f1f55
e043bca91e.png"
}
]}]}]}]}]}
#!/usr/bin/python3
import subprocess
def PlayerMovie(x, y, w, h):
program = "mplayer -noborder -geometry 50%:50% -zoom -x" + str(w) +"-y" + str(h) + "-ontop iqy.mp4 </dev/null > /dev/null 2>1&"
result = subprocess.Popen("mplayer -noborder -geometry 50%:50% -zoom -x 280 -y 260 -ontop iqy.mp4 </dev/null > /dev/null 2>1&",
shell=True,
stdout=subprocess.PIPE)
#result.wait(20)
if(result.poll == 0):
print("succes")
result.communicate(input = "pause\n")
result.suspend()
else:
print("fail")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment