mirror of
https://github.com/jayfunc/BetterLyrics.git
synced 2026-01-12 02:44:56 +08:00
chores: update docs
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
using BetterLyrics.WinUI3.Helper;
|
||||
using BetterLyrics.WinUI3.Services.AlbumArtSearchService;
|
||||
using BetterLyrics.WinUI3.Services.DiscordService;
|
||||
using BetterLyrics.WinUI3.Services.LastFMService;
|
||||
using BetterLyrics.WinUI3.Services.LibWatcherService;
|
||||
using BetterLyrics.WinUI3.Services.LiveStatesService;
|
||||
@@ -99,6 +100,7 @@ namespace BetterLyrics.WinUI3
|
||||
.AddSingleton<ITranslateService, TranslateService>()
|
||||
.AddSingleton<ILastFMService, LastFMService>()
|
||||
.AddSingleton<IResourceService, ResourceService>()
|
||||
.AddSingleton<IDiscordService, DiscordService>()
|
||||
// ViewModels
|
||||
.AddSingleton<AppSettingsControlViewModel>()
|
||||
.AddSingleton<PlaybackSettingsControlViewModel>()
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
<PackageReference Include="csharp-kana" Version="1.0.2" />
|
||||
<PackageReference Include="csharp-pinyin" Version="1.0.1" />
|
||||
<PackageReference Include="DevWinUI.Controls" Version="9.5.0" />
|
||||
<PackageReference Include="DiscordRichPresence" Version="1.6.1.70" />
|
||||
<PackageReference Include="Dubya.WindowsMediaController" Version="2.5.5" />
|
||||
<PackageReference Include="H.NotifyIcon.WinUI" Version="2.3.2" />
|
||||
<PackageReference Include="Hqub.Last.fm" Version="2.5.1" />
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace BetterLyrics.WinUI3.Constants
|
||||
{
|
||||
class Discord
|
||||
{
|
||||
public const string AppID = "Your Discord app ID here";
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
{
|
||||
public static class Link
|
||||
{
|
||||
public const string MicrosoftStoreUrl = "https://apps.microsoft.com/detail/9p1wcd1p597r";
|
||||
public const string GitHubUrl = "https://github.com/jayfunc/BetterLyrics";
|
||||
public const string ShareHubUrl = $"{GitHubUrl}/blob/dev/ShareHub/index.md";
|
||||
public const string WikiUrl = $"{GitHubUrl}/wiki";
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
using BetterLyrics.WinUI3.Models;
|
||||
using DiscordRPC;
|
||||
using Microsoft.Windows.Storage;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using static Vanara.PInvoke.Kernel32.REASON_CONTEXT;
|
||||
|
||||
namespace BetterLyrics.WinUI3.Services.DiscordService
|
||||
{
|
||||
public class DiscordService : IDiscordService
|
||||
{
|
||||
private DiscordRpcClient? _client;
|
||||
private RichPresence _richPresence;
|
||||
|
||||
public DiscordService()
|
||||
{
|
||||
_richPresence = new()
|
||||
{
|
||||
StatusDisplay = StatusDisplayType.Name,
|
||||
Type = ActivityType.Listening,
|
||||
};
|
||||
|
||||
_client = new DiscordRpcClient(Constants.Discord.AppID);
|
||||
_client.OnReady += Client_OnReady;
|
||||
_client.Initialize();
|
||||
}
|
||||
|
||||
public void UpdateRichPresence(SongInfo songInfo)
|
||||
{
|
||||
_richPresence.Details = songInfo.Title;
|
||||
_richPresence.State = songInfo.Artist;
|
||||
_richPresence.Timestamps = Timestamps.FromTimeSpan(songInfo.Duration ?? 0);
|
||||
_richPresence.Assets = new Assets
|
||||
{
|
||||
};
|
||||
_client?.SetPresence(_richPresence);
|
||||
}
|
||||
|
||||
public void UpdateRichPresence(TimeSpan current, TimeSpan duration)
|
||||
{
|
||||
//_richPresence.Timestamps = new(DateTime.Now - current, DateTime.Now - current + duration);
|
||||
//_client?.SetPresence(_richPresence);
|
||||
}
|
||||
|
||||
private void Client_OnReady(object sender, DiscordRPC.Message.ReadyMessage args)
|
||||
{
|
||||
Debug.WriteLine("Connected to discord with user {0}", args.User.Username);
|
||||
Debug.WriteLine("Avatar: {0}", args.User.GetAvatarURL(User.AvatarFormat.WebP));
|
||||
Debug.WriteLine("Decoration: {0}", args.User.GetAvatarDecorationURL());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using BetterLyrics.WinUI3.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace BetterLyrics.WinUI3.Services.DiscordService
|
||||
{
|
||||
public interface IDiscordService
|
||||
{
|
||||
void UpdateRichPresence(SongInfo songInfo);
|
||||
void UpdateRichPresence(TimeSpan current, TimeSpan duration);
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ using BetterLyrics.WinUI3.Helper;
|
||||
using BetterLyrics.WinUI3.Models;
|
||||
using BetterLyrics.WinUI3.Models.Settings;
|
||||
using BetterLyrics.WinUI3.Services.AlbumArtSearchService;
|
||||
using BetterLyrics.WinUI3.Services.DiscordService;
|
||||
using BetterLyrics.WinUI3.Services.LibWatcherService;
|
||||
using BetterLyrics.WinUI3.Services.LiveStatesService;
|
||||
using BetterLyrics.WinUI3.Services.LyricsSearchService;
|
||||
@@ -47,6 +48,7 @@ namespace BetterLyrics.WinUI3.Services.MediaSessionsService
|
||||
private readonly ISettingsService _settingsService;
|
||||
private readonly ILibWatcherService _libWatcherService;
|
||||
private readonly ILiveStatesService _liveStatesService;
|
||||
private readonly IDiscordService _discordService;
|
||||
private readonly IResourceService _resourceService;
|
||||
private readonly ILogger<MediaSessionsService> _logger;
|
||||
|
||||
@@ -79,6 +81,7 @@ namespace BetterLyrics.WinUI3.Services.MediaSessionsService
|
||||
ILyricsSearchService musicSearchService,
|
||||
ILibWatcherService libWatcherService,
|
||||
ILiveStatesService liveStatesService,
|
||||
IDiscordService discordService,
|
||||
ITranslateService libreTranslateService,
|
||||
IResourceService resourceService)
|
||||
{
|
||||
@@ -88,6 +91,7 @@ namespace BetterLyrics.WinUI3.Services.MediaSessionsService
|
||||
_libWatcherService = libWatcherService;
|
||||
_translateService = libreTranslateService;
|
||||
_liveStatesService = liveStatesService;
|
||||
_discordService = discordService;
|
||||
_resourceService = resourceService;
|
||||
_logger = Ioc.Default.GetRequiredService<ILogger<MediaSessionsService>>();
|
||||
|
||||
@@ -239,6 +243,7 @@ namespace BetterLyrics.WinUI3.Services.MediaSessionsService
|
||||
_dispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low, () =>
|
||||
{
|
||||
TimelineChanged?.Invoke(this, new TimelineChangedEventArgs(_cachedPosition, TimeSpan.Zero));
|
||||
_discordService.UpdateRichPresence(_cachedPosition, TimeSpan.Zero);
|
||||
});
|
||||
}
|
||||
else
|
||||
@@ -249,6 +254,7 @@ namespace BetterLyrics.WinUI3.Services.MediaSessionsService
|
||||
_dispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low, () =>
|
||||
{
|
||||
TimelineChanged?.Invoke(this, new TimelineChangedEventArgs(_cachedPosition, timelineProperties?.EndTime ?? TimeSpan.Zero));
|
||||
_discordService.UpdateRichPresence(_cachedPosition, timelineProperties?.EndTime ?? TimeSpan.Zero);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -375,6 +381,8 @@ namespace BetterLyrics.WinUI3.Services.MediaSessionsService
|
||||
SongInfoChanged?.Invoke(this, new SongInfoChangedEventArgs(_cachedSongInfo));
|
||||
UpdateAlbumArt();
|
||||
UpdateLyrics();
|
||||
|
||||
_discordService.UpdateRichPresence(_cachedSongInfo);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -446,9 +454,13 @@ namespace BetterLyrics.WinUI3.Services.MediaSessionsService
|
||||
{
|
||||
_cachedSongInfo = SongInfoExtensions.Placeholder;
|
||||
_cachedIsPlaying = false;
|
||||
|
||||
SongInfoChanged?.Invoke(this, new SongInfoChangedEventArgs(_cachedSongInfo));
|
||||
IsPlayingChanged?.Invoke(this, new IsPlayingChangedEventArgs(_cachedIsPlaying));
|
||||
TimelineChanged?.Invoke(this, new TimelineChangedEventArgs(TimeSpan.Zero, TimeSpan.Zero));
|
||||
|
||||
_discordService.UpdateRichPresence(_cachedSongInfo);
|
||||
_discordService.UpdateRichPresence(TimeSpan.Zero, TimeSpan.Zero);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -536,6 +548,7 @@ namespace BetterLyrics.WinUI3.Services.MediaSessionsService
|
||||
if (IsMediaSourceTimelineSyncEnabled(_cachedSongInfo?.PlayerId))
|
||||
{
|
||||
TimelineChanged?.Invoke(this, new TimelineChangedEventArgs(TimeSpan.FromSeconds(_lxMusicPositionSeconds), TimeSpan.FromSeconds(_lxMusicDurationSeconds)));
|
||||
_discordService.UpdateRichPresence(TimeSpan.FromSeconds(_lxMusicPositionSeconds), TimeSpan.FromSeconds(_lxMusicDurationSeconds));
|
||||
}
|
||||
}
|
||||
else if (data.ValueKind == JsonValueKind.String)
|
||||
|
||||
67
PrivacyPolicy.CN.md
Normal file
67
PrivacyPolicy.CN.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# BetterLyrics 隐私政策
|
||||
|
||||
**生效日期:** 2025 年 6 月 3 日
|
||||
|
||||
欢迎使用由 Zhe Fang(“我们”、“我们的”)开发的 BetterLyrics(“本应用”)。我们致力于保护您的隐私。本隐私政策解释了您在使用本应用时,我们如何处理信息。
|
||||
|
||||
本应用是一款桌面应用程序。您的数据主要存储在您的本地设备上。
|
||||
|
||||
## 1. 我们处理的信息
|
||||
|
||||
BetterLyrics 的设计旨在最大限度地减少数据收集。我们不要求您创建账户,也不会收集您的姓名、地址或电话号码等个人身份信息 (PII)。
|
||||
|
||||
为提供其核心服务,本应用可能会处理以下类型的信息:
|
||||
|
||||
### a) 您提供的信息
|
||||
* **Apple Music Token:** 如果您选择使用 Apple Music 作为歌词源,本应用会要求您提供一个自行生成的 Token。此 Token **仅存储在您的本地设备上**,并仅用于代表您向 Apple Music API 发出请求以获取歌词。我们不会上传或收集此 Token。
|
||||
* **本地设置:** 您的所有偏好和设置都存储在您的本地设备上。
|
||||
|
||||
### b) 为实现功能而处理的信息
|
||||
* **歌曲元数据:** 为了获取歌词,本应用必须将歌曲元数据(例如歌曲名称、艺术家和专辑)发送给您所选择的第三方歌词提供商。此信息是匿名发送的,我们不会将其与您的个人身份相关联。
|
||||
* **日志文件:** 本应用会自动在您的**本地设备**上收集和存储日志文件,用于调试和故障排除。这些日志**仅包含必要的调试信息**,**不会自动上传**给我们。当您需要技术支持时,我们可能会请求您手动将这些日志文件发送给我们。
|
||||
* **分析:** 我们**不会**收集有关您如何使用本应用的任何匿名使用统计或分析数据。
|
||||
* **更新检查:** 本应用**不会**自动检查新版本。
|
||||
|
||||
## 2. 我们如何使用信息
|
||||
我们仅为以下目的使用所处理的信息:
|
||||
* 提供和维护本应用的核心功能(即,根据歌曲元数据获取和显示歌词)。
|
||||
* 在本地存储您的配置和凭据(如 Apple Music Token),以便您无需重复输入。
|
||||
* 通过本地日志文件帮助诊断和修复错误(仅在您手动提供日志时)。
|
||||
|
||||
## 3. 第三方服务
|
||||
BetterLyrics 的核心功能依赖于与第三方歌词提供商的交互。这些服务包括但不限于:
|
||||
|
||||
* 网易云音乐 (NetEase Cloud Music)
|
||||
* QQ音乐 (QQ Music)
|
||||
* 酷狗音乐 (Kugou Music)
|
||||
* Apple Music(需要您自己的 Token)
|
||||
* amll-ttml-db (GitHub 开源歌词数据库)
|
||||
* LRCLIB
|
||||
|
||||
当您通过本应用请求歌词时,您的歌曲元数据将被发送到这些服务。这些第三方拥有其各自的隐私政策来管辖其对数据的使用。我们不对这些服务的数据处理行为负责。我们建议您查阅它们各自的隐私政策。
|
||||
|
||||
## 4. 信息共享和披露
|
||||
我们**不会**出售、交易或出租您的任何信息。
|
||||
|
||||
如前所述,您的敏感信息(如 Apple Music Token 和日志)默认**仅存储在本地**。我们不会自动访问或共享此信息。
|
||||
|
||||
唯一的例外是,当您发起歌词请求时,歌曲元数据将按照第 3 节所述发送到您选择的第三方服务。
|
||||
|
||||
## 5. 数据安全
|
||||
我们采取合理的措施来保护本应用处理的信息。我们特别强调:
|
||||
|
||||
* **Apple Music Token:** 此敏感凭据仅存储在您的本地设备上。您有责任保护您设备的安全。如果您怀疑您的 Token 已泄露,请立即通过 Apple Music 将其作废并生成一个新的。
|
||||
* **本地日志:** 日志文件也存储在本地。
|
||||
|
||||
由于您的数据主要存储在设备上,因此该数据的安全性取决于您自己设备的安全性。
|
||||
|
||||
## 6. 儿童隐私
|
||||
本应用不适用于 16 岁以下的儿童。我们不会有意收集 16 岁以下儿童的任何信息。
|
||||
|
||||
## 7. 本隐私政策的变更
|
||||
我们可能会不时更新本隐私政策。我们将通过在本应用或我们的 GitHub 仓库中发布新的隐私政策来通知您任何变更。
|
||||
|
||||
## 8. 联系我们
|
||||
如果您对本隐私政策有任何疑问,请联系:
|
||||
Zhe Fang
|
||||
[zhefang.zf@gmail.com](mailto:zhefang.zf@gmail.com)
|
||||
@@ -1,26 +1,67 @@
|
||||
Privacy Policy – BetterLyrics
|
||||
Effective Date: June 3, 2025
|
||||
# Privacy Policy for BetterLyrics
|
||||
|
||||
Thank you for using BetterLyrics.
|
||||
**Effective Date:** June 3, 2025
|
||||
|
||||
BetterLyrics is a lyrics viewer application built with WinUI 3. We respect your privacy and are committed to protecting it. This Privacy Policy explains how we handle your data.
|
||||
Welcome to BetterLyrics ("we", "us", "our"), an application developed by Zhe Fang. We are committed to protecting your privacy. This Privacy Policy explains how we handle information when you use our BetterLyrics application (the "App").
|
||||
|
||||
1. Personal Data Collection
|
||||
BetterLyrics does not collect, store, or transmit any personal data by default. All lyrics, preferences, and settings are stored locally on your device. We do not access or send your personal information to any server without your explicit action.
|
||||
This App is a desktop application. Your data is primarily stored locally on your device.
|
||||
|
||||
2. Internet Usage
|
||||
BetterLyrics may connect to the internet to provide optional features, such as:
|
||||
## 1. Information We Process
|
||||
|
||||
- Fetching lyrics from online sources
|
||||
- Viewing demo content via external links
|
||||
BetterLyrics is designed to minimize data collection. We do not require you to create an account, and we do not collect personal identification information (PII) such as your name, address, or phone number.
|
||||
|
||||
These features are strictly opt-in. The app does not perform background communication or data transmission unless you explicitly initiate it.
|
||||
To provide its core services, the App may process the following types of information:
|
||||
|
||||
3. Third-Party Libraries
|
||||
BetterLyrics uses third-party open-source libraries (e.g., Win2D, CommunityToolkit, DevWinUI). These libraries operate locally and do not perform background tracking or data collection.
|
||||
### a) Information You Provide
|
||||
* **Apple Music Token:** If you choose to use the Apple Music lyric source, the App requires you to provide a self-generated token. This token is **stored only on your local device** and is used solely to make requests to the Apple Music API on your behalf to fetch lyrics. We do not upload or collect this token.
|
||||
* **Local Settings:** All your preferences and settings are stored locally on your device.
|
||||
|
||||
4. Changes to This Policy
|
||||
If our privacy practices change (for example, when more online features are introduced), this policy will be updated accordingly. We will notify users through app updates or store listings.
|
||||
### b) Information Processed for Functionality
|
||||
* **Song Metadata:** To fetch lyrics, the App must send song metadata (such as the song title, artist, and album) to the third-party lyric provider you have selected. This information is sent anonymously and is not linked by us to your personal identity.
|
||||
* **Log Files:** The App automatically collects and stores log files **on your local device** for debugging and troubleshooting purposes. These logs **only contain necessary debug information** and are **not automatically uploaded** to us. We may ask you to manually provide these logs if you require technical support.
|
||||
* **Analytics:** We do **not** collect any anonymous usage statistics or analytics about how you use the App.
|
||||
* **Update Checks:** The App does **not** automatically check for new versions.
|
||||
|
||||
5. Contact
|
||||
If you have any questions about this privacy policy, please contact us at: founchoo@outlook.com
|
||||
## 2. How We Use Information
|
||||
We use the information processed solely for the following purposes:
|
||||
* To provide and maintain the App's core functionality (i.e., fetching and displaying lyrics based on song metadata).
|
||||
* To store your configuration and credentials (like the Apple Music Token) locally, so you do not have to re-enter them.
|
||||
* To help diagnose and fix bugs via local log files (only when you manually provide them).
|
||||
|
||||
## 3. Third-Party Services
|
||||
BetterLyrics' core functionality relies on interacting with third-party lyric providers. These services include, but are not limited to:
|
||||
|
||||
* NetEase Cloud Music (网易云音乐)
|
||||
* QQ Music (QQ音乐)
|
||||
* Kugou Music (酷狗音乐)
|
||||
* Apple Music (requires your own token)
|
||||
* amll-ttml-db (GitHub open-source lyric database)
|
||||
* LRCLIB
|
||||
|
||||
When you request lyrics via the App, your song metadata is sent to these services. These third parties have their own privacy policies governing their use of data. We are not responsible for the data practices of these services. We recommend you review their respective privacy policies.
|
||||
|
||||
## 4. Information Sharing and Disclosure
|
||||
We do **not** sell, trade, or rent any of your information.
|
||||
|
||||
As described, your sensitive information (like the Apple Music Token and logs) is stored **locally only** by default. We do not automatically access or share this information.
|
||||
|
||||
The only exception is when you initiate a lyric request, at which point song metadata is sent to the third-party service you selected, as described in Section 3.
|
||||
|
||||
## 5. Data Security
|
||||
We take reasonable measures to protect the information processed by the App. We specifically emphasize:
|
||||
|
||||
* **Apple Music Token:** This sensitive credential is stored only on your local device. You are responsible for protecting the security of your device. If you suspect your token is compromised, please revoke it immediately via Apple Music and generate a new one.
|
||||
* **Local Logs:** Log files are also stored locally.
|
||||
|
||||
As your data is primarily stored on your device, the security of that data is dependent on the security of your own device.
|
||||
|
||||
## 6. Children's Privacy
|
||||
The App is not intended for use by children under the age of 16. We do not knowingly collect any information from children under 16.
|
||||
|
||||
## 7. Changes to This Privacy Policy
|
||||
We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy in the App or on our GitHub repository.
|
||||
|
||||
## 8. Contact Us
|
||||
If you have any questions about this Privacy Policy, please contact:
|
||||
Zhe Fang
|
||||
[zhefang.zf@gmail.com](mailto:zhefang.zf@gmail.com)
|
||||
57
TermsofService.CN.md
Normal file
57
TermsofService.CN.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# BetterLyrics <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
**<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>** 2025 <20><> 6 <20><> 3 <20><>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD> Zhe Fang<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵġ<C7B5><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BetterLyrics Ӧ<>ó<EFBFBD><C3B3><EFBFBD><F2A3A8A1><EFBFBD>Ӧ<EFBFBD>á<EFBFBD><C3A1><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD>ϸ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA1B1><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>Ӧ<EFBFBD>õķ<EFBFBD><EFBFBD>ʺ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊǰ<EFBFBD>ᡣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>ʹ<EFBFBD>ñ<EFBFBD>Ӧ<EFBFBD>õ<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʻ<EFBFBD>ʹ<EFBFBD>ñ<EFBFBD>Ӧ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>Ȿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κβ<EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ñ<EFBFBD>Ӧ<EFBFBD>á<EFBFBD>
|
||||
|
||||
## 1. <20><><EFBFBD><EFBFBD>
|
||||
|
||||
BetterLyrics <20>ǿ<EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ø<EFBFBD><C3B8><EFBFBD> **MIT <20><><EFBFBD><EFBFBD>֤ (MIT License)** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GitHub <20>ֿ<EFBFBD><D6BF>к<EFBFBD>/<2F><><EFBFBD>ڱ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>渽<EFBFBD><E6B8BD> `LICENSE.txt` <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>Ӧ<EFBFBD>õ<EFBFBD>ʹ<EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
## 2. Ӧ<>õ<EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
|
||||
<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ŀ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ʺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õķ<EFBFBD><EFBFBD>ɷ<EFBFBD><EFBFBD>档
|
||||
|
||||
### 2.1 Apple Music Token <20><>ʹ<EFBFBD><CAB9>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD> Apple Music <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>
|
||||
* <20><><EFBFBD>Ǹ<EFBFBD> Apple Music <20>˻<EFBFBD><CBBB>ĺϷ<C4BA><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>ѱ<EFBFBD><D1B1><EFBFBD>Ȩʹ<C8A8>ø<EFBFBD> Token<65><6E>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Token<65><6E>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>豾Ӧ<E8B1BE><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8>ʹ<EFBFBD>ô<EFBFBD> Token <20><>Ȩ<EFBFBD>ޣ<EFBFBD><DEA3>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Apple Music API <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
## 3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD>Ӧ<EFBFBD>õĹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>QQ<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD>ṷ<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>Apple Music<69><63>amll-ttml-db <20><> LRCLIB<49><42><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD>ʺ<EFBFBD><CABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>ȷ<EFBFBD>ԡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Դ˸<EFBFBD><EFBFBD>𡣶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǸŲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>κε<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ге<EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
## 4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD>ڡ<EFBFBD>**<2A><>״ (AS IS)**<2A><><EFBFBD>͡<EFBFBD>**<2A><><EFBFBD><EFBFBD> (AS AVAILABLE)**<2A><><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ṩ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ṩ<EFBFBD>κ<EFBFBD><CEBA><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ʾ<EFBFBD>ı<EFBFBD>֤<EFBFBD><D6A4>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> MIT <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD>֤<EFBFBD><D6A4>
|
||||
* <20><>Ӧ<EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><DEB4><EFBFBD><EFBFBD><EFBFBD><F2B2BBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еġ<D0B5>
|
||||
* <20><><EFBFBD>ṩ<EFBFBD><E1B9A9>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>Ӧ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<F1A3A9B5><C4B8>ʻ<EFBFBD><CABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<D7BC><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><C9BF>ġ<EFBFBD>
|
||||
* <20>κ<EFBFBD>ȱ<EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><F3B6BCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD>ʹ<EFBFBD>ñ<EFBFBD>Ӧ<EFBFBD>õķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ге<EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
## 5. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>Zhe Fang<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>ʹ<EFBFBD>ñ<EFBFBD>Ӧ<EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>֮<EFBFBD><D6AE><EFBFBD>ص<EFBFBD><D8B5>κ<EFBFBD>ֱ<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>ӡ<EFBFBD>żȻ<C5BC><C8BB><EFBFBD><EFBFBD><EFBFBD>⡢<EFBFBD><E2A1A2><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ͷ<EFBFBD><CDB7>Ե<EFBFBD><D4B5><EFBFBD><F0BAA6B8>𣬼<EFBFBD>ʹ<EFBFBD>ѱ<EFBFBD><D1B1><EFBFBD>֪<EFBFBD><D6AA><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
## 6. <20><>ֹ
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD>˱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>б<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ӧ<EFBFBD>õ<EFBFBD>Ȩ<EFBFBD>ޣ<EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ρ<EFBFBD>
|
||||
|
||||
## 7. <20><>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>**<2A>л<EFBFBD><D0BB><EFBFBD><EFBFBD><F1B9B2BA>**<2A><><EFBFBD>ɹ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䷨<EFBFBD>ɳ<EFBFBD>ͻ<EFBFBD>涨<EFBFBD><E6B6A8>
|
||||
|
||||
## 8. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ļ<EFBFBD><EFBFBD>滻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>磬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD><EFBFBD><EFBFBD> GitHub <20>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ʽ֪ͨ<CDA8>κ<EFBFBD><CEBA>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
## 9. <20><>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>
|
||||
Zhe Fang
|
||||
[zhefang.zf@gmail.com](mailto:zhefang.zf@gmail.com)
|
||||
57
TermsofService.md
Normal file
57
TermsofService.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# Terms of Service for BetterLyrics
|
||||
|
||||
**Effective Date:** June 3, 2025
|
||||
|
||||
Please read these Terms of Service ("Terms") carefully before using the BetterLyrics application (the "App") developed by Zhe Fang ("we", "us", "our").
|
||||
|
||||
Your access to and use of the App is conditioned on your acceptance of and compliance with these Terms. These Terms apply to all users who download, install, or use the App.
|
||||
|
||||
By accessing or using the App, you agree to be bound by these Terms. If you disagree with any part of the terms, you may not access the App.
|
||||
|
||||
## 1. License
|
||||
|
||||
BetterLyrics is open-source software. The App is licensed to you under the terms of the **MIT License**.
|
||||
|
||||
A copy of this license is available in the GitHub repository and/or included with the App (`LICENSE.txt` file). Your use of the App must comply with the terms of this license.
|
||||
|
||||
## 2. Use of the App
|
||||
|
||||
You agree to use the App only for its intended purpose (displaying lyrics and music-related information) and in compliance with all applicable laws and regulations.
|
||||
|
||||
### 2.1 Use of Apple Music Token
|
||||
If you choose to use the Apple Music functionality, you represent and warrant that:
|
||||
* You are the rightful owner of the Apple Music account or are authorized to use the token.
|
||||
* You are solely responsible for obtaining and securing your token.
|
||||
* You grant the App permission to use this token on your local device to make requests to the Apple Music API on your behalf.
|
||||
|
||||
## 3. Third-Party Services
|
||||
The App's functionality depends on third-party services (including, but not limited to, NetEase Cloud Music, QQ Music, Kugou Music, Apple Music, amll-ttml-db, and LRCLIB) to provide lyrics and related data.
|
||||
|
||||
We do not control and are not responsible for the content, accuracy, availability, or data practices of these third-party services. We shall not be responsible or liable for any damage or loss caused by or in connection with the use of or reliance on any such third-party services. Your use of any third-party services is at your own risk.
|
||||
|
||||
## 4. Disclaimer of Warranties
|
||||
The App is provided "AS IS" and "AS AVAILABLE", without warranty of any kind, express or implied.
|
||||
|
||||
As per the MIT License, we do not warrant that:
|
||||
* The App will be error-free or uninterrupted.
|
||||
* The lyrics or other content provided (either by the App or third-party services) will be accurate, complete, or reliable.
|
||||
* Any defects or errors will be corrected.
|
||||
|
||||
Your use of the App is at your sole risk.
|
||||
|
||||
## 5. Limitation of Liability
|
||||
In no event shall Zhe Fang (the developer) be liable for any direct, indirect, incidental, special, consequential, or punitive damages arising out of or in connection with your use of, or inability to use, the App, even if advised of the possibility of such damages.
|
||||
|
||||
## 6. Termination
|
||||
We may terminate or suspend your access to the App immediately, without prior notice or liability, for any reason whatsoever, including, without limitation, if you breach the Terms.
|
||||
|
||||
## 7. Governing Law
|
||||
These Terms shall be governed and construed in accordance with the laws of the People's Republic of China, without regard to its conflict of law provisions.
|
||||
|
||||
## 8. Changes to These Terms
|
||||
We reserve the right, at our sole discretion, to modify or replace these Terms at any time. We will provide notice of any significant changes by (e.g., updating the date, posting on GitHub).
|
||||
|
||||
## 9. Contact Us
|
||||
If you have any questions about these Terms, please contact:
|
||||
Zhe Fang
|
||||
[zhefang.zf@gmail.com](mailto:zhefang.zf@gmail.com)
|
||||
Reference in New Issue
Block a user