Перейти к содержимому


Фотография
* * - - - 5 Голосов

Товарищи программисты! Очень нужна ваша помощь!

программа-или-скрипт

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 21

#21 A.G.

A.G.

    Ленивый кот

  • Почетный житель
  • 4 069 сообщений

Отправлено 15.06.2020, 15:44

Задача2:
от части аналогия первой.
Есть XML файлик, он лежит на локальном пк.

<?xml version="1.0" encoding="utf-8" ?><ELEM_LIST WRITE_TIME="2020-05-21 14:56:08.181"><ELEM PLAYER_ID="OBJID_PLAY_X1" PLAYER_NAME="Плеер" SCH_ID="6" SCH_NAME="SARANSK_RMC" STATUS="playing"><START_TIME>14:56:05</START_TIME><START_DATE>2020-05-21</START_DATE><BLK_TYPE>М</BLK_TYPE><TYPE>М</TYPE><NAME>ЕГО МУЗЫКАЛЬНАЯ КОМПОЗИЦИЯ</NAME><ARTIST>ПРОБНЫЙ АРТИСТ</ARTIST><AUTHOR></AUTHOR><ALBUM></ALBUM><DBID></DBID><FILE_NAME>\\dfm-saransk\DIGISPOT\SND\MUSIC\Saransk\10.204.123.16\DIGISPOT\ROOT\SND\MUSIC\RMC_MOSCOW\rmg-store01.rr.local\rmg_sql\MC\ROOT_MC\SND\MUSIC\4625.wav</FILE_NAME><DURATION>00:02:58</DURATION><RETRANSMISSION>0</RETRANSMISSION><Elem><ID dt="i4">5184</ID><PhonoType dt="i4">4</PhonoType><State dt="i4">0</State><Cmd dt="i4">0</Cmd><Cmd2 dt="i4">18432</Cmd2><Size dt="i4">0</Size><Freq dt="i4">44100</Freq><SmplRealSize dt="i4">10210176</SmplRealSize><DB_ModifyDT dt="i8">132212268717400000</DB_ModifyDT><JnglBtn dt="i4">-1</JnglBtn><DDB_ID dt="i4">714</DDB_ID><DDB_Owner>RMC_MOSCOW</DDB_Owner><MediaPlanDbUid>F877D497-9DEB-4FCE-8102-C4D50199E899</MediaPlanDbUid><MediaPlanSchId dt="i4">3</MediaPlanSchId><MediaPlanDbItemId dt="i4">714</MediaPlanDbItemId><StartTime dt="i4">53765659</StartTime><PlanStartTime dt="i4">53766246</PlanStartTime><Runtime dt="i4">175949</Runtime><StopTime dt="i4">53943898</StopTime><AvailableMeasure>1/1</AvailableMeasure><BeatPerMinute>0</BeatPerMinute><SourceComp>DT-0908</SourceComp><SourceFile>\\srv-air.rr.local\MC\MUSIC_MC\4625.wav</SourceFile><FONO_INFO><RollOut dt="i4">2349805</RollOut><FadeIn dt="i4">36797</FadeIn><FadeOut dt="i4">166666</FadeOut><StartNext dt="i4">45524</StartNext><StartThis dt="i4">55480</StartThis><FadeInType dt="i4">1</FadeInType><FadeOutType dt="i4">1</FadeOutType><MaxLvlOk dt="i4">1</MaxLvlOk><MaxLvl dt="f">0</MaxLvl><Loudness dt="f">-9.30778</Loudness><Gain dt="f">0</Gain><Type dt="i4">3</Type><RuntimePriority dt="i4">0</RuntimePriority><FileName>\\dfm-saransk\DIGISPOT\SND\MUSIC\Saransk\10.204.123.16\DIGISPOT\ROOT\SND\MUSIC\RMC_MOSCOW\rmg-store01.rr.local\rmg_sql\MC\ROOT_MC\SND\MUSIC\4625.wav</FileName><VersionIsNull dt="i4">1</VersionIsNull><FONO_STRING_INFO><Name>НЕЖНОСТЬ222</Name><Artist>FREDERIC SHOPIN</Artist><Category>Monte Carlo\MUSIC_MC</Category><DbName>MC_Main_BASE</DbName><CreateDT dt="i8">0</CreateDT><ModifyDT dt="i8">132065834070000000</ModifyDT></FONO_STRING_INFO><FONO_ROTATOR_INFO/></FONO_INFO><SUBJECT/><ExtendedFields><VersionCount>0</VersionCount></ExtendedFields><ValStorage><General><SourcCompName>DT-0908</SourcCompName><SourcFileName>\\srv-air.rr.local\MC\MUSIC_MC\4625.wav</SourcFileName></General><Integration><RotationEngineType dt="i4">0</RotationEngineType></Integration><ScheduleOnly><CheckVersionAfterIdNumber dt="i4">1</CheckVersionAfterIdNumber><SearchByNullVersion dt="i4">0</SearchByNullVersion></ScheduleOnly></ValStorage><AudioFormat><type dt="i4">1</type><CodecName>pcm_s16le</CodecName><FramesRate dt="d">44100</FramesRate><nChannels dt="i4">2</nChannels><sampleRate dt="i4">44100</sampleRate><bitsPerSample dt="i4">16</bitsPerSample></AudioFormat></Elem><Block><Type dt="i4">16</Type><Name>МУЗЫКА</Name><Time dt="i4">53595000</Time><Size dt="i4">405000</Size><CurId dt="i4">20387</CurId><Flags dt="i4">196608</Flags><DDB_Owner>Saransk</DDB_Owner><CasseteLengthFPS dt="i4">1</CasseteLengthFPS><NumberOfSubjects>0</NumberOfSubjects><NumberOfSbjAudioItems>0</NumberOfSbjAudioItems><BlockVersion dt="i4">0</BlockVersion><ModifyDT dt="i8">0</ModifyDT><RealBlockSize dt="i4">413625</RealBlockSize><ValStorage><GridBlockId dt="i4">81</GridBlockId><RetrChanSrc dt="s"></RetrChanSrc></ValStorage></Block></ELEM><ELEM PLAYER_ID="OBJID_PLAY_X1" PLAYER_NAME="Плеер" SCH_ID="6" SCH_NAME="SARANSK_RMC" STATUS="preloaded"><BLK_TYPE>М</BLK_TYPE><TYPE>М</TYPE><NAME>Музыка Мирового Класса - Микс 105_1</NAME><ARTIST></ARTIST><AUTHOR></AUTHOR><ALBUM></ALBUM><DBID></DBID><FILE_NAME>\\dfm-saransk\DIGISPOT\SND\MUSIC\Saransk\10.204.123.16\DIGISPOT\ROOT\SND\MUSIC\RMC_MOSCOW\rmg-store01.rr.local\rmg_sql\MC\ROOT_MC\SND\MUSIC\4635.wav</FILE_NAME><DURATION>00:00:40</DURATION><RETRANSMISSION>0</RETRANSMISSION><Elem><ID dt="i4">5185</ID><PhonoType dt="i4">4</PhonoType><State dt="i4">0</State><Cmd dt="i4">0</Cmd><Cmd2 dt="i4">18432</Cmd2><Size dt="i4">0</Size><Freq dt="i4">44100</Freq><SmplRealSize dt="i4">1784448</SmplRealSize><DB_ModifyDT dt="i8">132212268717400000</DB_ModifyDT><JnglBtn dt="i4">-1</JnglBtn><DDB_ID dt="i4">41304</DDB_ID><DDB_Owner>RMC_MOSCOW</DDB_Owner><OwnerName>Admin</OwnerName><MediaPlanDbUid>F877D497-9DEB-4FCE-8102-C4D50199E899</MediaPlanDbUid><MediaPlanSchId dt="i4">3</MediaPlanSchId><MediaPlanDbItemId dt="i4">41304</MediaPlanDbItemId><StartTime dt="i4">53941923</StartTime><PlanStartTime dt="i4">53942558</PlanStartTime><Runtime dt="i4">38812</Runtime><StopTime dt="i4">53982386</StopTime><AvailableMeasure>1/1</AvailableMeasure><BeatPerMinute>0</BeatPerMinute><SourceComp>DT-0908</SourceComp><SourceFile>\\srv-air.rr.local\MC\Music\MUSIC_MC\4635.wav</SourceFile><FONO_INFO><FadeOut dt="i4">32099</FadeOut><StartNext dt="i4">33360</StartNext><StartThis dt="i4">39475</StartThis><FadeInType dt="i4">1</FadeInType><FadeOutType dt="i4">1</FadeOutType><MaxLvlOk dt="i4">1</MaxLvlOk><MaxLvl dt="f">-0.199487</MaxLvl><Loudness dt="f">-7.83584</Loudness><Gain dt="f">0.199487</Gain><Type dt="i4">3</Type><RuntimePriority dt="i4">0</RuntimePriority><FileName>\\dfm-saransk\DIGISPOT\SND\MUSIC\Saransk\10.204.123.16\DIGISPOT\ROOT\SND\MUSIC\RMC_MOSCOW\rmg-store01.rr.local\rmg_sql\MC\ROOT_MC\SND\MUSIC\4635.wav</FileName><VersionIsNull dt="i4">1</VersionIsNull><FONO_STRING_INFO><Name>Музыка Мирового Класса - Микс 105_1</Name><Category>Monte Carlo\MUSIC_MC</Category><DbName>MC_Main_BASE</DbName><CreateDT dt="i8">0</CreateDT><ModifyDT dt="i8">132065834650000000</ModifyDT></FONO_STRING_INFO><FONO_ROTATOR_INFO/></FONO_INFO><SUBJECT/><ExtendedFields><VersionCount>0</VersionCount></ExtendedFields><ValStorage><General><SourcCompName>DT-0908</SourcCompName><SourcFileName>\\srv-air.rr.local\MC\Music\MUSIC_MC\4635.wav</SourcFileName></General><Integration><RotationEngineType dt="i4">0</RotationEngineType></Integration><ScheduleOnly><CheckVersionAfterIdNumber dt="i4">1</CheckVersionAfterIdNumber><SearchByNullVersion dt="i4">0</SearchByNullVersion></ScheduleOnly></ValStorage><AudioFormat><type dt="i4">1</type><CodecName>pcm_s16le</CodecName><FramesRate dt="d">44100</FramesRate><nChannels dt="i4">2</nChannels><sampleRate dt="i4">44100</sampleRate><bitsPerSample dt="i4">16</bitsPerSample></AudioFormat></Elem><Block><Type dt="i4">16</Type><Name>МУЗЫКА</Name><Time dt="i4">54000000</Time><Size dt="i4">600000</Size><CurId dt="i4">20767</CurId><Flags dt="i4">196608</Flags><DDB_Owner>Saransk</DDB_Owner><CasseteLengthFPS dt="i4">1</CasseteLengthFPS><NumberOfSubjects>0</NumberOfSubjects><NumberOfSbjAudioItems>0</NumberOfSbjAudioItems><BlockVersion dt="i4">0</BlockVersion><ModifyDT dt="i8">0</ModifyDT><RealBlockSize dt="i4">655580</RealBlockSize><ValStorage><GridBlockId dt="i4">75</GridBlockId><RetrChanSrc dt="s"></RetrChanSrc></ValStorage></Block></ELEM><ELEM PLAYER_ID="OBJID_PLAY_X1" PLAYER_NAME="" SCH_ID="6" SCH_NAME="SARANSK_RMC" STATUS="scheduled"><BLK_TYPE>М</BLK_TYPE><TYPE>Д</TYPE><NAME>JN_53 (Slow Light Gitar)</NAME><ARTIST></ARTIST><AUTHOR></AUTHOR><ALBUM></ALBUM><DBID></DBID><FILE_NAME>\\dfm-saransk\DIGISPOT\SND\JNGL\Saransk\10.204.123.16\DIGISPOT\ROOT\SND\JNGL\RMC_MOSCOW\rmg-store01.rr.local\rmg_sql\MC\ROOT_MC\SND\JNGL\7553.wav</FILE_NAME><DURATION>00:00:12</DURATION><RETRANSMISSION>0</RETRANSMISSION><Elem><ID dt="i4">0</ID><PhonoType dt="i4">4</PhonoType><State dt="i4">0</State><Cmd dt="i4">0</Cmd><Cmd2 dt="i4">18432</Cmd2><Size dt="i4">0</Size><Freq dt="i4">44100</Freq><SmplRealSize dt="i4">585216</SmplRealSize><DB_ModifyDT dt="i8">132212293512800000</DB_ModifyDT><JnglBtn dt="i4">-1</JnglBtn><DDB_ID dt="i4">4242</DDB_ID><DDB_Owner>RMC_MOSCOW</DDB_Owner><MediaPlanDbUid>F877D497-9DEB-4FCE-8102-C4D50199E899</MediaPlanDbUid><MediaPlanSchId dt="i4">3</MediaPlanSchId><MediaPlanDbItemId dt="i4">4242</MediaPlanDbItemId><StartTime dt="i4">53981132</StartTime><PlanStartTime dt="i4">53981760</PlanStartTime><Runtime dt="i4">10102</Runtime><StopTime dt="i4">53993391</StopTime><AvailableMeasure>1/1</AvailableMeasure><BeatPerMinute>0</BeatPerMinute><SourceComp>DT-0908</SourceComp><SourceFile>\\srv-air.rr.local\MC\MUSIC_MC Джинглы\7553.wav</SourceFile><FONO_INFO><RollIn dt="i4">44555</RollIn><StartNext dt="i4">72888</StartNext><StartThis dt="i4">22299</StartThis><FadeInType dt="i4">1</FadeInType><FadeOutType dt="i4">1</FadeOutType><MaxLvlOk dt="i4">1</MaxLvlOk><MaxLvl dt="f">-0.199487</MaxLvl><Loudness dt="f">-9.78322</Loudness><Gain dt="f">-2.21678</Gain><Type dt="i4">2</Type><RuntimePriority dt="i4">0</RuntimePriority><FileName>\\dfm-saransk\DIGISPOT\SND\JNGL\Saransk\10.204.123.16\DIGISPOT\ROOT\SND\JNGL\RMC_MOSCOW\rmg-store01.rr.local\rmg_sql\MC\ROOT_MC\SND\JNGL\7553.wav</FileName><VersionIsNull dt="i4">1</VersionIsNull><FONO_STRING_INFO><Name>JN_53 (Slow Light Gitar)</Name><Category>Monte Carlo\ДЖИНГЛЫ</Category><DbName>MC_Main_BASE</DbName><CreateDT dt="i8">0</CreateDT><ModifyDT dt="i8">132066110830000000</ModifyDT></FONO_STRING_INFO><FONO_ROTATOR_INFO/></FONO_INFO><SUBJECT/><ExtendedFields><VersionCount>0</VersionCount></ExtendedFields><ValStorage><General><SourcCompName>DT-0908</SourcCompName><SourcFileName>\\srv-air.rr.local\MC\MUSIC_MC Джинглы\7553.wav</SourcFileName></General><Integration><RotationEngineType dt="i4">0</RotationEngineType></Integration><ScheduleOnly><CheckVersionAfterIdNumber dt="i4">1</CheckVersionAfterIdNumber><SearchByNullVersion dt="i4">0</SearchByNullVersion></ScheduleOnly></ValStorage><AudioFormat><type dt="i4">1</type><CodecName>pcm_s16le</CodecName><FramesRate dt="d">44100</FramesRate><nChannels dt="i4">2</nChannels><sampleRate dt="i4">44100</sampleRate><bitsPerSample dt="i4">16</bitsPerSample></AudioFormat></Elem><Block><Type dt="i4">16</Type><Name>МУЗЫКА</Name><Time dt="i4">54000000</Time><Size dt="i4">600000</Size><CurId dt="i4">20767</CurId><Flags dt="i4">196608</Flags><DDB_Owner>Saransk</DDB_Owner><CasseteLengthFPS dt="i4">1</CasseteLengthFPS><NumberOfSubjects>0</NumberOfSubjects><NumberOfSbjAudioItems>0</NumberOfSbjAudioItems><BlockVersion dt="i4">0</BlockVersion><ModifyDT dt="i8">0</ModifyDT><RealBlockSize dt="i4">655580</RealBlockSize><ValStorage><GridBlockId dt="i4">75</GridBlockId><RetrChanSrc dt="s"></RetrChanSrc></ValStorage></Block></ELEM></ELEM_LIST>

Остальные пункты по аналогии с Задачей1. Отличие у них только в том, что первая задача берет исходник из интернета а вторая - из локального XML-файлика. Ну и разумеется в 1 задаче исходные поля: "title":"Hello" "artist":"Mohombi", а во второй они по другому оформлены <NAME>ЕГО МУЗЫКАЛЬНАЯ КОМПОЗИЦИЯ</NAME><ARTIST>ПРОБНЫЙ АРТИСТ</ARTIST>.
Так же есть различные блоки, именуемые по разному. В  примере встречается блок М (музыка) (<TYPE>М</TYPE>). получается так:
1. Сканирует XML-файлик и вытаскивает оттуда автора и трек (держит в буфере)
2. Если они на русском языке - переводит на транслит (держит в буфере)
3. Если название написано маленькими буквами, сохраняет все большими (пример - баста осень = BASTA OSEN) (держит в буфере)
4. После всего этого правильно формирует выходной файл. В файл добавляет дефис после автора и кавычки перед названием трека BASTA-"OSEN"(держит в буфере)
5.ЕСЛИ это музыкальный файл (<TYPE>М</TYPE>) - тогда выводит из буфера название, сгенерированное шагом ранее. ЕСЛИ другие буквы (на русском языке) - тогда вывод другого текста на запись (сообщу какой текст надо выводить - он статичный).
6. Сохраняет в одну строчку BASTA-"OSEN" в txt файл в ту же директорию, где и располагается та программа. 
7. Программа завершает свою работу и закрывается (планируется ее разместить в планировщик заданий и запускать раз в 20 секунд).

 

В приложенном примере в XML-файле три блока, из них два блока с типом "М". Используется первый (к тому же, у второго не указан артист)
 

В этом примере подразумевается, что локальный xml-файл называется C:\temp\xml.xml

function Translit([string]$Var)
{
  $Result = ''
  $HashTable = @{а='a';б='b';в='v';г='g';д='d';е='e';ё='yo';ж='zh';з='z';и='i';й='y';к='k';л='l';м='m';н='n';о='o';п='p';р='r';с='s';т='t';у='u';ф='f';х='h';ц='ts';ч='ch';ш='sh';щ='sch';ъ='';ы='y';ь='';э='e';ю='yu';я='ya'}
  $length = $Var.Length
  0..($length-1) |% {
    $tmp = $HashTable.([string]$Var[$_])
    $Result += $(if($tmp.Count -eq 0) { $Var[$_] } else { $tmp })
  }
  Return $Result
}


$content = (([xml](Get-Content C:\temp\xml.xml)).ELEM_LIST.ELEM |? {$_.TYPE -eq "М"})[0]
$artist = (Translit($content.ARTIST.ToLower())).ToUpper()
$title = (Translit($content.NAME.ToLower())).ToUpper()
Out-File -FilePath "C:\Temp\rds.txt" -Encoding UTF8 -InputObject ("$artist-`"$title`"")

Сообщение отредактировал A.G.: 15.06.2020, 15:50


#22 D.D.M.

D.D.M.

    Аксакал

  • Почетный житель
  • PipPipPipPip
  • 2 412 сообщений

Отправлено 15.06.2020, 15:49

 

В приложенном примере в XML-файле три блока, из них два блока с типом "М". Используется первый (к тому же, у второго не указан артист)
 

 

function Translit([string]$Var)
{
  $Result = ''
  $HashTable = @{а='a';б='b';в='v';г='g';д='d';е='e';ё='yo';ж='zh';з='z';и='i';й='y';к='k';л='l';м='m';н='n';о='o';п='p';р='r';с='s';т='t';у='u';ф='f';х='h';ц='ts';ч='ch';ш='sh';щ='sch';ъ='';ы='y';ь='';э='e';ю='yu';я='ya'}
  $length = $Var.Length
  0..($length-1) |% {
    $tmp = $HashTable.([string]$Var[$_])
    $Result += $(if($tmp.Count -eq 0) { $Var[$_] } else { $tmp })
  }
  Return $Result
}


$content = (([xml](Get-Content C:\temp\xml.xml)).ELEM_LIST.ELEM |? {$_.TYPE -eq "М"})[0]
$artist = (Translit($content.ARTIST.ToLower())).ToUpper()
$title = (Translit($content.NAME.ToLower())).ToUpper()
Out-File -FilePath "C:\Temp\rds.txt" -Encoding UTF8 -InputObject ("$artist-`"$title`"")

Здравствуйте. Первый файлик я проверил - Да, все работает! Второй не успел еще, но уверен, что тоже будет работать.

Прошу Вас, напишите мне в личку свое ФИО и актуальный номер телефона, я уточню у Вас пару нюансов (если не смогу их решить сам), а так же передам Ваши контакты в бренд-отдел. Они свяжутся по поводу благодарности!:-).






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей