From 10d51885c9e49aa33362a4f8469c6fe32066ad92 Mon Sep 17 00:00:00 2001 From: yajrendrag Date: Fri, 25 Oct 2024 12:36:15 -0600 Subject: [PATCH] [notify_plex_partial] v0.0.1 --- source/notify_plex_partial/.gitignore | 4 + source/notify_plex_partial/LICENSE | 674 ++++++++++++++++++++ source/notify_plex_partial/README.md | 9 + source/notify_plex_partial/changelog.md | 4 + source/notify_plex_partial/description.md | 19 + source/notify_plex_partial/icon.png | Bin 0 -> 53270 bytes source/notify_plex_partial/info.json | 19 + source/notify_plex_partial/plugin.py | 96 +++ source/notify_plex_partial/requirements.txt | 1 + 9 files changed, 826 insertions(+) create mode 100644 source/notify_plex_partial/.gitignore create mode 100644 source/notify_plex_partial/LICENSE create mode 100644 source/notify_plex_partial/README.md create mode 100644 source/notify_plex_partial/changelog.md create mode 100644 source/notify_plex_partial/description.md create mode 100644 source/notify_plex_partial/icon.png create mode 100644 source/notify_plex_partial/info.json create mode 100644 source/notify_plex_partial/plugin.py create mode 100644 source/notify_plex_partial/requirements.txt diff --git a/source/notify_plex_partial/.gitignore b/source/notify_plex_partial/.gitignore new file mode 100644 index 000000000..499ca09c3 --- /dev/null +++ b/source/notify_plex_partial/.gitignore @@ -0,0 +1,4 @@ +**/__pycache__ +*.py[cod] +**/site-packages +settings.json diff --git a/source/notify_plex_partial/LICENSE b/source/notify_plex_partial/LICENSE new file mode 100644 index 000000000..f288702d2 --- /dev/null +++ b/source/notify_plex_partial/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + 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. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is 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. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + 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. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + 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 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. Use with the GNU Affero General Public License. + + 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 Affero 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 special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 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 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 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 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + 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 GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/notify_plex_partial/README.md b/source/notify_plex_partial/README.md new file mode 100644 index 000000000..0f3fe7761 --- /dev/null +++ b/source/notify_plex_partial/README.md @@ -0,0 +1,9 @@ +# Notify Plex Partial +Plugin for [Unmanic](https://github.com/Unmanic) + +--- + +### Information: + +- [Description](description.md) +- [Changelog](changelog.md) diff --git a/source/notify_plex_partial/changelog.md b/source/notify_plex_partial/changelog.md new file mode 100644 index 000000000..e447c2442 --- /dev/null +++ b/source/notify_plex_partial/changelog.md @@ -0,0 +1,4 @@ + +**0.0.1** +- Initial version +- based on v0.0.5 of notify_plex diff --git a/source/notify_plex_partial/description.md b/source/notify_plex_partial/description.md new file mode 100644 index 000000000..52013f96c --- /dev/null +++ b/source/notify_plex_partial/description.md @@ -0,0 +1,19 @@ + +To find your Plex token, follow the instructions found here: +- https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/ + +Alternatively, navigate to the Plex data folder on your Plex server and open the Preferences.xml file and look for the value of "PlexOnlineToken". + +These two approaches will likely yield different tokens, but both should work. + +#### Configuration + +- Enter the url for your Plex Server using your local IP address (ie, not the plex.tv cloud address) +- Enter the Plex token you found as per above +- Enter as a single string, the Library Mapping that you entered in your docker compose or on the docker run line for the library in which this plugin is installed, + e.g., /media/TVShows:/library +- enter True or False for whether this plugin should run an update if the task for the file failed. + +:::note +If you are not running Unmanic in docker, then for the above library mapping, just enter the mapping to be identical on both sides of the colon, e.g., /media/TVShows:/media/TVShows +::: diff --git a/source/notify_plex_partial/icon.png b/source/notify_plex_partial/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..246473fe6e536110bb15a0fe3eeb9478a289fe90 GIT binary patch literal 53270 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 Jdf)2h{{ + Date: 25 October 2024, (11:00 AM) + + Copyright: + Copyright (C) 2024 Jay Gardner + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General + Public License as published by the Free Software Foundation, version 3. + + 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 General Public License + for more details. + + You should have received a copy of the GNU General Public License along with this program. + If not, see . + +""" +import logging +from unmanic.libs.unplugins.settings import PluginSettings +import requests +import re +import urllib.parse + +# Configure plugin logger +logger = logging.getLogger("Unmanic.Plugin.notify_plex_partial") + + +class Settings(PluginSettings): + settings = { + 'Plex URL': 'http://localhost:32400', + 'Plex Token': '', + 'Unmanic Library Mapping': '', + 'Notify on Task Failure?': False, + } + + +def update_plex(plex_url, plex_token, media_dir): + # Call to Plex to trigger an update + plex_url = plex_url + '/library/sections/all/refresh/?path=' + urllib.parse.quote(media_dir, safe='') + '&X-Plex-Token=' + plex_token + response = requests.get(plex_url) + if response.status_code == 200: + logger.info("Notifying Plex ({}) to update its library.".format(plex_url)) + else: + logger.error("Error requesting Plex to update: '{}'".format(media_dir)) + +def on_postprocessor_task_results(data): + """ + Runner function - provides a means for additional postprocessor functions based on the task success. + + The 'data' object argument includes: + task_processing_success - Boolean, did all task processes complete successfully. + file_move_processes_success - Boolean, did all postprocessor movement tasks complete successfully. + destination_files - List containing all file paths created by postprocessor file movements. + source_data - Dictionary containing data pertaining to the original source file. + + :param data: + :return: + + """ + # Configure settings object (maintain compatibility with v1 plugins) + if data.get('library_id'): + settings = Settings(library_id=data.get('library_id')) + else: + settings = Settings() + + if not data.get('task_processing_success') and not settings.get_setting('Notify on Task Failure?'): + return data + + media_dir = data.get('destination_files')[0] + lib_map = settings.get_setting('Unmanic Library Mapping') + unmanic_dir=re.search(r'.*:(.*$)', lib_map) + if unmanic_dir: + unmanic_dir = unmanic_dir.group(1) + else: + logger.error("unable to find identify unmanic dir from mapping: '{}'".format(lib_map)) + return data + host_dir=re.search(r'(.*):', lib_map) + if host_dir: + host_dir = host_dir.group(1) + else: + logger.error("unable to find identify host dir from mapping: '{}'".format(lib_map)) + return data + plex_url = settings.get_setting('Plex URL') + plex_token = settings.get_setting('Plex Token') + try: + media_dir = media_dir.replace(unmanic_dir,host_dir) + except: + logger.error("cannot form host media directory path - unmanic_dir: '{}', host_dir: '{}', media_dir: '{}'".format(unmanic_dir, host_dir, media_dir)) + return data + update_plex(plex_url, plex_token, media_dir) + + return data diff --git a/source/notify_plex_partial/requirements.txt b/source/notify_plex_partial/requirements.txt new file mode 100644 index 000000000..777628967 --- /dev/null +++ b/source/notify_plex_partial/requirements.txt @@ -0,0 +1 @@ +plexapi==4.15.16