Giter Site home page Giter Site logo

163musiclyrics's People

Contributors

daoxi avatar dependabot[bot] avatar hoywu avatar jitwxs avatar textgamex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

163musiclyrics's Issues

空行可能会显示分隔符

外文歌曲如果选择合并,批量保存可能会出现方括号后面带分隔符的情况如

[00:23.56]歌词
[00:26.32]#<----应该是空白行
[00:27.76]歌词
或者
[by:小您同学]#<----应该没有井号

(我又来了)【划掉】祝楼主生活顺利

建议修改报错提示

例如

ID: 411356061, Reason: 未将对象引用设置到对象的实例。

麻烦说“人话”,改成“歌词为空”之类的好吗 =ω=

建议添加对播放器高亮歌词的兼容更良好的分行翻译格式

以“优先原文”的双语歌词显示为例,目前该软件(以及不少其它软件)用的均是以下格式:
[00:00.03] 原文歌词1
[00:00.03] 原文翻译1
[00:00.07] 原文歌词2
[00:00.07] 原文翻译2
这个格式在用文本查看时一目了然,但有个很大的问题:对绝大多数播放器(如foobar2000的ESLyric插件,以前的千千静音,支持大量平台的Minilyrics等等)来说,其并不能正确的同时高亮两个时间轴相同的歌词,相应的,其会高亮两个时间轴相同的歌词中后面的那个。也就是说用户在观看该种格式的歌词时,会发现高亮的歌词永远是翻译。

所以我建议添加新的选项使在用户播放该格式歌词时高亮的是歌词原文而非歌词翻译,具体实现方法是:将歌词翻译置于歌词原文下一行的另一时间戳,该时间戳时间为下一句原文歌词的时间减去最小时间单位(0.01秒)
如:
[00:01:30]原文1
[00:01:79]翻译1
[00:01:80]原文2
[00:02:29]翻译2
[00:02:30]原文3
[00:03:24]翻译3
......
这样的翻译格式虽然在用文本查看时会感觉时间轴很奇怪,但却可以保证在用任何播放器播放时永远都只高亮歌词原文(高亮翻译的0.01秒可忽略不计,在不打破LRC标准格式的情况下似乎没有其它方法)。

添加保存默认选项的功能 Adding the feature to save default options

如题,目前每次打开都要重新选择各种设置(比如选择哪个平台,如何显示译文,是否强制两位,等等),建议能够保存这些选项,下次打开时就不用再麻烦了。

比如可以把这些设置存储于同目录的一个.ini文件中(首次打开程序后生成),这样以后下载新版覆盖安装时也会保留设置(因为配置文件不包含于绿色版程序包中)。

顺带一提,Github提建议时英文提示的“Please input hear”应该打错了是“here”吧。

接入NLog日志框架

接入NLog日志框架

可以把日志写入到文件中, 这样软件崩溃时就可以让用户把日志发过来, 帮助排除Bugs

好处

  • 有助于快速定位Bugs
  • 记录一些需要的信息
  • 有利于优化程序

如果作者不熟悉NLog, 我可以帮助你, 邮箱: [email protected]

优化: 新版本检测显示更多信息

新版本检测显示更多信息

现版本检查到有新版本更新后只会弹出个弹窗, 可以选择显示一个窗口, 显示更多信息, 比如:

  • 更新内容
  • 更新日期
  • 作者
  • 其他提示信息

新功能: 支持自动检查更新

支持自动检查更新, 用户启动软件后自动检查软件是否有新版本, 如果有就提醒用户更新

  • 可以设置是否开启
  • 使用异步, 不阻塞UI线程

叠句下载有问题

https://music.163.com/#/song?id=29343447
应该是

[by:暗影夜光]
[00:00.00]
[00:31.40][01:45.15]为什么我有个 笨蛋欧尼酱
[00:35.02][01:48.14]告诉他我的生日 转眼就会忘
[00:38.07][01:48.79]“大笨蛋!”
[00:38.79][01:52.52]买给我的裙子 总是有点长
[00:42.10][01:55.97]只会摸我的头 说一句
[00:45.43][01:59.25]“乖哦” “嗯”
[00:46.34][02:00.11]竟被陌生人说 很有夫妻相
[00:49.50][02:03.58]明明我们除了姓 什么都不像
[00:53.54][02:07.31]整日宅在家里 键盘都磨光
[00:56.90][02:10.73]我才不承认自己有这样的欧尼酱!
[01:00.34][02:14.23]“哼!”
[01:00.88][02:14.63]kami sama(神啊)
[01:02.71][02:16.54]快救救我吧
[01:04.34][02:18.09]为何我最近变得奇怪了啊
[01:07.93][02:21.55]明明只是个hentai(变态)大傻瓜
[01:11.46][02:25.18]到底有哪一点好嘛
[01:15.22][02:28.89]一定是错觉吧
[01:17.20][02:30.92]别想太多啦
[01:19.10][02:32.78]可为何我的心跳不听话
[01:22.54][02:36.33]视线相交就飙上一百码
[01:26.20][02:40.02]到底怎么办才好嘛!
[01:29.97][02:44.24]
[02:59.20]放弃抵抗吧
[03:00.86]接受事实吧
[03:02.57]原来自己才是个傻瓜
[03:06.06]终于承认自己真实的想法
[03:09.52]因为兄控即是正义啊!

但是下载之后成了

[by:暗影夜光]
[00:00.00]
[00:31.40]
[01:45.15]为什么我有个 笨蛋欧尼酱
[00:35.02]
[01:48.14]告诉他我的生日 转眼就会忘
[00:38.07]
[01:48.79]“大笨蛋!”
[00:38.79]
[01:52.52]买给我的裙子 总是有点长
[00:42.10]
[01:55.97]只会摸我的头 说一句
[00:45.43]
[01:59.25]“乖哦” “嗯”
[00:46.34]
[02:00.11]竟被陌生人说 很有夫妻相
[00:49.50]
[02:03.58]明明我们除了姓 什么都不像
[00:53.54]
[02:07.31]整日宅在家里 键盘都磨光
[00:56.90]
[02:10.73]我才不承认自己有这样的欧尼酱!
[01:00.34]
[02:14.23]“哼!”
[01:00.88]
[02:14.63]kami sama(神啊)
[01:02.71]
[02:16.54]快救救我吧
[01:04.34]
[02:18.09]为何我最近变得奇怪了啊
[01:07.93]
[02:21.55]明明只是个hentai(变态)大傻瓜
[01:11.46]
[02:25.18]到底有哪一点好嘛
[01:15.22]
[02:28.89]一定是错觉吧
[01:17.20]
[02:30.92]别想太多啦
[01:19.10]
[02:32.78]可为何我的心跳不听话
[01:22.54]
[02:36.33]视线相交就飙上一百码
[01:26.20]
[02:40.02]到底怎么办才好嘛!
[01:29.97]
[02:44.24]
[02:59.20]放弃抵抗吧
[03:00.86]接受事实吧
[03:02.57]原来自己才是个傻瓜
[03:06.06]终于承认自己真实的想法
[03:09.52]因为兄控即是正义啊!

希望增加通过多个id批量下载歌词的功能

一个一个点真的很累QAQ

PS:顺便给其他?detail整烦的人分享一下我的经验,提取id可以直接用一个叫linkclump的浏览器插件在网易云页面上框选完成(选项选URLS only然后在文本编辑器里批量删除https://music.163.com/#/song?id=

搜索报错

歌曲ID:28151022、1428179190
搜索失败,错误信息:
startIndex cannot be larger than length of string.
Parameter name: startIndex

app 图标

图标还是很重要的 实在不想画,我可以帮你导出网易云的

添加单元测试框架

使用NUnit构建单元测试, 使开发人员放心修改、重构代码, 且有助于发现潜在的Bugs

虽然TDD没必要, 但写一些单元测试还是有益无害的

v3.2版本使用时报错

************** 异常文本 **************
System.Net.WebException: 基础连接已经关闭: 连接被意外关闭。
在 System.Net.WebClient.UploadValues(Uri address, String method, NameValueCollection data)
在 System.Net.WebClient.UploadValues(String address, String method, NameValueCollection data)
在 网易云歌词提取.NeteaseMusicAPI.CURL(String url, Dictionary`2 parms, String method)
在 网易云歌词提取.NeteaseMusicAPI.GetSongsUrl(Int64[] song_id, Int64 bitrate)
在 WindowsFormsApp1.MainForm.RequestSongVO(Int64 songId, String& errorMsg)
在 WindowsFormsApp1.MainForm.SingleSearchBySongId(String songIdStr)
在 WindowsFormsApp1.MainForm.searchBtn_Click(Object sender, EventArgs e)
在 System.Windows.Forms.Control.OnClick(EventArgs e)
在 System.Windows.Forms.Button.OnClick(EventArgs e)
在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
在 System.Windows.Forms.Button.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** 已加载的程序集 **************
mscorlib
程序集版本:4.0.0.0
Win32 版本:4.8.4300.0 built by: NET48REL1LAST_C
基本代码:file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll

163MusicLyrics
程序集版本:1.0.0.0
Win32 版本:1.0.0.0
基本代码:file:///D:/BaiduNetdiskDownload/v2.9-green/v3.2-green/%E7%BD%91%E6%98%93%E4%BA%91%E6%AD%8C%E8%AF%8D%E7%88%AC%E5%8F%96.exe

System.Windows.Forms
程序集版本:4.0.0.0
Win32 版本:4.8.4270.0 built by: NET48REL1LAST_C
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

System
程序集版本:4.0.0.0
Win32 版本:4.8.4300.0 built by: NET48REL1LAST_C
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

System.Drawing
程序集版本:4.0.0.0
Win32 版本:4.8.4084.0 built by: NET48REL1
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

System.Configuration
程序集版本:4.0.0.0
Win32 版本:4.8.4190.0 built by: NET48REL1LAST_B
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

System.Core
程序集版本:4.0.0.0
Win32 版本:4.8.4320.0 built by: NET48REL1LAST_C
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

System.Xml
程序集版本:4.0.0.0
Win32 版本:4.8.4084.0 built by: NET48REL1
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

System.Numerics
程序集版本:4.0.0.0
Win32 版本:4.8.4084.0 built by: NET48REL1
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll

Newtonsoft.Json
程序集版本:10.0.0.0
Win32 版本:10.0.2.20802
基本代码:file:///D:/BaiduNetdiskDownload/v2.9-green/v3.2-green/Newtonsoft.Json.DLL

System.Runtime.Serialization
程序集版本:4.0.0.0
Win32 版本:4.8.4250.0 built by: NET48REL1LAST_C
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll

System.Data
程序集版本:4.0.0.0
Win32 版本:4.8.4270.0 built by: NET48REL1LAST_C
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll

System.resources
程序集版本:4.0.0.0
Win32 版本:4.8.4084.0 built by: NET48REL1
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/System.resources.dll

System.Windows.Forms.resources
程序集版本:4.0.0.0
Win32 版本:4.8.4084.0 built by: NET48REL1
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/System.Windows.Forms.resources.dll

mscorlib.resources
程序集版本:4.0.0.0
Win32 版本:4.8.4084.0 built by: NET48REL1
基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/mscorlib.resources.dll

************** JIT 调试 **************
要启用实时(JIT)调试,
该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置
jitDebugging 值。
编译应用程序时还必须启用
调试。

例如:

启用 JIT 调试后,任何未经处理的异常
都将被发送到在此计算机上注册的 JIT 调试程序,
而不是由此对话框处理。

写了一个辅助小程序

【背诵全文】

NetEase-id-geter

网易云歌单&专辑歌曲ID提取器

使用方法

  • mainway:输入歌单或专辑的网址等,对应关系如下

    in_search_dict = {'^.*?playlist.*?([0-9]+).*$': 'playlist', '^.*?album.*?([0-9]+).*$': 'album', '^list.*?([0-9]+).*$': 'playlist', '^p([0-9]+)$': 'playlist', '^a([0-9]+)$': 'album'}
      # ...
    While True:
          # ...
        for each_str in list(in_search_dict.keys()):
            in_match = re.match(each_str, user_in)
            if in_match:
                in_kind = in_search_dict.get(each_str)  # get the value
                in_id = in_match.group(1)  # use re
  • bylink:输入歌单或专辑的网址,主要的作用是网易云防止哪天偷偷改歌单和专辑的网址……不过这个对输入的要求更加严格:

    ‘’’DO NOT use a ".../#/my/m/music/..."link
    Use a link like>>http://music.163.com/playlist?id=123456789
    DO NOT use a link like>>https://music.163.com/#/my/m/music/playlist?id=123456789‘’’

    (代码原注释)

  • byjsonfull:输入“字符串”(见str-get.md)

  • byjsonshort:输入“短字符串”(见str-get.md)

  • byre:输入“字符串”或“短字符串”(见str-get.md)

依赖环境

Python(这不是废话吗)

BeautifulSoup4

  • 使用pip install beautifulsoup4安装

如有使用.exe可执行文件的需要,欢迎提出issue并附上邮箱地址,exe文件是真的大……

原理简述

使用requests获取网页,使用BeautifulSoup解析

当然byjson和byre就没有获取网页的过程了

友情链接

这个项目是我给163MusicLyrics写的配套小程序

链接:https://github.com/jitwxs/163MusicLyrics

qq音乐歌词导出srt优化

qq音乐导出的双语srt歌词会把//也导出,建议换成\n,一个\一个n,在srt格式和ass格式中表示一个空格,起到占位作用

添加更多平台的歌词获取来源 Adding more platforms for downloading lyrics

在另个名叫LyricCapture的repo发现了很相似的歌词获取软件,其同时支持QQ音乐和网易云,这个软件也是用C#写的,但自从发布后就没再更新过了。

QQ音乐目前的版权比网易云多不少所以能下到的歌词也更多,其歌词格式也更统一。不知作者有没有兴趣根据这人的源码来添加获取QQ音乐歌词与翻译的功能?或者fork这个repo后进行维护更新?

与 Clash 兼容性问题

开启 Clash for Windows 时,点击搜索报错:Cheating
在 Clash 中关闭 System Proxy 后可以正常获取歌词信息。
Clash 版本:0.61 0.7.2 均可复现
163MusicLyrics 版本 :2.2

Issues with HTML/XML Escape Characters

When trying to download certain lyrics that contain escaped characters, the characters are not converted into their original forms.

To reproduce the bug:

For example, for QQ Music ID: 001HeMEN0hplNv

part of the downloaded lyrics contains
We&apos;re
instead of
We're
(the "&apos;" part is not converted to an actual apostrophe: ' )

it also contains
&quot;hell yeah&quot;
instead of
"hell yeah"
(the "&quot;" part is not converted to a double quotation mark: " )

Version tested: v4.0

开源协议修正

您的开源协议格式并不正确
QQ截图20220330102610

应该为以下格式

QQ截图20220330102916

所以, 正确格式应该是: Copyright 2017 jitwxs

[2017] 为项目启动年

希望可以增加以下功能:

下载的歌词是第一行原文,第二行译文,我希望达到的效果是:原文歌词播放完,以极短的时间播放完译文歌词,然后到下一句原文歌词,这样的视觉效果是,歌词只播放原文,不播放译文,但是译文还是存在的。
目前我只能手动把译文歌词的下一句原文歌词的时间减2,再复制给该译文歌词,达到上述效果。
好像确实挺麻烦你的……我有空自己改改代码吧

双语字幕导出srt格式能否使外文与对应的译文带上相同的时间轴

Snipaste_2022-04-12_23-28-30
双语歌词字幕视频
导出srt格式大部分用途是导入aegisub等字幕编辑软件做成ass字幕,如果要做出上图的效果,只能选择优先原文或者优先译文模式。但是导出后有一种语言的开始时间与结束时间是相同的,在aegisub里面显示不出来,之前我的做法是用aegisub的插件把奇数行和偶数行分开,批量复制时间轴,但是如果一首歌有些歌词没有中文翻译,特别是韩语歌,就会很麻烦,必须手动调整,保证中文歌词与外文歌词交错且两者数量相等才能批量复制时间轴。LyricCapture的模式三非常适合,lrc歌词把中文与外文分开,都带上了时间轴,所以我自己写了一个lrc转srt的程序配合使用。希望支持一下导出srt中文和外文都带上时间轴,适合给视频加双语字幕歌词。

BOM头

图片
新买的MP3歌词显示乱码,检查后发现是BOM头的问题
但是看代码好像编码格式是utf-8,似乎没有SIG或者BOM,疑惑…………

能不能顺便写个把某一文件夹下所有.lrc文件都改编码成utf-8的脚本或程序呀,我的MP3在读取文件内容的时候好像只支持utf-8,而我的歌词文件一共有4种还是五种格式:cry:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.