mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-11-19 20:09:03 -07:00
68 lines
1.5 KiB
C#
68 lines
1.5 KiB
C#
|
using System;
|
||
|
using System.IO.Compression;
|
||
|
using System.Xml;
|
||
|
using NLangDetect.Core.Utils;
|
||
|
using System.IO;
|
||
|
|
||
|
namespace NLangDetect.Core
|
||
|
{
|
||
|
// TODO IMM HI: xml reader not tested
|
||
|
public static class GenProfile
|
||
|
{
|
||
|
#region Public methods
|
||
|
|
||
|
public static LangProfile load(string lang, string file)
|
||
|
{
|
||
|
LangProfile profile = new LangProfile(lang);
|
||
|
TagExtractor tagextractor = new TagExtractor("abstract", 100);
|
||
|
Stream inputStream = null;
|
||
|
|
||
|
try
|
||
|
{
|
||
|
inputStream = File.OpenRead(file);
|
||
|
|
||
|
string extension = Path.GetExtension(file) ?? "";
|
||
|
|
||
|
if (extension.ToUpper() == ".GZ")
|
||
|
{
|
||
|
inputStream = new GZipStream(inputStream, CompressionMode.Decompress);
|
||
|
}
|
||
|
|
||
|
using (XmlReader xmlReader = XmlReader.Create(inputStream))
|
||
|
{
|
||
|
while (xmlReader.Read())
|
||
|
{
|
||
|
switch (xmlReader.NodeType)
|
||
|
{
|
||
|
case XmlNodeType.Element:
|
||
|
tagextractor.SetTag(xmlReader.Name);
|
||
|
break;
|
||
|
|
||
|
case XmlNodeType.Text:
|
||
|
tagextractor.Add(xmlReader.Value);
|
||
|
break;
|
||
|
|
||
|
case XmlNodeType.EndElement:
|
||
|
tagextractor.CloseTag(profile);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
finally
|
||
|
{
|
||
|
if (inputStream != null)
|
||
|
{
|
||
|
inputStream.Close();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Console.WriteLine(lang + ": " + tagextractor.Count);
|
||
|
|
||
|
return profile;
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
}
|
||
|
}
|