播出回传节目批量重命名软件开发

2020-05-21 01:58杨超
视听 2020年5期
关键词:媒资表单文件夹

□ 杨超

广西广播电视台于2018年对播出系统进行文件化送播改造后,改变了传统的节目送播方式。原来是从媒资系统中通过安全网关将节目传给播出系统,改造后的播出系统优先上载文件化节目,所有节目直接进入播出系统,然后回传给媒资系统保存。这两个相互独立的系统一般可以通过两种方式进行节目交换,一是通过安全网关传输,二是移动介质交换。后者需要人工介入,因为人力成本较高,所以一般不采用。广西广播电视台利用安全网关进行播出系统和媒资系统之间的节目传递。

一般在电视台的内部系统的操作界面中,可以看到节目名称。但在后台,真正的实体文件其实都有内部的系统命名方式,通常为一串数字和字母的组合,这个名称叫做“节目ID”。广西广播电视台播出系统的上载系统进行文件化上载改造后,系统会在节目上传到播出二级缓冲和播出服务器后,将节目通过迁移策略拷贝到安全网关的源路径下,然后媒资系统将节目通过安全网关回传到媒资系统进行编目保存。这里就出现了一个问题:播出系统回传给媒资系统的节目是按照播出系统中的节目ID来命名的,那么媒资系统如何识别这个节目ID呢?

本文针对这次播出系统改造后引发的新问题进行探究。

一、问题分析

在不做紧密耦合系统接口的前提下,可以通过安全网关来识别节目ID,但是安全网关的厂家难以提供这样的技术改造服务,最终我们选择通过安全网关传输保存节目ID和正常节目名称的表单。这个表单是通过播出系统的数据库保存的,以XLS的形式传递给媒资系统。图1就是安全网关从播出系统中传输回来的XLS表单。

图1

如此一来,我们的工作目标就清晰了。例如,我们并不知道4JD3DA26.mxf的节目名称,根据上面的表单可查找到对应的名称是“《超级点子王》3月6日(高清)”,我们把这个节目名字复制下来,在Windows资源管理器中重命名4JD3DA26.mxf这个文件,把刚才复制下来的节目名称赋予这条节目,然后将这个文件移动到一个叫做20200307(当天日期)的文件夹中。到这里,我们的工作就完成了,后续仅需要媒资系统对这条节目进行入库操作即可。

上面的操作只解决了一条节目,但每天需要处理大量条目。如果全靠手工,工作量巨大,因此我们专门设计开发了一款能够完美解决这个问题的Windows程序,将这些以节目ID命名的节目重新命名为具体的节目名。

二、主要思路

(一)通过Windows的API函数调用打开XLS表格,取得里面的数据。

(二)定义一个循环,每一次循环,将更改一个文件的名称,循环的总数量为打开的表单的节目数。

(三)定义两个数组,MyArray1和MyArray2分别用于存放节目ID和节目名称。

(四)新建一个以当天日期命名的文件夹,将此文件夹路径保存为零时变量Path,然后根据MyArray1中的节目ID判断素材文件的状态,如果存在,则调用Name函数重新命名这个素材文件:Name name1 As name2。

三、软件开发过程

(一)用vb建立EXE工程,设计软件节目。这一软件比较简单,我们在主窗体上添加一个“打开表格”的按钮和一个软件功能使用说明文本框。见图2。

图2

(二)主程序代码

Private Sub Command1_Click() Dim ofn As OPENFILENAME Dim rtn As String

ofn.lStructSize=Len(ofn) ofn.hwndOwner=Me.hWnd ofn.hInstance=App.hInstance

ofn.lpstrFilter="文件类型(*.*)"&Chr(0)&"*.*"&Chr(0)

ofn.lpstrFile=Space(254) ofn.nMaxFile=255 ofn.lpstrFileTitle=Space(254)

ofn.nMaxFileTitle = 255 ofn.lpstrInitialDir = App.Path ofn.lpstrTitle="打开文件"

ofn.flags=6148 rtn=GetOpenFileName(ofn)If rtn>=1 Then

Workbooks.Open(ofn.lpstrFile)

Dim MyArray1() As String Dim MyArray2() As String Dim iNum As Integer

iNum = Workbooks(ofn.lpstrFile).Sheets(Worksheets(1).Name).[A65536].End(xlUp).Row

ReDim Preserve MyArray1(iNum) As String ReDim Preserve MyArray2(iNum)As String

For i=2 To iNum

MyArray1(i-1) = Workbooks(ofn.lpstrFile).Sheets(Worksheets(1).Name).Range("C"&i).Value

MyArray2(i-1) = Workbooks(ofn.lpstrFile).Sheets(Worksheets(1).Name).Range("D"&i).Value

Next i Dim Path As String Dim my_path As String d=Format(Now(),"yyyymmdd")

Path="W:播出回传目录传出" my_path=Path

MkDir Path&d Path=Path&d&"" MsgBox Path-Dim name1 As String Dim name2 As String

Set fso=CreateObject("Scripting.Filesystemobject")

For i=2 To iNum name1=my_path&MyArray1(i-1)& ".mxf" name2 = Path & MyArray2(i-1) & ".mxf" If fso.FileExists(name1)Then Name name1 As name2

Workbooks(ofn.lpstrFile).Sheets(Worksheets(1).Name).Range("E"&i).Value="已改名"

Else Workbooks(ofn.lpstrFile).Sheets(Worksheets(1).Name).Range("E"&i).Value="文件不存在"

End If Next i Else MsgBox"Cancel Was Pressed" End If End Sub

四、软件效果

经过调试,最终的软件界面如图3。

图3

运行软件后,将把此根目录下以节目ID命名的MXF节目重新命名为表单中的节目名称,然后新建当天日期文件夹,将改名后的节目移动到该文件夹中。

这次开发完全是自主进行的软件开发,成本为零,解决了我们工作中遇到的问题,同时锻炼了我们的技术创新能力,收获非常大。

猜你喜欢
媒资表单文件夹
浅谈新时期广电行业媒资档案的管理与开发
全媒体时代的版权媒资管理探析
电子表单系统应用分析
内蒙古广播电视台IPTV媒资补全系统简述
Fast Folders,让你的文件夹四通八达
基于图表示和匹配的表单定位与提取
浅谈网页制作中表单的教学
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
不容忽视的空文件夹