From cb0a809b16baaf8e6cb95cb3a12082749a413787 Mon Sep 17 00:00:00 2001 From: qier222 Date: Sun, 5 Mar 2023 19:03:52 +0800 Subject: [PATCH] feat: updates --- LICENSE | 674 +++++++++++++++++- README.md | 74 ++ package.json | 1 - packages/desktop/.electron-builder.config.js | 12 +- packages/desktop/build/icons/1024x1024.png | Bin 535997 -> 14136 bytes packages/desktop/build/icons/128x128.png | Bin 6564 -> 14136 bytes packages/desktop/build/icons/16x16.png | Bin 474 -> 14136 bytes packages/desktop/build/icons/24x24.png | Bin 750 -> 14136 bytes packages/desktop/build/icons/256x256.png | Bin 22892 -> 14136 bytes packages/desktop/build/icons/32x32.png | Bin 965 -> 14136 bytes packages/desktop/build/icons/48x48.png | Bin 1631 -> 14136 bytes packages/desktop/build/icons/512x512.png | Bin 107173 -> 14136 bytes packages/desktop/build/icons/64x64.png | Bin 2282 -> 14136 bytes packages/desktop/build/icons/icon.icns | Bin 809011 -> 375301 bytes packages/desktop/build/icons/icon.ico | Bin 361102 -> 40611 bytes packages/desktop/build/icons/icon.png | Bin 282449 -> 14136 bytes .../main/appServer/routes/r3play/audio.ts | 4 +- packages/desktop/main/cache.ts | 287 ++++---- packages/desktop/main/db.ts | 243 +++++++ packages/desktop/main/index.ts | 2 - packages/desktop/main/ipcMain.ts | 4 +- packages/desktop/main/prisma.ts | 102 --- packages/desktop/migrations/init.sql | 65 +- packages/desktop/package.json | 18 +- packages/desktop/prisma/schema.prisma | 86 --- packages/desktop/scripts/build.main.ts | 1 + packages/desktop/scripts/build.sqlite3.ts | 163 +++++ packages/desktop/scripts/copySQLite3.js | 63 ++ pnpm-lock.yaml | 200 ++++-- 29 files changed, 1550 insertions(+), 449 deletions(-) create mode 100644 README.md create mode 100644 packages/desktop/main/db.ts delete mode 100644 packages/desktop/main/prisma.ts delete mode 100644 packages/desktop/prisma/schema.prisma create mode 100644 packages/desktop/scripts/build.sqlite3.ts create mode 100644 packages/desktop/scripts/copySQLite3.js diff --git a/LICENSE b/LICENSE index b6a55a6..162676c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,661 @@ -MIT License + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 -Copyright (c) 2022 qier222 +Copyright (C) 2007 Free Software Foundation, Inc. +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + Preamble -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + +A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + +The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + +An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + +The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + +0. Definitions. + +"This License" refers to version 3 of the GNU Affero General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based +on the Program. + +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +1. Source Code. + +The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + +The Corresponding Source for a work in source code form is that +same work. + +2. Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + +4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + +8. Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +11. Patents. + +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + +13. Remote Network Interaction; Use with the GNU General Public License. + +Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4b1c9ab --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +
+

+ +

R3PLAY

+ +

+ 高颜值的第三方网易云播放器(原YesPlayMusic) +
+ 🌎 访问DEMO  |   + 📦️ 下载安装包  |   + 💬 加入交流群 +
+
+

+

+ + + +## 关于 Alpha 版本 + +目前 R3PLAY 处于 Alpha 阶段,仍在开发中,功能尚未完善。建议每次更新时,先卸载旧版本的 R3PLAY,再重新安装。如遇到问题,欢迎加入[Telegram 交流群](https://t.me/yesplaymusic)反馈。 + +## ✨ 特性 + +- ✅ 使用 React + Electron 开发 +- 🔴 网易云账号登录(扫码/手机/邮箱登录) +- 📺 支持 MV 播放 +- 🚫🤝 无任何社交功能 +- 🛠 更多特性开发中 + +## 📦️ 安装 + +访问本项目的 [Releases](https://github.com/qier222/YesPlayMusic/releases) +页面下载安装包。 + + + +## 📜 开源许可 + +API 源代码来自 [Binaryify/NeteaseCloudMusicApi](https://github.com/Binaryify/NeteaseCloudMusicApi) + +本项目仅供个人学习研究之目的,不得用于任何商业或非法活动。 + +基于 [AGPL license](https://opensource.org/licenses/AGPL) 许可进行开源。 + +任何基于此项目开发的项目都必须遵守开源协议,在项目 README/应用内的关于页面和介绍网站中明确说明基于此项目开发,并附上此项目 GitHub 页面的链接。 + + + + + + + + +[album-screenshot]: images/album.png +[artist-screenshot]: images/artist.png +[explore-screenshot]: images/explore.png +[home-screenshot]: images/home.png +[home-2-screenshot]: images/home-2.png +[lyrics-screenshot]: images/lyrics.png +[library-screenshot]: images/library.png +[library-dark-screenshot]: images/library-dark.png +[search-screenshot]: images/search.png diff --git a/package.json b/package.json index aa649e4..bee70ab 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,6 @@ }, "packageManager": "pnpm@7.20.0", "scripts": { - "postinstall": "turbo run post-install --parallel --no-cache", "install": "turbo run post-install --parallel --no-cache", "build": "cross-env-shell IS_ELECTRON=yes turbo run build", "build:web": "turbo run build:web", diff --git a/packages/desktop/.electron-builder.config.js b/packages/desktop/.electron-builder.config.js index 26e6169..78f5f40 100644 --- a/packages/desktop/.electron-builder.config.js +++ b/packages/desktop/.electron-builder.config.js @@ -19,6 +19,7 @@ module.exports = { buildDependenciesFromSource: false, electronVersion, forceCodeSigning: false, + afterPack: './scripts/copySQLite3.js', publish: [ { provider: 'github', @@ -118,17 +119,6 @@ module.exports = { '!**/{npm-debug.log,yarn.lock,.yarn-integrity,.yarn-metadata.json,pnpm-lock.yaml}', '!**/*.{map,debug.min.js}', - // copy prisma - { - from: './prisma', - to: 'main/prisma', - }, - { - from: './prisma', - to: 'main', - filter: '*.prisma' // only copy prisma schema - }, - { from: './dist', to: './main', diff --git a/packages/desktop/build/icons/1024x1024.png b/packages/desktop/build/icons/1024x1024.png index 9fc1c628fc2ad728018f8ddd6242b6952aaab0f1..f7c002cd7fd64946724ce2d66a2351a97eef96b4 100644 GIT binary patch literal 14136 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 Gq5lH`7_Jxq literal 535997 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

STOsdgdSo`x;0s}%HEjy{lwFlQyjHS(RT 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

Y|V(;75VU4*p)iz_8H~`` zSKiE>)`Eg+j2k{24`G9SB>z-blA+xXciDOT^l7RU4YO5yQ^;u=c&eUwkW-%^hAp@E zp)oKhx(qB>Kyj3USlfw<)oGyr3iaOtF4=@HzzKW(y?35NCZ#es^6@rakxNC@nXt%N?N9cR!cM+9`R$(5c*|zs zmvU|#KJYQ8A&b^1Efv~&KkjBi$DJ3CU>p?7caj@uWwIjv$yX0JUU*xZyuZR`9G`i{ zA9;tDiTc(05B@Jj+AOM0z6PrT7=HK=o_SYi?`;e{Z&^Rq=wLm?mn=~=M)ri))>0$J za*cP%*v)O49zP8Ao0sbXleqviM*1ckFaQK)H@J?`PoP%LG>APBL>i@&R06W4cm<>I z=OWFW^+>MZZi|n1GmoPWo~#r9%YZtZER4zuW$^m2^<$YywZe4`97>A&c*gIefE@s$ z=4HY+_Ds{~#RA=5)SJO_;D_g76$Pz_>+es%ndq6GHZn_iz>9ni5lSeT!fWGkgYqAw z!rwxiox~F|&W$IG5aaBWG(`EC=)}G=&#<8jjt>^~xnA~ZyI+a> zb(HE)xz&D=Vdp77AgvzIrsr541M}F!zEt18FJ8_&YVWX6s=Ka62B3%d>f8y&>ZnZ5 zJ#h@YIK1vC_p6lTi><4mSi&%lx{z?gC33CJ3+Otgg2NyVYN>sV>`+IAs-9W1s_x^0 zwSiM5FGm{6KjiaV&uP;PP)b=zm`IRsqOYL@&EM+%Xomr4Q>Es2-*lI(i>s~Jm9|GL z344`VemVrurv1u=dh20%+{c=10T>)>Y zhO~yhn81&u8d;P+HZE=*2fgAyycfd3;LGHCD*S~k(lX%#_2R@j!gE6JKgmk77N