[Multimedia] Add guide for the Metadata 48/152648/2
authorcoderhyme <jhyo.kim@samsung.com>
Tue, 26 Sep 2017 21:17:01 +0000 (06:17 +0900)
committerEditor Lionbridge <TizenEditor.SEL@lionbridge.com>
Thu, 28 Sep 2017 09:46:02 +0000 (12:46 +0300)
PS2: Reviewed

Change-Id: Ie857c0d6be250756259bcda4f438e3f9d26b246b
Signed-off-by: coderhyme <jhyo.kim@samsung.com>
org.tizen.guides/html/dotnet/media/metadata.htm [new file with mode: 0644]

diff --git a/org.tizen.guides/html/dotnet/media/metadata.htm b/org.tizen.guides/html/dotnet/media/metadata.htm
new file mode 100644 (file)
index 0000000..381b06b
--- /dev/null
@@ -0,0 +1,528 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+       <meta http-equiv="X-UA-Compatible" content="IE=9" />
+       <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
+       <link rel="stylesheet" type="text/css" href="../../css/snippet.css" />
+       <script type="text/javascript" src="../../scripts/snippet.js"></script>
+       <script type="text/javascript" src="../../scripts/jquery.util.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/common.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/core.js" charset="utf-8"></script>
+       <script type="text/javascript" src="../../scripts/search.js" charset="utf-8"></script>
+
+       <title>Metadata</title>
+
+</head>
+
+<body onload="prettyPrint()" style="overflow: auto;">
+
+<div id="toc-navigation">
+       <div id="toc_border"><div id="toc">
+               <p class="toc-title">Dependencies</p>
+               <ul class="toc">
+                       <li>Tizen 4.0 and Higher</li>
+               </ul>
+
+               <p class="toc-title">Content</p>
+                       <ul class="toc">
+                       <li><a href="#prerequisites">Prerequisites</a></li>
+                       <li>Metadata editor
+                       <ul class="toc">
+                               <li><a href="#editing">Editing Metadata and Artwork</a></li>
+            </ul>
+                       </li>
+                       <li>Metadata extractor
+                       <ul class="toc">
+                               <li><a href="#metadata_extractor">Retrieving Metadata</a></li>
+            </ul>
+                       </li>
+                       <li>MIME type
+                       <ul class="toc">
+                               <li><a href="#mime_type">Getting the MIME Type for a File Extension</a></li>
+                               <li><a href="#mime_extension">Getting File Extensions for a MIME Type</a></li>
+            </ul>
+                       </li>
+                       <li><a href="#attribute">Editable Metadata Attributes</a></li>
+                       <li><a href="#attribute2">Extractable Metadata Attributes</a></li>
+                       </ul>
+
+               <p class="toc-title">Related Info</p>
+               <ul class="toc">
+                       <li><a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Content_1_1MimeType_1_1MimeUtil.html">Tizen.Content.MimeType.MimeUtil Class</a></li>
+                       <li><a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1MetadataEditor.html">Tizen.Multimedia.MetadataEditor Class</a></li>
+                       <li><a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1MetadataExtractor.html">Tizen.Multimedia.MetadataExtractor Class</a></li>
+               </ul>
+       </div></div>
+</div>
+
+<div id="container"><div id="contents"><div class="content">
+
+<h1>Metadata</h1>
+<p>You can access, add, and edit metadata in media files.</p>
+
+<p>The main metadata features include:</p>
+  <ul>
+       <li>Metadata editing
+       <p>You can <a href="#editing">edit the metadata</a> of several popular audio formats using the metadata editor. You can add and remove album art, or update the information for the audio file.</p>
+       <p>The metadata editor supports editing the <a href="#attribute">metadata</a> of audio files in the MP3 and MP4 file formats. Image and video file editing is not supported.</p>
+       </li>
+    <li>Metadata extraction
+    <p>Media files, such as MP3 and MP4 files, contain <a href="#attribute2">extractable metadata</a>. You can <a href="#metadata_extractor">retrieve metadata</a> from such media files with the metadata extractor.</p>
+       <p>The metadata extractor can be used with video and audio files only. It is not supported for image files.</p>
+       </li>
+       <li>MIME type handling
+       <p>You can <a href="#mime_type">get the MIME type</a> for a file extension and <a href="#mime_extension">get a list of file extensions</a> associated, for example, with an image or the JPEG MIME type.</p>
+       </li>
+  </ul>
+<h2 id="prerequisites">Prerequisites</h2>
+<p>To enable your application to use the metadata functionality:</p>
+       <ol>
+               <li>To access media files on the device, the application has to request permission by adding the following privileges to the <code>tizen-manifest.xml</code> file:
+<pre class="prettyprint">
+&lt;privileges&gt;
+   &lt;!--To access media storage--&gt;
+   &lt;privilege&gt;http://tizen.org/privilege/mediastorage&lt;/privilege&gt;
+   &lt;!--To access external storage--&gt;
+   &lt;privilege&gt;http://tizen.org/privilege/externalstorage&lt;/privilege&gt;
+&lt;privileges&gt;
+</pre>
+               </li>
+               <li>To use the methods and properties of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1MetadataEditor.html">Tizen.Multimedia.MetadataEditor</a> and <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1MetadataExtractor.html">Tizen.Multimedia.MetadataExtractor</a> classes, include the <a href="https://developer.tizen.org/dev-guide/csapi/namespaceTizen_1_1Multimedia.html">Tizen.Multimedia</a> namespace in your application:
+<pre class="prettyprint">
+using Tizen.Multimedia;
+</pre>
+               </li>
+       </ol>
+
+<h2 id="editing">Editing Metadata and Artwork</h2>
+<p>To add and edit metadata in an audio file:</p>
+
+<ol>
+       <li>Create an instance of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1MetadataEditor.html">Tizen.Multimedia.MetadataEditor</a> class with the path of the file to be edited. Make sure you have access to the file whose metadata and artwork you want to edit.
+<pre class="prettyprint">
+var metadataEditor = new MetadataEditor(mediaPath);
+</pre>
+       </li>
+       <li>Edit the metadata by using various properties of the <code>Tizen.Multimedia.MetadataEditor</code> class:
+<pre class="prettyprint">
+/// Set the title of the audio file
+metadataEditor.Title = "My Song";
+
+/// Set the artist of the audio file
+metadataEditor.Artist = "Artist";
+</pre>
+       </li>
+       <li>To add images to the audio file:
+               <ol type="a">
+                       <li>Add an image to the audio file using the <code>AddPicture()</code> method of the <code>Tizen.Multimedia.MetadataEditor</code> class with an image path containing the artwork.
+                       <p>The image to be added must be in JPEG or PNG format. The image is added to the first free index position. You can add multiple image files to the same audio file.</p>
+<pre class="prettyprint">
+metadataEditor.AddPicture(artworkpath);
+</pre>
+                       </li>
+                       <li>To remove an image from the file, use the <code>RemovePicture()</code> method with the index number of image file to be removed:
+<pre class="prettyprint">
+int index = 5;
+metadataEditor.RemovePicture(index);
+</pre>
+                       </li>
+                       <li>To retrieve the number of images added to the file, use the <code>PictureCount</code> property of the <code>Tizen.Multimedia.MetadataEditor</code> class and to retrieve a specific image, use the <code>GetPicture()</code> method with the index number of the desired image:
+<pre class="prettyprint">
+/// Get the number of images associated with the file
+int pictureCount = metadataEditor.PictureCount;
+
+/// Retrieve a specific image
+Artwork artwork = metadataEditor.GetPicture(pictureCount - 1);
+</pre>
+                       </li>
+               </ol>
+       </li>
+       <li>Apply the metadata and artwork changes to the audio file using the <code>Commit()</code> method:
+<pre class="prettyprint">
+metadataEditor.Commit();
+</pre>
+       </li>
+</ol>
+
+<h2 id="metadata_extractor">Retrieving Metadata</h2>
+<p>To retrieve metadata from a file:</p>
+<ol>
+       <li>Create an instance of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1MetadataExtractor.html">Tizen.Multimedia.MetadataExtractor</a> class and pass the path of the file or buffer whose metadata you want to retrieve as a parameter:
+               <ul>
+                       <li>Create a <code>Tizen.Multimedia.MetadataExtractor</code> instance with a file path parameter:
+<pre class="prettyprint">
+var metadataExtractor = new MetadataExtractor(mediaPath);
+</pre>
+                       </li>
+                       <li>Create a <code>Tizen.Multimedia.MetadataExtractor</code> instance with a buffer parameter:
+<pre class="prettyprint">
+var buffer = File.ReadAllBytes(mediaPath);
+var metadataExtractor = new MetadataExtractor(buffer);
+</pre>
+                       </li>
+               </ul>
+       </li>
+       <li>Retrieve the metadata:
+               <ul>
+                       <li>Retrieve the metadata from the file by using the <code>GetMetadata()</code> method of the <code>Tizen.Multimedia.MetadataExtractor</code> class, which returns a instance of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1Metadata.html">Tizen.Multimedia.Metadata</a> class containing all the metadata of the file.
+                       <p>The following example retrieves the artist and title of the media file:</p>
+<pre class="prettyprint">
+/// Get Artist and Title metadata of the file
+Metadata metadata = metadataExtractor.GetMetadata();
+
+Tizen.Log.Info(LogTag, "Artist: " + metadata.Artist);
+Tizen.Log.Info(LogTag, "Title: " + metadata.Title);
+</pre>
+                       <p>You can retrieve other metadata in the same way.</p>
+                       </li>
+                       <li>For an audio file, retrieve the artwork from the file using the <code>GetArtwork()</code> method, which returns a instance of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1Artwork.html">Tizen.Multimedia.Artwork</a> class containing the encoded artwork image and the MIME type of the artwork:
+<pre class="prettyprint">
+var artWork = metadataExtractor.GetArtwork();
+</pre>
+                       </li>
+                       <li>For an audio file, retrieve the synchronized lyrics from the file using the <code>GetSyncLyrics()</code> method with an index number as a parameter.
+                       <p>To retrieve the synchronized lyrics index number, use the <code>SyncLyricsCount</code> property of the <code>Tizen.Multimedia.Metadata</code> class.</p>
+                       <p>The following example code retrieves the synchronized lyrics from index number 1 and prints the time information and lyrics:</p>
+<pre class="prettyprint">
+/// Retrieve the synchronized lyrics of the file
+Metadata metadata = metadataExtractor.GetMetadata();
+
+SyncLyrics syncLyrics = metadataExtractor.GetSyncLyrics(1);
+
+Tizen.Log.Info(LogTag, $"Lyrics = {syncLyrics.Lyrics}, Timestamp = {syncLyrics.Timestamp}");
+</pre>
+                       </li>
+                       <li>For a video file, retrieve frames from the file in one of the following ways:
+                               <ul>
+                                       <li>To retrieve a frame without specifying the time when the frame appears, use the <code>GetVideoThumbnail()</code> method:
+<pre class="prettyprint">
+byte[] thumbnail = metadataExtractor.GetVideoThumbnail();
+</pre>
+                                       </li>
+                                       <li>To retrieve a frame with a timestamp, use the <code>GetFrameAt()</code> method with the timestamp in milliseconds. To capture the exact frame desired, the second parameter must be set to <code>true</code>, otherwise the method returns the i-frame nearest to the desired timestamp.
+<pre class="prettyprint">
+byte[] videoFrame = metadataExtractor.GetFrameAt(100, true);
+</pre>
+                                       </li>
+                               </ul>
+                       </li>
+               </ul>
+       </li>
+</ol>
+
+<h2 id="mime_type">Getting the MIME Type for a File Extension</h2>
+
+<p>To retrieve the MIME type for a given file extension, use the <code>GetMimeType()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Content_1_1MimeType_1_1MimeUtil.html">Tizen.Content.MimeType.MimeUtil</a> class.</p>
+
+<p>If the given file extension is not associated with any specific file format, the MIME type is <code>application/octet-stream</code>.</p>
+
+<pre class="prettyprint">
+string mimeType = MimeUtil.GetMimeType("png");
+</pre>
+
+
+<h2 id="mime_extension">Getting File Extensions for a MIME Type</h2>
+
+<p>To retrieve the file extensions for a given MIME type, use <code>GetFileExtension()</code> method of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Content_1_1MimeType_1_1MimeUtil.html">Tizen.Content.MimeType.MimeUtil</a> class:</p>
+
+<pre class="prettyprint">
+/// Retrieve a list of file extensions for a given MIME type
+IEnumerable&lt;string&gt; ext = MimeUtil.GetFileExtension("video/mpeg");
+foreach(string ex in ext)
+{
+    Tizen.Log.Info(LogTag, "Extension = " + ex);
+}
+</pre>
+
+<h2 id="attribute">Editable Metadata Attributes</h2>
+
+<p>The following table lists the metadata you can edit.</p>
+
+   <p align="center" class="Table"><strong>Table: Editable metadata attributes</strong></p>
+  <table>
+   <tbody>
+    <tr>
+     <th>Attribute</th>
+     <th>Description</th>
+     <th>Property or method of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1MetadataExtractor.html">Tizen.Multimedia.MetadataExtractor</a> class</th>
+    </tr>
+    <tr>
+     <td>Artist</td>
+     <td>Artist of the audio content</td>
+     <td><code>Artist</code></td>
+    </tr>
+     <tr>
+     <td>Title</td>
+     <td>Title of the audio content</td>
+     <td><code>Title</code></td>
+    </tr>
+    <tr>
+     <td>Album</td>
+     <td>Album of the audio content</td>
+     <td><code>Album</code></td>
+    </tr>
+    <tr>
+     <td>Genre</td>
+     <td>Genre of the audio content</td>
+     <td><code>Genre</code></td>
+    </tr>
+    <tr>
+     <td>Author</td>
+     <td>Author of the audio content</td>
+     <td><code>Author</code></td>
+    </tr>
+    <tr>
+     <td>Copyright</td>
+     <td>Copyright of the audio content</td>
+     <td><code>Copyright</code></td>
+    </tr>
+    <tr>
+     <td>Date</td>
+     <td>Date of the audio content</td>
+     <td><code>Date</code></td>
+    </tr>
+    <tr>
+     <td>Description</td>
+     <td>Description of the audio content</td>
+     <td><code>Description</code></td>
+    </tr>
+    <tr>
+     <td>Comment</td>
+     <td>Comment of the audio content</td>
+     <td><code>Comment</code></td>
+    </tr>
+    <tr>
+     <td>TrackNumber</td>
+     <td>Track number of the audio content</td>
+     <td><code>TrackNumber</code></td>
+    </tr>
+    <tr>
+     <td>Picture</td>
+     <td>Picture of the audio content</td>
+     <td><code>PictureCount</code>
+        <p><code>GetPicture()</code></p>
+     <p><code>AddPicture()</code></p>
+     <p><code>RemovePicture()</code></p></td>
+    </tr>
+
+    <tr>
+     <td>Conductor</td>
+     <td>Conductor of the audio content</td>
+     <td><code>Conductor</code></td>
+    </tr>
+    <tr>
+     <td>Unsync lyrics</td>
+     <td>Unsync lyrics of the audio content</td>
+     <td><code>UnsyncLyrics</code></td>
+    </tr>
+   </tbody>
+  </table>
+
+  <h2 id="attribute2">Extractable Metadata Attributes</h2>
+
+<p>The following table lists the extractable metadata.</p>
+<p>The metadata is available with the properties and methods of the <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1AudioMetadata.html">Tizen.Multimedia.AudioMetadata</a>, <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1Metadata.html">Tizen.Multimedia.Metadata</a>, <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1MetadataExtractor.html">Tizen.Multimedia.MetadataExtractor</a>, <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1SyncLyrics.html">Tizen.Multimedia.SyncLyrics</a>, and <a href="https://developer.tizen.org/dev-guide/csapi/classTizen_1_1Multimedia_1_1VideoMetadata.html">Tizen.Multimedia.VideoMetadata</a> classes.</p>
+ <p align="center" class="Table"><strong>Table: Metadata extractor attributes</strong></p>
+  <table>
+   <tbody>
+    <tr>
+     <th>Attribute</th>
+     <th>Description</th>
+     <th>Property or method</th>
+    </tr>
+    <tr>
+     <td>Duration</td>
+     <td>Duration of the content</td>
+     <td><code>Metadata.Duration</code></td>
+    </tr>
+     <tr>
+     <td>Video bit rate</td>
+     <td>Bit rate of the video content</td>
+     <td><code>VideoMetadata.BitRate</code></td>
+    </tr>
+    <tr>
+     <td>Video FPS</td>
+     <td>FPS of the video content</td>
+     <td><code>VideoMetadata.Fps</code></td>
+    </tr>
+    <tr>
+     <td>Video codec</td>
+     <td>Codec of the video content</td>
+     <td><code>VideoMetadata.Codec</code></td>
+    </tr>
+    <tr>
+     <td>Video stream count</td>
+     <td>Number of streams of the video content</td>
+     <td><code>VideoMetadata.StreamCount</code></td>
+    </tr>
+    <tr>
+     <td>Video resolution</td>
+     <td>Resolution of the video content</td>
+     <td><code>VideoMetadata.Width</code>
+        <p><code>VideoMetadata.Height</code></p></td>
+    </tr>
+    <tr>
+     <td>Audio bit rate</td>
+     <td>Bit rate of the audio content</td>
+     <td><code>AudioMetadata.BitRate</code></td>
+    </tr>
+    <tr>
+     <td>Audio channels</td>
+     <td>Channel of the audio content</td>
+     <td><code>AudioMetadata.Channels</code></td>
+    </tr>
+    <tr>
+     <td>Audio sample rate</td>
+     <td>Sample rate of the audio content</td>
+     <td><code>AudioMetadata.SampleRate</code></td>
+    </tr>
+    <tr>
+     <td>Audio bit per sample</td>
+     <td>Bit per sample of the audio content</td>
+     <td><code>AudioMetadata.BitPerSample</code></td>
+    </tr>
+    <tr>
+     <td>Audio codec</td>
+     <td>Codec of the audio content</td>
+     <td><code>AudioMetadata.Codec</code></td>
+    </tr>
+    <tr>
+     <td>Audio stream count</td>
+     <td>Number of streams of the audio content</td>
+     <td><code>AudioMetadata.StreamCount</code></td>
+    </tr>
+    <tr>
+     <td>Artist</td>
+     <td>Artist of the content</td>
+     <td><code>Metadata.Artist</code></td>
+    </tr>
+    <tr>
+     <td>Title</td>
+     <td>Title of the content</td>
+     <td><code>Metadata.Title</code></td>
+    </tr>
+    <tr>
+     <td>Album</td>
+     <td>Album of the content</td>
+     <td><code>Metadata.Album</code></td>
+    </tr>
+    <tr>
+     <td>Album artist</td>
+     <td>Album artist of the content</td>
+     <td><code>Metadata.AlbumArtist</code></td>
+    </tr>
+    <tr>
+     <td>Genre</td>
+     <td>Genre of the content</td>
+     <td><code>Metadata.Genre</code></td>
+    </tr>
+    <tr>
+     <td>Author</td>
+     <td>Author of the content</td>
+     <td><code>Metadata.Author</code></td>
+    </tr>
+    <tr>
+     <td>Copyright</td>
+     <td>Copyright of the content</td>
+     <td><code>Metadata.Copyright</code></td>
+    </tr>
+    <tr>
+     <td>Date</td>
+     <td>Date of the content</td>
+     <td><code>Metadata.Date</code></td>
+    </tr>
+    <tr>
+     <td>Description</td>
+     <td>Description of the content</td>
+     <td><code>Metadata.Description</code></td>
+    </tr>
+    <tr>
+     <td>Comment</td>
+     <td>Comment about the content</td>
+     <td><code>Metadata.Comment</code></td>
+    </tr>
+    <tr>
+     <td>TrackNumber</td>
+     <td>Track number of the content</td>
+     <td><code>Metadata.TrackNumber</code></td>
+    </tr>
+    <tr>
+     <td>Classification</td>
+     <td>Classification of the content</td>
+     <td><code>Metadata.Classification</code></td>
+    </tr>
+    <tr>
+     <td>Rating</td>
+     <td>Rating of the content</td>
+     <td><code>Metadata.Rating</code></td>
+    </tr>
+    <tr>
+     <td>Longitude</td>
+     <td>Longitude of the content</td>
+     <td><code>Metadata.Longitude</code></td>
+    </tr>
+    <tr>
+     <td>Latitude</td>
+     <td>Latitude of the content</td>
+     <td><code>Metadata.Latitude</code></td>
+    </tr>
+    <tr>
+     <td>Altitude</td>
+     <td>Altitude of the content</td>
+     <td><code>Metadata.Altitude</code></td>
+    </tr>
+    <tr>
+     <td>Conductor</td>
+     <td>Conductor of the content</td>
+     <td><code>Metadata.Conductor</code></td>
+    </tr>
+    <tr>
+     <td>Unsync lyrics</td>
+     <td>Asynchronous lyrics of the content</td>
+     <td><code>Metadata.UnsyncLyrics</code></td>
+    </tr>
+    <tr>
+     <td>Sync lyrics</td>
+     <td>Synchronous lyrics of the content</td>
+     <td><code>Metadata.SyncLyricsCount</code>
+        <p><code>MetadataExtractor.GetSyncLyrics()</code></p>
+     <p><code>SyncLyrics.Lyrics</code></p>
+     <p><code>SyncLyrics.Timestamp</code></p></td>
+    </tr>
+    <tr>
+     <td>Recorded date</td>
+     <td>Recorded date of the content</td>
+     <td><code>Metadata.DateRecorded</code></td>
+    </tr>
+       <tr>
+     <td>Orientation</td>
+     <td>Orientation of the content</td>
+     <td><code>Metadata.Rotation</code></td>
+    </tr>
+   </tbody>
+  </table>
+
+
+<script type="text/javascript" src="../../scripts/jquery.zclip.min.js"></script>
+<script type="text/javascript" src="../../scripts/showhide.js"></script>
+</div></div></div>
+
+
+<a class="top sms" href="#"><img src="../../images/btn_top.gif" alt="Go to top"/></a>
+
+<div id="footer">
+<p class="footer">Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br/>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.</p>
+</div>
+
+<script type="text/javascript">
+var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-25976949-1']);
+_gaq.push(['_trackPageview']);
+(function() {
+var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+</script>
+</body></html>