Skip to content

Commit 868c251

Browse files
authored
Merge pull request #211 from jitwxs/dev
Release v6.2
2 parents 24ccc85 + 7741d07 commit 868c251

File tree

9 files changed

+83
-2
lines changed

9 files changed

+83
-2
lines changed

MusicLyricApp/Bean/Constants.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace MusicLyricApp.Bean
55
{
66
public static class Constants
77
{
8-
public const string Version = "v6.1";
8+
public const string Version = "v6.2";
99

1010
public static readonly string SettingPath = Environment.CurrentDirectory + "\\MusicLyricAppSetting.json";
1111

MusicLyricApp/Bean/MusicLyricsVO.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public enum LyricsTypeEnum
8888
[Description("中文译文")] CHINESE = 2,
8989
[Description("英文译文")] ENGLISH = 3,
9090
[Description("罗马音译文")] ROMAJI = 4,
91+
[Description("拼音译文")] PINYIN = 5,
9192
}
9293

9394
public enum LanguageEnum

MusicLyricApp/MusicLyricApp.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@
7777
<Reference Include="Costura, Version=5.7.0.0, Culture=neutral, processorArchitecture=MSIL">
7878
<HintPath>..\packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll</HintPath>
7979
</Reference>
80+
<Reference Include="hyjiacan.py4n, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
81+
<HintPath>..\packages\hyjiacan.pinyin4net.4.1.1\lib\net47\hyjiacan.py4n.dll</HintPath>
82+
</Reference>
8083
<Reference Include="ICSharpCode.SharpZipLib, Version=1.4.1.12, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
8184
<HintPath>..\packages\SharpZipLib.1.4.1\lib\netstandard2.0\ICSharpCode.SharpZipLib.dll</HintPath>
8285
</Reference>

MusicLyricApp/Utils/LyricUtils.cs

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Text;
66
using System.Text.RegularExpressions;
77
using System.Threading.Tasks;
8+
using hyjiacan.py4n;
89
using MusicLyricApp.Api.Translate;
910
using MusicLyricApp.Bean;
1011
using MusicLyricApp.Exception;
@@ -19,6 +20,8 @@ public abstract class LyricUtils
1920
{
2021
private static readonly Regex VerbatimRegex = new Regex(@"\(\d+,\d+\)");
2122

23+
private const PinyinFormat PinyinDefineFormat = PinyinFormat.WITH_TONE_MARK | PinyinFormat.LOWERCASE | PinyinFormat.WITH_U_UNICODE;
24+
2225
/// <summary>
2326
/// 获取输出结果
2427
/// </summary>
@@ -34,7 +37,7 @@ public static async Task<List<string>> GetOutputContent(LyricVo lyricVo, SearchI
3437

3538
var voListList = await FormatLyric(lyricVo.Lyric, lyricVo.TranslateLyric, searchInfo);
3639

37-
if (searchInfo.SettingBean.Param.EnableVerbatimLyric)
40+
if (lyricVo.SearchSource == SearchSourceEnum.QQ_MUSIC && searchInfo.SettingBean.Param.EnableVerbatimLyric)
3841
{
3942
for (var i = 0; i < voListList.Count; i++)
4043
{
@@ -386,6 +389,12 @@ public static async Task<List<List<LyricLineVo>>> DealTranslateLyric(List<LyricL
386389
result.Add(await RomajiUtils.ToRomaji(originList, transConfig.RomajiModeEnum, transConfig.RomajiSystemEnum));
387390
}
388391
break;
392+
case LyricsTypeEnum.PINYIN:
393+
if (originLanguage == LanguageEnum.CHINESE)
394+
{
395+
result.Add(await ToPinyin(originList, transConfig.LostRule));
396+
}
397+
break;
389398
case LyricsTypeEnum.CHINESE:
390399
case LyricsTypeEnum.ENGLISH:
391400
// 输出语言和原始歌词语言只有不同时,才翻译
@@ -547,6 +556,36 @@ private static List<LyricLineVo> ResolveTransLyricDigitDeviationAndLost(List<Lyr
547556
return transList;
548557
}
549558

559+
private static Task<List<LyricLineVo>> ToPinyin(List<LyricLineVo> inputList, TransLyricLostRuleEnum lostRule)
560+
{
561+
var resultList = new List<LyricLineVo>();
562+
563+
foreach (var vo in inputList)
564+
{
565+
string content;
566+
567+
if (vo.IsIllegalContent())
568+
{
569+
if (lostRule == TransLyricLostRuleEnum.IGNORE)
570+
{
571+
continue;
572+
}
573+
else
574+
{
575+
content = "";
576+
}
577+
}
578+
else
579+
{
580+
content = Pinyin4Net.GetPinyin(vo.Content, PinyinDefineFormat);
581+
}
582+
583+
resultList.Add(new LyricLineVo(content, vo.Timestamp));
584+
}
585+
586+
return Task.FromResult(resultList);
587+
}
588+
550589
/**
551590
* 歌词排序函数
552591
*/

MusicLyricApp/packages.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,5 @@
6161
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net48" />
6262
<package id="System.Xml.ReaderWriter" version="4.3.1" targetFramework="net48" />
6363
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net48" />
64+
<package id="hyjiacan.pinyin4net" version="4.1.1" targetFramework="net48" />
6465
</packages>

MusicLyricAppTest/MusicLyricAppTest.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
<Reference Include="System" />
3232
</ItemGroup>
3333
<ItemGroup>
34+
<PackageReference Include="hyjiacan.pinyin4net" Version="4.1.1" />
3435
<PackageReference Include="Kawazu" Version="1.1.4" />
3536
<PackageReference Include="Markdig" Version="0.30.4" />
3637
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
@@ -50,6 +51,7 @@
5051
<Compile Include="Utils\GlobalUtilsTest.cs" />
5152
<Compile Include="Utils\LyricUtilsTest.cs" />
5253
<Compile Include="Utils\NetEaseMusicSearchUtils.cs" />
54+
<Compile Include="Utils\PinyinTest.cs" />
5355
<Compile Include="Utils\SrtUtilsTest.cs" />
5456
<Compile Include="Utils\XmlUtils.cs" />
5557
</ItemGroup>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using System;
2+
using hyjiacan.py4n;
3+
using NUnit.Framework;
4+
5+
namespace MusicLyricAppTest.Utils
6+
{
7+
[TestFixture]
8+
public class PinyinTest
9+
{
10+
11+
[Test]
12+
public void TestQuickStart()
13+
{
14+
// 设置拼音输出格式
15+
const PinyinFormat format = PinyinFormat.WITH_TONE_MARK | PinyinFormat.LOWERCASE | PinyinFormat.WITH_U_UNICODE;
16+
17+
// 判断是否是汉字
18+
Assert.IsTrue(PinyinUtil.IsHanzi('李'));
19+
20+
// 取出指定汉字的所有拼音
21+
Console.WriteLine(string.Join(",", Pinyin4Net.GetPinyin('好')));
22+
23+
// 取出指定汉字的所有拼音(经过格式化的)
24+
Console.WriteLine(string.Join(",", Pinyin4Net.GetPinyin('好', format)));
25+
26+
// 取指定汉字的唯一或者第一个拼音
27+
Console.WriteLine(Pinyin4Net.GetFirstPinyin('好'));
28+
29+
// 取指定汉字的唯一或者第一个拼音(经过格式化的)
30+
Console.WriteLine(Pinyin4Net.GetFirstPinyin('好', format));
31+
32+
Console.WriteLine(Pinyin4Net.GetPinyin("你好吗这里是 china 北京!", format));
33+
}
34+
}
35+
}

images/5_9_version.png

52.2 KB
Loading

images/latest_version.png

159 KB
Loading

0 commit comments

Comments
 (0)