<< Click to Display Table of Contents >> Navigation: Produits tiers > Intégration MusicMaster > La réconciliation > Côté Netia |
Après la diffusion, il peut y avoir des différences entre la programmation et la réalité de la diffusion. Des pas ont été sautés, d’autres ont été déplacés ou effacés.
Pour que les futures programmations soient plus juste en terme de respect des règles de programmation, il est nécessaire que MusicMaster soit avisé de la diffusion réelle.
C’est l’objet de la réconciliation.
La liste des pas joués dans les logiciels de diffusion Netia, est enregistrée dans la base de données. Il suffit d’extraire ces données quotidiennement, de les mettre en forme et de les fournir à MusicMaster sous la forme d’un fichier XML.
C’est Federall Service qui fait cela avec les paramètres indiqués dans le groupe "Exports config", option "Use Standard Export", partie "AsRun".
Ici, chaque jour à 10h10, on génère un export XML du jour précèdent.
On ne s’intéresse qu’à la musique au travers d’un filtre TYPE_ITEM=1 and TYPE1_ITEM=2
Il est possible d’appliquer une feuille de style XSL pour mettre en forme les données.
Les fichiers XML sont enregistrés dans le dossier :
\\RAD-SV-MED-02\MusicMaster\AsRun, et le fichier est nommé sous la forme AAAA-MM-JJ.xml
Ex : 2017-09-15.xml
$ASRUN_YEAR-$ASRUN_MONTH-$ASRUN_DAY permettent de définir la forme de la date.
MusicMaster a besoin d’un fichier par antenne. Un petit script permet de séparer les "AsRun" dans 2 fichiers terminés par le nom de l’antenne.
Ainsi les fichiers auront pour nom après transformation :
AAAA-MM-JJ_Antenne.xml
Ex : 2017-09-15_RNT.xml, 2017-09-19_92.5 FM.xml , etc
Le script start.cmd doit être lancé au démarrage de la machine et il tourne en boucle.
Start.cmd :
@echo off
set root=%~dp0
set root=%root:~0,-1%
:BCL
forfiles /P "%root%\.." /M 20??-??-??.txt /C "cmd /c call scripts\SplitXML.cmd @file"
ping 127.0.0.1 -n 60 > nul
goto :BCL
pause
SplitxML.cmd :
set SRC=%1
set root=%~dp0
echo %0
for %%F in (%SRC%) do set FI=%%~dpnF
"%root%msxsl.exe" "%SRC:~1,-1%" "%root%Netia_2_Client_RNT.xsl" -o "%FI%_1.xml"
"%root%msxsl.exe" "%SRC:~1,-1%" "%root%Netia_2_Client_925FM.xsl" -o "%FI%_2.xml"
if not exist done md done
move "%SRC:~1,-1%" done
Netia_2_Client_925FM.xsl :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/DbEntity">
<DbEntity>
<xsl:for-each select="//DbTuple">
<xsl:if test="CHANNEL_NAME = '92.5 FM'">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</DbEntity>
</xsl:template>
</xsl:stylesheet>
Netia_2_Client_RNT.xsl :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/DbEntity">
<DbEntity>
<xsl:for-each select="//DbTuple">
<xsl:if test="CHANNEL_NAME = 'RNT'">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</DbEntity>
</xsl:template>
</xsl:stylesheet>
Exemple de fichiers de réconciliation
<?xml version="1.0" standalone="yes"?>
<DbEntity>
<DbTuple table="T_AIR_RUN">
<AIR_DURATION datatype="string"><![CDATA[00:03:38]]></AIR_DURATION>
<BROADCAST_TIME datatype="timestamp">2017-06-20 19:02:59</BROADCAST_TIME>
<CHANNEL_NAME datatype="string"><![CDATA[RNT]]></CHANNEL_NAME>
<EMISSION_NAME datatype="string"><![CDATA[Soirée]]></EMISSION_NAME>
<END_TIME datatype="timestamp">2017-06-20 19:06:37</END_TIME>
<EXT_RUN_ID datatype="string"><![CDATA[]]></EXT_RUN_ID>
<FILE datatype="string"><![CDATA[c0d1fd84-2f44-4113-9942-a7f463271107.BWF]]></FILE>
<GUID_AIR datatype="guid">93d66c13-5fab-44a7-93bc-c27326b605eb</GUID_AIR>
<GUID_CHANNEL datatype="guid">f78be1d2-31af-4c04-844e-847e8ad92070</GUID_CHANNEL>
<GUID_EMISSION datatype="guid">b634be86-310f-47a5-955b-8af2f6c20301</GUID_EMISSION>
<GUID_ITEM datatype="guid">c0d1fd84-2f44-4113-9942-a7f463271107</GUID_ITEM>
<GUID_LOG datatype="guid">83f4340c-e4ba-4563-ae8e-2bcd3c28fbc7</GUID_LOG>
<GUID_RUN datatype="guid">168e7e85-6fdd-4482-a235-3a38f50bcabe</GUID_RUN>
<ITEM_DURATION datatype="double">217344</ITEM_DURATION>
<LOGSHEET_NAME datatype="string"><![CDATA[Soirée]]></LOGSHEET_NAME>
<NUM_CD datatype="string"><![CDATA[]]></NUM_CD>
<NUM_SELECTOR datatype="string"><![CDATA[1]]></NUM_SELECTOR>
<ON_AIR datatype="long">0</ON_AIR>
<PATH datatype="string"><![CDATA[c:\LOCAL SOUNDS\]]></PATH>
<SCREEN_NAME datatype="string"><![CDATA[ecran19]]></SCREEN_NAME>
<START_TIME datatype="timestamp">2017-06-20 19:02:59</START_TIME>
<STATE_AIR datatype="long">3</STATE_AIR>
<STATION datatype="string"><![CDATA[RAD-WS-AUTO-01]]></STATION>
<STRING_1 datatype="string"><![CDATA[test cd11 2-2]]></STRING_1>
<STRING_10 datatype="string"><![CDATA[]]></STRING_10>
<STRING_11 datatype="string"><![CDATA[]]></STRING_11>
<STRING_12 datatype="string"><![CDATA[]]></STRING_12>
<STRING_13 datatype="string"><![CDATA[]]></STRING_13>
<STRING_14 datatype="string"><![CDATA[]]></STRING_14>
<STRING_15 datatype="string"><![CDATA[]]></STRING_15>
<STRING_16 datatype="string"><![CDATA[]]></STRING_16>
<STRING_17 datatype="string"><![CDATA[]]></STRING_17>
<STRING_18 datatype="string"><![CDATA[]]></STRING_18>
<STRING_19 datatype="string"><![CDATA[]]></STRING_19>
<STRING_2 datatype="string"><![CDATA[Track 1]]></STRING_2>
<STRING_20 datatype="string"><![CDATA[]]></STRING_20>
<STRING_3 datatype="string"><![CDATA[]]></STRING_3>
<STRING_4 datatype="string"><![CDATA[]]></STRING_4>
<STRING_5 datatype="string"><![CDATA[]]></STRING_5>
<STRING_6 datatype="string"><![CDATA[]]></STRING_6>
<STRING_7 datatype="string"><![CDATA[]]></STRING_7>
<STRING_8 datatype="string"><![CDATA[]]></STRING_8>
<STRING_9 datatype="string"><![CDATA[]]></STRING_9>
<STRING_DDO_1 datatype="string"><![CDATA[test cd11 2-2 (Track 1)]]></STRING_DDO_1>
<STRING_DDO_2 datatype="string"><![CDATA[test cd11 2-2 (Track 1)]]></STRING_DDO_2>
<TRACK datatype="long">0</TRACK>
<TYPE_AIR datatype="long">4</TYPE_AIR>
<TYPE_ITEM datatype="long">1</TYPE_ITEM>
<TYPE1_ITEM datatype="long">2</TYPE1_ITEM>
<USER_AIR datatype="string"><![CDATA[ADMINISTRATOR]]></USER_AIR>
<VALUE_1 datatype="long">0</VALUE_1>
<VALUE_10 datatype="long">0</VALUE_10>
<VALUE_2 datatype="long">0</VALUE_2>
<VALUE_3 datatype="long">0</VALUE_3>
<VALUE_4 datatype="long">0</VALUE_4>
<VALUE_5 datatype="long">0</VALUE_5>
<VALUE_6 datatype="long">0</VALUE_6>
<VALUE_7 datatype="long">0</VALUE_7>
<VALUE_8 datatype="long">0</VALUE_8>
<VALUE_9 datatype="long">0</VALUE_9>
</DbTuple>
<DbTuple table="T_AIR_RUN">
<AIR_DURATION datatype="string"><![CDATA[00:01:07]]></AIR_DURATION>
<BROADCAST_TIME datatype="timestamp">2017-06-20 16:58:54</BROADCAST_TIME>
<CHANNEL_NAME datatype="string"><![CDATA[RNT]]></CHANNEL_NAME>
<EMISSION_NAME datatype="string"><![CDATA[Soirée]]></EMISSION_NAME>
<END_TIME datatype="timestamp">2017-06-20 19:06:13</END_TIME>
<EXT_RUN_ID datatype="string"><![CDATA[]]></EXT_RUN_ID>
<FILE datatype="string"><![CDATA[25abc6cf-b154-41cd-bc06-1b6e519669d3.BWF]]></FILE>
<GUID_AIR datatype="guid">e0b61fd5-a143-41cb-9a42-f0aa35f97118</GUID_AIR>
<GUID_CHANNEL datatype="guid">f78be1d2-31af-4c04-844e-847e8ad92070</GUID_CHANNEL>
<GUID_EMISSION datatype="guid">b634be86-310f-47a5-955b-8af2f6c20301</GUID_EMISSION>
<GUID_ITEM datatype="guid">25abc6cf-b154-41cd-bc06-1b6e519669d3</GUID_ITEM>
<GUID_LOG datatype="guid">83f4340c-e4ba-4563-ae8e-2bcd3c28fbc7</GUID_LOG>
<GUID_RUN datatype="guid">b234cedc-376d-4576-8902-f963ec9ee1e2</GUID_RUN>
<ITEM_DURATION datatype="double">217344</ITEM_DURATION>
<LOGSHEET_NAME datatype="string"><![CDATA[Soirée]]></LOGSHEET_NAME>
<NUM_CD datatype="string"><![CDATA[]]></NUM_CD>
<NUM_SELECTOR datatype="string"><![CDATA[1]]></NUM_SELECTOR>
<ON_AIR datatype="long">0</ON_AIR>
<PATH datatype="string"><![CDATA[c:\LOCAL SOUNDS\]]></PATH>
<SCREEN_NAME datatype="string"><![CDATA[ecran17]]></SCREEN_NAME>
<START_TIME datatype="timestamp">2017-06-20 19:05:06</START_TIME>
<STATE_AIR datatype="long">3</STATE_AIR>
<STATION datatype="string"><![CDATA[RAD-WS-DDO-21]]></STATION>
<STRING_1 datatype="string"><![CDATA[test cd11 2]]></STRING_1>
<STRING_10 datatype="string"><![CDATA[]]></STRING_10>
<STRING_11 datatype="string"><![CDATA[]]></STRING_11>
<STRING_12 datatype="string"><![CDATA[]]></STRING_12>
<STRING_13 datatype="string"><![CDATA[]]></STRING_13>
<STRING_14 datatype="string"><![CDATA[]]></STRING_14>
<STRING_15 datatype="string"><![CDATA[]]></STRING_15>
<STRING_16 datatype="string"><![CDATA[]]></STRING_16>
<STRING_17 datatype="string"><![CDATA[]]></STRING_17>
<STRING_18 datatype="string"><![CDATA[]]></STRING_18>
<STRING_19 datatype="string"><![CDATA[]]></STRING_19>
<STRING_2 datatype="string"><![CDATA[Track 1]]></STRING_2>
<STRING_20 datatype="string"><![CDATA[]]></STRING_20>
<STRING_3 datatype="string"><![CDATA[]]></STRING_3>
<STRING_4 datatype="string"><![CDATA[]]></STRING_4>
<STRING_5 datatype="string"><![CDATA[]]></STRING_5>
<STRING_6 datatype="string"><![CDATA[]]></STRING_6>
<STRING_7 datatype="string"><![CDATA[]]></STRING_7>
<STRING_8 datatype="string"><![CDATA[]]></STRING_8>
<STRING_9 datatype="string"><![CDATA[]]></STRING_9>
<STRING_DDO_1 datatype="string"><![CDATA[test cd11 2 (Track 1)]]></STRING_DDO_1>
<STRING_DDO_2 datatype="string"><![CDATA[test cd11 2 (Track 1)]]></STRING_DDO_2>
<TRACK datatype="long">0</TRACK>
<TYPE_AIR datatype="long">4</TYPE_AIR>
<TYPE_ITEM datatype="long">1</TYPE_ITEM>
<TYPE1_ITEM datatype="long">2</TYPE1_ITEM>
<USER_AIR datatype="string"><![CDATA[ADMINISTRATOR]]></USER_AIR>
<VALUE_1 datatype="long">0</VALUE_1>
<VALUE_10 datatype="long">0</VALUE_10>
<VALUE_2 datatype="long">0</VALUE_2>
<VALUE_3 datatype="long">0</VALUE_3>
<VALUE_4 datatype="long">0</VALUE_4>
<VALUE_5 datatype="long">0</VALUE_5>
<VALUE_6 datatype="long">0</VALUE_6>
<VALUE_7 datatype="long">0</VALUE_7>
<VALUE_8 datatype="long">0</VALUE_8>
<VALUE_9 datatype="long">0</VALUE_9>
</DbTuple>
<DbTuple table="T_AIR_RUN">
<AIR_DURATION datatype="string"><![CDATA[00:03:38]]></AIR_DURATION>
<BROADCAST_TIME datatype="timestamp">2017-06-20 19:06:36</BROADCAST_TIME>
<CHANNEL_NAME datatype="string"><![CDATA[RNT]]></CHANNEL_NAME>
<EMISSION_NAME datatype="string"><![CDATA[Soirée]]></EMISSION_NAME>
<END_TIME datatype="timestamp">2017-06-20 19:10:14</END_TIME>
<EXT_RUN_ID datatype="string"><![CDATA[]]></EXT_RUN_ID>
<FILE datatype="string"><![CDATA[25abc6cf-b154-41cd-bc06-1b6e519669d3.BWF]]></FILE>
<GUID_AIR datatype="guid">5310814c-0b59-4060-b9d1-8b8efb12bf12</GUID_AIR>
<GUID_CHANNEL datatype="guid">f78be1d2-31af-4c04-844e-847e8ad92070</GUID_CHANNEL>
<GUID_EMISSION datatype="guid">b634be86-310f-47a5-955b-8af2f6c20301</GUID_EMISSION>
<GUID_ITEM datatype="guid">25abc6cf-b154-41cd-bc06-1b6e519669d3</GUID_ITEM>
<GUID_LOG datatype="guid">83f4340c-e4ba-4563-ae8e-2bcd3c28fbc7</GUID_LOG>
<GUID_RUN datatype="guid">fb189813-3e76-4898-8194-fe927b10dfc3</GUID_RUN>
<ITEM_DURATION datatype="double">217344</ITEM_DURATION>
<LOGSHEET_NAME datatype="string"><![CDATA[Soirée]]></LOGSHEET_NAME>
<NUM_CD datatype="string"><![CDATA[]]></NUM_CD>
<NUM_SELECTOR datatype="string"><![CDATA[1]]></NUM_SELECTOR>
<ON_AIR datatype="long">0</ON_AIR>
<PATH datatype="string"><![CDATA[c:\LOCAL SOUNDS\]]></PATH>
<SCREEN_NAME datatype="string"><![CDATA[ecran19]]></SCREEN_NAME>
<START_TIME datatype="timestamp">2017-06-20 19:06:36</START_TIME>
<STATE_AIR datatype="long">3</STATE_AIR>
<STATION datatype="string"><![CDATA[RAD-WS-AUTO-01]]></STATION>
<STRING_1 datatype="string"><![CDATA[test cd11 2]]></STRING_1>
<STRING_10 datatype="string"><![CDATA[]]></STRING_10>
<STRING_11 datatype="string"><![CDATA[]]></STRING_11>
<STRING_12 datatype="string"><![CDATA[]]></STRING_12>
<STRING_13 datatype="string"><![CDATA[]]></STRING_13>
<STRING_14 datatype="string"><![CDATA[]]></STRING_14>
<STRING_15 datatype="string"><![CDATA[]]></STRING_15>
<STRING_16 datatype="string"><![CDATA[]]></STRING_16>
<STRING_17 datatype="string"><![CDATA[]]></STRING_17>
<STRING_18 datatype="string"><![CDATA[]]></STRING_18>
<STRING_19 datatype="string"><![CDATA[]]></STRING_19>
<STRING_2 datatype="string"><![CDATA[Track 1]]></STRING_2>
<STRING_20 datatype="string"><![CDATA[]]></STRING_20>
<STRING_3 datatype="string"><![CDATA[]]></STRING_3>
<STRING_4 datatype="string"><![CDATA[]]></STRING_4>
<STRING_5 datatype="string"><![CDATA[]]></STRING_5>
<STRING_6 datatype="string"><![CDATA[]]></STRING_6>
<STRING_7 datatype="string"><![CDATA[]]></STRING_7>
<STRING_8 datatype="string"><![CDATA[]]></STRING_8>
<STRING_9 datatype="string"><![CDATA[]]></STRING_9>
<STRING_DDO_1 datatype="string"><![CDATA[test cd11 2 (Track 1)]]></STRING_DDO_1>
<STRING_DDO_2 datatype="string"><![CDATA[test cd11 2 (Track 1)]]></STRING_DDO_2>
<TRACK datatype="long">0</TRACK>
<TYPE_AIR datatype="long">4</TYPE_AIR>
<TYPE_ITEM datatype="long">1</TYPE_ITEM>
<TYPE1_ITEM datatype="long">2</TYPE1_ITEM>
<USER_AIR datatype="string"><![CDATA[ADMINISTRATOR]]></USER_AIR>
<VALUE_1 datatype="long">0</VALUE_1>
<VALUE_10 datatype="long">0</VALUE_10>
<VALUE_2 datatype="long">0</VALUE_2>
<VALUE_3 datatype="long">0</VALUE_3>
<VALUE_4 datatype="long">0</VALUE_4>
<VALUE_5 datatype="long">0</VALUE_5>
<VALUE_6 datatype="long">0</VALUE_6>
<VALUE_7 datatype="long">0</VALUE_7>
<VALUE_8 datatype="long">0</VALUE_8>
<VALUE_9 datatype="long">0</VALUE_9>
</DbTuple>
<DbTuple table="T_AIR_RUN">
<AIR_DURATION datatype="string"><![CDATA[00:03:20]]></AIR_DURATION>
<BROADCAST_TIME datatype="timestamp">2017-06-20 19:10:14</BROADCAST_TIME>
<CHANNEL_NAME datatype="string"><![CDATA[RNT]]></CHANNEL_NAME>
<EMISSION_NAME datatype="string"><![CDATA[Soirée]]></EMISSION_NAME>
<END_TIME datatype="timestamp">2017-06-20 19:13:34</END_TIME>
<EXT_RUN_ID datatype="string"><![CDATA[]]></EXT_RUN_ID>
<FILE datatype="string"><![CDATA[ca20bf7b-7464-44e5-8c67-798bb500c512.bwf]]></FILE>
<GUID_AIR datatype="guid">b7cc5ed9-2afb-448f-be1a-30e7c5f96583</GUID_AIR>
<GUID_CHANNEL datatype="guid">f78be1d2-31af-4c04-844e-847e8ad92070</GUID_CHANNEL>
<GUID_EMISSION datatype="guid">b634be86-310f-47a5-955b-8af2f6c20301</GUID_EMISSION>
<GUID_ITEM datatype="guid">ca20bf7b-7464-44e5-8c67-798bb500c512</GUID_ITEM>
<GUID_LOG datatype="guid">83f4340c-e4ba-4563-ae8e-2bcd3c28fbc7</GUID_LOG>
<GUID_RUN datatype="guid">ffe02a53-5c33-4aef-9d8c-822a9061f892</GUID_RUN>
<ITEM_DURATION datatype="double">200232</ITEM_DURATION>
<LOGSHEET_NAME datatype="string"><![CDATA[Soirée]]></LOGSHEET_NAME>
<NUM_CD datatype="string"><![CDATA[]]></NUM_CD>
<NUM_SELECTOR datatype="string"><![CDATA[1]]></NUM_SELECTOR>
<ON_AIR datatype="long">0</ON_AIR>
<PATH datatype="string"><![CDATA[c:\LOCAL SOUNDS\]]></PATH>
<SCREEN_NAME datatype="string"><![CDATA[ecran19]]></SCREEN_NAME>
<START_TIME datatype="timestamp">2017-06-20 19:10:14</START_TIME>
<STATE_AIR datatype="long">3</STATE_AIR>
<STATION datatype="string"><![CDATA[RAD-WS-AUTO-01]]></STATION>
<STRING_1 datatype="string"><![CDATA[Bob Acri]]></STRING_1>
<STRING_10 datatype="string"><![CDATA[]]></STRING_10>
<STRING_11 datatype="string"><![CDATA[]]></STRING_11>
<STRING_12 datatype="string"><![CDATA[]]></STRING_12>
<STRING_13 datatype="string"><![CDATA[]]></STRING_13>
<STRING_14 datatype="string"><![CDATA[]]></STRING_14>
<STRING_15 datatype="string"><![CDATA[]]></STRING_15>
<STRING_16 datatype="string"><![CDATA[]]></STRING_16>
<STRING_17 datatype="string"><![CDATA[]]></STRING_17>
<STRING_18 datatype="string"><![CDATA[]]></STRING_18>
<STRING_19 datatype="string"><![CDATA[]]></STRING_19>
<STRING_2 datatype="string"><![CDATA[Sleep Away]]></STRING_2>
<STRING_20 datatype="string"><![CDATA[]]></STRING_20>
<STRING_3 datatype="string"><![CDATA[]]></STRING_3>
<STRING_4 datatype="string"><![CDATA[]]></STRING_4>
<STRING_5 datatype="string"><![CDATA[]]></STRING_5>
<STRING_6 datatype="string"><![CDATA[]]></STRING_6>
<STRING_7 datatype="string"><![CDATA[]]></STRING_7>
<STRING_8 datatype="string"><![CDATA[]]></STRING_8>
<STRING_9 datatype="string"><![CDATA[]]></STRING_9>
<STRING_DDO_1 datatype="string"><![CDATA[Bob Acri (Sleep Away)]]></STRING_DDO_1>
<STRING_DDO_2 datatype="string"><![CDATA[Bob Acri (Sleep Away)]]></STRING_DDO_2>
<TRACK datatype="long">0</TRACK>
<TYPE_AIR datatype="long">4</TYPE_AIR>
<TYPE_ITEM datatype="long">1</TYPE_ITEM>
<TYPE1_ITEM datatype="long">2</TYPE1_ITEM>
<USER_AIR datatype="string"><![CDATA[ADMINISTRATOR]]></USER_AIR>
<VALUE_1 datatype="long">0</VALUE_1>
<VALUE_10 datatype="long">0</VALUE_10>
<VALUE_2 datatype="long">0</VALUE_2>
<VALUE_3 datatype="long">0</VALUE_3>
<VALUE_4 datatype="long">0</VALUE_4>
<VALUE_5 datatype="long">0</VALUE_5>
<VALUE_6 datatype="long">0</VALUE_6>
<VALUE_7 datatype="long">0</VALUE_7>
<VALUE_8 datatype="long">0</VALUE_8>
<VALUE_9 datatype="long">0</VALUE_9>
</DbTuple>
. . .
</DbEntity>