├── WkyFast ├── icon.ico ├── Assets │ └── Images │ │ ├── heart.png │ │ ├── star.png │ │ ├── github.png │ │ ├── heart26.png │ │ └── github30.png ├── FodyWeavers.xml ├── View │ ├── Model │ │ └── MainTabItemModel.cs │ ├── Dialogs │ │ ├── ExitDialog.xaml.cs │ │ ├── ExitDialog.xaml │ │ ├── LoginDialog.xaml.cs │ │ ├── WindowAddTask.xaml │ │ ├── LoginDialog.xaml │ │ ├── WindowAddSubscription.xaml │ │ ├── WindowAddSubscription.xaml.cs │ │ └── WindowAddTask.xaml.cs │ ├── View │ │ ├── TaskListCellControl.xaml.cs │ │ ├── ConfigListItemControl.xaml.cs │ │ └── ConfigListItemControl.xaml │ ├── WkyFastSettingView.xaml.cs │ ├── WkyMainTabView.xaml.cs │ ├── WkyTaskListView.xaml │ ├── WkyMainTabView.xaml │ ├── WkySubscriptionListView.xaml.cs │ ├── Contver │ │ └── DownloadSizeContver.cs │ └── WkyFastSettingView.xaml ├── Utils │ ├── TimeHelper.cs │ ├── PathHelper.cs │ ├── FileSizeContver.cs │ ├── BrowserHelper.cs │ ├── PushDeer.cs │ ├── TaskHelper.cs │ ├── ActionVersion.cs │ ├── Win11Style.cs │ ├── AESHelper.cs │ ├── OSSManager.cs │ ├── SimpleLogger.cs │ └── VisibilityAnimation.cs ├── AssemblyInfo.cs ├── Service │ ├── Model │ │ ├── DownloadResult.cs │ │ ├── BaseNotificationModel.cs │ │ ├── TaskModel.cs │ │ └── SubscriptionModel.cs │ ├── EasyLogManager.cs │ ├── ChatGptTranslatorManager.cs │ ├── WkyUserManager.cs │ ├── GAHelper.cs │ └── AppConfig.cs ├── Style │ ├── MetroFont.xaml │ ├── BootstrapIcons-Github.xaml │ ├── AQScrollBar.xaml │ └── CustomProgressBar.xaml ├── App.xaml ├── MainWindowEvent.cs ├── App.xaml.cs ├── WkyFast.csproj ├── app.manifest └── MainWindow.xaml ├── docs └── images │ ├── logo.png │ ├── wkyfast.png │ ├── wkyfast1.png │ └── wkyfast2.png ├── .gitmodules ├── WkyFast.UI.Test ├── MainWindowViewModel.cs ├── AssemblyInfo.cs ├── WkyFast.UI.Test.csproj ├── App.xaml ├── App.xaml.cs ├── MainWindow.xaml └── MainWindow.xaml.cs ├── README.md ├── WkyFast.sln ├── .github └── workflows │ └── dotnet-desktop.yml ├── .gitattributes └── .gitignore /WkyFast/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiqinxuancai/WkyFast/HEAD/WkyFast/icon.ico -------------------------------------------------------------------------------- /docs/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiqinxuancai/WkyFast/HEAD/docs/images/logo.png -------------------------------------------------------------------------------- /docs/images/wkyfast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiqinxuancai/WkyFast/HEAD/docs/images/wkyfast.png -------------------------------------------------------------------------------- /docs/images/wkyfast1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiqinxuancai/WkyFast/HEAD/docs/images/wkyfast1.png -------------------------------------------------------------------------------- /docs/images/wkyfast2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiqinxuancai/WkyFast/HEAD/docs/images/wkyfast2.png -------------------------------------------------------------------------------- /WkyFast/Assets/Images/heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiqinxuancai/WkyFast/HEAD/WkyFast/Assets/Images/heart.png -------------------------------------------------------------------------------- /WkyFast/Assets/Images/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiqinxuancai/WkyFast/HEAD/WkyFast/Assets/Images/star.png -------------------------------------------------------------------------------- /WkyFast/Assets/Images/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiqinxuancai/WkyFast/HEAD/WkyFast/Assets/Images/github.png -------------------------------------------------------------------------------- /WkyFast/Assets/Images/heart26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiqinxuancai/WkyFast/HEAD/WkyFast/Assets/Images/heart26.png -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "WkyApiSharp"] 2 | path = WkyApiSharp 3 | url = https://github.com/aiqinxuancai/WkyApiSharp.git 4 | -------------------------------------------------------------------------------- /WkyFast/Assets/Images/github30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiqinxuancai/WkyFast/HEAD/WkyFast/Assets/Images/github30.png -------------------------------------------------------------------------------- /WkyFast/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /WkyFast.UI.Test/MainWindowViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace WkyFast.UI.Test 4 | { 5 | public class MainWindowViewModel 6 | { 7 | public MainWindowViewModel(IServiceProvider serviceProvider) 8 | { 9 | 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /WkyFast/View/Model/MainTabItemModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace WkyFast.View.Model 8 | { 9 | 10 | public enum MainTabItemModelType 11 | { 12 | DownloadList, 13 | SubscriptionList, 14 | } 15 | 16 | public class MainTabItemModel 17 | { 18 | public string Title {set; get;} 19 | 20 | public MainTabItemModelType Type { set; get; } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /WkyFast/Utils/TimeHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace WkyFast.Utils 8 | { 9 | class TimeHelper 10 | { 11 | 12 | public static string SecondsToFormatString(int seconds) 13 | { 14 | TimeSpan ts = new TimeSpan(0, 0, seconds); 15 | string r = string.Format("{0:D2}:{1:D2}:{2:D2}", ts.Hours, ts.Minutes, ts.Seconds); 16 | return r; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /WkyFast/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /WkyFast.UI.Test/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /WkyFast.UI.Test/WkyFast.UI.Test.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | net8.0-windows 6 | enable 7 | true 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /WkyFast/View/Dialogs/ExitDialog.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Shapes; 14 | 15 | namespace WkyFast.View.Dialogs 16 | { 17 | /// 18 | /// ExitDialog.xaml 的交互逻辑 19 | /// 20 | public partial class ExitDialog : Window 21 | { 22 | public ExitDialog() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /WkyFast/Utils/PathHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace WkyFast.Utils 9 | { 10 | internal class PathHelper 11 | { 12 | public static string RemoveInvalidChars(string input) 13 | { 14 | var invalidFileNameChars = Path.GetInvalidFileNameChars(); 15 | var invalidPathChars = Path.GetInvalidPathChars(); 16 | 17 | foreach (var c in invalidFileNameChars.Union(invalidPathChars).Distinct()) 18 | { 19 | input = input.Replace(c.ToString(), ""); 20 | } 21 | 22 | return input; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /WkyFast.UI.Test/App.xaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /WkyFast/Service/Model/DownloadResult.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using WkyApiSharp.Service.Model.BtCheck; 7 | using WkyApiSharp.Service.Model.CreateTaskResult; 8 | 9 | namespace WkyFast.Service.Model 10 | { 11 | public class WkyDownloadResult 12 | { 13 | //返回值非0或网络请求有异常 14 | public bool hasError { get; set; } 15 | 16 | //总量 17 | public int AllTaskCount { get; set; } 18 | 19 | //成功添加的数量 20 | public int SuccessCount { get; set; } 21 | 22 | //已经存在的数量 23 | public int DuplicateAddTaskCount { get; set; } 24 | 25 | 26 | public WkyApiCreateTaskResultModel Result { get; set; } 27 | 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /WkyFast/View/View/TaskListCellControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace WkyFast.View.View 17 | { 18 | /// 19 | /// ConfigListItemControl.xaml 的交互逻辑 20 | /// 21 | public partial class TaskListCellControl : UserControl 22 | { 23 | public TaskListCellControl() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /WkyFast/View/View/ConfigListItemControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace WkyFast.View.View 17 | { 18 | /// 19 | /// ConfigListItemControl.xaml 的交互逻辑 20 | /// 21 | public partial class ConfigListItemControl : UserControl 22 | { 23 | public ConfigListItemControl() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /WkyFast/Service/Model/BaseNotificationModel.cs: -------------------------------------------------------------------------------- 1 | using PropertyChanged; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Linq; 6 | using System.Runtime.CompilerServices; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace WkyFast.Service.Model 11 | { 12 | [AddINotifyPropertyChangedInterface] 13 | public class BaseNotificationModel : INotifyPropertyChanged 14 | { 15 | public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { }; 16 | 17 | public void OnPropertyChanged([CallerMemberName] string PropertyName = "") 18 | { 19 | PropertyChangedEventArgs propertyChangedEventArgs = new PropertyChangedEventArgs(PropertyName); 20 | PropertyChanged(this, propertyChangedEventArgs); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /WkyFast/Utils/FileSizeContver.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace WkyFast.Utils 8 | { 9 | internal class FileSizeContver 10 | { 11 | public static string GetSizeString(long size) 12 | { 13 | string strSize = ""; 14 | long FactSize = size; 15 | if (FactSize < 1024.00) 16 | strSize = FactSize.ToString("F2") + "B"; 17 | else if (FactSize >= 1024.00 && FactSize < 1048576) 18 | strSize = (FactSize / 1024.00).ToString("F2") + "K"; 19 | else if (FactSize >= 1048576 && FactSize < 1073741824) 20 | strSize = (FactSize / 1024.00 / 1024.00).ToString("F2") + "M"; 21 | else if (FactSize >= 1073741824) 22 | strSize = (FactSize / 1024.00 / 1024.00 / 1024.00).ToString("F2") + "G"; 23 | return strSize; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | WkyFast 5 |
6 |
7 |
8 |

9 |

WkyFast

10 |

11 |

12 | visitor badge 13 | GitHub release (latest by date) 14 |

15 |

16 | 简易玩客云PC客户端,支持批量任务添加和订阅下载
17 |

18 | 19 | ## ⚠️注意⚠️ 20 | **在玩客云在2024年2月29日停止运营,但我开发了新的项目,基于Aria2的订阅下载工具:** 21 | [Aria2Fast](https://github.com/aiqinxuancai/Aria2Fast) 22 | 23 | 欢迎使用新工具! 24 | 25 | #### 2024/03/05 10:24 26 | 不行了,**真的连不上了**,不用试了,换Aria2Fast吧 27 | 28 | #### 2024/03/04 12:00 29 | 好像不退出登录还能用 30 | 31 | --- 32 | 33 | 34 | 35 | ## 功能 36 | WkyFast 37 | 38 | WkyFast 39 | 40 | 注:关键字可使用|来表示或 41 | WkyFast 42 | -------------------------------------------------------------------------------- /WkyFast/View/Dialogs/ExitDialog.xaml: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 21 | 22 | 23 | 24 | 25 | 30 |