<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: работа с базой данных freedb.org, информация по аудио CD]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=2836&amp;type=atom" />
	<updated>2009-02-24T17:42:46Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=2836</id>
		<entry>
			<title type="html"><![CDATA[VBScript: работа с базой данных freedb.org, информация по аудио CD]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=19951#p19951" />
			<content type="html"><![CDATA[<p><a href="http://www.freedb.org/">Freedb</a> — это база данных для поиска информации об аудио компакт-дисках с использованием Интернет, обновляющаяся несколько раз в день, всё содержимое которой опубликовано под лицензией GNU. Freedb-клиент вычисляет (почти) уникальный ID диска в CD ROM и делает запрос к базе данных. В результате клиент отображает исполнителя, заголовок компакт-диска, перечень треков и некоторую дополнительную информацию. Вся информация создаётся пользователями сервиса. Freedb основана на ныне коммерческой CDDB. Вот (неполный) <a href="http://www.freedb.org/en/applications__freedb_aware_applications.9.html">список приложений</a>, работающих с freedb (freedb, в основном, используется медиа плейерами, каталогерами, аудио теггерами и CD-рипперами). Можно запустить собственный freedb-сервер (под Linux), скачав соответствующее программное обеспечение с официального сайта freedb. На официальном сайте имеется интерактивный поиск.</p><p>Бесплатный ActiveX компонент <strong>uFREEDB</strong> для работы с freedb можно скачать <a href="http://www.robvanderwoude.com/downloads/uFREEDB-1.6.2.zip">здесь</a> (чуть более 600 Кб). Пример работы можно найти <a href="http://www.robvanderwoude.com/vbstech_multimedia_freedb.php">здесь</a>. Пример с переводом комментариев:<br /></p><div class="codebox"><pre><code>Option Explicit

If WScript.Arguments.Count &gt; 0 Then Syntax

Dim arrCDROMs, i, j, k, objFreeDB, strMsg
i = 0

Const CDDB_MODE_TEST   = 0
Const CDDB_MODE_SUBMIT = 1

Set objFreeDB = CreateObject( &quot;FREEDBControl.uFREEDB&quot; )

With objFreeDB
    &#039; Задание свойств. Похоже, freedb.freedb.org не принимает значения по умолчанию.
    .AppName      = &quot;QueryCD&quot;
    .AppVersion   = &quot;1.01&quot;
    .EmailAddress = &quot;test@scripting.eu&quot;
    .CDDBServer   = &quot;freedb.freedb.org&quot;
    .CDDBMode     = CDDB_MODE_TEST
    &#039; Используйте CDDB_MODE_SUBMIT, если вы хотите отослать новые или поправочные данные на freedb.org

    &#039; Получение массива со всеми буквами дисков компакт-дисков
    arrCDROMs = Split(.GetCdRoms, &quot;|&quot;)

    &#039; Обход устройств CDROM
    For j = 0 To UBound( arrCDROMs )
        &#039; Если информация получена
        If .GetMediaInfo( arrCDROMs(j) ) &lt;&gt; &quot;&quot; Then
            &#039; Счётчик CD
            i = i + 1
            &#039; Запрос к базе данных freedb.org о CD, по его TOC
            .LookupMediaByToc .GetMediaTOC( arrCDROMs(j) )
            &#039; Получение свойств альбома
            strMsg = &quot;CD в устройстве &quot; &amp; UCase(arrCDROMs(j)) _
                   &amp; &quot; - это &quot;&quot;&quot; &amp; .GetAlbumName &amp; &quot;&quot;&quot;, исполнитель: &quot; _
                   &amp; .GetArtistName &amp; &quot; (&quot; &amp; .GetAlbumYear &amp; &quot;, &quot; _
                   &amp; .GetAlbumGenre &amp; &quot;, &quot; _
                   &amp; .SecondsToTimeString( .GetAlbumLength ) &amp; &quot;)&quot; &amp; vbCrLf &amp; vbCrLf
            &#039; Обход списка треков
            For k = 1 To .GetAlbumTracks
                &#039; Свойства трека
                strMsg = strMsg &amp; &quot;Track &quot; &amp; Right( &quot; &quot; &amp; k, 2 ) &amp; &quot;:  &quot; _
                       &amp; .GetTrackName( CInt(k) ) _
                       &amp; &quot; (&quot; &amp; .SecondsToTimeString( .GetTrackTime( CInt(k) ) ) &amp; &quot;)&quot; _
                       &amp; vbCrLf
            Next
        End If
    Next
    If i = 0 Then
        strMsg = &quot;CD не найдены.&quot;
    End If
End With

&#039; Вывод результата
WScript.Echo strMsg

Set objFreeDB = Nothing

Sub Syntax
    strMsg = &quot;QueryCD.vbs,  Version 1.01&quot; &amp; vbCrLf _
           &amp; &quot;Display album and track properties for all CDs in all CDROM drives&quot; _
           &amp; vbCrLf &amp; vbCrLf _
           &amp; &quot;Usage:  QUERYCD.VBS&quot; &amp; vbCrLf &amp; vbCrLf _
           &amp; &quot;Note:   This script requires ufreedb.ocx&quot; &amp; vbCrLf _
           &amp; &quot;        by Jon F. Zahornacky and Peter Schmiedseder&quot; &amp; vbCrLf _
           &amp; &quot;        http://www.robvanderwoude.com/vbstech_multimedia_freedb.html&quot; _
           &amp; vbCrLf &amp; vbCrLf _
           &amp; &quot;Written by Rob van der Woude&quot; &amp; vbCrLf _
           &amp; &quot;http://www.robvanderwoude.com&quot; &amp; vbCrLf
    WScript.Echo strMsg
    WScript.Quit 1
End Sub</code></pre></div><p>Если данные по CD не найдены, скрипт выдаст визуальную форму для их отправки.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-02-24T17:42:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=19951#p19951</id>
		</entry>
</feed>
