From 286e37b042417ba47b5899b5abdb0840d68dcbc5 Mon Sep 17 00:00:00 2001 From: "dylan.thurston@gmail.com" Date: Mon, 14 Feb 2022 22:04:45 -0700 Subject: [PATCH 1/5] [service.plexskipintro] 1.0.0 --- .../.github/ISSUE_TEMPLATE/broken_addon.md | 30 + .../.github/ISSUE_TEMPLATE/config.yml | 8 + .../.github/ISSUE_TEMPLATE/violating_addon.md | 34 + service.plexskipintro/CONTRIBUTING.md | 95 + service.plexskipintro/LICENSE.txt | 674 +++++ .../PULL_REQUEST_TEMPLATE.md | 18 + service.plexskipintro/README.md | 23 + service.plexskipintro/addon.xml | 21 + service.plexskipintro/lib/__init__.py | 1 + service.plexskipintro/lib/addon.py | 107 + service.plexskipintro/lib/definitions.py | 18 + service.plexskipintro/plexapi/__init__.py | 52 + service.plexskipintro/plexapi/alert.py | 96 + service.plexskipintro/plexapi/audio.py | 427 +++ service.plexskipintro/plexapi/base.py | 798 ++++++ service.plexskipintro/plexapi/client.py | 632 +++++ service.plexskipintro/plexapi/collection.py | 520 ++++ service.plexskipintro/plexapi/config.py | 65 + service.plexskipintro/plexapi/const.py | 9 + service.plexskipintro/plexapi/exceptions.py | 31 + service.plexskipintro/plexapi/gdm.py | 151 + service.plexskipintro/plexapi/library.py | 2494 +++++++++++++++++ service.plexskipintro/plexapi/media.py | 1088 +++++++ service.plexskipintro/plexapi/mixins.py | 645 +++++ service.plexskipintro/plexapi/myplex.py | 1508 ++++++++++ service.plexskipintro/plexapi/photo.py | 276 ++ service.plexskipintro/plexapi/playlist.py | 470 ++++ service.plexskipintro/plexapi/playqueue.py | 289 ++ service.plexskipintro/plexapi/server.py | 1155 ++++++++ service.plexskipintro/plexapi/settings.py | 177 ++ service.plexskipintro/plexapi/sonos.py | 116 + service.plexskipintro/plexapi/sync.py | 312 +++ service.plexskipintro/plexapi/utils.py | 509 ++++ service.plexskipintro/plexapi/video.py | 949 +++++++ service.plexskipintro/resources/fanart.jpg | Bin 0 -> 12016 bytes service.plexskipintro/resources/icon.png | Bin 0 -> 9665 bytes .../resources/media/icon_array.png | Bin 0 -> 2132 bytes .../resources/media/icon_date.png | Bin 0 -> 2113 bytes .../resources/media/icon_float.png | Bin 0 -> 2007 bytes .../resources/media/icon_integer.png | Bin 0 -> 1846 bytes .../resources/media/icon_string.png | Bin 0 -> 2190 bytes .../resources/media/plexskipintroSS.png | Bin 0 -> 630257 bytes .../resources/media/plexskipintroTokenSS.png | Bin 0 -> 207425 bytes service.plexskipintro/resources/settings.xml | 8 + .../skins/Default/720p/script-dialog.xml | 30 + .../resources/skins/Default/media/bg-fade.png | Bin 0 -> 26331 bytes .../skins/Default/media/button-fo.png | Bin 0 -> 3141 bytes .../skins/Default/media/button-nofo.png | Bin 0 -> 3138 bytes service.plexskipintro/service.py | 17 + service.plexskipintro/targets.cfg | 95 + 50 files changed, 13948 insertions(+) create mode 100644 service.plexskipintro/.github/ISSUE_TEMPLATE/broken_addon.md create mode 100644 service.plexskipintro/.github/ISSUE_TEMPLATE/config.yml create mode 100644 service.plexskipintro/.github/ISSUE_TEMPLATE/violating_addon.md create mode 100644 service.plexskipintro/CONTRIBUTING.md create mode 100644 service.plexskipintro/LICENSE.txt create mode 100644 service.plexskipintro/PULL_REQUEST_TEMPLATE.md create mode 100644 service.plexskipintro/README.md create mode 100644 service.plexskipintro/addon.xml create mode 100644 service.plexskipintro/lib/__init__.py create mode 100644 service.plexskipintro/lib/addon.py create mode 100644 service.plexskipintro/lib/definitions.py create mode 100644 service.plexskipintro/plexapi/__init__.py create mode 100644 service.plexskipintro/plexapi/alert.py create mode 100644 service.plexskipintro/plexapi/audio.py create mode 100644 service.plexskipintro/plexapi/base.py create mode 100644 service.plexskipintro/plexapi/client.py create mode 100644 service.plexskipintro/plexapi/collection.py create mode 100644 service.plexskipintro/plexapi/config.py create mode 100644 service.plexskipintro/plexapi/const.py create mode 100644 service.plexskipintro/plexapi/exceptions.py create mode 100644 service.plexskipintro/plexapi/gdm.py create mode 100644 service.plexskipintro/plexapi/library.py create mode 100644 service.plexskipintro/plexapi/media.py create mode 100644 service.plexskipintro/plexapi/mixins.py create mode 100644 service.plexskipintro/plexapi/myplex.py create mode 100644 service.plexskipintro/plexapi/photo.py create mode 100644 service.plexskipintro/plexapi/playlist.py create mode 100644 service.plexskipintro/plexapi/playqueue.py create mode 100644 service.plexskipintro/plexapi/server.py create mode 100644 service.plexskipintro/plexapi/settings.py create mode 100644 service.plexskipintro/plexapi/sonos.py create mode 100644 service.plexskipintro/plexapi/sync.py create mode 100644 service.plexskipintro/plexapi/utils.py create mode 100644 service.plexskipintro/plexapi/video.py create mode 100644 service.plexskipintro/resources/fanart.jpg create mode 100644 service.plexskipintro/resources/icon.png create mode 100644 service.plexskipintro/resources/media/icon_array.png create mode 100644 service.plexskipintro/resources/media/icon_date.png create mode 100644 service.plexskipintro/resources/media/icon_float.png create mode 100644 service.plexskipintro/resources/media/icon_integer.png create mode 100644 service.plexskipintro/resources/media/icon_string.png create mode 100644 service.plexskipintro/resources/media/plexskipintroSS.png create mode 100644 service.plexskipintro/resources/media/plexskipintroTokenSS.png create mode 100644 service.plexskipintro/resources/settings.xml create mode 100644 service.plexskipintro/resources/skins/Default/720p/script-dialog.xml create mode 100644 service.plexskipintro/resources/skins/Default/media/bg-fade.png create mode 100644 service.plexskipintro/resources/skins/Default/media/button-fo.png create mode 100644 service.plexskipintro/resources/skins/Default/media/button-nofo.png create mode 100644 service.plexskipintro/service.py create mode 100644 service.plexskipintro/targets.cfg diff --git a/service.plexskipintro/.github/ISSUE_TEMPLATE/broken_addon.md b/service.plexskipintro/.github/ISSUE_TEMPLATE/broken_addon.md new file mode 100644 index 0000000000..54fa92f119 --- /dev/null +++ b/service.plexskipintro/.github/ISSUE_TEMPLATE/broken_addon.md @@ -0,0 +1,30 @@ +--- +name: Report a broken add-on +about: Report an add-on that is currently broken within Kodi. +title: '' +labels: 'Broken-Addon' +assignees: '' + +--- + + +### Add-on details: + +- Add-on name: +- Add-on ID: +- Version number: +- Kodi/repository version: + + + +### Ownership +- [ ] I am the owner of this add-on + +### Broken because: + + diff --git a/service.plexskipintro/.github/ISSUE_TEMPLATE/config.yml b/service.plexskipintro/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..ca807e40b1 --- /dev/null +++ b/service.plexskipintro/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: Kodi forums, add-ons section + url: https://forum.kodi.tv/forumdisplay.php?fid=27 + about: Please ask and answer questions here. + - name: Pull requests + url: https://github.com/xbmc/repo-scripts/pulls + about: When you want to submit a new or updated add-on, please open a pull request here. \ No newline at end of file diff --git a/service.plexskipintro/.github/ISSUE_TEMPLATE/violating_addon.md b/service.plexskipintro/.github/ISSUE_TEMPLATE/violating_addon.md new file mode 100644 index 0000000000..bd7edafadb --- /dev/null +++ b/service.plexskipintro/.github/ISSUE_TEMPLATE/violating_addon.md @@ -0,0 +1,34 @@ +--- +name: Report a violating add-on +about: Report an add-on that violates the Kodi add-on rules. +title: '' +labels: 'violation' +assignees: '' + +--- + + + + + +### Add-on details: + +- Add-on name: +- Add-on ID: +- Version number: +- Kodi/repository version: + + + +### Rules that have been violated by the add-on: + + + +### Explain why the add-on is violating these rules: + + diff --git a/service.plexskipintro/CONTRIBUTING.md b/service.plexskipintro/CONTRIBUTING.md new file mode 100644 index 0000000000..d7ad6dc30c --- /dev/null +++ b/service.plexskipintro/CONTRIBUTING.md @@ -0,0 +1,95 @@ +### Introduction + +**Kodi** uses Github for development only, i.e. for *pull requests* and the review of such code. +**Do not open** an issue on Github for your questions or bug reports. +**Do not comment** on a *pull request* unless you are involved in the testing of such or have something meaningful to contribute. +Not familiar with git? Start by looking at Github's [collaborating pages](https://help.github.com/categories/collaborating/). + +#### Questions about Kodi? + +To get your questions answered, please ask in the [Kodi community forum's](http://forum.kodi.tv/) or on **IRC:** [#kodi](http://webchat.freenode.net?nick=kodi-contrib&channels=%23kodi&prompt=1&uio=OT10cnVlde) on freenode.net + +#### Issue or bug reports and discussions + +Issue or bug reports must be send towards the add-on creator which can be found in each [[addon.xml]] (http://kodi.wiki/view/Addon.xml) file. + +If you can, we encourage you to investigate the issue yourself and create a [pull request](https://help.github.com/articles/creating-a-pull-request/) towards the original source of the code. We try to ask each add-on aythor to include this in the [[addon.xml]] (http://kodi.wiki/view/Addon.xml) file. Should this not be present then we advise you to find the dedicated add-on thread on the forum and ask there. + +For bug reports and related discussions, feature requests and all other support, please go to [Kodi community forum's](http://forum.kodi.tv/) and find the dedicated add-on thread. + +#### Pull Requests + +Before [creating a pull request](https://help.github.com/articles/creating-a-pull-request/), please read our general code guidelines that can be found at: + +- [Kodi add-on development](http://kodi.wiki/view/Add-on_development) + +###### General guidelines for creating pull requests: +- **Create separate branches**. Don't ask us to pull from your master branch. +- **One pull request per add-on**. If you want to do more than one, send multiple *pull requests*. +- **Do not send us multiple commits**. Make sure each add-on only consists of a single commit in your *pull + request*. + If you had to make multiple intermediate commits while developing, please squash them before sending them to us. + In the end before merging you may be asked to squash your commit even some more. + +###### Please follow these guidelines; it's the best way to get your work included in the repository! + +- [Click here](https://github.com/xbmc/repo-scripts/fork/) to fork the Kodi script repository, + and [configure the remote](https://help.github.com/articles/configuring-a-remote-for-a-fork/): + + ```bash + # Clone your fork of kodi's repo into the current directory in terminal + git clone git@github.com:/repo-scripts.git repo-scripts + # Navigate to the newly cloned directory + cd repo-scripts + # Assign the original repo to a remote called "upstream" + git remote add upstream https://github.com/xbmc/repo-scripts.git + ``` + +- If you cloned a while ago, get the latest changes from upstream: + + ```bash + # Fetch upstream changes + git fetch upstream + # Make sure you are on your 'master' branch + git checkout master + # Merge upstream changes + git merge upstream/master + ``` + 'master' is only used as example here. Please replace it with the correct branch you want to submit your add-on towards. + +- Create a new branch to contain your new add-on or subsequent update: + + ```bash + git checkout -b + ``` + + The branch name isn't really relevant however a good suggestion is to name it like the addon ID. + +- Commit your changes in a single commit, or your *[pull request](https://help.github.com/articles/using-pull-requests)* is unlikely to be merged into the main repository. + Use git's [interactive rebase](https://help.github.com/articles/interactive-rebase) + feature to tidy up your commits before making them public. + The commit for your add-on should have the following naming convention as the following example: + + ```bash + [metadata.themoviedb.org] 3.0.0 + ``` + + Your addon ID between brackets followed by the version number. + +- Push your topic branch up to your fork: + + ```bash + git push origin + ``` + +- Open a [pull request](https://help.github.com/articles/using-pull-requests) with a + clear title and description. + +- Updating your [pull request](https://help.github.com/articles/using-pull-requests) can be done by applying your changes and squashing them in the already present commit. Afterwards you can force push these change and your pull request will be updated. + + ```bash + git push --force origin + ``` + +These examples use git command line. There are also git tools available that have a graphic interface and the steps above should be done in a similar way. Please consult the manual of those programs. + diff --git a/service.plexskipintro/LICENSE.txt b/service.plexskipintro/LICENSE.txt new file mode 100644 index 0000000000..94a9ed024d --- /dev/null +++ b/service.plexskipintro/LICENSE.txt @@ -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/service.plexskipintro/PULL_REQUEST_TEMPLATE.md b/service.plexskipintro/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..edc2381b83 --- /dev/null +++ b/service.plexskipintro/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,18 @@ +### Description + + + +### Checklist: + + +- [ ] My code follows the [add-on rules](http://kodi.wiki/view/Add-on_rules) and [piracy stance](http://kodi.wiki/view/Official:Forum_rules#Piracy_Policy) of this project. +- [ ] I have read the [CONTRIBUTING](https://github.com/xbmc/repo-scripts/blob/master/CONTRIBUTING.md) document +- [ ] Each add-on submission should be a single commit with using the following style: [script.foo.bar] 1.0.0 + +Additional information : +- Submitting your add-on to this specific branch makes it available to any Kodi version equal or higher than the branch name with the applicable Kodi dependencies limits. +- [add-on development](http://kodi.wiki/view/Add-on_development) wiki page. +- Kodi [pydocs](http://kodi.wiki/view/PyDocs) provide information about the Python API +- [PEP8](https://www.python.org/dev/peps/pep-0008/) codingstyle which is considered best practise but not mandatory. +- This add-on repository has automated code guideline check which could help you improve your coding. You can find the results of these check at [Codacy](https://www.codacy.com/app/Kodi/repo-scripts/dashboard). You can create your own account as well to continuously monitor your python coding before submitting to repo. +- Development questions can be asked in the [add-on development](http://forum.kodi.tv/forumdisplay.php?fid=26) section on the Kodi forum. diff --git a/service.plexskipintro/README.md b/service.plexskipintro/README.md new file mode 100644 index 0000000000..0c96db89f8 --- /dev/null +++ b/service.plexskipintro/README.md @@ -0,0 +1,23 @@ +# KodiPlexSkipIntro + +Kodi plugin that uses plex to get intro start/end times and provides a button to skip intros + +## Name +KodiPlexSkipIntro + +[![.](https://github.com/Darkmadda/PlexSkipIntro/blob/main/resources/media/plexskipintroSS.png?raw=true)](#) +## Description +This add-on will display a button on screen when an tv intro starts allowing you to skip the intro. The button will display for 10 seconds (this period can be changed in the settings) + +## Installation +Download repository as zip file, then install add-on from zip file + +## Usage +Wait for intro to start and click the skip intro if desired or wait for the timeout to pass and the button will display. + +You will need to get a plex auth token and the base url for plex. look [here](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/) to find out how to obtain this (the screenshot will help) + +[![.](https://github.com/Darkmadda/PlexSkipIntro/blob/main/resources/media/plexskipintroTokenSS.png?raw=true)](#) + +## License +GNU GENERAL PUBLIC LICENSE diff --git a/service.plexskipintro/addon.xml b/service.plexskipintro/addon.xml new file mode 100644 index 0000000000..ea491e6963 --- /dev/null +++ b/service.plexskipintro/addon.xml @@ -0,0 +1,21 @@ + + + + + + + + + Prompt a Skip Intro dialog Netflix style using plex metadata. Skips intro for your favourite shows + Skip TV Shows Intro + all + - + - + - + - + + resources/icon.png + resources/fanart.jpg + + + diff --git a/service.plexskipintro/lib/__init__.py b/service.plexskipintro/lib/__init__.py new file mode 100644 index 0000000000..f7904b00c7 --- /dev/null +++ b/service.plexskipintro/lib/__init__.py @@ -0,0 +1 @@ +from lib.addon import * diff --git a/service.plexskipintro/lib/addon.py b/service.plexskipintro/lib/addon.py new file mode 100644 index 0000000000..e01313b28d --- /dev/null +++ b/service.plexskipintro/lib/addon.py @@ -0,0 +1,107 @@ +import xbmc, xbmcaddon, xbmcgui +from threading import Timer +from plexapi.server import PlexServer +from lib.definitions import * +import pprint +import time + +def closeDialog(): + global Dialog + global timer + global running + global Ran + global default_timeout + Dialog.close() + timer.cancel() + Ran = True + running = False + timer = Timer(default_timeout, closeDialog) + +def onPlay(): + xbmc.log("PLAY========***************",xbmc.LOGINFO) + global Ran + global introFound + global introStartTime + global introEndTime + Ran = False + introFound = False + myPlayer = xbmc.Player() # make Player() a single call. + while not myPlayer.isPlayingVideo(): + time.sleep(1) + if myPlayer.isPlayingVideo(): + season_number = myPlayer.getVideoInfoTag().getSeason() + episode_number = myPlayer.getVideoInfoTag().getEpisode() + show = myPlayer.getVideoInfoTag().getTVShowTitle() + baseurl = xbmcaddon.Addon().getSettingString("plex_base_url") + token = xbmcaddon.Addon().getSettingString("auth_token") + plex = PlexServer(baseurl, token) + shows = plex.library.section('TV Shows') + show = shows.search(show)[0] + episode = show.episode(None, season_number, episode_number) + for marker in episode.markers: + if (marker.type == "intro"): + introFound = True + introStartTime = marker.start / 1000 + introEndTime = marker.end / 1000 + +def monitor(): + monitor = xbmc.Monitor() + global introFound + global introStartTime + global introEndTime + global Ran + global Dialog + global running + global timer + global default_timeout + Dialog = CustomDialog('script-dialog.xml', addonPath) + while not monitor.abortRequested(): + # check every 5 sec + if monitor.waitForAbort(3): + # Abort was requested while waiting. We should exit + break + + if xbmc.Player().isPlaying(): + if introFound: + if xbmc.Player().getTime() > introStartTime and xbmc.Player().getTime() < introEndTime: + if not running and not Ran: + timeout = introEndTime - xbmc.Player().getTime() + default_timeout + if timeout > default_timeout: + timeout = default_timeout + timer = Timer(timeout, closeDialog) + timer.start() + Dialog.show() + running = True + +def onSeek(): + global Ran + Ran = False + +timer = Timer(default_timeout, closeDialog) + +class CustomDialog(xbmcgui.WindowXMLDialog): + + def __init__(self, xmlFile, resourcePath): + None + + def onInit(self): + instuction = '' + + def onAction(self, action): + if action == ACTION_PREVIOUS_MENU or action == ACTION_BACK: + self.close() + + def onControl(self, control): + pass + + def onFocus(self, control): + pass + + def onClick(self, control): + global introEndTime + if control == OK_BUTTON: + xbmc.Player().seekTime(int(introEndTime)) + + if control in [OK_BUTTON, NEW_BUTTON, DISABLE_BUTTON]: + self.close() diff --git a/service.plexskipintro/lib/definitions.py b/service.plexskipintro/lib/definitions.py new file mode 100644 index 0000000000..0037c50ac2 --- /dev/null +++ b/service.plexskipintro/lib/definitions.py @@ -0,0 +1,18 @@ +import xbmc, xbmcaddon, xbmcvfs +OK_BUTTON = 201 +NEW_BUTTON = 202 +DISABLE_BUTTON = 210 +ACTION_PREVIOUS_MENU = 10 +ACTION_BACK = 92 +KODI_VERSION = int(xbmc.getInfoLabel("System.BuildVersion").split(".")[0]) +addonInfo = xbmcaddon.Addon().getAddonInfo +settings = xbmcaddon.Addon().getSetting +addonPath = xbmcvfs.translatePath(addonInfo('path')) +introFound = True +introStartTime = 0 +introEndTime = 0 +chosen = False +Dialog = None +running = False +Ran = False +default_timeout = xbmcaddon.Addon().getSettingInt("default_timeout") \ No newline at end of file diff --git a/service.plexskipintro/plexapi/__init__.py b/service.plexskipintro/plexapi/__init__.py new file mode 100644 index 0000000000..06a1ee63ca --- /dev/null +++ b/service.plexskipintro/plexapi/__init__.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +import logging +import os +from logging.handlers import RotatingFileHandler +from platform import uname +from uuid import getnode + +from plexapi.config import PlexConfig, reset_base_headers +import plexapi.const as const +from plexapi.utils import SecretsFilter + +# Load User Defined Config +DEFAULT_CONFIG_PATH = os.path.expanduser('~/.config/plexapi/config.ini') +CONFIG_PATH = os.environ.get('PLEXAPI_CONFIG_PATH', DEFAULT_CONFIG_PATH) +CONFIG = PlexConfig(CONFIG_PATH) + +# PlexAPI Settings +PROJECT = 'PlexAPI' +VERSION = __version__ = const.__version__ +TIMEOUT = CONFIG.get('plexapi.timeout', 30, int) +X_PLEX_CONTAINER_SIZE = CONFIG.get('plexapi.container_size', 100, int) +X_PLEX_ENABLE_FAST_CONNECT = CONFIG.get('plexapi.enable_fast_connect', False, bool) + +# Plex Header Configuation +X_PLEX_PROVIDES = CONFIG.get('header.provides', 'controller') +X_PLEX_PLATFORM = CONFIG.get('header.platform', CONFIG.get('header.platorm', uname()[0])) +X_PLEX_PLATFORM_VERSION = CONFIG.get('header.platform_version', uname()[2]) +X_PLEX_PRODUCT = CONFIG.get('header.product', PROJECT) +X_PLEX_VERSION = CONFIG.get('header.version', VERSION) +X_PLEX_DEVICE = CONFIG.get('header.device', X_PLEX_PLATFORM) +X_PLEX_DEVICE_NAME = CONFIG.get('header.device_name', uname()[1]) +X_PLEX_IDENTIFIER = CONFIG.get('header.identifier', str(hex(getnode()))) +BASE_HEADERS = reset_base_headers() + +# Logging Configuration +log = logging.getLogger('plexapi') +logfile = CONFIG.get('log.path') +logformat = CONFIG.get('log.format', '%(asctime)s %(module)12s:%(lineno)-4s %(levelname)-9s %(message)s') +loglevel = CONFIG.get('log.level', 'INFO').upper() +loghandler = logging.NullHandler() + +if logfile: # pragma: no cover + logbackups = CONFIG.get('log.backup_count', 3, int) + logbytes = CONFIG.get('log.rotate_bytes', 512000, int) + loghandler = RotatingFileHandler(os.path.expanduser(logfile), 'a', logbytes, logbackups) + +loghandler.setFormatter(logging.Formatter(logformat)) +log.addHandler(loghandler) +log.setLevel(loglevel) +logfilter = SecretsFilter() +if CONFIG.get('log.show_secrets', '').lower() != 'true': + log.addFilter(logfilter) diff --git a/service.plexskipintro/plexapi/alert.py b/service.plexskipintro/plexapi/alert.py new file mode 100644 index 0000000000..79ecc4453c --- /dev/null +++ b/service.plexskipintro/plexapi/alert.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- +import json +import threading + +from plexapi import log + + +class AlertListener(threading.Thread): + """ Creates a websocket connection to the PlexServer to optionally receive alert notifications. + These often include messages from Plex about media scans as well as updates to currently running + Transcode Sessions. This class implements threading.Thread, therefore to start monitoring + alerts you must call .start() on the object once it's created. When calling + `PlexServer.startAlertListener()`, the thread will be started for you. + + Known `state`-values for timeline entries, with identifier=`com.plexapp.plugins.library`: + + :0: The item was created + :1: Reporting progress on item processing + :2: Matching the item + :3: Downloading the metadata + :4: Processing downloaded metadata + :5: The item processed + :9: The item deleted + + When metadata agent is not set for the library processing ends with state=1. + + Parameters: + server (:class:`~plexapi.server.PlexServer`): PlexServer this listener is connected to. + callback (func): Callback function to call on received messages. The callback function + will be sent a single argument 'data' which will contain a dictionary of data + received from the server. :samp:`def my_callback(data): ...` + callbackError (func): Callback function to call on errors. The callback function + will be sent a single argument 'error' which will contain the Error object. + :samp:`def my_callback(error): ...` + """ + key = '/:/websockets/notifications' + + def __init__(self, server, callback=None, callbackError=None): + super(AlertListener, self).__init__() + self.daemon = True + self._server = server + self._callback = callback + self._callbackError = callbackError + self._ws = None + + def run(self): + try: + import websocket + except ImportError: + log.warning("Can't use the AlertListener without websocket") + return + # create the websocket connection + url = self._server.url(self.key, includeToken=True).replace('http', 'ws') + log.info('Starting AlertListener: %s', url) + self._ws = websocket.WebSocketApp(url, on_message=self._onMessage, + on_error=self._onError) + self._ws.run_forever() + + def stop(self): + """ Stop the AlertListener thread. Once the notifier is stopped, it cannot be directly + started again. You must call :func:`~plexapi.server.PlexServer.startAlertListener` + from a PlexServer instance. + """ + log.info('Stopping AlertListener.') + self._ws.close() + + def _onMessage(self, *args): + """ Called when websocket message is received. + In earlier releases, websocket-client returned a tuple of two parameters: a websocket.app.WebSocketApp + object and the message as a STR. Current releases appear to only return the message. + We are assuming the last argument in the tuple is the message. + This is to support compatibility with current and previous releases of websocket-client. + """ + message = args[-1] + try: + data = json.loads(message)['NotificationContainer'] + log.debug('Alert: %s %s %s', *data) + if self._callback: + self._callback(data) + except Exception as err: # pragma: no cover + log.error('AlertListener Msg Error: %s', err) + + def _onError(self, *args): # pragma: no cover + """ Called when websocket error is received. + In earlier releases, websocket-client returned a tuple of two parameters: a websocket.app.WebSocketApp + object and the error. Current releases appear to only return the error. + We are assuming the last argument in the tuple is the message. + This is to support compatibility with current and previous releases of websocket-client. + """ + err = args[-1] + try: + log.error('AlertListener Error: %s', err) + if self._callbackError: + self._callbackError(err) + except Exception as err: # pragma: no cover + log.error('AlertListener Error: Error: %s', err) diff --git a/service.plexskipintro/plexapi/audio.py b/service.plexskipintro/plexapi/audio.py new file mode 100644 index 0000000000..656b9250ac --- /dev/null +++ b/service.plexskipintro/plexapi/audio.py @@ -0,0 +1,427 @@ +# -*- coding: utf-8 -*- +import os +from urllib.parse import quote_plus + +from plexapi import library, media, utils +from plexapi.base import Playable, PlexPartialObject +from plexapi.exceptions import BadRequest +from plexapi.mixins import AdvancedSettingsMixin, ArtUrlMixin, ArtMixin, PosterUrlMixin, PosterMixin +from plexapi.mixins import RatingMixin, SplitMergeMixin, UnmatchMatchMixin +from plexapi.mixins import CollectionMixin, CountryMixin, GenreMixin, LabelMixin, MoodMixin, SimilarArtistMixin, StyleMixin + + +class Audio(PlexPartialObject): + """ Base class for all audio objects including :class:`~plexapi.audio.Artist`, + :class:`~plexapi.audio.Album`, and :class:`~plexapi.audio.Track`. + + Attributes: + addedAt (datetime): Datetime the item was added to the library. + art (str): URL to artwork image (/library/metadata//art/). + artBlurHash (str): BlurHash string for artwork image. + fields (List<:class:`~plexapi.media.Field`>): List of field objects. + guid (str): Plex GUID for the artist, album, or track (plex://artist/5d07bcb0403c64029053ac4c). + index (int): Plex index number (often the track number). + key (str): API URL (/library/metadata/). + lastRatedAt (datetime): Datetime the item was last rated. + lastViewedAt (datetime): Datetime the item was last played. + librarySectionID (int): :class:`~plexapi.library.LibrarySection` ID. + librarySectionKey (str): :class:`~plexapi.library.LibrarySection` key. + librarySectionTitle (str): :class:`~plexapi.library.LibrarySection` title. + listType (str): Hardcoded as 'audio' (useful for search filters). + moods (List<:class:`~plexapi.media.Mood`>): List of mood objects. + musicAnalysisVersion (int): The Plex music analysis version for the item. + ratingKey (int): Unique key identifying the item. + summary (str): Summary of the artist, album, or track. + thumb (str): URL to thumbnail image (/library/metadata//thumb/). + thumbBlurHash (str): BlurHash string for thumbnail image. + title (str): Name of the artist, album, or track (Jason Mraz, We Sing, Lucky, etc.). + titleSort (str): Title to use when sorting (defaults to title). + type (str): 'artist', 'album', or 'track'. + updatedAt (datatime): Datetime the item was updated. + userRating (float): Rating of the item (0.0 - 10.0) equaling (0 stars - 5 stars). + viewCount (int): Count of times the item was played. + """ + + METADATA_TYPE = 'track' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.addedAt = utils.toDatetime(data.attrib.get('addedAt')) + self.art = data.attrib.get('art') + self.artBlurHash = data.attrib.get('artBlurHash') + self.fields = self.findItems(data, media.Field) + self.guid = data.attrib.get('guid') + self.index = utils.cast(int, data.attrib.get('index')) + self.key = data.attrib.get('key', '') + self.lastRatedAt = utils.toDatetime(data.attrib.get('lastRatedAt')) + self.lastViewedAt = utils.toDatetime(data.attrib.get('lastViewedAt')) + self.librarySectionID = utils.cast(int, data.attrib.get('librarySectionID')) + self.librarySectionKey = data.attrib.get('librarySectionKey') + self.librarySectionTitle = data.attrib.get('librarySectionTitle') + self.listType = 'audio' + self.moods = self.findItems(data, media.Mood) + self.musicAnalysisVersion = utils.cast(int, data.attrib.get('musicAnalysisVersion')) + self.ratingKey = utils.cast(int, data.attrib.get('ratingKey')) + self.summary = data.attrib.get('summary') + self.thumb = data.attrib.get('thumb') + self.thumbBlurHash = data.attrib.get('thumbBlurHash') + self.title = data.attrib.get('title') + self.titleSort = data.attrib.get('titleSort', self.title) + self.type = data.attrib.get('type') + self.updatedAt = utils.toDatetime(data.attrib.get('updatedAt')) + self.userRating = utils.cast(float, data.attrib.get('userRating')) + self.viewCount = utils.cast(int, data.attrib.get('viewCount', 0)) + + def url(self, part): + """ Returns the full URL for the audio item. Typically used for getting a specific track. """ + return self._server.url(part, includeToken=True) if part else None + + def _defaultSyncTitle(self): + """ Returns str, default title for a new syncItem. """ + return self.title + + @property + def hasSonicAnalysis(self): + """ Returns True if the audio has been sonically analyzed. """ + return self.musicAnalysisVersion == 1 + + def sync(self, bitrate, client=None, clientId=None, limit=None, title=None): + """ Add current audio (artist, album or track) as sync item for specified device. + See :func:`~plexapi.myplex.MyPlexAccount.sync` for possible exceptions. + + Parameters: + bitrate (int): maximum bitrate for synchronized music, better use one of MUSIC_BITRATE_* values from the + module :mod:`~plexapi.sync`. + client (:class:`~plexapi.myplex.MyPlexDevice`): sync destination, see + :func:`~plexapi.myplex.MyPlexAccount.sync`. + clientId (str): sync destination, see :func:`~plexapi.myplex.MyPlexAccount.sync`. + limit (int): maximum count of items to sync, unlimited if `None`. + title (str): descriptive title for the new :class:`~plexapi.sync.SyncItem`, if empty the value would be + generated from metadata of current media. + + Returns: + :class:`~plexapi.sync.SyncItem`: an instance of created syncItem. + """ + + from plexapi.sync import SyncItem, Policy, MediaSettings + + myplex = self._server.myPlexAccount() + sync_item = SyncItem(self._server, None) + sync_item.title = title if title else self._defaultSyncTitle() + sync_item.rootTitle = self.title + sync_item.contentType = self.listType + sync_item.metadataType = self.METADATA_TYPE + sync_item.machineIdentifier = self._server.machineIdentifier + + section = self._server.library.sectionByID(self.librarySectionID) + + sync_item.location = 'library://%s/item/%s' % (section.uuid, quote_plus(self.key)) + sync_item.policy = Policy.create(limit) + sync_item.mediaSettings = MediaSettings.createMusic(bitrate) + + return myplex.sync(sync_item, client=client, clientId=clientId) + + +@utils.registerPlexObject +class Artist(Audio, AdvancedSettingsMixin, ArtMixin, PosterMixin, RatingMixin, SplitMergeMixin, UnmatchMatchMixin, + CollectionMixin, CountryMixin, GenreMixin, MoodMixin, SimilarArtistMixin, StyleMixin): + """ Represents a single Artist. + + Attributes: + TAG (str): 'Directory' + TYPE (str): 'artist' + albumSort (int): Setting that indicates how albums are sorted for the artist + (-1 = Library default, 0 = Newest first, 1 = Oldest first, 2 = By name). + collections (List<:class:`~plexapi.media.Collection`>): List of collection objects. + countries (List<:class:`~plexapi.media.Country`>): List country objects. + genres (List<:class:`~plexapi.media.Genre`>): List of genre objects. + key (str): API URL (/library/metadata/). + locations (List): List of folder paths where the artist is found on disk. + similar (List<:class:`~plexapi.media.Similar`>): List of similar objects. + styles (List<:class:`~plexapi.media.Style`>): List of style objects. + """ + TAG = 'Directory' + TYPE = 'artist' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + Audio._loadData(self, data) + self.albumSort = utils.cast(int, data.attrib.get('albumSort', '-1')) + self.collections = self.findItems(data, media.Collection) + self.countries = self.findItems(data, media.Country) + self.genres = self.findItems(data, media.Genre) + self.key = self.key.replace('/children', '') # FIX_BUG_50 + self.locations = self.listAttrs(data, 'path', etag='Location') + self.similar = self.findItems(data, media.Similar) + self.styles = self.findItems(data, media.Style) + + def __iter__(self): + for album in self.albums(): + yield album + + def hubs(self): + """ Returns a list of :class:`~plexapi.library.Hub` objects. """ + data = self._server.query(self._details_key) + return self.findItems(data, library.Hub, rtag='Related') + + def album(self, title): + """ Returns the :class:`~plexapi.audio.Album` that matches the specified title. + + Parameters: + title (str): Title of the album to return. + """ + key = '/library/metadata/%s/children' % self.ratingKey + return self.fetchItem(key, Album, title__iexact=title) + + def albums(self, **kwargs): + """ Returns a list of :class:`~plexapi.audio.Album` objects by the artist. """ + key = '/library/metadata/%s/children' % self.ratingKey + return self.fetchItems(key, Album, **kwargs) + + def track(self, title=None, album=None, track=None): + """ Returns the :class:`~plexapi.audio.Track` that matches the specified title. + + Parameters: + title (str): Title of the track to return. + album (str): Album name (default: None; required if title not specified). + track (int): Track number (default: None; required if title not specified). + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: If title or album and track parameters are missing. + """ + key = '/library/metadata/%s/allLeaves' % self.ratingKey + if title is not None: + return self.fetchItem(key, Track, title__iexact=title) + elif album is not None and track is not None: + return self.fetchItem(key, Track, parentTitle__iexact=album, index=track) + raise BadRequest('Missing argument: title or album and track are required') + + def tracks(self, **kwargs): + """ Returns a list of :class:`~plexapi.audio.Track` objects by the artist. """ + key = '/library/metadata/%s/allLeaves' % self.ratingKey + return self.fetchItems(key, Track, **kwargs) + + def get(self, title=None, album=None, track=None): + """ Alias of :func:`~plexapi.audio.Artist.track`. """ + return self.track(title, album, track) + + def download(self, savepath=None, keep_original_name=False, subfolders=False, **kwargs): + """ Download all tracks from the artist. See :func:`~plexapi.base.Playable.download` for details. + + Parameters: + savepath (str): Defaults to current working dir. + keep_original_name (bool): True to keep the original filename otherwise + a friendlier filename is generated. + subfolders (bool): True to separate tracks in to album folders. + **kwargs: Additional options passed into :func:`~plexapi.base.PlexObject.getStreamURL`. + """ + filepaths = [] + for track in self.tracks(): + _savepath = os.path.join(savepath, track.parentTitle) if subfolders else savepath + filepaths += track.download(_savepath, keep_original_name, **kwargs) + return filepaths + + +@utils.registerPlexObject +class Album(Audio, ArtMixin, PosterMixin, RatingMixin, UnmatchMatchMixin, + CollectionMixin, GenreMixin, LabelMixin, MoodMixin, StyleMixin): + """ Represents a single Album. + + Attributes: + TAG (str): 'Directory' + TYPE (str): 'album' + collections (List<:class:`~plexapi.media.Collection`>): List of collection objects. + formats (List<:class:`~plexapi.media.Format`>): List of format objects. + genres (List<:class:`~plexapi.media.Genre`>): List of genre objects. + key (str): API URL (/library/metadata/). + labels (List<:class:`~plexapi.media.Label`>): List of label objects. + leafCount (int): Number of items in the album view. + loudnessAnalysisVersion (int): The Plex loudness analysis version level. + originallyAvailableAt (datetime): Datetime the album was released. + parentGuid (str): Plex GUID for the album artist (plex://artist/5d07bcb0403c64029053ac4c). + parentKey (str): API URL of the album artist (/library/metadata/). + parentRatingKey (int): Unique key identifying the album artist. + parentThumb (str): URL to album artist thumbnail image (/library/metadata//thumb/). + parentTitle (str): Name of the album artist. + rating (float): Album rating (7.9; 9.8; 8.1). + studio (str): Studio that released the album. + styles (List<:class:`~plexapi.media.Style`>): List of style objects. + subformats (List<:class:`~plexapi.media.Subformat`>): List of subformat objects. + viewedLeafCount (int): Number of items marked as played in the album view. + year (int): Year the album was released. + """ + TAG = 'Directory' + TYPE = 'album' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + Audio._loadData(self, data) + self.collections = self.findItems(data, media.Collection) + self.formats = self.findItems(data, media.Format) + self.genres = self.findItems(data, media.Genre) + self.key = self.key.replace('/children', '') # FIX_BUG_50 + self.labels = self.findItems(data, media.Label) + self.leafCount = utils.cast(int, data.attrib.get('leafCount')) + self.loudnessAnalysisVersion = utils.cast(int, data.attrib.get('loudnessAnalysisVersion')) + self.originallyAvailableAt = utils.toDatetime(data.attrib.get('originallyAvailableAt'), '%Y-%m-%d') + self.parentGuid = data.attrib.get('parentGuid') + self.parentKey = data.attrib.get('parentKey') + self.parentRatingKey = utils.cast(int, data.attrib.get('parentRatingKey')) + self.parentThumb = data.attrib.get('parentThumb') + self.parentTitle = data.attrib.get('parentTitle') + self.rating = utils.cast(float, data.attrib.get('rating')) + self.studio = data.attrib.get('studio') + self.styles = self.findItems(data, media.Style) + self.subformats = self.findItems(data, media.Subformat) + self.viewedLeafCount = utils.cast(int, data.attrib.get('viewedLeafCount')) + self.year = utils.cast(int, data.attrib.get('year')) + + def __iter__(self): + for track in self.tracks(): + yield track + + def track(self, title=None, track=None): + """ Returns the :class:`~plexapi.audio.Track` that matches the specified title. + + Parameters: + title (str): Title of the track to return. + track (int): Track number (default: None; required if title not specified). + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: If title or track parameter is missing. + """ + key = '/library/metadata/%s/children' % self.ratingKey + if title is not None: + return self.fetchItem(key, Track, title__iexact=title) + elif track is not None: + return self.fetchItem(key, Track, parentTitle__iexact=self.title, index=track) + raise BadRequest('Missing argument: title or track is required') + + def tracks(self, **kwargs): + """ Returns a list of :class:`~plexapi.audio.Track` objects in the album. """ + key = '/library/metadata/%s/children' % self.ratingKey + return self.fetchItems(key, Track, **kwargs) + + def get(self, title=None, track=None): + """ Alias of :func:`~plexapi.audio.Album.track`. """ + return self.track(title, track) + + def artist(self): + """ Return the album's :class:`~plexapi.audio.Artist`. """ + return self.fetchItem(self.parentKey) + + def download(self, savepath=None, keep_original_name=False, **kwargs): + """ Download all tracks from the album. See :func:`~plexapi.base.Playable.download` for details. + + Parameters: + savepath (str): Defaults to current working dir. + keep_original_name (bool): True to keep the original filename otherwise + a friendlier filename is generated. + **kwargs: Additional options passed into :func:`~plexapi.base.PlexObject.getStreamURL`. + """ + filepaths = [] + for track in self.tracks(): + filepaths += track.download(savepath, keep_original_name, **kwargs) + return filepaths + + def _defaultSyncTitle(self): + """ Returns str, default title for a new syncItem. """ + return '%s - %s' % (self.parentTitle, self.title) + + +@utils.registerPlexObject +class Track(Audio, Playable, ArtUrlMixin, PosterUrlMixin, RatingMixin, + CollectionMixin, MoodMixin): + """ Represents a single Track. + + Attributes: + TAG (str): 'Directory' + TYPE (str): 'track' + chapterSource (str): Unknown + collections (List<:class:`~plexapi.media.Collection`>): List of collection objects. + duration (int): Length of the track in milliseconds. + grandparentArt (str): URL to album artist artwork (/library/metadata//art/). + grandparentGuid (str): Plex GUID for the album artist (plex://artist/5d07bcb0403c64029053ac4c). + grandparentKey (str): API URL of the album artist (/library/metadata/). + grandparentRatingKey (int): Unique key identifying the album artist. + grandparentThumb (str): URL to album artist thumbnail image + (/library/metadata//thumb/). + grandparentTitle (str): Name of the album artist for the track. + media (List<:class:`~plexapi.media.Media`>): List of media objects. + originalTitle (str): The artist for the track. + parentGuid (str): Plex GUID for the album (plex://album/5d07cd8e403c640290f180f9). + parentIndex (int): Album index. + parentKey (str): API URL of the album (/library/metadata/). + parentRatingKey (int): Unique key identifying the album. + parentThumb (str): URL to album thumbnail image (/library/metadata//thumb/). + parentTitle (str): Name of the album for the track. + primaryExtraKey (str) API URL for the primary extra for the track. + ratingCount (int): Number of ratings contributing to the rating score. + viewOffset (int): View offset in milliseconds. + year (int): Year the track was released. + """ + TAG = 'Track' + TYPE = 'track' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + Audio._loadData(self, data) + Playable._loadData(self, data) + self.chapterSource = data.attrib.get('chapterSource') + self.collections = self.findItems(data, media.Collection) + self.duration = utils.cast(int, data.attrib.get('duration')) + self.grandparentArt = data.attrib.get('grandparentArt') + self.grandparentGuid = data.attrib.get('grandparentGuid') + self.grandparentKey = data.attrib.get('grandparentKey') + self.grandparentRatingKey = utils.cast(int, data.attrib.get('grandparentRatingKey')) + self.grandparentThumb = data.attrib.get('grandparentThumb') + self.grandparentTitle = data.attrib.get('grandparentTitle') + self.media = self.findItems(data, media.Media) + self.originalTitle = data.attrib.get('originalTitle') + self.parentGuid = data.attrib.get('parentGuid') + self.parentIndex = data.attrib.get('parentIndex') + self.parentKey = data.attrib.get('parentKey') + self.parentRatingKey = utils.cast(int, data.attrib.get('parentRatingKey')) + self.parentThumb = data.attrib.get('parentThumb') + self.parentTitle = data.attrib.get('parentTitle') + self.primaryExtraKey = data.attrib.get('primaryExtraKey') + self.ratingCount = utils.cast(int, data.attrib.get('ratingCount')) + self.viewOffset = utils.cast(int, data.attrib.get('viewOffset', 0)) + self.year = utils.cast(int, data.attrib.get('year')) + + def _prettyfilename(self): + """ Returns a filename for use in download. """ + return '%s - %s - %s - %s' % ( + self.grandparentTitle, self.parentTitle, str(self.trackNumber).zfill(2), self.title) + + def album(self): + """ Return the track's :class:`~plexapi.audio.Album`. """ + return self.fetchItem(self.parentKey) + + def artist(self): + """ Return the track's :class:`~plexapi.audio.Artist`. """ + return self.fetchItem(self.grandparentKey) + + @property + def locations(self): + """ This does not exist in plex xml response but is added to have a common + interface to get the locations of the track. + + Returns: + List of file paths where the track is found on disk. + """ + return [part.file for part in self.iterParts() if part] + + @property + def trackNumber(self): + """ Returns the track number. """ + return self.index + + def _defaultSyncTitle(self): + """ Returns str, default title for a new syncItem. """ + return '%s - %s - %s' % (self.grandparentTitle, self.parentTitle, self.title) + + def _getWebURL(self, base=None): + """ Get the Plex Web URL with the correct parameters. """ + return self._server._buildWebURL(base=base, endpoint='details', key=self.parentKey) diff --git a/service.plexskipintro/plexapi/base.py b/service.plexskipintro/plexapi/base.py new file mode 100644 index 0000000000..ab3c2e64a8 --- /dev/null +++ b/service.plexskipintro/plexapi/base.py @@ -0,0 +1,798 @@ +# -*- coding: utf-8 -*- +import re +import weakref +from urllib.parse import quote_plus, urlencode +from xml.etree import ElementTree + +from plexapi import log, utils +from plexapi.exceptions import BadRequest, NotFound, UnknownType, Unsupported + +USER_DONT_RELOAD_FOR_KEYS = set() +_DONT_RELOAD_FOR_KEYS = {'key', 'session'} +_DONT_OVERWRITE_SESSION_KEYS = {'usernames', 'players', 'transcodeSessions', 'session'} +OPERATORS = { + 'exact': lambda v, q: v == q, + 'iexact': lambda v, q: v.lower() == q.lower(), + 'contains': lambda v, q: q in v, + 'icontains': lambda v, q: q.lower() in v.lower(), + 'ne': lambda v, q: v != q, + 'in': lambda v, q: v in q, + 'gt': lambda v, q: v > q, + 'gte': lambda v, q: v >= q, + 'lt': lambda v, q: v < q, + 'lte': lambda v, q: v <= q, + 'startswith': lambda v, q: v.startswith(q), + 'istartswith': lambda v, q: v.lower().startswith(q), + 'endswith': lambda v, q: v.endswith(q), + 'iendswith': lambda v, q: v.lower().endswith(q), + 'exists': lambda v, q: v is not None if q else v is None, + 'regex': lambda v, q: re.match(q, v), + 'iregex': lambda v, q: re.match(q, v, flags=re.IGNORECASE), +} + + +class PlexObject(object): + """ Base class for all Plex objects. + + Parameters: + server (:class:`~plexapi.server.PlexServer`): PlexServer this client is connected to (optional) + data (ElementTree): Response from PlexServer used to build this object (optional). + initpath (str): Relative path requested when retrieving specified `data` (optional). + parent (:class:`~plexapi.base.PlexObject`): The parent object that this object is built from (optional). + """ + TAG = None # xml element tag + TYPE = None # xml element type + key = None # plex relative url + + def __init__(self, server, data, initpath=None, parent=None): + self._server = server + self._data = data + self._initpath = initpath or self.key + self._parent = weakref.ref(parent) if parent is not None else None + self._details_key = None + if data is not None: + self._loadData(data) + self._details_key = self._buildDetailsKey() + self._autoReload = False + + def __repr__(self): + uid = self._clean(self.firstAttr('_baseurl', 'key', 'id', 'playQueueID', 'uri')) + name = self._clean(self.firstAttr('title', 'name', 'username', 'product', 'tag', 'value')) + return '<%s>' % ':'.join([p for p in [self.__class__.__name__, uid, name] if p]) + + def __setattr__(self, attr, value): + # Don't overwrite session specific attr with [] + if attr in _DONT_OVERWRITE_SESSION_KEYS and value == []: + value = getattr(self, attr, []) + + autoReload = self.__dict__.get('_autoReload') + # Don't overwrite an attr with None unless it's a private variable or not auto reload + if value is not None or attr.startswith('_') or attr not in self.__dict__ or not autoReload: + self.__dict__[attr] = value + + def _clean(self, value): + """ Clean attr value for display in __repr__. """ + if value: + value = str(value).replace('/library/metadata/', '') + value = value.replace('/children', '') + value = value.replace('/accounts/', '') + value = value.replace('/devices/', '') + return value.replace(' ', '-')[:20] + + def _buildItem(self, elem, cls=None, initpath=None): + """ Factory function to build objects based on registered PLEXOBJECTS. """ + # cls is specified, build the object and return + initpath = initpath or self._initpath + if cls is not None: + return cls(self._server, elem, initpath, parent=self) + # cls is not specified, try looking it up in PLEXOBJECTS + etype = elem.attrib.get('streamType', elem.attrib.get('tagType', elem.attrib.get('type'))) + ehash = '%s.%s' % (elem.tag, etype) if etype else elem.tag + ecls = utils.PLEXOBJECTS.get(ehash, utils.PLEXOBJECTS.get(elem.tag)) + # log.debug('Building %s as %s', elem.tag, ecls.__name__) + if ecls is not None: + return ecls(self._server, elem, initpath) + raise UnknownType("Unknown library type <%s type='%s'../>" % (elem.tag, etype)) + + def _buildItemOrNone(self, elem, cls=None, initpath=None): + """ Calls :func:`~plexapi.base.PlexObject._buildItem` but returns + None if elem is an unknown type. + """ + try: + return self._buildItem(elem, cls, initpath) + except UnknownType: + return None + + def _buildDetailsKey(self, **kwargs): + """ Builds the details key with the XML include parameters. + All parameters are included by default with the option to override each parameter + or disable each parameter individually by setting it to False or 0. + """ + details_key = self.key + if details_key and hasattr(self, '_INCLUDES'): + includes = {} + for k, v in list(self._INCLUDES.items()): + value = kwargs.get(k, v) + if value not in [False, 0, '0']: + includes[k] = 1 if value is True else value + if includes: + details_key += '?' + urlencode(sorted(includes.items())) + return details_key + + def _isChildOf(self, **kwargs): + """ Returns True if this object is a child of the given attributes. + This will search the parent objects all the way to the top. + + Parameters: + **kwargs (dict): The attributes and values to search for in the parent objects. + See all possible `**kwargs*` in :func:`~plexapi.base.PlexObject.fetchItem`. + """ + obj = self + while obj and obj._parent is not None: + obj = obj._parent() + if obj and obj._checkAttrs(obj._data, **kwargs): + return True + return False + + def _manuallyLoadXML(self, xml, cls=None): + """ Manually load an XML string as a :class:`~plexapi.base.PlexObject`. + + Parameters: + xml (str): The XML string to load. + cls (:class:`~plexapi.base.PlexObject`): If you know the class of the + items to be fetched, passing this in will help the parser ensure + it only returns those items. By default we convert the xml elements + with the best guess PlexObjects based on tag and type attrs. + """ + elem = ElementTree.fromstring(xml) + return self._buildItemOrNone(elem, cls) + + def fetchItem(self, ekey, cls=None, **kwargs): + """ Load the specified key to find and build the first item with the + specified tag and attrs. If no tag or attrs are specified then + the first item in the result set is returned. + + Parameters: + ekey (str or int): Path in Plex to fetch items from. If an int is passed + in, the key will be translated to /library/metadata/. This allows + fetching an item only knowing its key-id. + cls (:class:`~plexapi.base.PlexObject`): If you know the class of the + items to be fetched, passing this in will help the parser ensure + it only returns those items. By default we convert the xml elements + with the best guess PlexObjects based on tag and type attrs. + etag (str): Only fetch items with the specified tag. + **kwargs (dict): Optionally add XML attribute to filter the items. + See :func:`~plexapi.base.PlexObject.fetchItems` for more details + on how this is used. + """ + if ekey is None: + raise BadRequest('ekey was not provided') + if isinstance(ekey, int): + ekey = '/library/metadata/%s' % ekey + for elem in self._server.query(ekey): + if self._checkAttrs(elem, **kwargs): + return self._buildItem(elem, cls, ekey) + clsname = cls.__name__ if cls else 'None' + raise NotFound('Unable to find elem: cls=%s, attrs=%s' % (clsname, kwargs)) + + def fetchItems(self, ekey, cls=None, container_start=None, container_size=None, **kwargs): + """ Load the specified key to find and build all items with the specified tag + and attrs. + + Parameters: + ekey (str): API URL path in Plex to fetch items from. + cls (:class:`~plexapi.base.PlexObject`): If you know the class of the + items to be fetched, passing this in will help the parser ensure + it only returns those items. By default we convert the xml elements + with the best guess PlexObjects based on tag and type attrs. + etag (str): Only fetch items with the specified tag. + container_start (None, int): offset to get a subset of the data + container_size (None, int): How many items in data + **kwargs (dict): Optionally add XML attribute to filter the items. + See the details below for more info. + + **Filtering XML Attributes** + + Any XML attribute can be filtered when fetching results. Filtering is done before + the Python objects are built to help keep things speedy. For example, passing in + ``viewCount=0`` will only return matching items where the view count is ``0``. + Note that case matters when specifying attributes. Attributes futher down in the XML + tree can be filtered by *prepending* the attribute with each element tag ``Tag__``. + + Examples: + + .. code-block:: python + + fetchItem(ekey, viewCount=0) + fetchItem(ekey, contentRating="PG") + fetchItem(ekey, Genre__tag="Animation") + fetchItem(ekey, Media__videoCodec="h265") + fetchItem(ekey, Media__Part__container="mp4) + + Note that because some attribute names are already used as arguments to this + function, such as ``tag``, you may still reference the attr tag by prepending an + underscore. For example, passing in ``_tag='foobar'`` will return all items where + ``tag='foobar'``. + + **Using PlexAPI Operators** + + Optionally, PlexAPI operators can be specified by *appending* it to the end of the + attribute for more complex lookups. For example, passing in ``viewCount__gte=0`` + will return all items where ``viewCount >= 0``. + + List of Available Operators: + + * ``__contains``: Value contains specified arg. + * ``__endswith``: Value ends with specified arg. + * ``__exact``: Value matches specified arg. + * ``__exists`` (*bool*): Value is or is not present in the attrs. + * ``__gt``: Value is greater than specified arg. + * ``__gte``: Value is greater than or equal to specified arg. + * ``__icontains``: Case insensative value contains specified arg. + * ``__iendswith``: Case insensative value ends with specified arg. + * ``__iexact``: Case insensative value matches specified arg. + * ``__in``: Value is in a specified list or tuple. + * ``__iregex``: Case insensative value matches the specified regular expression. + * ``__istartswith``: Case insensative value starts with specified arg. + * ``__lt``: Value is less than specified arg. + * ``__lte``: Value is less than or equal to specified arg. + * ``__regex``: Value matches the specified regular expression. + * ``__startswith``: Value starts with specified arg. + + Examples: + + .. code-block:: python + + fetchItem(ekey, viewCount__gte=0) + fetchItem(ekey, Media__container__in=["mp4", "mkv"]) + fetchItem(ekey, guid__iregex=r"(imdb:\/\/|themoviedb:\/\/)") + fetchItem(ekey, Media__Part__file__startswith="D:\\Movies") + + """ + url_kw = {} + if container_start is not None: + url_kw["X-Plex-Container-Start"] = container_start + if container_size is not None: + url_kw["X-Plex-Container-Size"] = container_size + + if ekey is None: + raise BadRequest('ekey was not provided') + data = self._server.query(ekey, params=url_kw) + items = self.findItems(data, cls, ekey, **kwargs) + + librarySectionID = utils.cast(int, data.attrib.get('librarySectionID')) + if librarySectionID: + for item in items: + item.librarySectionID = librarySectionID + return items + + def findItems(self, data, cls=None, initpath=None, rtag=None, **kwargs): + """ Load the specified data to find and build all items with the specified tag + and attrs. See :func:`~plexapi.base.PlexObject.fetchItem` for more details + on how this is used. + """ + # filter on cls attrs if specified + if cls and cls.TAG and 'tag' not in kwargs: + kwargs['etag'] = cls.TAG + if cls and cls.TYPE and 'type' not in kwargs: + kwargs['type'] = cls.TYPE + # rtag to iter on a specific root tag + if rtag: + data = next(data.iter(rtag), []) + # loop through all data elements to find matches + items = [] + for elem in data: + if self._checkAttrs(elem, **kwargs): + item = self._buildItemOrNone(elem, cls, initpath) + if item is not None: + items.append(item) + return items + + def firstAttr(self, *attrs): + """ Return the first attribute in attrs that is not None. """ + for attr in attrs: + value = getattr(self, attr, None) + if value is not None: + return value + + def listAttrs(self, data, attr, rtag=None, **kwargs): + """ Return a list of values from matching attribute. """ + results = [] + # rtag to iter on a specific root tag + if rtag: + data = next(data.iter(rtag), []) + for elem in data: + kwargs['%s__exists' % attr] = True + if self._checkAttrs(elem, **kwargs): + results.append(elem.attrib.get(attr)) + return results + + def reload(self, key=None, **kwargs): + """ Reload the data for this object from self.key. + + Parameters: + key (string, optional): Override the key to reload. + **kwargs (dict): A dictionary of XML include parameters to exclude or override. + All parameters are included by default with the option to override each parameter + or disable each parameter individually by setting it to False or 0. + See :class:`~plexapi.base.PlexPartialObject` for all the available include parameters. + + Example: + + .. code-block:: python + + from plexapi.server import PlexServer + plex = PlexServer('http://localhost:32400', token='xxxxxxxxxxxxxxxxxxxx') + movie = plex.library.section('Movies').get('Cars') + + # Partial reload of the movie without the `checkFiles` parameter. + # Excluding `checkFiles` will prevent the Plex server from reading the + # file to check if the file still exists and is accessible. + # The movie object will remain as a partial object. + movie.reload(checkFiles=False) + movie.isPartialObject() # Returns True + + # Full reload of the movie with all include parameters. + # The movie object will be a full object. + movie.reload() + movie.isFullObject() # Returns True + + """ + return self._reload(key=key, **kwargs) + + def _reload(self, key=None, _autoReload=False, **kwargs): + """ Perform the actual reload. """ + details_key = self._buildDetailsKey(**kwargs) if kwargs else self._details_key + key = key or details_key or self.key + if not key: + raise Unsupported('Cannot reload an object not built from a URL.') + self._initpath = key + data = self._server.query(key) + self._autoReload = _autoReload + self._loadData(data[0]) + self._autoReload = False + return self + + def _checkAttrs(self, elem, **kwargs): + attrsFound = {} + for attr, query in list(kwargs.items()): + attr, op, operator = self._getAttrOperator(attr) + values = self._getAttrValue(elem, attr) + # special case query in (None, 0, '') to include missing attr + if op == 'exact' and not values and query in (None, 0, ''): + return True + # return if attr were looking for is missing + attrsFound[attr] = False + for value in values: + value = self._castAttrValue(op, query, value) + if operator(value, query): + attrsFound[attr] = True + break + # log.debug('Checking %s for %s found: %s', elem.tag, kwargs, attrsFound) + return all(attrsFound.values()) + + def _getAttrOperator(self, attr): + for op, operator in list(OPERATORS.items()): + if attr.endswith('__%s' % op): + attr = attr.rsplit('__', 1)[0] + return attr, op, operator + # default to exact match + return attr, 'exact', OPERATORS['exact'] + + def _getAttrValue(self, elem, attrstr, results=None): + # log.debug('Fetching %s in %s', attrstr, elem.tag) + parts = attrstr.split('__', 1) + attr = parts[0] + attrstr = parts[1] if len(parts) == 2 else None + if attrstr: + results = [] if results is None else results + for child in [c for c in elem if c.tag.lower() == attr.lower()]: + results += self._getAttrValue(child, attrstr, results) + return [r for r in results if r is not None] + # check were looking for the tag + if attr.lower() == 'etag': + return [elem.tag] + # loop through attrs so we can perform case-insensative match + for _attr, value in list(elem.attrib.items()): + if attr.lower() == _attr.lower(): + return [value] + return [] + + def _castAttrValue(self, op, query, value): + if op == 'exists': + return value + if isinstance(query, bool): + return bool(int(value)) + if isinstance(query, int) and '.' in value: + return float(value) + if isinstance(query, int): + return int(value) + if isinstance(query, float): + return float(value) + return value + + def _loadData(self, data): + raise NotImplementedError('Abstract method not implemented.') + + +class PlexPartialObject(PlexObject): + """ Not all objects in the Plex listings return the complete list of elements + for the object. This object will allow you to assume each object is complete, + and if the specified value you request is None it will fetch the full object + automatically and update itself. + """ + _INCLUDES = { + 'checkFiles': 1, + 'includeAllConcerts': 1, + 'includeBandwidths': 1, + 'includeChapters': 1, + 'includeChildren': 1, + 'includeConcerts': 1, + 'includeExternalMedia': 1, + 'includeExtras': 1, + 'includeFields': 'thumbBlurHash,artBlurHash', + 'includeGeolocation': 1, + 'includeLoudnessRamps': 1, + 'includeMarkers': 1, + 'includeOnDeck': 1, + 'includePopularLeaves': 1, + 'includePreferences': 1, + 'includeRelated': 1, + 'includeRelatedCount': 1, + 'includeReviews': 1, + 'includeStations': 1 + } + + def __eq__(self, other): + return other not in [None, []] and self.key == other.key + + def __hash__(self): + return hash(repr(self)) + + def __iter__(self): + yield self + + def __getattribute__(self, attr): + # Dragons inside.. :-/ + value = super(PlexPartialObject, self).__getattribute__(attr) + # Check a few cases where we dont want to reload + if attr in _DONT_RELOAD_FOR_KEYS: return value + if attr in _DONT_OVERWRITE_SESSION_KEYS: return value + if attr in USER_DONT_RELOAD_FOR_KEYS: return value + if attr.startswith('_'): return value + if value not in (None, []): return value + if self.isFullObject(): return value + # Log the reload. + clsname = self.__class__.__name__ + title = self.__dict__.get('title', self.__dict__.get('name')) + objname = "%s '%s'" % (clsname, title) if title else clsname + log.debug("Reloading %s for attr '%s'", objname, attr) + # Reload and return the value + self._reload(_autoReload=True) + return super(PlexPartialObject, self).__getattribute__(attr) + + def analyze(self): + """ Tell Plex Media Server to performs analysis on it this item to gather + information. Analysis includes: + + * Gather Media Properties: All of the media you add to a Library has + properties that are useful to know–whether it's a video file, a + music track, or one of your photos (container, codec, resolution, etc). + * Generate Default Artwork: Artwork will automatically be grabbed from a + video file. A background image will be pulled out as well as a + smaller image to be used for poster/thumbnail type purposes. + * Generate Video Preview Thumbnails: Video preview thumbnails are created, + if you have that feature enabled. Video preview thumbnails allow + graphical seeking in some Apps. It's also used in the Plex Web App Now + Playing screen to show a graphical representation of where playback + is. Video preview thumbnails creation is a CPU-intensive process akin + to transcoding the file. + * Generate intro video markers: Detects show intros, exposing the + 'Skip Intro' button in clients. + """ + key = '/%s/analyze' % self.key.lstrip('/') + self._server.query(key, method=self._server._session.put) + + def isFullObject(self): + """ Returns True if this is already a full object. A full object means all attributes + were populated from the api path representing only this item. For example, the + search result for a movie often only contain a portion of the attributes a full + object (main url) for that movie would contain. + """ + return not self.key or (self._details_key or self.key) == self._initpath + + def isPartialObject(self): + """ Returns True if this is not a full object. """ + return not self.isFullObject() + + def _edit(self, **kwargs): + """ Actually edit an object. """ + if 'id' not in kwargs: + kwargs['id'] = self.ratingKey + if 'type' not in kwargs: + kwargs['type'] = utils.searchType(self.type) + + part = '/library/sections/%s/all?%s' % (self.librarySectionID, + urlencode(kwargs)) + self._server.query(part, method=self._server._session.put) + + def edit(self, **kwargs): + """ Edit an object. + + Parameters: + kwargs (dict): Dict of settings to edit. + + Example: + {'type': 1, + 'id': movie.ratingKey, + 'collection[0].tag.tag': 'Super', + 'collection.locked': 0} + """ + self._edit(**kwargs) + + def _edit_tags(self, tag, items, locked=True, remove=False): + """ Helper to edit tags. + + Parameters: + tag (str): Tag name. + items (list): List of tags to add. + locked (bool): True to lock the field. + remove (bool): True to remove the tags in items. + """ + if not isinstance(items, list): + items = [items] + value = getattr(self, utils.tag_plural(tag)) + existing_tags = [t.tag for t in value if t and remove is False] + tag_edits = utils.tag_helper(tag, existing_tags + items, locked, remove) + self.edit(**tag_edits) + + def refresh(self): + """ Refreshing a Library or individual item causes the metadata for the item to be + refreshed, even if it already has metadata. You can think of refreshing as + "update metadata for the requested item even if it already has some". You should + refresh a Library or individual item if: + + * You've changed the Library Metadata Agent. + * You've added "Local Media Assets" (such as artwork, theme music, external + subtitle files, etc.) + * You want to freshen the item posters, summary, etc. + * There's a problem with the poster image that's been downloaded. + * Items are missing posters or other downloaded information. This is possible if + the refresh process is interrupted (the Server is turned off, internet + connection dies, etc). + """ + key = '%s/refresh' % self.key + self._server.query(key, method=self._server._session.put) + + def section(self): + """ Returns the :class:`~plexapi.library.LibrarySection` this item belongs to. """ + return self._server.library.sectionByID(self.librarySectionID) + + def delete(self): + """ Delete a media element. This has to be enabled under settings > server > library in plex webui. """ + try: + return self._server.query(self.key, method=self._server._session.delete) + except BadRequest: # pragma: no cover + log.error('Failed to delete %s. This could be because you ' + 'have not allowed items to be deleted', self.key) + raise + + def history(self, maxresults=9999999, mindate=None): + """ Get Play History for a media item. + + Parameters: + maxresults (int): Only return the specified number of results (optional). + mindate (datetime): Min datetime to return results from. + """ + return self._server.history(maxresults=maxresults, mindate=mindate, ratingKey=self.ratingKey) + + def _getWebURL(self, base=None): + """ Get the Plex Web URL with the correct parameters. + Private method to allow overriding parameters from subclasses. + """ + return self._server._buildWebURL(base=base, endpoint='details', key=self.key) + + def getWebURL(self, base=None): + """ Returns the Plex Web URL for a media item. + + Parameters: + base (str): The base URL before the fragment (``#!``). + Default is https://app.plex.tv/desktop. + """ + return self._getWebURL(base=base) + + +class Playable(object): + """ This is a general place to store functions specific to media that is Playable. + Things were getting mixed up a bit when dealing with Shows, Season, Artists, + Albums which are all not playable. + + Attributes: + sessionKey (int): Active session key. + usernames (str): Username of the person playing this item (for active sessions). + players (:class:`~plexapi.client.PlexClient`): Client objects playing this item (for active sessions). + session (:class:`~plexapi.media.Session`): Session object, for a playing media file. + transcodeSessions (:class:`~plexapi.media.TranscodeSession`): Transcode Session object + if item is being transcoded (None otherwise). + viewedAt (datetime): Datetime item was last viewed (history). + accountID (int): The associated :class:`~plexapi.server.SystemAccount` ID. + deviceID (int): The associated :class:`~plexapi.server.SystemDevice` ID. + playlistItemID (int): Playlist item ID (only populated for :class:`~plexapi.playlist.Playlist` items). + playQueueItemID (int): PlayQueue item ID (only populated for :class:`~plexapi.playlist.PlayQueue` items). + """ + + def _loadData(self, data): + self.sessionKey = utils.cast(int, data.attrib.get('sessionKey')) # session + self.usernames = self.listAttrs(data, 'title', etag='User') # session + self.players = self.findItems(data, etag='Player') # session + self.transcodeSessions = self.findItems(data, etag='TranscodeSession') # session + self.session = self.findItems(data, etag='Session') # session + self.viewedAt = utils.toDatetime(data.attrib.get('viewedAt')) # history + self.accountID = utils.cast(int, data.attrib.get('accountID')) # history + self.deviceID = utils.cast(int, data.attrib.get('deviceID')) # history + self.playlistItemID = utils.cast(int, data.attrib.get('playlistItemID')) # playlist + self.playQueueItemID = utils.cast(int, data.attrib.get('playQueueItemID')) # playqueue + + def getStreamURL(self, **params): + """ Returns a stream url that may be used by external applications such as VLC. + + Parameters: + **params (dict): optional parameters to manipulate the playback when accessing + the stream. A few known parameters include: maxVideoBitrate, videoResolution + offset, copyts, protocol, mediaIndex, platform. + + Raises: + :exc:`~plexapi.exceptions.Unsupported`: When the item doesn't support fetching a stream URL. + """ + if self.TYPE not in ('movie', 'episode', 'track', 'clip'): + raise Unsupported('Fetching stream URL for %s is unsupported.' % self.TYPE) + mvb = params.get('maxVideoBitrate') + vr = params.get('videoResolution', '') + params = { + 'path': self.key, + 'offset': params.get('offset', 0), + 'copyts': params.get('copyts', 1), + 'protocol': params.get('protocol'), + 'mediaIndex': params.get('mediaIndex', 0), + 'X-Plex-Platform': params.get('platform', 'Chrome'), + 'maxVideoBitrate': max(mvb, 64) if mvb else None, + 'videoResolution': vr if re.match(r'^\d+x\d+$', vr) else None + } + # remove None values + params = {k: v for k, v in list(params.items()) if v is not None} + streamtype = 'audio' if self.TYPE in ('track', 'album') else 'video' + # sort the keys since the randomness fucks with my tests.. + sorted_params = sorted(list(params.items()), key=lambda val: val[0]) + return self._server.url('/%s/:/transcode/universal/start.m3u8?%s' % + (streamtype, urlencode(sorted_params)), includeToken=True) + + def iterParts(self): + """ Iterates over the parts of this media item. """ + for item in self.media: + for part in item.parts: + yield part + + def play(self, client): + """ Start playback on the specified client. + + Parameters: + client (:class:`~plexapi.client.PlexClient`): Client to start playing on. + """ + client.playMedia(self) + + def download(self, savepath=None, keep_original_name=False, **kwargs): + """ Downloads the media item to the specified location. Returns a list of + filepaths that have been saved to disk. + + Parameters: + savepath (str): Defaults to current working dir. + keep_original_name (bool): True to keep the original filename otherwise + a friendlier filename is generated. See filenames below. + **kwargs (dict): Additional options passed into :func:`~plexapi.audio.Track.getStreamURL` + to download a transcoded stream, otherwise the media item will be downloaded + as-is and saved to disk. + + **Filenames** + + * Movie: `` (<year>)`` + * Episode: ``<show title> - s00e00 - <episode title>`` + * Track: ``<artist title> - <album title> - 00 - <track title>`` + * Photo: ``<photoalbum title> - <photo/clip title>`` or ``<photo/clip title>`` + """ + filepaths = [] + parts = [i for i in self.iterParts() if i] + + for part in parts: + if not keep_original_name: + filename = utils.cleanFilename('%s.%s' % (self._prettyfilename(), part.container)) + else: + filename = part.file + + if kwargs: + # So this seems to be a alot slower but allows transcode. + download_url = self.getStreamURL(**kwargs) + else: + download_url = self._server.url('%s?download=1' % part.key) + + filepath = utils.download( + download_url, + self._server._token, + filename=filename, + savepath=savepath, + session=self._server._session + ) + + if filepath: + filepaths.append(filepath) + + return filepaths + + def stop(self, reason=''): + """ Stop playback for a media item. """ + key = '/status/sessions/terminate?sessionId=%s&reason=%s' % (self.session[0].id, quote_plus(reason)) + return self._server.query(key) + + def updateProgress(self, time, state='stopped'): + """ Set the watched progress for this video. + + Note that setting the time to 0 will not work. + Use `markWatched` or `markUnwatched` to achieve + that goal. + + Parameters: + time (int): milliseconds watched + state (string): state of the video, default 'stopped' + """ + key = '/:/progress?key=%s&identifier=com.plexapp.plugins.library&time=%d&state=%s' % (self.ratingKey, + time, state) + self._server.query(key) + self._reload(_autoReload=True) + + def updateTimeline(self, time, state='stopped', duration=None): + """ Set the timeline progress for this video. + + Parameters: + time (int): milliseconds watched + state (string): state of the video, default 'stopped' + duration (int): duration of the item + """ + durationStr = '&duration=' + if duration is not None: + durationStr = durationStr + str(duration) + else: + durationStr = durationStr + str(self.duration) + key = '/:/timeline?ratingKey=%s&key=%s&identifier=com.plexapp.plugins.library&time=%d&state=%s%s' + key %= (self.ratingKey, self.key, time, state, durationStr) + self._server.query(key) + self._reload(_autoReload=True) + + +class MediaContainer(PlexObject): + """ Represents a single MediaContainer. + + Attributes: + TAG (str): 'MediaContainer' + allowSync (int): Sync/Download is allowed/disallowed for feature. + augmentationKey (str): API URL (/library/metadata/augmentations/<augmentationKey>). + identifier (str): "com.plexapp.plugins.library" + librarySectionID (int): :class:`~plexapi.library.LibrarySection` ID. + librarySectionTitle (str): :class:`~plexapi.library.LibrarySection` title. + librarySectionUUID (str): :class:`~plexapi.library.LibrarySection` UUID. + mediaTagPrefix (str): "/system/bundle/media/flags/" + mediaTagVersion (int): Unknown + size (int): The number of items in the hub. + + """ + TAG = 'MediaContainer' + + def _loadData(self, data): + self._data = data + self.allowSync = utils.cast(int, data.attrib.get('allowSync')) + self.augmentationKey = data.attrib.get('augmentationKey') + self.identifier = data.attrib.get('identifier') + self.librarySectionID = utils.cast(int, data.attrib.get('librarySectionID')) + self.librarySectionTitle = data.attrib.get('librarySectionTitle') + self.librarySectionUUID = data.attrib.get('librarySectionUUID') + self.mediaTagPrefix = data.attrib.get('mediaTagPrefix') + self.mediaTagVersion = data.attrib.get('mediaTagVersion') + self.size = utils.cast(int, data.attrib.get('size')) diff --git a/service.plexskipintro/plexapi/client.py b/service.plexskipintro/plexapi/client.py new file mode 100644 index 0000000000..56f522d222 --- /dev/null +++ b/service.plexskipintro/plexapi/client.py @@ -0,0 +1,632 @@ +# -*- coding: utf-8 -*- +import time +from xml.etree import ElementTree + +import requests +from plexapi import BASE_HEADERS, CONFIG, TIMEOUT, log, logfilter, utils +from plexapi.base import PlexObject +from plexapi.exceptions import BadRequest, NotFound, Unauthorized, Unsupported +from plexapi.playqueue import PlayQueue +from requests.status_codes import _codes as codes + +DEFAULT_MTYPE = 'video' + + +@utils.registerPlexObject +class PlexClient(PlexObject): + """ Main class for interacting with a Plex client. This class can connect + directly to the client and control it or proxy commands through your + Plex Server. To better understand the Plex client API's read this page: + https://github.com/plexinc/plex-media-player/wiki/Remote-control-API + + Parameters: + server (:class:`~plexapi.server.PlexServer`): PlexServer this client is connected to (optional). + data (ElementTree): Response from PlexServer used to build this object (optional). + initpath (str): Path used to generate data. + baseurl (str): HTTP URL to connect dirrectly to this client. + identifier (str): The resource/machine identifier for the desired client. + May be necessary when connecting to a specific proxied client (optional). + token (str): X-Plex-Token used for authenication (optional). + session (:class:`~requests.Session`): requests.Session object if you want more control (optional). + timeout (int): timeout in seconds on initial connect to client (default config.TIMEOUT). + + Attributes: + TAG (str): 'Player' + key (str): '/resources' + device (str): Best guess on the type of device this is (PS, iPhone, Linux, etc). + deviceClass (str): Device class (pc, phone, etc). + machineIdentifier (str): Unique ID for this device. + model (str): Unknown + platform (str): Unknown + platformVersion (str): Description + product (str): Client Product (Plex for iOS, etc). + protocol (str): Always seems ot be 'plex'. + protocolCapabilities (list<str>): List of client capabilities (navigation, playback, + timeline, mirror, playqueues). + protocolVersion (str): Protocol version (1, future proofing?) + server (:class:`~plexapi.server.PlexServer`): Server this client is connected to. + session (:class:`~requests.Session`): Session object used for connection. + state (str): Unknown + title (str): Name of this client (Johns iPhone, etc). + token (str): X-Plex-Token used for authenication + vendor (str): Unknown + version (str): Device version (4.6.1, etc). + _baseurl (str): HTTP address of the client. + _token (str): Token used to access this client. + _session (obj): Requests session object used to access this client. + _proxyThroughServer (bool): Set to True after calling + :func:`~plexapi.client.PlexClient.proxyThroughServer` (default False). + """ + TAG = 'Player' + key = '/resources' + + def __init__(self, server=None, data=None, initpath=None, baseurl=None, + identifier=None, token=None, connect=True, session=None, timeout=None): + super(PlexClient, self).__init__(server, data, initpath) + self._baseurl = baseurl.strip('/') if baseurl else None + self._clientIdentifier = identifier + self._token = logfilter.add_secret(token) + self._showSecrets = CONFIG.get('log.show_secrets', '').lower() == 'true' + server_session = server._session if server else None + self._session = session or server_session or requests.Session() + self._proxyThroughServer = False + self._commandId = 0 + self._last_call = 0 + self._timeline_cache = [] + self._timeline_cache_timestamp = 0 + if not any([data is not None, initpath, baseurl, token]): + self._baseurl = CONFIG.get('auth.client_baseurl', 'http://localhost:32433') + self._token = logfilter.add_secret(CONFIG.get('auth.client_token')) + if connect and self._baseurl: + self.connect(timeout=timeout) + + def _nextCommandId(self): + self._commandId += 1 + return self._commandId + + def connect(self, timeout=None): + """ Alias of reload as any subsequent requests to this client will be + made directly to the device even if the object attributes were initially + populated from a PlexServer. + """ + if not self.key: + raise Unsupported('Cannot reload an object not built from a URL.') + self._initpath = self.key + data = self.query(self.key, timeout=timeout) + if not data: + raise NotFound("Client not found at %s" % self._baseurl) + if self._clientIdentifier: + client = next( + ( + x + for x in data + if x.attrib.get("machineIdentifier") == self._clientIdentifier + ), + None, + ) + if client is None: + raise NotFound( + "Client with identifier %s not found at %s" + % (self._clientIdentifier, self._baseurl) + ) + else: + client = data[0] + self._loadData(client) + return self + + def reload(self): + """ Alias to self.connect(). """ + return self.connect() + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.deviceClass = data.attrib.get('deviceClass') + self.machineIdentifier = data.attrib.get('machineIdentifier') + self.product = data.attrib.get('product') + self.protocol = data.attrib.get('protocol') + self.protocolCapabilities = data.attrib.get('protocolCapabilities', '').split(',') + self.protocolVersion = data.attrib.get('protocolVersion') + self.platform = data.attrib.get('platform') + self.platformVersion = data.attrib.get('platformVersion') + self.title = data.attrib.get('title') or data.attrib.get('name') + # Active session details + # Since protocolCapabilities is missing from /sessions we cant really control this player without + # creating a client manually. + # Add this in next breaking release. + # if self._initpath == 'status/sessions': + self.device = data.attrib.get('device') # session + self.model = data.attrib.get('model') # session + self.state = data.attrib.get('state') # session + self.vendor = data.attrib.get('vendor') # session + self.version = data.attrib.get('version') # session + self.local = utils.cast(bool, data.attrib.get('local', 0)) + self.address = data.attrib.get('address') # session + self.remotePublicAddress = data.attrib.get('remotePublicAddress') + self.userID = data.attrib.get('userID') + + def _headers(self, **kwargs): + """ Returns a dict of all default headers for Client requests. """ + headers = BASE_HEADERS + if self._token: + headers['X-Plex-Token'] = self._token + headers.update(kwargs) + return headers + + def proxyThroughServer(self, value=True, server=None): + """ Tells this PlexClient instance to proxy all future commands through the PlexServer. + Useful if you do not wish to connect directly to the Client device itself. + + Parameters: + value (bool): Enable or disable proxying (optional, default True). + + Raises: + :exc:`~plexapi.exceptions.Unsupported`: Cannot use client proxy with unknown server. + """ + if server: + self._server = server + if value is True and not self._server: + raise Unsupported('Cannot use client proxy with unknown server.') + self._proxyThroughServer = value + + def query(self, path, method=None, headers=None, timeout=None, **kwargs): + """ Main method used to handle HTTPS requests to the Plex client. This method helps + by encoding the response to utf-8 and parsing the returned XML into and + ElementTree object. Returns None if no data exists in the response. + """ + url = self.url(path) + method = method or self._session.get + timeout = timeout or TIMEOUT + log.debug('%s %s', method.__name__.upper(), url) + headers = self._headers(**headers or {}) + response = method(url, headers=headers, timeout=timeout, **kwargs) + if response.status_code not in (200, 201, 204): + codename = codes.get(response.status_code)[0] + errtext = response.text.replace('\n', ' ') + message = '(%s) %s; %s %s' % (response.status_code, codename, response.url, errtext) + if response.status_code == 401: + raise Unauthorized(message) + elif response.status_code == 404: + raise NotFound(message) + else: + raise BadRequest(message) + data = response.text.encode('utf8') + return ElementTree.fromstring(data) if data.strip() else None + + def sendCommand(self, command, proxy=None, **params): + """ Convenience wrapper around :func:`~plexapi.client.PlexClient.query` to more easily + send simple commands to the client. Returns an ElementTree object containing + the response. + + Parameters: + command (str): Command to be sent in for format '<controller>/<command>'. + proxy (bool): Set True to proxy this command through the PlexServer. + **params (dict): Additional GET parameters to include with the command. + + Raises: + :exc:`~plexapi.exceptions.Unsupported`: When we detect the client doesn't support this capability. + """ + command = command.strip('/') + controller = command.split('/')[0] + headers = {'X-Plex-Target-Client-Identifier': self.machineIdentifier} + if controller not in self.protocolCapabilities: + log.debug('Client %s doesnt support %s controller.' + 'What your trying might not work' % (self.title, controller)) + + proxy = self._proxyThroughServer if proxy is None else proxy + query = self._server.query if proxy else self.query + + # Workaround for ptp. See https://github.com/pkkid/python-plexapi/issues/244 + t = time.time() + if command == 'timeline/poll': + self._last_call = t + elif t - self._last_call >= 80 and self.product in ('ptp', 'Plex Media Player'): + self._last_call = t + self.sendCommand(ClientTimeline.key, wait=0) + + params['commandID'] = self._nextCommandId() + key = '/player/%s%s' % (command, utils.joinArgs(params)) + + try: + return query(key, headers=headers) + except ElementTree.ParseError: + # Workaround for players which don't return valid XML on successful commands + # - Plexamp, Plex for Android: `b'OK'` + # - Plex for Samsung: `b'<?xml version="1.0"?><Response code="200" status="OK">'` + if self.product in ( + 'Plexamp', + 'Plex for Android (TV)', + 'Plex for Android (Mobile)', + 'Plex for Samsung', + ): + return + raise + + def url(self, key, includeToken=False): + """ Build a URL string with proper token argument. Token will be appended to the URL + if either includeToken is True or CONFIG.log.show_secrets is 'true'. + """ + if not self._baseurl: + raise BadRequest('PlexClient object missing baseurl.') + if self._token and (includeToken or self._showSecrets): + delim = '&' if '?' in key else '?' + return '%s%s%sX-Plex-Token=%s' % (self._baseurl, key, delim, self._token) + return '%s%s' % (self._baseurl, key) + + # --------------------- + # Navigation Commands + # These commands navigate around the user-interface. + def contextMenu(self): + """ Open the context menu on the client. """ + self.sendCommand('navigation/contextMenu') + + def goBack(self): + """ Navigate back one position. """ + self.sendCommand('navigation/back') + + def goToHome(self): + """ Go directly to the home screen. """ + self.sendCommand('navigation/home') + + def goToMusic(self): + """ Go directly to the playing music panel. """ + self.sendCommand('navigation/music') + + def moveDown(self): + """ Move selection down a position. """ + self.sendCommand('navigation/moveDown') + + def moveLeft(self): + """ Move selection left a position. """ + self.sendCommand('navigation/moveLeft') + + def moveRight(self): + """ Move selection right a position. """ + self.sendCommand('navigation/moveRight') + + def moveUp(self): + """ Move selection up a position. """ + self.sendCommand('navigation/moveUp') + + def nextLetter(self): + """ Jump to next letter in the alphabet. """ + self.sendCommand('navigation/nextLetter') + + def pageDown(self): + """ Move selection down a full page. """ + self.sendCommand('navigation/pageDown') + + def pageUp(self): + """ Move selection up a full page. """ + self.sendCommand('navigation/pageUp') + + def previousLetter(self): + """ Jump to previous letter in the alphabet. """ + self.sendCommand('navigation/previousLetter') + + def select(self): + """ Select element at the current position. """ + self.sendCommand('navigation/select') + + def toggleOSD(self): + """ Toggle the on screen display during playback. """ + self.sendCommand('navigation/toggleOSD') + + def goToMedia(self, media, **params): + """ Navigate directly to the specified media page. + + Parameters: + media (:class:`~plexapi.media.Media`): Media object to navigate to. + **params (dict): Additional GET parameters to include with the command. + + Raises: + :exc:`~plexapi.exceptions.Unsupported`: When no PlexServer specified in this object. + """ + if not self._server: + raise Unsupported('A server must be specified before using this command.') + server_url = media._server._baseurl.split(':') + self.sendCommand('mirror/details', **dict({ + 'machineIdentifier': self._server.machineIdentifier, + 'address': server_url[1].strip('/'), + 'port': server_url[-1], + 'key': media.key, + 'protocol': server_url[0], + 'token': media._server.createToken() + }, **params)) + + # ------------------- + # Playback Commands + # Most of the playback commands take a mandatory mtype {'music','photo','video'} argument, + # to specify which media type to apply the command to, (except for playMedia). This + # is in case there are multiple things happening (e.g. music in the background, photo + # slideshow in the foreground). + def pause(self, mtype=DEFAULT_MTYPE): + """ Pause the currently playing media type. + + Parameters: + mtype (str): Media type to take action against (music, photo, video). + """ + self.sendCommand('playback/pause', type=mtype) + + def play(self, mtype=DEFAULT_MTYPE): + """ Start playback for the specified media type. + + Parameters: + mtype (str): Media type to take action against (music, photo, video). + """ + self.sendCommand('playback/play', type=mtype) + + def refreshPlayQueue(self, playQueueID, mtype=DEFAULT_MTYPE): + """ Refresh the specified Playqueue. + + Parameters: + playQueueID (str): Playqueue ID. + mtype (str): Media type to take action against (music, photo, video). + """ + self.sendCommand( + 'playback/refreshPlayQueue', playQueueID=playQueueID, type=mtype) + + def seekTo(self, offset, mtype=DEFAULT_MTYPE): + """ Seek to the specified offset (ms) during playback. + + Parameters: + offset (int): Position to seek to (milliseconds). + mtype (str): Media type to take action against (music, photo, video). + """ + self.sendCommand('playback/seekTo', offset=offset, type=mtype) + + def skipNext(self, mtype=DEFAULT_MTYPE): + """ Skip to the next playback item. + + Parameters: + mtype (str): Media type to take action against (music, photo, video). + """ + self.sendCommand('playback/skipNext', type=mtype) + + def skipPrevious(self, mtype=DEFAULT_MTYPE): + """ Skip to previous playback item. + + Parameters: + mtype (str): Media type to take action against (music, photo, video). + """ + self.sendCommand('playback/skipPrevious', type=mtype) + + def skipTo(self, key, mtype=DEFAULT_MTYPE): + """ Skip to the playback item with the specified key. + + Parameters: + key (str): Key of the media item to skip to. + mtype (str): Media type to take action against (music, photo, video). + """ + self.sendCommand('playback/skipTo', key=key, type=mtype) + + def stepBack(self, mtype=DEFAULT_MTYPE): + """ Step backward a chunk of time in the current playback item. + + Parameters: + mtype (str): Media type to take action against (music, photo, video). + """ + self.sendCommand('playback/stepBack', type=mtype) + + def stepForward(self, mtype=DEFAULT_MTYPE): + """ Step forward a chunk of time in the current playback item. + + Parameters: + mtype (str): Media type to take action against (music, photo, video). + """ + self.sendCommand('playback/stepForward', type=mtype) + + def stop(self, mtype=DEFAULT_MTYPE): + """ Stop the currently playing item. + + Parameters: + mtype (str): Media type to take action against (music, photo, video). + """ + self.sendCommand('playback/stop', type=mtype) + + def setRepeat(self, repeat, mtype=DEFAULT_MTYPE): + """ Enable repeat for the specified playback items. + + Parameters: + repeat (int): Repeat mode (0=off, 1=repeatone, 2=repeatall). + mtype (str): Media type to take action against (music, photo, video). + """ + self.setParameters(repeat=repeat, mtype=mtype) + + def setShuffle(self, shuffle, mtype=DEFAULT_MTYPE): + """ Enable shuffle for the specified playback items. + + Parameters: + shuffle (int): Shuffle mode (0=off, 1=on) + mtype (str): Media type to take action against (music, photo, video). + """ + self.setParameters(shuffle=shuffle, mtype=mtype) + + def setVolume(self, volume, mtype=DEFAULT_MTYPE): + """ Enable volume for the current playback item. + + Parameters: + volume (int): Volume level (0-100). + mtype (str): Media type to take action against (music, photo, video). + """ + self.setParameters(volume=volume, mtype=mtype) + + def setAudioStream(self, audioStreamID, mtype=DEFAULT_MTYPE): + """ Select the audio stream for the current playback item (only video). + + Parameters: + audioStreamID (str): ID of the audio stream from the media object. + mtype (str): Media type to take action against (music, photo, video). + """ + self.setStreams(audioStreamID=audioStreamID, mtype=mtype) + + def setSubtitleStream(self, subtitleStreamID, mtype=DEFAULT_MTYPE): + """ Select the subtitle stream for the current playback item (only video). + + Parameters: + subtitleStreamID (str): ID of the subtitle stream from the media object. + mtype (str): Media type to take action against (music, photo, video). + """ + self.setStreams(subtitleStreamID=subtitleStreamID, mtype=mtype) + + def setVideoStream(self, videoStreamID, mtype=DEFAULT_MTYPE): + """ Select the video stream for the current playback item (only video). + + Parameters: + videoStreamID (str): ID of the video stream from the media object. + mtype (str): Media type to take action against (music, photo, video). + """ + self.setStreams(videoStreamID=videoStreamID, mtype=mtype) + + def playMedia(self, media, offset=0, **params): + """ Start playback of the specified media item. See also: + + Parameters: + media (:class:`~plexapi.media.Media`): Media item to be played back + (movie, music, photo, playlist, playqueue). + offset (int): Number of milliseconds at which to start playing with zero + representing the beginning (default 0). + **params (dict): Optional additional parameters to include in the playback request. See + also: https://github.com/plexinc/plex-media-player/wiki/Remote-control-API#modified-commands + + Raises: + :exc:`~plexapi.exceptions.Unsupported`: When no PlexServer specified in this object. + """ + if not self._server: + raise Unsupported('A server must be specified before using this command.') + server_url = media._server._baseurl.split(':') + server_port = server_url[-1].strip('/') + + if hasattr(media, "playlistType"): + mediatype = media.playlistType + else: + if isinstance(media, PlayQueue): + mediatype = media.items[0].listType + else: + mediatype = media.listType + + # mediatype must be in ["video", "music", "photo"] + if mediatype == "audio": + mediatype = "music" + + playqueue = media if isinstance(media, PlayQueue) else self._server.createPlayQueue(media) + self.sendCommand('playback/playMedia', **dict({ + 'providerIdentifier': 'com.plexapp.plugins.library', + 'machineIdentifier': self._server.machineIdentifier, + 'protocol': server_url[0], + 'address': server_url[1].strip('/'), + 'port': server_port, + 'offset': offset, + 'key': media.key or playqueue.selectedItem.key, + 'token': media._server.createToken(), + 'type': mediatype, + 'containerKey': '/playQueues/%s?window=100&own=1' % playqueue.playQueueID, + }, **params)) + + def setParameters(self, volume=None, shuffle=None, repeat=None, mtype=DEFAULT_MTYPE): + """ Set multiple playback parameters at once. + + Parameters: + volume (int): Volume level (0-100; optional). + shuffle (int): Shuffle mode (0=off, 1=on; optional). + repeat (int): Repeat mode (0=off, 1=repeatone, 2=repeatall; optional). + mtype (str): Media type to take action against (optional music, photo, video). + """ + params = {} + if repeat is not None: + params['repeat'] = repeat + if shuffle is not None: + params['shuffle'] = shuffle + if volume is not None: + params['volume'] = volume + if mtype is not None: + params['type'] = mtype + self.sendCommand('playback/setParameters', **params) + + def setStreams(self, audioStreamID=None, subtitleStreamID=None, videoStreamID=None, mtype=DEFAULT_MTYPE): + """ Select multiple playback streams at once. + + Parameters: + audioStreamID (str): ID of the audio stream from the media object. + subtitleStreamID (str): ID of the subtitle stream from the media object. + videoStreamID (str): ID of the video stream from the media object. + mtype (str): Media type to take action against (optional music, photo, video). + """ + params = {} + if audioStreamID is not None: + params['audioStreamID'] = audioStreamID + if subtitleStreamID is not None: + params['subtitleStreamID'] = subtitleStreamID + if videoStreamID is not None: + params['videoStreamID'] = videoStreamID + if mtype is not None: + params['type'] = mtype + self.sendCommand('playback/setStreams', **params) + + # ------------------- + # Timeline Commands + def timelines(self, wait=0): + """Poll the client's timelines, create, and return timeline objects. + Some clients may not always respond to timeline requests, believe this + to be a Plex bug. + """ + t = time.time() + if t - self._timeline_cache_timestamp > 1: + self._timeline_cache_timestamp = t + timelines = self.sendCommand(ClientTimeline.key, wait=wait) or [] + self._timeline_cache = [ClientTimeline(self, data) for data in timelines] + + return self._timeline_cache + + @property + def timeline(self): + """Returns the active timeline object.""" + return next((x for x in self.timelines() if x.state != 'stopped'), None) + + def isPlayingMedia(self, includePaused=True): + """Returns True if any media is currently playing. + + Parameters: + includePaused (bool): Set True to treat currently paused items + as playing (optional; default True). + """ + state = getattr(self.timeline, "state", None) + return bool(state == 'playing' or (includePaused and state == 'paused')) + + +class ClientTimeline(PlexObject): + """Get the timeline's attributes.""" + + key = 'timeline/poll' + + def _loadData(self, data): + self._data = data + self.address = data.attrib.get('address') + self.audioStreamId = utils.cast(int, data.attrib.get('audioStreamId')) + self.autoPlay = utils.cast(bool, data.attrib.get('autoPlay')) + self.containerKey = data.attrib.get('containerKey') + self.controllable = data.attrib.get('controllable') + self.duration = utils.cast(int, data.attrib.get('duration')) + self.itemType = data.attrib.get('itemType') + self.key = data.attrib.get('key') + self.location = data.attrib.get('location') + self.machineIdentifier = data.attrib.get('machineIdentifier') + self.partCount = utils.cast(int, data.attrib.get('partCount')) + self.partIndex = utils.cast(int, data.attrib.get('partIndex')) + self.playQueueID = utils.cast(int, data.attrib.get('playQueueID')) + self.playQueueItemID = utils.cast(int, data.attrib.get('playQueueItemID')) + self.playQueueVersion = utils.cast(int, data.attrib.get('playQueueVersion')) + self.port = utils.cast(int, data.attrib.get('port')) + self.protocol = data.attrib.get('protocol') + self.providerIdentifier = data.attrib.get('providerIdentifier') + self.ratingKey = utils.cast(int, data.attrib.get('ratingKey')) + self.repeat = utils.cast(bool, data.attrib.get('repeat')) + self.seekRange = data.attrib.get('seekRange') + self.shuffle = utils.cast(bool, data.attrib.get('shuffle')) + self.state = data.attrib.get('state') + self.subtitleColor = data.attrib.get('subtitleColor') + self.subtitlePosition = data.attrib.get('subtitlePosition') + self.subtitleSize = utils.cast(int, data.attrib.get('subtitleSize')) + self.time = utils.cast(int, data.attrib.get('time')) + self.type = data.attrib.get('type') + self.volume = utils.cast(int, data.attrib.get('volume')) diff --git a/service.plexskipintro/plexapi/collection.py b/service.plexskipintro/plexapi/collection.py new file mode 100644 index 0000000000..ae75deec29 --- /dev/null +++ b/service.plexskipintro/plexapi/collection.py @@ -0,0 +1,520 @@ +# -*- coding: utf-8 -*- +from urllib.parse import quote_plus + +from plexapi import media, utils +from plexapi.base import PlexPartialObject +from plexapi.exceptions import BadRequest, NotFound, Unsupported +from plexapi.library import LibrarySection +from plexapi.mixins import AdvancedSettingsMixin, ArtMixin, PosterMixin, RatingMixin +from plexapi.mixins import LabelMixin, SmartFilterMixin +from plexapi.playqueue import PlayQueue +from plexapi.utils import deprecated + + +@utils.registerPlexObject +class Collection(PlexPartialObject, AdvancedSettingsMixin, ArtMixin, PosterMixin, RatingMixin, LabelMixin, SmartFilterMixin): + """ Represents a single Collection. + + Attributes: + TAG (str): 'Directory' + TYPE (str): 'collection' + addedAt (datetime): Datetime the collection was added to the library. + art (str): URL to artwork image (/library/metadata/<ratingKey>/art/<artid>). + artBlurHash (str): BlurHash string for artwork image. + childCount (int): Number of items in the collection. + collectionMode (str): How the items in the collection are displayed. + collectionPublished (bool): True if the collection is published to the Plex homepage. + collectionSort (str): How to sort the items in the collection. + content (str): The filter URI string for smart collections. + contentRating (str) Content rating (PG-13; NR; TV-G). + fields (List<:class:`~plexapi.media.Field`>): List of field objects. + guid (str): Plex GUID for the collection (collection://XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX). + index (int): Plex index number for the collection. + key (str): API URL (/library/metadata/<ratingkey>). + labels (List<:class:`~plexapi.media.Label`>): List of label objects. + lastRatedAt (datetime): Datetime the collection was last rated. + librarySectionID (int): :class:`~plexapi.library.LibrarySection` ID. + librarySectionKey (str): :class:`~plexapi.library.LibrarySection` key. + librarySectionTitle (str): :class:`~plexapi.library.LibrarySection` title. + maxYear (int): Maximum year for the items in the collection. + minYear (int): Minimum year for the items in the collection. + ratingCount (int): The number of ratings. + ratingKey (int): Unique key identifying the collection. + smart (bool): True if the collection is a smart collection. + subtype (str): Media type of the items in the collection (movie, show, artist, or album). + summary (str): Summary of the collection. + thumb (str): URL to thumbnail image (/library/metadata/<ratingKey>/thumb/<thumbid>). + thumbBlurHash (str): BlurHash string for thumbnail image. + title (str): Name of the collection. + titleSort (str): Title to use when sorting (defaults to title). + type (str): 'collection' + updatedAt (datatime): Datetime the collection was updated. + userRating (float): Rating of the collection (0.0 - 10.0) equaling (0 stars - 5 stars). + """ + TAG = 'Directory' + TYPE = 'collection' + + def _loadData(self, data): + self._data = data + self.addedAt = utils.toDatetime(data.attrib.get('addedAt')) + self.art = data.attrib.get('art') + self.artBlurHash = data.attrib.get('artBlurHash') + self.childCount = utils.cast(int, data.attrib.get('childCount')) + self.collectionMode = utils.cast(int, data.attrib.get('collectionMode', '-1')) + self.collectionPublished = utils.cast(bool, data.attrib.get('collectionPublished', '0')) + self.collectionSort = utils.cast(int, data.attrib.get('collectionSort', '0')) + self.content = data.attrib.get('content') + self.contentRating = data.attrib.get('contentRating') + self.fields = self.findItems(data, media.Field) + self.guid = data.attrib.get('guid') + self.index = utils.cast(int, data.attrib.get('index')) + self.key = data.attrib.get('key', '').replace('/children', '') # FIX_BUG_50 + self.labels = self.findItems(data, media.Label) + self.lastRatedAt = utils.toDatetime(data.attrib.get('lastRatedAt')) + self.librarySectionID = utils.cast(int, data.attrib.get('librarySectionID')) + self.librarySectionKey = data.attrib.get('librarySectionKey') + self.librarySectionTitle = data.attrib.get('librarySectionTitle') + self.maxYear = utils.cast(int, data.attrib.get('maxYear')) + self.minYear = utils.cast(int, data.attrib.get('minYear')) + self.ratingCount = utils.cast(int, data.attrib.get('ratingCount')) + self.ratingKey = utils.cast(int, data.attrib.get('ratingKey')) + self.smart = utils.cast(bool, data.attrib.get('smart', '0')) + self.subtype = data.attrib.get('subtype') + self.summary = data.attrib.get('summary') + self.thumb = data.attrib.get('thumb') + self.thumbBlurHash = data.attrib.get('thumbBlurHash') + self.title = data.attrib.get('title') + self.titleSort = data.attrib.get('titleSort', self.title) + self.type = data.attrib.get('type') + self.updatedAt = utils.toDatetime(data.attrib.get('updatedAt')) + self.userRating = utils.cast(float, data.attrib.get('userRating')) + self._items = None # cache for self.items + self._section = None # cache for self.section + self._filters = None # cache for self.filters + + def __len__(self): # pragma: no cover + return len(list(self.items())) + + def __iter__(self): # pragma: no cover + for item in list(self.items()): + yield item + + def __contains__(self, other): # pragma: no cover + return any(i.key == other.key for i in list(self.items())) + + def __getitem__(self, key): # pragma: no cover + return list(self.items)()[key] + + @property + def listType(self): + """ Returns the listType for the collection. """ + if self.isVideo: + return 'video' + elif self.isAudio: + return 'audio' + elif self.isPhoto: + return 'photo' + else: + raise Unsupported('Unexpected collection type') + + @property + def metadataType(self): + """ Returns the type of metadata in the collection. """ + return self.subtype + + @property + def isVideo(self): + """ Returns True if this is a video collection. """ + return self.subtype in {'movie', 'show', 'season', 'episode'} + + @property + def isAudio(self): + """ Returns True if this is an audio collection. """ + return self.subtype in {'artist', 'album', 'track'} + + @property + def isPhoto(self): + """ Returns True if this is a photo collection. """ + return self.subtype in {'photoalbum', 'photo'} + + @property + @deprecated('use "items" instead', stacklevel=3) + def children(self): + return list(self.items()) + + def filters(self): + """ Returns the search filter dict for smart collection. + The filter dict be passed back into :func:`~plexapi.library.LibrarySection.search` + to get the list of items. + """ + if self.smart and self._filters is None: + self._filters = self._parseFilters(self.content) + return self._filters + + def section(self): + """ Returns the :class:`~plexapi.library.LibrarySection` this collection belongs to. + """ + if self._section is None: + self._section = super(Collection, self).section() + return self._section + + def item(self, title): + """ Returns the item in the collection that matches the specified title. + + Parameters: + title (str): Title of the item to return. + + Raises: + :class:`plexapi.exceptions.NotFound`: When the item is not found in the collection. + """ + for item in list(self.items()): + if item.title.lower() == title.lower(): + return item + raise NotFound('Item with title "%s" not found in the collection' % title) + + def items(self): + """ Returns a list of all items in the collection. """ + if self._items is None: + key = '%s/children' % self.key + items = self.fetchItems(key) + self._items = items + return self._items + + def get(self, title): + """ Alias to :func:`~plexapi.library.Collection.item`. """ + return self.item(title) + + def modeUpdate(self, mode=None): + """ Update the collection mode advanced setting. + + Parameters: + mode (str): One of the following values: + "default" (Library default), + "hide" (Hide Collection), + "hideItems" (Hide Items in this Collection), + "showItems" (Show this Collection and its Items) + + Example: + + .. code-block:: python + + collection.updateMode(mode="hide") + """ + mode_dict = { + 'default': -1, + 'hide': 0, + 'hideItems': 1, + 'showItems': 2 + } + key = mode_dict.get(mode) + if key is None: + raise BadRequest('Unknown collection mode : %s. Options %s' % (mode, list(mode_dict))) + self.editAdvanced(collectionMode=key) + + def sortUpdate(self, sort=None): + """ Update the collection order advanced setting. + + Parameters: + sort (str): One of the following values: + "realease" (Order Collection by realease dates), + "alpha" (Order Collection alphabetically), + "custom" (Custom collection order) + + Example: + + .. code-block:: python + + collection.updateSort(mode="alpha") + """ + sort_dict = { + 'release': 0, + 'alpha': 1, + 'custom': 2 + } + key = sort_dict.get(sort) + if key is None: + raise BadRequest('Unknown sort dir: %s. Options: %s' % (sort, list(sort_dict))) + self.editAdvanced(collectionSort=key) + + def addItems(self, items): + """ Add items to the collection. + + Parameters: + items (List): List of :class:`~plexapi.audio.Audio`, :class:`~plexapi.video.Video`, + or :class:`~plexapi.photo.Photo` objects to be added to the collection. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When trying to add items to a smart collection. + """ + if self.smart: + raise BadRequest('Cannot add items to a smart collection.') + + if items and not isinstance(items, (list, tuple)): + items = [items] + + ratingKeys = [] + for item in items: + if item.type != self.subtype: # pragma: no cover + raise BadRequest('Can not mix media types when building a collection: %s and %s' % + (self.subtype, item.type)) + ratingKeys.append(str(item.ratingKey)) + + ratingKeys = ','.join(ratingKeys) + uri = '%s/library/metadata/%s' % (self._server._uriRoot(), ratingKeys) + + key = '%s/items%s' % (self.key, utils.joinArgs({ + 'uri': uri + })) + self._server.query(key, method=self._server._session.put) + + def removeItems(self, items): + """ Remove items from the collection. + + Parameters: + items (List): List of :class:`~plexapi.audio.Audio`, :class:`~plexapi.video.Video`, + or :class:`~plexapi.photo.Photo` objects to be removed from the collection. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When trying to remove items from a smart collection. + """ + if self.smart: + raise BadRequest('Cannot remove items from a smart collection.') + + if items and not isinstance(items, (list, tuple)): + items = [items] + + for item in items: + key = '%s/items/%s' % (self.key, item.ratingKey) + self._server.query(key, method=self._server._session.delete) + + def moveItem(self, item, after=None): + """ Move an item to a new position in the collection. + + Parameters: + items (obj): :class:`~plexapi.audio.Audio`, :class:`~plexapi.video.Video`, + or :class:`~plexapi.photo.Photo` objects to be moved in the collection. + after (obj): :class:`~plexapi.audio.Audio`, :class:`~plexapi.video.Video`, + or :class:`~plexapi.photo.Photo` objects to move the item after in the collection. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When trying to move items in a smart collection. + """ + if self.smart: + raise BadRequest('Cannot move items in a smart collection.') + + key = '%s/items/%s/move' % (self.key, item.ratingKey) + + if after: + key += '?after=%s' % after.ratingKey + + self._server.query(key, method=self._server._session.put) + + def updateFilters(self, libtype=None, limit=None, sort=None, filters=None, **kwargs): + """ Update the filters for a smart collection. + + Parameters: + libtype (str): The specific type of content to filter + (movie, show, season, episode, artist, album, track, photoalbum, photo, collection). + limit (int): Limit the number of items in the collection. + sort (str or list, optional): A string of comma separated sort fields + or a list of sort fields in the format ``column:dir``. + See :func:`~plexapi.library.LibrarySection.search` for more info. + filters (dict): A dictionary of advanced filters. + See :func:`~plexapi.library.LibrarySection.search` for more info. + **kwargs (dict): Additional custom filters to apply to the search results. + See :func:`~plexapi.library.LibrarySection.search` for more info. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When trying update filters for a regular collection. + """ + if not self.smart: + raise BadRequest('Cannot update filters for a regular collection.') + + section = self.section() + searchKey = section._buildSearchKey( + sort=sort, libtype=libtype, limit=limit, filters=filters, **kwargs) + uri = '%s%s' % (self._server._uriRoot(), searchKey) + + key = '%s/items%s' % (self.key, utils.joinArgs({ + 'uri': uri + })) + self._server.query(key, method=self._server._session.put) + + def edit(self, title=None, titleSort=None, contentRating=None, summary=None, **kwargs): + """ Edit the collection. + + Parameters: + title (str, optional): The title of the collection. + titleSort (str, optional): The sort title of the collection. + contentRating (str, optional): The summary of the collection. + summary (str, optional): The summary of the collection. + """ + args = {} + if title is not None: + args['title.value'] = title + args['title.locked'] = 1 + if titleSort is not None: + args['titleSort.value'] = titleSort + args['titleSort.locked'] = 1 + if contentRating is not None: + args['contentRating.value'] = contentRating + args['contentRating.locked'] = 1 + if summary is not None: + args['summary.value'] = summary + args['summary.locked'] = 1 + + args.update(kwargs) + super(Collection, self).edit(**args) + + def delete(self): + """ Delete the collection. """ + super(Collection, self).delete() + + def playQueue(self, *args, **kwargs): + """ Returns a new :class:`~plexapi.playqueue.PlayQueue` from the collection. """ + return PlayQueue.create(self._server, list(self.items()), *args, **kwargs) + + @classmethod + def _create(cls, server, title, section, items): + """ Create a regular collection. """ + if not items: + raise BadRequest('Must include items to add when creating new collection.') + + if not isinstance(section, LibrarySection): + section = server.library.section(section) + + if items and not isinstance(items, (list, tuple)): + items = [items] + + itemType = items[0].type + ratingKeys = [] + for item in items: + if item.type != itemType: # pragma: no cover + raise BadRequest('Can not mix media types when building a collection.') + ratingKeys.append(str(item.ratingKey)) + + ratingKeys = ','.join(ratingKeys) + uri = '%s/library/metadata/%s' % (server._uriRoot(), ratingKeys) + + key = '/library/collections%s' % utils.joinArgs({ + 'uri': uri, + 'type': utils.searchType(itemType), + 'title': title, + 'smart': 0, + 'sectionId': section.key + }) + data = server.query(key, method=server._session.post)[0] + return cls(server, data, initpath=key) + + @classmethod + def _createSmart(cls, server, title, section, limit=None, libtype=None, sort=None, filters=None, **kwargs): + """ Create a smart collection. """ + if not isinstance(section, LibrarySection): + section = server.library.section(section) + + libtype = libtype or section.TYPE + + searchKey = section._buildSearchKey( + sort=sort, libtype=libtype, limit=limit, filters=filters, **kwargs) + uri = '%s%s' % (server._uriRoot(), searchKey) + + key = '/library/collections%s' % utils.joinArgs({ + 'uri': uri, + 'type': utils.searchType(libtype), + 'title': title, + 'smart': 1, + 'sectionId': section.key + }) + data = server.query(key, method=server._session.post)[0] + return cls(server, data, initpath=key) + + @classmethod + def create(cls, server, title, section, items=None, smart=False, limit=None, + libtype=None, sort=None, filters=None, **kwargs): + """ Create a collection. + + Parameters: + server (:class:`~plexapi.server.PlexServer`): Server to create the collection on. + title (str): Title of the collection. + section (:class:`~plexapi.library.LibrarySection`, str): The library section to create the collection in. + items (List): Regular collections only, list of :class:`~plexapi.audio.Audio`, + :class:`~plexapi.video.Video`, or :class:`~plexapi.photo.Photo` objects to be added to the collection. + smart (bool): True to create a smart collection. Default False. + limit (int): Smart collections only, limit the number of items in the collection. + libtype (str): Smart collections only, the specific type of content to filter + (movie, show, season, episode, artist, album, track, photoalbum, photo). + sort (str or list, optional): Smart collections only, a string of comma separated sort fields + or a list of sort fields in the format ``column:dir``. + See :func:`~plexapi.library.LibrarySection.search` for more info. + filters (dict): Smart collections only, a dictionary of advanced filters. + See :func:`~plexapi.library.LibrarySection.search` for more info. + **kwargs (dict): Smart collections only, additional custom filters to apply to the + search results. See :func:`~plexapi.library.LibrarySection.search` for more info. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When no items are included to create the collection. + :class:`plexapi.exceptions.BadRequest`: When mixing media types in the collection. + + Returns: + :class:`~plexapi.collection.Collection`: A new instance of the created Collection. + """ + if smart: + return cls._createSmart(server, title, section, limit, libtype, sort, filters, **kwargs) + else: + return cls._create(server, title, section, items) + + def sync(self, videoQuality=None, photoResolution=None, audioBitrate=None, client=None, clientId=None, limit=None, + unwatched=False, title=None): + """ Add the collection as sync item for the specified device. + See :func:`~plexapi.myplex.MyPlexAccount.sync` for possible exceptions. + + Parameters: + videoQuality (int): idx of quality of the video, one of VIDEO_QUALITY_* values defined in + :mod:`~plexapi.sync` module. Used only when collection contains video. + photoResolution (str): maximum allowed resolution for synchronized photos, see PHOTO_QUALITY_* values in + the module :mod:`~plexapi.sync`. Used only when collection contains photos. + audioBitrate (int): maximum bitrate for synchronized music, better use one of MUSIC_BITRATE_* values + from the module :mod:`~plexapi.sync`. Used only when collection contains audio. + client (:class:`~plexapi.myplex.MyPlexDevice`): sync destination, see + :func:`~plexapi.myplex.MyPlexAccount.sync`. + clientId (str): sync destination, see :func:`~plexapi.myplex.MyPlexAccount.sync`. + limit (int): maximum count of items to sync, unlimited if `None`. + unwatched (bool): if `True` watched videos wouldn't be synced. + title (str): descriptive title for the new :class:`~plexapi.sync.SyncItem`, if empty the value would be + generated from metadata of current photo. + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: When collection is not allowed to sync. + :exc:`~plexapi.exceptions.Unsupported`: When collection content is unsupported. + + Returns: + :class:`~plexapi.sync.SyncItem`: A new instance of the created sync item. + """ + if not self.section().allowSync: + raise BadRequest('The collection is not allowed to sync') + + from plexapi.sync import SyncItem, Policy, MediaSettings + + myplex = self._server.myPlexAccount() + sync_item = SyncItem(self._server, None) + sync_item.title = title if title else self.title + sync_item.rootTitle = self.title + sync_item.contentType = self.listType + sync_item.metadataType = self.metadataType + sync_item.machineIdentifier = self._server.machineIdentifier + + sync_item.location = 'library:///directory/%s' % quote_plus( + '%s/children?excludeAllLeaves=1' % (self.key) + ) + sync_item.policy = Policy.create(limit, unwatched) + + if self.isVideo: + sync_item.mediaSettings = MediaSettings.createVideo(videoQuality) + elif self.isAudio: + sync_item.mediaSettings = MediaSettings.createMusic(audioBitrate) + elif self.isPhoto: + sync_item.mediaSettings = MediaSettings.createPhoto(photoResolution) + else: + raise Unsupported('Unsupported collection content') + + return myplex.sync(sync_item, client=client, clientId=clientId) diff --git a/service.plexskipintro/plexapi/config.py b/service.plexskipintro/plexapi/config.py new file mode 100644 index 0000000000..fb7a6f9b21 --- /dev/null +++ b/service.plexskipintro/plexapi/config.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +import os +from collections import defaultdict +from configparser import ConfigParser + + +class PlexConfig(ConfigParser): + """ PlexAPI configuration object. Settings are stored in an INI file within the + user's home directory and can be overridden after importing plexapi by simply + setting the value. See the documentation section 'Configuration' for more + details on available options. + + Parameters: + path (str): Path of the configuration file to load. + """ + + def __init__(self, path): + ConfigParser.__init__(self) + self.read(path) + self.data = self._asDict() + + def get(self, key, default=None, cast=None): + """ Returns the specified configuration value or <default> if not found. + + Parameters: + key (str): Configuration variable to load in the format '<section>.<variable>'. + default: Default value to use if key not found. + cast (func): Cast the value to the specified type before returning. + """ + try: + # First: check environment variable is set + envkey = 'PLEXAPI_%s' % key.upper().replace('.', '_') + value = os.environ.get(envkey) + if value is None: + # Second: check the config file has attr + section, name = key.lower().split('.') + value = self.data.get(section, {}).get(name, default) + return cast(value) if cast else value + except: # noqa: E722 + return default + + def _asDict(self): + """ Returns all configuration values as a dictionary. """ + config = defaultdict(dict) + for section in self._sections: + for name, value in list(self._sections[section].items()): + if name != '__name__': + config[section.lower()][name.lower()] = value + return dict(config) + + +def reset_base_headers(): + """ Convenience function returns a dict of all base X-Plex-* headers for session requests. """ + import plexapi + return { + 'X-Plex-Platform': plexapi.X_PLEX_PLATFORM, + 'X-Plex-Platform-Version': plexapi.X_PLEX_PLATFORM_VERSION, + 'X-Plex-Provides': plexapi.X_PLEX_PROVIDES, + 'X-Plex-Product': plexapi.X_PLEX_PRODUCT, + 'X-Plex-Version': plexapi.X_PLEX_VERSION, + 'X-Plex-Device': plexapi.X_PLEX_DEVICE, + 'X-Plex-Device-Name': plexapi.X_PLEX_DEVICE_NAME, + 'X-Plex-Client-Identifier': plexapi.X_PLEX_IDENTIFIER, + 'X-Plex-Sync-Version': '2', + } diff --git a/service.plexskipintro/plexapi/const.py b/service.plexskipintro/plexapi/const.py new file mode 100644 index 0000000000..61c96c0b32 --- /dev/null +++ b/service.plexskipintro/plexapi/const.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +"""Constants used by plexapi.""" + +# Library version +MAJOR_VERSION = 4 +MINOR_VERSION = 8 +PATCH_VERSION = 0 +__short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" +__version__ = f"{__short_version__}.{PATCH_VERSION}" diff --git a/service.plexskipintro/plexapi/exceptions.py b/service.plexskipintro/plexapi/exceptions.py new file mode 100644 index 0000000000..c269c38ea3 --- /dev/null +++ b/service.plexskipintro/plexapi/exceptions.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- + + +class PlexApiException(Exception): + """ Base class for all PlexAPI exceptions. """ + pass + + +class BadRequest(PlexApiException): + """ An invalid request, generally a user error. """ + pass + + +class NotFound(PlexApiException): + """ Request media item or device is not found. """ + pass + + +class UnknownType(PlexApiException): + """ Unknown library type. """ + pass + + +class Unsupported(PlexApiException): + """ Unsupported client request. """ + pass + + +class Unauthorized(BadRequest): + """ Invalid username/password or token. """ + pass diff --git a/service.plexskipintro/plexapi/gdm.py b/service.plexskipintro/plexapi/gdm.py new file mode 100644 index 0000000000..b9fc7c5a12 --- /dev/null +++ b/service.plexskipintro/plexapi/gdm.py @@ -0,0 +1,151 @@ +""" +Support for discovery using GDM (Good Day Mate), multicast protocol by Plex. + +# Licensed Apache 2.0 +# From https://github.com/home-assistant/netdisco/netdisco/gdm.py + +Inspired by: + hippojay's plexGDM: https://github.com/hippojay/script.plexbmc.helper/resources/lib/plexgdm.py + iBaa's PlexConnect: https://github.com/iBaa/PlexConnect/PlexAPI.py +""" +import socket +import struct + + +class GDM: + """Base class to discover GDM services. + + Atrributes: + entries (List<dict>): List of server and/or client data discovered. + """ + + def __init__(self): + self.entries = [] + + def scan(self, scan_for_clients=False): + """Scan the network.""" + self.update(scan_for_clients) + + def all(self, scan_for_clients=False): + """Return all found entries. + + Will scan for entries if not scanned recently. + """ + self.scan(scan_for_clients) + return list(self.entries) + + def find_by_content_type(self, value): + """Return a list of entries that match the content_type.""" + self.scan() + return [entry for entry in self.entries + if value in entry['data']['Content-Type']] + + def find_by_data(self, values): + """Return a list of entries that match the search parameters.""" + self.scan() + return [entry for entry in self.entries + if all(item in list(entry['data'].items())) + for item in list(values.items())] + + def update(self, scan_for_clients): + """Scan for new GDM services. + + Examples of the dict list assigned to self.entries by this function: + + Server: + + [{'data': { + 'Content-Type': 'plex/media-server', + 'Host': '53f4b5b6023d41182fe88a99b0e714ba.plex.direct', + 'Name': 'myfirstplexserver', + 'Port': '32400', + 'Resource-Identifier': '646ab0aa8a01c543e94ba975f6fd6efadc36b7', + 'Updated-At': '1585769946', + 'Version': '1.18.8.2527-740d4c206', + }, + 'from': ('10.10.10.100', 32414)}] + + Clients: + + [{'data': {'Content-Type': 'plex/media-player', + 'Device-Class': 'stb', + 'Name': 'plexamp', + 'Port': '36000', + 'Product': 'Plexamp', + 'Protocol': 'plex', + 'Protocol-Capabilities': 'timeline,playback,playqueues,playqueues-creation', + 'Protocol-Version': '1', + 'Resource-Identifier': 'b6e57a3f-e0f8-494f-8884-f4b58501467e', + 'Version': '1.1.0', + }, + 'from': ('10.10.10.101', 32412)}] + """ + + gdm_msg = 'M-SEARCH * HTTP/1.0'.encode('ascii') + gdm_timeout = 1 + + self.entries = [] + known_responses = [] + + # setup socket for discovery -> multicast message + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + sock.settimeout(gdm_timeout) + + # Set the time-to-live for messages for local network + sock.setsockopt(socket.IPPROTO_IP, + socket.IP_MULTICAST_TTL, + struct.pack("B", gdm_timeout)) + + if scan_for_clients: + # setup socket for broadcast to Plex clients + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + gdm_ip = '255.255.255.255' + gdm_port = 32412 + else: + # setup socket for multicast to Plex server(s) + gdm_ip = '239.0.0.250' + gdm_port = 32414 + + try: + # Send data to the multicast group + sock.sendto(gdm_msg, (gdm_ip, gdm_port)) + + # Look for responses from all recipients + while True: + try: + bdata, host = sock.recvfrom(1024) + data = bdata.decode('utf-8') + if '200 OK' in data.splitlines()[0]: + ddata = {k: v.strip() for (k, v) in ( + line.split(':') for line in + data.splitlines() if ':' in line)} + identifier = ddata.get('Resource-Identifier') + if identifier and identifier in known_responses: + continue + known_responses.append(identifier) + self.entries.append({'data': ddata, + 'from': host}) + except socket.timeout: + break + finally: + sock.close() + + +def main(): + """Test GDM discovery.""" + from pprint import pprint + + gdm = GDM() + + pprint("Scanning GDM for servers...") + gdm.scan() + pprint(gdm.entries) + + pprint("Scanning GDM for clients...") + gdm.scan(scan_for_clients=True) + pprint(gdm.entries) + + +if __name__ == "__main__": + main() diff --git a/service.plexskipintro/plexapi/library.py b/service.plexskipintro/plexapi/library.py new file mode 100644 index 0000000000..f5482b8a06 --- /dev/null +++ b/service.plexskipintro/plexapi/library.py @@ -0,0 +1,2494 @@ +# -*- coding: utf-8 -*- +import re +from datetime import datetime +from urllib.parse import quote, quote_plus, urlencode + +from plexapi import X_PLEX_CONTAINER_SIZE, log, media, utils +from plexapi.base import OPERATORS, PlexObject +from plexapi.exceptions import BadRequest, NotFound +from plexapi.settings import Setting +from plexapi.utils import deprecated + + +class Library(PlexObject): + """ Represents a PlexServer library. This contains all sections of media defined + in your Plex server including video, shows and audio. + + Attributes: + key (str): '/library' + identifier (str): Unknown ('com.plexapp.plugins.library'). + mediaTagVersion (str): Unknown (/system/bundle/media/flags/) + server (:class:`~plexapi.server.PlexServer`): PlexServer this client is connected to. + title1 (str): 'Plex Library' (not sure how useful this is). + title2 (str): Second title (this is blank on my setup). + """ + key = '/library' + + def _loadData(self, data): + self._data = data + self.identifier = data.attrib.get('identifier') + self.mediaTagVersion = data.attrib.get('mediaTagVersion') + self.title1 = data.attrib.get('title1') + self.title2 = data.attrib.get('title2') + self._sectionsByID = {} # cached sections by key + self._sectionsByTitle = {} # cached sections by title + + def _loadSections(self): + """ Loads and caches all the library sections. """ + key = '/library/sections' + self._sectionsByID = {} + self._sectionsByTitle = {} + for elem in self._server.query(key): + for cls in (MovieSection, ShowSection, MusicSection, PhotoSection): + if elem.attrib.get('type') == cls.TYPE: + section = cls(self._server, elem, key) + self._sectionsByID[section.key] = section + self._sectionsByTitle[section.title.lower()] = section + + def sections(self): + """ Returns a list of all media sections in this library. Library sections may be any of + :class:`~plexapi.library.MovieSection`, :class:`~plexapi.library.ShowSection`, + :class:`~plexapi.library.MusicSection`, :class:`~plexapi.library.PhotoSection`. + """ + self._loadSections() + return list(self._sectionsByID.values()) + + def section(self, title): + """ Returns the :class:`~plexapi.library.LibrarySection` that matches the specified title. + + Parameters: + title (str): Title of the section to return. + """ + if not self._sectionsByTitle or title not in self._sectionsByTitle: + self._loadSections() + try: + return self._sectionsByTitle[title.lower()] + except KeyError: + raise NotFound('Invalid library section: %s' % title) from None + + def sectionByID(self, sectionID): + """ Returns the :class:`~plexapi.library.LibrarySection` that matches the specified sectionID. + + Parameters: + sectionID (int): ID of the section to return. + + Raises: + :exc:`~plexapi.exceptions.NotFound`: The library section ID is not found on the server. + """ + if not self._sectionsByID or sectionID not in self._sectionsByID: + self._loadSections() + try: + return self._sectionsByID[sectionID] + except KeyError: + raise NotFound('Invalid library sectionID: %s' % sectionID) from None + + def all(self, **kwargs): + """ Returns a list of all media from all library sections. + This may be a very large dataset to retrieve. + """ + items = [] + for section in self.sections(): + for item in section.all(**kwargs): + items.append(item) + return items + + def onDeck(self): + """ Returns a list of all media items on deck. """ + return self.fetchItems('/library/onDeck') + + def recentlyAdded(self): + """ Returns a list of all media items recently added. """ + return self.fetchItems('/library/recentlyAdded') + + def search(self, title=None, libtype=None, **kwargs): + """ Searching within a library section is much more powerful. It seems certain + attributes on the media objects can be targeted to filter this search down + a bit, but I havent found the documentation for it. + + Example: "studio=Comedy%20Central" or "year=1999" "title=Kung Fu" all work. Other items + such as actor=<id> seem to work, but require you already know the id of the actor. + TLDR: This is untested but seems to work. Use library section search when you can. + """ + args = {} + if title: + args['title'] = title + if libtype: + args['type'] = utils.searchType(libtype) + for attr, value in list(kwargs.items()): + args[attr] = value + key = '/library/all%s' % utils.joinArgs(args) + return self.fetchItems(key) + + def cleanBundles(self): + """ Poster images and other metadata for items in your library are kept in "bundle" + packages. When you remove items from your library, these bundles aren't immediately + removed. Removing these old bundles can reduce the size of your install. By default, your + server will automatically clean up old bundles once a week as part of Scheduled Tasks. + """ + # TODO: Should this check the response for success or the correct mediaprefix? + self._server.query('/library/clean/bundles?async=1', method=self._server._session.put) + + def emptyTrash(self): + """ If a library has items in the Library Trash, use this option to empty the Trash. """ + for section in self.sections(): + section.emptyTrash() + + def optimize(self): + """ The Optimize option cleans up the server database from unused or fragmented data. + For example, if you have deleted or added an entire library or many items in a + library, you may like to optimize the database. + """ + self._server.query('/library/optimize?async=1', method=self._server._session.put) + + def update(self): + """ Scan this library for new items.""" + self._server.query('/library/sections/all/refresh') + + def cancelUpdate(self): + """ Cancel a library update. """ + key = '/library/sections/all/refresh' + self._server.query(key, method=self._server._session.delete) + + def refresh(self): + """ Forces a download of fresh media information from the internet. + This can take a long time. Any locked fields are not modified. + """ + self._server.query('/library/sections/all/refresh?force=1') + + def deleteMediaPreviews(self): + """ Delete the preview thumbnails for the all sections. This cannot be + undone. Recreating media preview files can take hours or even days. + """ + for section in self.sections(): + section.deleteMediaPreviews() + + def add(self, name='', type='', agent='', scanner='', location='', language='en', *args, **kwargs): + """ Simplified add for the most common options. + + Parameters: + name (str): Name of the library + agent (str): Example com.plexapp.agents.imdb + type (str): movie, show, # check me + location (str): /path/to/files + language (str): Two letter language fx en + kwargs (dict): Advanced options should be passed as a dict. where the id is the key. + + **Photo Preferences** + + * **agent** (str): com.plexapp.agents.none + * **enableAutoPhotoTags** (bool): Tag photos. Default value false. + * **enableBIFGeneration** (bool): Enable video preview thumbnails. Default value true. + * **includeInGlobal** (bool): Include in dashboard. Default value true. + * **scanner** (str): Plex Photo Scanner + + **Movie Preferences** + + * **agent** (str): com.plexapp.agents.none, com.plexapp.agents.imdb, tv.plex.agents.movie, + com.plexapp.agents.themoviedb + * **enableBIFGeneration** (bool): Enable video preview thumbnails. Default value true. + * **enableCinemaTrailers** (bool): Enable Cinema Trailers. Default value true. + * **includeInGlobal** (bool): Include in dashboard. Default value true. + * **scanner** (str): Plex Movie, Plex Movie Scanner, Plex Video Files Scanner, Plex Video Files + + **IMDB Movie Options** (com.plexapp.agents.imdb) + + * **title** (bool): Localized titles. Default value false. + * **extras** (bool): Find trailers and extras automatically (Plex Pass required). Default value true. + * **only_trailers** (bool): Skip extras which aren't trailers. Default value false. + * **redband** (bool): Use red band (restricted audiences) trailers when available. Default value false. + * **native_subs** (bool): Include extras with subtitles in Library language. Default value false. + * **cast_list** (int): Cast List Source: Default value 1 Possible options: 0:IMDb,1:The Movie Database. + * **ratings** (int): Ratings Source, Default value 0 Possible options: + 0:Rotten Tomatoes, 1:IMDb, 2:The Movie Database. + * **summary** (int): Plot Summary Source: Default value 1 Possible options: 0:IMDb,1:The Movie Database. + * **country** (int): Default value 46 Possible options 0:Argentina, 1:Australia, 2:Austria, + 3:Belgium, 4:Belize, 5:Bolivia, 6:Brazil, 7:Canada, 8:Chile, 9:Colombia, 10:Costa Rica, + 11:Czech Republic, 12:Denmark, 13:Dominican Republic, 14:Ecuador, 15:El Salvador, + 16:France, 17:Germany, 18:Guatemala, 19:Honduras, 20:Hong Kong SAR, 21:Ireland, + 22:Italy, 23:Jamaica, 24:Korea, 25:Liechtenstein, 26:Luxembourg, 27:Mexico, 28:Netherlands, + 29:New Zealand, 30:Nicaragua, 31:Panama, 32:Paraguay, 33:Peru, 34:Portugal, + 35:Peoples Republic of China, 36:Puerto Rico, 37:Russia, 38:Singapore, 39:South Africa, + 40:Spain, 41:Sweden, 42:Switzerland, 43:Taiwan, 44:Trinidad, 45:United Kingdom, + 46:United States, 47:Uruguay, 48:Venezuela. + * **collections** (bool): Use collection info from The Movie Database. Default value false. + * **localart** (bool): Prefer artwork based on library language. Default value true. + * **adult** (bool): Include adult content. Default value false. + * **usage** (bool): Send anonymous usage data to Plex. Default value true. + + **TheMovieDB Movie Options** (com.plexapp.agents.themoviedb) + + * **collections** (bool): Use collection info from The Movie Database. Default value false. + * **localart** (bool): Prefer artwork based on library language. Default value true. + * **adult** (bool): Include adult content. Default value false. + * **country** (int): Country (used for release date and content rating). Default value 47 Possible + options 0:, 1:Argentina, 2:Australia, 3:Austria, 4:Belgium, 5:Belize, 6:Bolivia, 7:Brazil, 8:Canada, + 9:Chile, 10:Colombia, 11:Costa Rica, 12:Czech Republic, 13:Denmark, 14:Dominican Republic, 15:Ecuador, + 16:El Salvador, 17:France, 18:Germany, 19:Guatemala, 20:Honduras, 21:Hong Kong SAR, 22:Ireland, + 23:Italy, 24:Jamaica, 25:Korea, 26:Liechtenstein, 27:Luxembourg, 28:Mexico, 29:Netherlands, + 30:New Zealand, 31:Nicaragua, 32:Panama, 33:Paraguay, 34:Peru, 35:Portugal, + 36:Peoples Republic of China, 37:Puerto Rico, 38:Russia, 39:Singapore, 40:South Africa, 41:Spain, + 42:Sweden, 43:Switzerland, 44:Taiwan, 45:Trinidad, 46:United Kingdom, 47:United States, 48:Uruguay, + 49:Venezuela. + + **Show Preferences** + + * **agent** (str): com.plexapp.agents.none, com.plexapp.agents.thetvdb, com.plexapp.agents.themoviedb, + tv.plex.agents.series + * **enableBIFGeneration** (bool): Enable video preview thumbnails. Default value true. + * **episodeSort** (int): Episode order. Default -1 Possible options: 0:Oldest first, 1:Newest first. + * **flattenSeasons** (int): Seasons. Default value 0 Possible options: 0:Show,1:Hide. + * **includeInGlobal** (bool): Include in dashboard. Default value true. + * **scanner** (str): Plex TV Series, Plex Series Scanner + + **TheTVDB Show Options** (com.plexapp.agents.thetvdb) + + * **extras** (bool): Find trailers and extras automatically (Plex Pass required). Default value true. + * **native_subs** (bool): Include extras with subtitles in Library language. Default value false. + + **TheMovieDB Show Options** (com.plexapp.agents.themoviedb) + + * **collections** (bool): Use collection info from The Movie Database. Default value false. + * **localart** (bool): Prefer artwork based on library language. Default value true. + * **adult** (bool): Include adult content. Default value false. + * **country** (int): Country (used for release date and content rating). Default value 47 options + 0:, 1:Argentina, 2:Australia, 3:Austria, 4:Belgium, 5:Belize, 6:Bolivia, 7:Brazil, 8:Canada, 9:Chile, + 10:Colombia, 11:Costa Rica, 12:Czech Republic, 13:Denmark, 14:Dominican Republic, 15:Ecuador, + 16:El Salvador, 17:France, 18:Germany, 19:Guatemala, 20:Honduras, 21:Hong Kong SAR, 22:Ireland, + 23:Italy, 24:Jamaica, 25:Korea, 26:Liechtenstein, 27:Luxembourg, 28:Mexico, 29:Netherlands, + 30:New Zealand, 31:Nicaragua, 32:Panama, 33:Paraguay, 34:Peru, 35:Portugal, + 36:Peoples Republic of China, 37:Puerto Rico, 38:Russia, 39:Singapore, 40:South Africa, + 41:Spain, 42:Sweden, 43:Switzerland, 44:Taiwan, 45:Trinidad, 46:United Kingdom, 47:United States, + 48:Uruguay, 49:Venezuela. + + **Other Video Preferences** + + * **agent** (str): com.plexapp.agents.none, com.plexapp.agents.imdb, com.plexapp.agents.themoviedb + * **enableBIFGeneration** (bool): Enable video preview thumbnails. Default value true. + * **enableCinemaTrailers** (bool): Enable Cinema Trailers. Default value true. + * **includeInGlobal** (bool): Include in dashboard. Default value true. + * **scanner** (str): Plex Movie Scanner, Plex Video Files Scanner + + **IMDB Other Video Options** (com.plexapp.agents.imdb) + + * **title** (bool): Localized titles. Default value false. + * **extras** (bool): Find trailers and extras automatically (Plex Pass required). Default value true. + * **only_trailers** (bool): Skip extras which aren't trailers. Default value false. + * **redband** (bool): Use red band (restricted audiences) trailers when available. Default value false. + * **native_subs** (bool): Include extras with subtitles in Library language. Default value false. + * **cast_list** (int): Cast List Source: Default value 1 Possible options: 0:IMDb,1:The Movie Database. + * **ratings** (int): Ratings Source Default value 0 Possible options: + 0:Rotten Tomatoes,1:IMDb,2:The Movie Database. + * **summary** (int): Plot Summary Source: Default value 1 Possible options: 0:IMDb,1:The Movie Database. + * **country** (int): Country: Default value 46 Possible options: 0:Argentina, 1:Australia, 2:Austria, + 3:Belgium, 4:Belize, 5:Bolivia, 6:Brazil, 7:Canada, 8:Chile, 9:Colombia, 10:Costa Rica, + 11:Czech Republic, 12:Denmark, 13:Dominican Republic, 14:Ecuador, 15:El Salvador, 16:France, + 17:Germany, 18:Guatemala, 19:Honduras, 20:Hong Kong SAR, 21:Ireland, 22:Italy, 23:Jamaica, + 24:Korea, 25:Liechtenstein, 26:Luxembourg, 27:Mexico, 28:Netherlands, 29:New Zealand, 30:Nicaragua, + 31:Panama, 32:Paraguay, 33:Peru, 34:Portugal, 35:Peoples Republic of China, 36:Puerto Rico, + 37:Russia, 38:Singapore, 39:South Africa, 40:Spain, 41:Sweden, 42:Switzerland, 43:Taiwan, 44:Trinidad, + 45:United Kingdom, 46:United States, 47:Uruguay, 48:Venezuela. + * **collections** (bool): Use collection info from The Movie Database. Default value false. + * **localart** (bool): Prefer artwork based on library language. Default value true. + * **adult** (bool): Include adult content. Default value false. + * **usage** (bool): Send anonymous usage data to Plex. Default value true. + + **TheMovieDB Other Video Options** (com.plexapp.agents.themoviedb) + + * **collections** (bool): Use collection info from The Movie Database. Default value false. + * **localart** (bool): Prefer artwork based on library language. Default value true. + * **adult** (bool): Include adult content. Default value false. + * **country** (int): Country (used for release date and content rating). Default + value 47 Possible options 0:, 1:Argentina, 2:Australia, 3:Austria, 4:Belgium, 5:Belize, + 6:Bolivia, 7:Brazil, 8:Canada, 9:Chile, 10:Colombia, 11:Costa Rica, 12:Czech Republic, + 13:Denmark, 14:Dominican Republic, 15:Ecuador, 16:El Salvador, 17:France, 18:Germany, + 19:Guatemala, 20:Honduras, 21:Hong Kong SAR, 22:Ireland, 23:Italy, 24:Jamaica, + 25:Korea, 26:Liechtenstein, 27:Luxembourg, 28:Mexico, 29:Netherlands, 30:New Zealand, + 31:Nicaragua, 32:Panama, 33:Paraguay, 34:Peru, 35:Portugal, + 36:Peoples Republic of China, 37:Puerto Rico, 38:Russia, 39:Singapore, + 40:South Africa, 41:Spain, 42:Sweden, 43:Switzerland, 44:Taiwan, 45:Trinidad, + 46:United Kingdom, 47:United States, 48:Uruguay, 49:Venezuela. + """ + part = '/library/sections?name=%s&type=%s&agent=%s&scanner=%s&language=%s&location=%s' % ( + quote_plus(name), type, agent, quote_plus(scanner), language, quote_plus(location)) # noqa E126 + if kwargs: + part += urlencode(kwargs) + return self._server.query(part, method=self._server._session.post) + + def history(self, maxresults=9999999, mindate=None): + """ Get Play History for all library Sections for the owner. + Parameters: + maxresults (int): Only return the specified number of results (optional). + mindate (datetime): Min datetime to return results from. + """ + hist = [] + for section in self.sections(): + hist.extend(section.history(maxresults=maxresults, mindate=mindate)) + return hist + + +class LibrarySection(PlexObject): + """ Base class for a single library section. + + Attributes: + agent (str): The metadata agent used for the library section (com.plexapp.agents.imdb, etc). + allowSync (bool): True if you allow syncing content from the library section. + art (str): Background artwork used to respresent the library section. + composite (str): Composite image used to represent the library section. + createdAt (datetime): Datetime the library section was created. + filters (bool): True if filters are available for the library section. + key (int): Key (or ID) of this library section. + language (str): Language represented in this section (en, xn, etc). + locations (List<str>): List of folder paths added to the library section. + refreshing (bool): True if this section is currently being refreshed. + scanner (str): Internal scanner used to find media (Plex Movie Scanner, Plex Premium Music Scanner, etc.) + thumb (str): Thumbnail image used to represent the library section. + title (str): Name of the library section. + type (str): Type of content section represents (movie, show, artist, photo). + updatedAt (datetime): Datetime the library section was last updated. + uuid (str): Unique id for the section (32258d7c-3e6c-4ac5-98ad-bad7a3b78c63) + """ + + def _loadData(self, data): + self._data = data + self.agent = data.attrib.get('agent') + self.allowSync = utils.cast(bool, data.attrib.get('allowSync')) + self.art = data.attrib.get('art') + self.composite = data.attrib.get('composite') + self.createdAt = utils.toDatetime(data.attrib.get('createdAt')) + self.filters = utils.cast(bool, data.attrib.get('filters')) + self.key = utils.cast(int, data.attrib.get('key')) + self.language = data.attrib.get('language') + self.locations = self.listAttrs(data, 'path', etag='Location') + self.refreshing = utils.cast(bool, data.attrib.get('refreshing')) + self.scanner = data.attrib.get('scanner') + self.thumb = data.attrib.get('thumb') + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + self.updatedAt = utils.toDatetime(data.attrib.get('updatedAt')) + self.uuid = data.attrib.get('uuid') + # Private attrs as we dont want a reload. + self._filterTypes = None + self._fieldTypes = None + self._totalViewSize = None + self._totalSize = None + self._totalDuration = None + self._totalStorage = None + + def fetchItems(self, ekey, cls=None, container_start=None, container_size=None, **kwargs): + """ Load the specified key to find and build all items with the specified tag + and attrs. See :func:`~plexapi.base.PlexObject.fetchItem` for more details + on how this is used. + + Parameters: + container_start (None, int): offset to get a subset of the data + container_size (None, int): How many items in data + + """ + url_kw = {} + if container_start is not None: + url_kw["X-Plex-Container-Start"] = container_start + if container_size is not None: + url_kw["X-Plex-Container-Size"] = container_size + + if ekey is None: + raise BadRequest('ekey was not provided') + data = self._server.query(ekey, params=url_kw) + + if '/all' in ekey: + # totalSize is only included in the xml response + # if container size is used. + total_size = data.attrib.get("totalSize") or data.attrib.get("size") + self._totalViewSize = utils.cast(int, total_size) + + items = self.findItems(data, cls, ekey, **kwargs) + + librarySectionID = utils.cast(int, data.attrib.get('librarySectionID')) + if librarySectionID: + for item in items: + item.librarySectionID = librarySectionID + return items + + @property + def totalSize(self): + """ Returns the total number of items in the library for the default library type. """ + if self._totalSize is None: + self._totalSize = self.totalViewSize(includeCollections=False) + return self._totalSize + + @property + def totalDuration(self): + """ Returns the total duration (in milliseconds) of items in the library. """ + if self._totalDuration is None: + self._getTotalDurationStorage() + return self._totalDuration + + @property + def totalStorage(self): + """ Returns the total storage (in bytes) of items in the library. """ + if self._totalStorage is None: + self._getTotalDurationStorage() + return self._totalStorage + + def _getTotalDurationStorage(self): + """ Queries the Plex server for the total library duration and storage and caches the values. """ + data = self._server.query('/media/providers?includeStorage=1') + xpath = ( + './MediaProvider[@identifier="com.plexapp.plugins.library"]' + '/Feature[@type="content"]' + '/Directory[@id="%s"]' + ) % self.key + directory = next(iter(data.findall(xpath)), None) + if directory: + self._totalDuration = utils.cast(int, directory.attrib.get('durationTotal')) + self._totalStorage = utils.cast(int, directory.attrib.get('storageTotal')) + + def totalViewSize(self, libtype=None, includeCollections=True): + """ Returns the total number of items in the library for a specified libtype. + The number of items for the default library type will be returned if no libtype is specified. + (e.g. Specify ``libtype='episode'`` for the total number of episodes + or ``libtype='albums'`` for the total number of albums.) + + Parameters: + libtype (str, optional): The type of items to return the total number for (movie, show, season, episode, + artist, album, track, photoalbum). Default is the main library type. + includeCollections (bool, optional): True or False to include collections in the total number. + Default is True. + """ + args = { + 'includeCollections': int(bool(includeCollections)), + 'X-Plex-Container-Start': 0, + 'X-Plex-Container-Size': 0 + } + if libtype is not None: + if libtype == 'photo': + args['clusterZoomLevel'] = 1 + else: + args['type'] = utils.searchType(libtype) + part = '/library/sections/%s/all%s' % (self.key, utils.joinArgs(args)) + data = self._server.query(part) + return utils.cast(int, data.attrib.get("totalSize")) + + def delete(self): + """ Delete a library section. """ + try: + return self._server.query('/library/sections/%s' % self.key, method=self._server._session.delete) + except BadRequest: # pragma: no cover + msg = 'Failed to delete library %s' % self.key + msg += 'You may need to allow this permission in your Plex settings.' + log.error(msg) + raise + + def reload(self): + """ Reload the data for the library section. """ + self._server.library._loadSections() + newLibrary = self._server.library.sectionByID(self.key) + self.__dict__.update(newLibrary.__dict__) + return self + + def edit(self, agent=None, **kwargs): + """ Edit a library (Note: agent is required). See :class:`~plexapi.library.Library` for example usage. + + Parameters: + kwargs (dict): Dict of settings to edit. + """ + if not agent: + agent = self.agent + part = '/library/sections/%s?agent=%s&%s' % (self.key, agent, urlencode(kwargs)) + self._server.query(part, method=self._server._session.put) + + def get(self, title): + """ Returns the media item with the specified title. + + Parameters: + title (str): Title of the item to return. + + Raises: + :exc:`~plexapi.exceptions.NotFound`: The title is not found in the library. + """ + key = '/library/sections/%s/all?includeGuids=1&title=%s' % (self.key, quote(str(title), safe='')) + return self.fetchItem(key, title__iexact=title) + + def getGuid(self, guid): + """ Returns the media item with the specified external IMDB, TMDB, or TVDB ID. + Note: This search uses a PlexAPI operator so performance may be slow. All items from the + entire Plex library need to be retrieved for each guid search. It is recommended to create + your own lookup dictionary if you are searching for a lot of external guids. + + Parameters: + guid (str): The external guid of the item to return. + Examples: IMDB ``imdb://tt0944947``, TMDB ``tmdb://1399``, TVDB ``tvdb://121361``. + + Raises: + :exc:`~plexapi.exceptions.NotFound`: The guid is not found in the library. + + Example: + + .. code-block:: python + + # This will retrieve all items in the entire library 3 times + result1 = library.getGuid('imdb://tt0944947') + result2 = library.getGuid('tmdb://1399') + result3 = library.getGuid('tvdb://121361') + + # This will only retrieve all items in the library once to create a lookup dictionary + guidLookup = {guid.id: item for item in library.all() for guid in item.guids} + result1 = guidLookup['imdb://tt0944947'] + result2 = guidLookup['tmdb://1399'] + result3 = guidLookup['tvdb://121361'] + + """ + key = '/library/sections/%s/all?includeGuids=1' % self.key + return self.fetchItem(key, Guid__id__iexact=guid) + + def all(self, libtype=None, **kwargs): + """ Returns a list of all items from this library section. + See description of :func:`~plexapi.library.LibrarySection.search()` for details about filtering / sorting. + """ + libtype = libtype or self.TYPE + return self.search(libtype=libtype, **kwargs) + + def folders(self): + """ Returns a list of available :class:`~plexapi.library.Folder` for this library section. + """ + key = '/library/sections/%s/folder' % self.key + return self.fetchItems(key, Folder) + + def hubs(self): + """ Returns a list of available :class:`~plexapi.library.Hub` for this library section. + """ + key = '/hubs/sections/%s' % self.key + return self.fetchItems(key) + + def agents(self): + """ Returns a list of available :class:`~plexapi.media.Agent` for this library section. + """ + return self._server.agents(utils.searchType(self.type)) + + def settings(self): + """ Returns a list of all library settings. """ + key = '/library/sections/%s/prefs' % self.key + data = self._server.query(key) + return self.findItems(data, cls=Setting) + + def editAdvanced(self, **kwargs): + """ Edit a library's advanced settings. """ + data = {} + idEnums = {} + key = 'prefs[%s]' + + for setting in self.settings(): + if setting.type != 'bool': + idEnums[setting.id] = setting.enumValues + else: + idEnums[setting.id] = {0: False, 1: True} + + for settingID, value in list(kwargs.items()): + try: + enums = idEnums[settingID] + except KeyError: + raise NotFound('%s not found in %s' % (value, list(idEnums.keys()))) + if value in enums: + data[key % settingID] = value + else: + raise NotFound('%s not found in %s' % (value, enums)) + + self.edit(**data) + + def defaultAdvanced(self): + """ Edit all of library's advanced settings to default. """ + data = {} + key = 'prefs[%s]' + for setting in self.settings(): + if setting.type == 'bool': + data[key % setting.id] = int(setting.default) + else: + data[key % setting.id] = setting.default + + self.edit(**data) + + def timeline(self): + """ Returns a timeline query for this library section. """ + key = '/library/sections/%s/timeline' % self.key + data = self._server.query(key) + return LibraryTimeline(self, data) + + def onDeck(self): + """ Returns a list of media items on deck from this library section. """ + key = '/library/sections/%s/onDeck' % self.key + return self.fetchItems(key) + + def recentlyAdded(self, maxresults=50, libtype=None): + """ Returns a list of media items recently added from this library section. + + Parameters: + maxresults (int): Max number of items to return (default 50). + libtype (str, optional): The library type to filter (movie, show, season, episode, + artist, album, track, photoalbum, photo). Default is the main library type. + """ + libtype = libtype or self.TYPE + return self.search(sort='addedAt:desc', maxresults=maxresults, libtype=libtype) + + def firstCharacter(self): + key = '/library/sections/%s/firstCharacter' % self.key + return self.fetchItems(key, cls=FirstCharacter) + + def analyze(self): + """ Run an analysis on all of the items in this library section. See + See :func:`~plexapi.base.PlexPartialObject.analyze` for more details. + """ + key = '/library/sections/%s/analyze' % self.key + self._server.query(key, method=self._server._session.put) + + def emptyTrash(self): + """ If a section has items in the Trash, use this option to empty the Trash. """ + key = '/library/sections/%s/emptyTrash' % self.key + self._server.query(key, method=self._server._session.put) + + def update(self, path=None): + """ Scan this section for new media. + + Parameters: + path (str, optional): Full path to folder to scan. + """ + key = '/library/sections/%s/refresh' % self.key + if path is not None: + key += '?path=%s' % quote_plus(path) + self._server.query(key) + + def cancelUpdate(self): + """ Cancel update of this Library Section. """ + key = '/library/sections/%s/refresh' % self.key + self._server.query(key, method=self._server._session.delete) + + def refresh(self): + """ Forces a download of fresh media information from the internet. + This can take a long time. Any locked fields are not modified. + """ + key = '/library/sections/%s/refresh?force=1' % self.key + self._server.query(key) + + def deleteMediaPreviews(self): + """ Delete the preview thumbnails for items in this library. This cannot + be undone. Recreating media preview files can take hours or even days. + """ + key = '/library/sections/%s/indexes' % self.key + self._server.query(key, method=self._server._session.delete) + + def _loadFilters(self): + """ Retrieves and caches the list of :class:`~plexapi.library.FilteringType` and + list of :class:`~plexapi.library.FilteringFieldType` for this library section. + """ + _key = ('/library/sections/%s/%s?includeMeta=1&includeAdvanced=1' + '&X-Plex-Container-Start=0&X-Plex-Container-Size=0') + + key = _key % (self.key, 'all') + data = self._server.query(key) + self._filterTypes = self.findItems(data, FilteringType, rtag='Meta') + self._fieldTypes = self.findItems(data, FilteringFieldType, rtag='Meta') + + if self.TYPE != 'photo': # No collections for photo library + key = _key % (self.key, 'collections') + data = self._server.query(key) + self._filterTypes.extend(self.findItems(data, FilteringType, rtag='Meta')) + + def filterTypes(self): + """ Returns a list of available :class:`~plexapi.library.FilteringType` for this library section. """ + if self._filterTypes is None: + self._loadFilters() + return self._filterTypes + + def getFilterType(self, libtype=None): + """ Returns a :class:`~plexapi.library.FilteringType` for a specified libtype. + + Parameters: + libtype (str, optional): The library type to filter (movie, show, season, episode, + artist, album, track, photoalbum, photo, collection). + + Raises: + :exc:`~plexapi.exceptions.NotFound`: Unknown libtype for this library. + """ + libtype = libtype or self.TYPE + try: + return next(f for f in self.filterTypes() if f.type == libtype) + except StopIteration: + availableLibtypes = [f.type for f in self.filterTypes()] + raise NotFound('Unknown libtype "%s" for this library. ' + 'Available libtypes: %s' + % (libtype, availableLibtypes)) from None + + def fieldTypes(self): + """ Returns a list of available :class:`~plexapi.library.FilteringFieldType` for this library section. """ + if self._fieldTypes is None: + self._loadFilters() + return self._fieldTypes + + def getFieldType(self, fieldType): + """ Returns a :class:`~plexapi.library.FilteringFieldType` for a specified fieldType. + + Parameters: + fieldType (str): The data type for the field (tag, integer, string, boolean, date, + subtitleLanguage, audioLanguage, resolution). + + Raises: + :exc:`~plexapi.exceptions.NotFound`: Unknown fieldType for this library. + """ + try: + return next(f for f in self.fieldTypes() if f.type == fieldType) + except StopIteration: + availableFieldTypes = [f.type for f in self.fieldTypes()] + raise NotFound('Unknown field type "%s" for this library. ' + 'Available field types: %s' + % (fieldType, availableFieldTypes)) from None + + def listFilters(self, libtype=None): + """ Returns a list of available :class:`~plexapi.library.FilteringFilter` for a specified libtype. + This is the list of options in the filter dropdown menu + (`screenshot <../_static/images/LibrarySection.listFilters.png>`__). + + Parameters: + libtype (str, optional): The library type to filter (movie, show, season, episode, + artist, album, track, photoalbum, photo, collection). + + Example: + + .. code-block:: python + + availableFilters = [f.filter for f in library.listFilters()] + print("Available filter fields:", availableFilters) + + """ + return self.getFilterType(libtype).filters + + def listSorts(self, libtype=None): + """ Returns a list of available :class:`~plexapi.library.FilteringSort` for a specified libtype. + This is the list of options in the sorting dropdown menu + (`screenshot <../_static/images/LibrarySection.listSorts.png>`__). + + Parameters: + libtype (str, optional): The library type to filter (movie, show, season, episode, + artist, album, track, photoalbum, photo, collection). + + Example: + + .. code-block:: python + + availableSorts = [f.key for f in library.listSorts()] + print("Available sort fields:", availableSorts) + + """ + return self.getFilterType(libtype).sorts + + def listFields(self, libtype=None): + """ Returns a list of available :class:`~plexapi.library.FilteringFields` for a specified libtype. + This is the list of options in the custom filter dropdown menu + (`screenshot <../_static/images/LibrarySection.search.png>`__). + + Parameters: + libtype (str, optional): The library type to filter (movie, show, season, episode, + artist, album, track, photoalbum, photo, collection). + + Example: + + .. code-block:: python + + availableFields = [f.key.split('.')[-1] for f in library.listFields()] + print("Available fields:", availableFields) + + """ + return self.getFilterType(libtype).fields + + def listOperators(self, fieldType): + """ Returns a list of available :class:`~plexapi.library.FilteringOperator` for a specified fieldType. + This is the list of options in the custom filter operator dropdown menu + (`screenshot <../_static/images/LibrarySection.search.png>`__). + + Parameters: + fieldType (str): The data type for the field (tag, integer, string, boolean, date, + subtitleLanguage, audioLanguage, resolution). + + Example: + + .. code-block:: python + + field = 'genre' # Available filter field from listFields() + filterField = next(f for f in library.listFields() if f.key.endswith(field)) + availableOperators = [o.key for o in library.listOperators(filterField.type)] + print("Available operators for %s:" % field, availableOperators) + + """ + return self.getFieldType(fieldType).operators + + def listFilterChoices(self, field, libtype=None): + """ Returns a list of available :class:`~plexapi.library.FilterChoice` for a specified + :class:`~plexapi.library.FilteringFilter` or filter field. + This is the list of available values for a custom filter + (`screenshot <../_static/images/LibrarySection.search.png>`__). + + Parameters: + field (str): :class:`~plexapi.library.FilteringFilter` object, + or the name of the field (genre, year, contentRating, etc.). + libtype (str, optional): The library type to filter (movie, show, season, episode, + artist, album, track, photoalbum, photo, collection). + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: Invalid filter field. + :exc:`~plexapi.exceptions.NotFound`: Unknown filter field. + + Example: + + .. code-block:: python + + field = 'genre' # Available filter field from listFilters() + availableChoices = [f.title for f in library.listFilterChoices(field)] + print("Available choices for %s:" % field, availableChoices) + + """ + if isinstance(field, str): + match = re.match(r'(?:([a-zA-Z]*)\.)?([a-zA-Z]+)', field) + if not match: + raise BadRequest('Invalid filter field: %s' % field) + _libtype, field = match.groups() + libtype = _libtype or libtype or self.TYPE + try: + field = next(f for f in self.listFilters(libtype) if f.filter == field) + except StopIteration: + availableFilters = [f.filter for f in self.listFilters(libtype)] + raise NotFound('Unknown filter field "%s" for libtype "%s". ' + 'Available filters: %s' + % (field, libtype, availableFilters)) from None + + data = self._server.query(field.key) + return self.findItems(data, FilterChoice) + + def _validateFilterField(self, field, values, libtype=None): + """ Validates a filter field and values are available as a custom filter for the library. + Returns the validated field and values as a URL encoded parameter string. + """ + match = re.match(r'(?:([a-zA-Z]*)\.)?([a-zA-Z]+)([!<>=&]*)', field) + if not match: + raise BadRequest('Invalid filter field: %s' % field) + _libtype, field, operator = match.groups() + libtype = _libtype or libtype or self.TYPE + + try: + filterField = next(f for f in self.listFields(libtype) if f.key.split('.')[-1] == field) + except StopIteration: + for filterType in reversed(self.filterTypes()): + if filterType.type != libtype: + filterField = next((f for f in filterType.fields if f.key.split('.')[-1] == field), None) + if filterField: + break + else: + availableFields = [f.key for f in self.listFields(libtype)] + raise NotFound('Unknown filter field "%s" for libtype "%s". ' + 'Available filter fields: %s' + % (field, libtype, availableFields)) from None + + field = filterField.key + operator = self._validateFieldOperator(filterField, operator) + result = self._validateFieldValue(filterField, values, libtype) + + if operator == '&=': + args = {field: result} + return urlencode(args, doseq=True) + else: + args = {field + operator[:-1]: ','.join(result)} + return urlencode(args) + + def _validateFieldOperator(self, filterField, operator): + """ Validates filter operator is in the available operators. + Returns the validated operator string. + """ + fieldType = self.getFieldType(filterField.type) + + and_operator = False + if operator in {'&', '&='}: + and_operator = True + operator = '' + if fieldType.type == 'string' and operator in {'=', '!='}: + operator += '=' + operator = (operator[:-1] if operator[-1:] == '=' else operator) + '=' + + try: + next(o for o in fieldType.operators if o.key == operator) + except StopIteration: + availableOperators = [o.key for o in self.listOperators(filterField.type)] + raise NotFound('Unknown operator "%s" for filter field "%s". ' + 'Available operators: %s' + % (operator, filterField.key, availableOperators)) from None + + return '&=' if and_operator else operator + + def _validateFieldValue(self, filterField, values, libtype=None): + """ Validates filter values are the correct datatype and in the available filter choices. + Returns the validated list of values. + """ + if not isinstance(values, (list, tuple)): + values = [values] + + fieldType = self.getFieldType(filterField.type) + results = [] + + try: + for value in values: + if fieldType.type == 'boolean': + value = int(bool(value)) + elif fieldType.type == 'date': + value = self._validateFieldValueDate(value) + elif fieldType.type == 'integer': + value = float(value) if '.' in str(value) else int(value) + elif fieldType.type == 'string': + value = str(value) + elif fieldType.type in {'tag', 'subtitleLanguage', 'audioLanguage', 'resolution'}: + value = self._validateFieldValueTag(value, filterField, libtype) + results.append(str(value)) + except (ValueError, AttributeError): + raise BadRequest('Invalid value "%s" for filter field "%s", value should be type %s' + % (value, filterField.key, fieldType.type)) from None + + return results + + def _validateFieldValueDate(self, value): + """ Validates a filter date value. A filter date value can be a datetime object, + a relative date (e.g. -30d), or a date in YYYY-MM-DD format. + """ + if isinstance(value, datetime): + return int(value.timestamp()) + elif re.match(r'^-?\d+(mon|[smhdwy])$', value): + return '-' + value.lstrip('-') + else: + return int(utils.toDatetime(value, '%Y-%m-%d').timestamp()) + + def _validateFieldValueTag(self, value, filterField, libtype): + """ Validates a filter tag value. A filter tag value can be a :class:`~plexapi.library.FilterChoice` object, + a :class:`~plexapi.media.MediaTag` object, the exact name :attr:`MediaTag.tag` (*str*), + or the exact id :attr:`MediaTag.id` (*int*). + """ + if isinstance(value, FilterChoice): + return value.key + if isinstance(value, media.MediaTag): + value = str(value.id or value.tag) + else: + value = str(value) + filterChoices = self.listFilterChoices(filterField.key, libtype) + matchValue = value.lower() + return next((f.key for f in filterChoices if matchValue in {f.key.lower(), f.title.lower()}), value) + + def _validateSortFields(self, sort, libtype=None): + """ Validates a list of filter sort fields is available for the library. Sort fields can be a + list of :class:`~plexapi.library.FilteringSort` objects, or a comma separated string. + Returns the validated comma separated sort fields string. + """ + if isinstance(sort, str): + sort = sort.split(',') + + if not isinstance(sort, (list, tuple)): + sort = [sort] + + validatedSorts = [] + for _sort in sort: + validatedSorts.append(self._validateSortField(_sort, libtype)) + + return ','.join(validatedSorts) + + def _validateSortField(self, sort, libtype=None): + """ Validates a filter sort field is available for the library. A sort field can be a + :class:`~plexapi.library.FilteringSort` object, or a string. + Returns the validated sort field string. + """ + if isinstance(sort, FilteringSort): + return '%s.%s:%s' % (libtype or self.TYPE, sort.key, sort.defaultDirection) + + match = re.match(r'(?:([a-zA-Z]*)\.)?([a-zA-Z]+):?([a-zA-Z]*)', sort.strip()) + if not match: + raise BadRequest('Invalid filter sort: %s' % sort) + _libtype, sortField, sortDir = match.groups() + libtype = _libtype or libtype or self.TYPE + + try: + filterSort = next(f for f in self.listSorts(libtype) if f.key == sortField) + except StopIteration: + availableSorts = [f.key for f in self.listSorts(libtype)] + raise NotFound('Unknown sort field "%s" for libtype "%s". ' + 'Available sort fields: %s' + % (sortField, libtype, availableSorts)) from None + + sortField = libtype + '.' + filterSort.key + + availableDirections = ['', 'asc', 'desc', 'nullsLast'] + if sortDir not in availableDirections: + raise NotFound('Unknown sort direction "%s". ' + 'Available sort directions: %s' + % (sortDir, availableDirections)) + + return '%s:%s' % (sortField, sortDir) if sortDir else sortField + + def _validateAdvancedSearch(self, filters, libtype): + """ Validates an advanced search filter dictionary. + Returns the list of validated URL encoded parameter strings for the advanced search. + """ + if not isinstance(filters, dict): + raise BadRequest('Filters must be a dictionary.') + + validatedFilters = [] + + for field, values in list(filters.items()): + if field.lower() in {'and', 'or'}: + if len(list(filters.items())) > 1: + raise BadRequest('Multiple keys in the same dictionary with and/or is not allowed.') + if not isinstance(values, list): + raise BadRequest('Value for and/or keys must be a list of dictionaries.') + + validatedFilters.append('push=1') + + for value in values: + validatedFilters.extend(self._validateAdvancedSearch(value, libtype)) + validatedFilters.append('%s=1' % field.lower()) + + del validatedFilters[-1] + validatedFilters.append('pop=1') + + else: + validatedFilters.append(self._validateFilterField(field, values, libtype)) + + return validatedFilters + + def _buildSearchKey(self, title=None, sort=None, libtype=None, limit=None, filters=None, returnKwargs=False, **kwargs): + """ Returns the validated and formatted search query API key + (``/library/sections/<sectionKey>/all?<params>``). + """ + args = {} + filter_args = [] + + args['includeGuids'] = int(bool(kwargs.pop('includeGuids', True))) + for field, values in list(kwargs.items()): + if field.split('__')[-1] not in OPERATORS: + filter_args.append(self._validateFilterField(field, values, libtype)) + del kwargs[field] + if title is not None: + if isinstance(title, (list, tuple)): + filter_args.append(self._validateFilterField('title', title, libtype)) + else: + args['title'] = title + if filters is not None: + filter_args.extend(self._validateAdvancedSearch(filters, libtype)) + if sort is not None: + args['sort'] = self._validateSortFields(sort, libtype) + if libtype is not None: + args['type'] = utils.searchType(libtype) + if limit is not None: + args['limit'] = limit + + joined_args = utils.joinArgs(args).lstrip('?') + joined_filter_args = '&'.join(filter_args) if filter_args else '' + params = '&'.join([joined_args, joined_filter_args]).strip('&') + key = '/library/sections/%s/all?%s' % (self.key, params) + + if returnKwargs: + return key, kwargs + return key + + def hubSearch(self, query, mediatype=None, limit=None): + """ Returns the hub search results for this library. See :func:`plexapi.server.PlexServer.search` + for details and parameters. + """ + return self._server.search(query, mediatype, limit, sectionId=self.key) + + def search(self, title=None, sort=None, maxresults=None, libtype=None, + container_start=0, container_size=X_PLEX_CONTAINER_SIZE, limit=None, filters=None, **kwargs): + """ Search the library. The http requests will be batched in container_size. If you are only looking for the + first <num> results, it would be wise to set the maxresults option to that amount so the search doesn't iterate + over all results on the server. + + Parameters: + title (str, optional): General string query to search for. Partial string matches are allowed. + sort (:class:`~plexapi.library.FilteringSort` or str or list, optional): A field to sort the results. + See the details below for more info. + maxresults (int, optional): Only return the specified number of results. + libtype (str, optional): Return results of a specific type (movie, show, season, episode, + artist, album, track, photoalbum, photo, collection) (e.g. ``libtype='episode'`` will only + return :class:`~plexapi.video.Episode` objects) + container_start (int, optional): Default 0. + container_size (int, optional): Default X_PLEX_CONTAINER_SIZE in your config file. + limit (int, optional): Limit the number of results from the filter. + filters (dict, optional): A dictionary of advanced filters. See the details below for more info. + **kwargs (dict): Additional custom filters to apply to the search results. + See the details below for more info. + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: When the sort or filter is invalid. + :exc:`~plexapi.exceptions.NotFound`: When applying an unknown sort or filter. + + **Sorting Results** + + The search results can be sorted by including the ``sort`` parameter. + + * See :func:`~plexapi.library.LibrarySection.listSorts` to get a list of available sort fields. + + The ``sort`` parameter can be a :class:`~plexapi.library.FilteringSort` object or a sort string in the + format ``field:dir``. The sort direction ``dir`` can be ``asc``, ``desc``, or ``nullsLast``. Omitting the + sort direction or using a :class:`~plexapi.library.FilteringSort` object will sort the results in the default + direction of the field. Multi-sorting on multiple fields can be achieved by using a comma separated list of + sort strings, or a list of :class:`~plexapi.library.FilteringSort` object or strings. + + Examples: + + .. code-block:: python + + library.search(sort="titleSort:desc") # Sort title in descending order + library.search(sort="titleSort") # Sort title in the default order + # Multi-sort by year in descending order, then by audience rating in descending order + library.search(sort="year:desc,audienceRating:desc") + library.search(sort=["year:desc", "audienceRating:desc"]) + + **Using Plex Filters** + + Any of the available custom filters can be applied to the search results + (`screenshot <../_static/images/LibrarySection.search.png>`__). + + * See :func:`~plexapi.library.LibrarySection.listFields` to get a list of all available fields. + * See :func:`~plexapi.library.LibrarySection.listOperators` to get a list of all available operators. + * See :func:`~plexapi.library.LibrarySection.listFilterChoices` to get a list of all available filter values. + + The following filter fields are just some examples of the possible filters. The list is not exaustive, + and not all filters apply to all library types. + + * **actor** (:class:`~plexapi.media.MediaTag`): Search for the name of an actor. + * **addedAt** (*datetime*): Search for items added before or after a date. See operators below. + * **audioLanguage** (*str*): Search for a specific audio language (3 character code, e.g. jpn). + * **collection** (:class:`~plexapi.media.MediaTag`): Search for the name of a collection. + * **contentRating** (:class:`~plexapi.media.MediaTag`): Search for a specific content rating. + * **country** (:class:`~plexapi.media.MediaTag`): Search for the name of a country. + * **decade** (*int*): Search for a specific decade (e.g. 2000). + * **director** (:class:`~plexapi.media.MediaTag`): Search for the name of a director. + * **duplicate** (*bool*) Search for duplicate items. + * **genre** (:class:`~plexapi.media.MediaTag`): Search for a specific genre. + * **hdr** (*bool*): Search for HDR items. + * **inProgress** (*bool*): Search for in progress items. + * **label** (:class:`~plexapi.media.MediaTag`): Search for a specific label. + * **lastViewedAt** (*datetime*): Search for items watched before or after a date. See operators below. + * **mood** (:class:`~plexapi.media.MediaTag`): Search for a specific mood. + * **producer** (:class:`~plexapi.media.MediaTag`): Search for the name of a producer. + * **resolution** (*str*): Search for a specific resolution (e.g. 1080). + * **studio** (*str*): Search for the name of a studio. + * **style** (:class:`~plexapi.media.MediaTag`): Search for a specific style. + * **subtitleLanguage** (*str*): Search for a specific subtitle language (3 character code, e.g. eng) + * **unmatched** (*bool*): Search for unmatched items. + * **unwatched** (*bool*): Search for unwatched items. + * **userRating** (*int*): Search for items with a specific user rating. + * **writer** (:class:`~plexapi.media.MediaTag`): Search for the name of a writer. + * **year** (*int*): Search for a specific year. + + Tag type filter values can be a :class:`~plexapi.library.FilterChoice` object, + :class:`~plexapi.media.MediaTag` object, the exact name :attr:`MediaTag.tag` (*str*), + or the exact id :attr:`MediaTag.id` (*int*). + + Date type filter values can be a ``datetime`` object, a relative date using a one of the + available date suffixes (e.g. ``30d``) (*str*), or a date in ``YYYY-MM-DD`` (*str*) format. + + Relative date suffixes: + + * ``s``: ``seconds`` + * ``m``: ``minutes`` + * ``h``: ``hours`` + * ``d``: ``days`` + * ``w``: ``weeks`` + * ``mon``: ``months`` + * ``y``: ``years`` + + Multiple values can be ``OR`` together by providing a list of values. + + Examples: + + .. code-block:: python + + library.search(unwatched=True, year=2020, resolution="4k") + library.search(actor="Arnold Schwarzenegger", decade=1990) + library.search(contentRating="TV-G", genre="animation") + library.search(genre=["animation", "comedy"]) # Genre is animation OR comedy + library.search(studio=["Disney", "Pixar"]) # Studio contains Disney OR Pixar + + **Using a** ``libtype`` **Prefix** + + Some filters may be prefixed by the ``libtype`` separated by a ``.`` (e.g. ``show.collection``, + ``episode.title``, ``artist.style``, ``album.genre``, ``track.userRating``, etc.). This should not be + confused with the ``libtype`` parameter. If no ``libtype`` prefix is provided, then the default library + type is assumed. For example, in a TV show library ``viewCout`` is assumed to be ``show.viewCount``. + If you want to filter using episode view count then you must specify ``episode.viewCount`` explicitly. + In addition, if the filter does not exist for the default library type it will fallback to the most + specific ``libtype`` available. For example, ``show.unwatched`` does not exists so it will fallback to + ``episode.unwatched``. The ``libtype`` prefix cannot be included directly in the function parameters so + the filters must be provided as a filters dictionary. + + Examples: + + .. code-block:: python + + library.search(filters={"show.collection": "Documentary", "episode.inProgress": True}) + library.search(filters={"artist.genre": "pop", "album.decade": 2000}) + + # The following three options are identical and will return Episode objects + showLibrary.search(title="Winter is Coming", libtype='episode') + showLibrary.search(libtype='episode', filters={"episode.title": "Winter is Coming"}) + showLibrary.searchEpisodes(title="Winter is Coming") + + # The following will search for the episode title but return Show objects + showLibrary.search(filters={"episode.title": "Winter is Coming"}) + + # The following will fallback to episode.unwatched + showLibrary.search(unwatched=True) + + **Using Plex Operators** + + Operators can be appended to the filter field to narrow down results with more granularity. If no + operator is specified, the default operator is assumed to be ``=``. The following is a list of + possible operators depending on the data type of the filter being applied. A special ``&`` operator + can also be used to ``AND`` together a list of values. + + Type: :class:`~plexapi.media.MediaTag` or *subtitleLanguage* or *audioLanguage* + + * ``=``: ``is`` + * ``!=``: ``is not`` + + Type: *int* + + * ``=``: ``is`` + * ``!=``: ``is not`` + * ``>>=``: ``is greater than`` + * ``<<=``: ``is less than`` + + Type: *str* + + * ``=``: ``contains`` + * ``!=``: ``does not contain`` + * ``==``: ``is`` + * ``!==``: ``is not`` + * ``<=``: ``begins with`` + * ``>=``: ``ends with`` + + Type: *bool* + + * ``=``: ``is true`` + * ``!=``: ``is false`` + + Type: *datetime* + + * ``<<=``: ``is before`` + * ``>>=``: ``is after`` + + Type: *resolution* + + * ``=``: ``is`` + + Operators cannot be included directly in the function parameters so the filters + must be provided as a filters dictionary. The trailing ``=`` on the operator may be excluded. + + Examples: + + .. code-block:: python + + # Genre is horror AND thriller + library.search(filters={"genre&": ["horror", "thriller"]}) + + # Director is not Steven Spielberg + library.search(filters={"director!": "Steven Spielberg"}) + + # Title starts with Marvel and added before 2021-01-01 + library.search(filters={"title<": "Marvel", "addedAt<<": "2021-01-01"}) + + # Added in the last 30 days using relative dates + library.search(filters={"addedAt>>": "30d"}) + + # Collection is James Bond and user rating is greater than 8 + library.search(filters={"collection": "James Bond", "userRating>>": 8}) + + **Using Advanced Filters** + + Any of the Plex filters described above can be combined into a single ``filters`` dictionary that mimics + the advanced filters used in Plex Web with a tree of ``and``/``or`` branches. Each level of the tree must + start with ``and`` (Match all of the following) or ``or`` (Match any of the following) as the dictionary + key, and a list of dictionaries with the desired filters as the dictionary value. + + The following example matches `this <../_static/images/LibrarySection.search_filters.png>`__ advanced filter + in Plex Web. + + Examples: + + .. code-block:: python + + advancedFilters = { + 'and': [ # Match all of the following in this list + { + 'or': [ # Match any of the following in this list + {'title': 'elephant'}, + {'title': 'bunny'} + ] + }, + {'year>>': 1990}, + {'unwatched': True} + ] + } + library.search(filters=advancedFilters) + + **Using PlexAPI Operators** + + For even more advanced filtering which cannot be achieved in Plex, the PlexAPI operators can be applied + to any XML attribute. See :func:`plexapi.base.PlexObject.fetchItems` for a list of operators and how they + are used. Note that using the Plex filters above will be faster since the filters are applied by the Plex + server before the results are returned to PlexAPI. Using the PlexAPI operators requires the Plex server + to return *all* results to allow PlexAPI to do the filtering. The Plex filters and the PlexAPI operators + can be used in conjunction with each other. + + Examples: + + .. code-block:: python + + library.search(summary__icontains="Christmas") + library.search(duration__gt=7200000) + library.search(audienceRating__lte=6.0, audienceRatingImage__startswith="rottentomatoes://") + library.search(media__videoCodec__exact="h265") + library.search(genre="holiday", viewCount__gte=3) + + """ + key, kwargs = self._buildSearchKey( + title=title, sort=sort, libtype=libtype, limit=limit, filters=filters, returnKwargs=True, **kwargs) + return self._search(key, maxresults, container_start, container_size, **kwargs) + + def _search(self, key, maxresults, container_start, container_size, **kwargs): + """ Perform the actual library search and return the results. """ + results = [] + subresults = [] + offset = container_start + + if maxresults is not None: + container_size = min(container_size, maxresults) + + while True: + subresults = self.fetchItems(key, container_start=container_start, + container_size=container_size, **kwargs) + if not len(subresults): + if offset > self._totalViewSize: + log.info("container_start is higher than the number of items in the library") + + results.extend(subresults) + + # self._totalViewSize is not used as a condition in the while loop as + # this require a additional http request. + # self._totalViewSize is updated from self.fetchItems + wanted_number_of_items = self._totalViewSize - offset + if maxresults is not None: + wanted_number_of_items = min(maxresults, wanted_number_of_items) + container_size = min(container_size, maxresults - len(results)) + + if wanted_number_of_items <= len(results): + break + + container_start += container_size + + if container_start > self._totalViewSize: + break + + return results + + def _locations(self): + """ Returns a list of :class:`~plexapi.library.Location` objects + """ + return self.findItems(self._data, Location) + + def sync(self, policy, mediaSettings, client=None, clientId=None, title=None, sort=None, libtype=None, + **kwargs): + """ Add current library section as sync item for specified device. + See description of :func:`~plexapi.library.LibrarySection.search` for details about filtering / sorting + and :func:`~plexapi.myplex.MyPlexAccount.sync` for possible exceptions. + + Parameters: + policy (:class:`~plexapi.sync.Policy`): policy of syncing the media (how many items to sync and process + watched media or not), generated automatically when method + called on specific LibrarySection object. + mediaSettings (:class:`~plexapi.sync.MediaSettings`): Transcoding settings used for the media, generated + automatically when method called on specific + LibrarySection object. + client (:class:`~plexapi.myplex.MyPlexDevice`): sync destination, see + :func:`~plexapi.myplex.MyPlexAccount.sync`. + clientId (str): sync destination, see :func:`~plexapi.myplex.MyPlexAccount.sync`. + title (str): descriptive title for the new :class:`~plexapi.sync.SyncItem`, if empty the value would be + generated from metadata of current media. + sort (str): formatted as `column:dir`; column can be any of {`addedAt`, `originallyAvailableAt`, + `lastViewedAt`, `titleSort`, `rating`, `mediaHeight`, `duration`}. dir can be `asc` or + `desc`. + libtype (str): Filter results to a specific libtype (`movie`, `show`, `episode`, `artist`, `album`, + `track`). + + Returns: + :class:`~plexapi.sync.SyncItem`: an instance of created syncItem. + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: When the library is not allowed to sync. + :exc:`~plexapi.exceptions.BadRequest`: When the sort or filter is invalid. + :exc:`~plexapi.exceptions.NotFound`: When applying an unknown sort or filter. + + Example: + + .. code-block:: python + + from plexapi import myplex + from plexapi.sync import Policy, MediaSettings, VIDEO_QUALITY_3_MBPS_720p + + c = myplex.MyPlexAccount() + target = c.device('Plex Client') + sync_items_wd = c.syncItems(target.clientIdentifier) + srv = c.resource('Server Name').connect() + section = srv.library.section('Movies') + policy = Policy('count', unwatched=True, value=1) + media_settings = MediaSettings.create(VIDEO_QUALITY_3_MBPS_720p) + section.sync(target, policy, media_settings, title='Next best movie', sort='rating:desc') + + """ + from plexapi.sync import SyncItem + + if not self.allowSync: + raise BadRequest('The requested library is not allowed to sync') + + myplex = self._server.myPlexAccount() + sync_item = SyncItem(self._server, None) + sync_item.title = title if title else self.title + sync_item.rootTitle = self.title + sync_item.contentType = self.CONTENT_TYPE + sync_item.metadataType = self.METADATA_TYPE + sync_item.machineIdentifier = self._server.machineIdentifier + + key = self._buildSearchKey(title=title, sort=sort, libtype=libtype, **kwargs) + + sync_item.location = 'library://%s/directory/%s' % (self.uuid, quote_plus(key)) + sync_item.policy = policy + sync_item.mediaSettings = mediaSettings + + return myplex.sync(client=client, clientId=clientId, sync_item=sync_item) + + def history(self, maxresults=9999999, mindate=None): + """ Get Play History for this library Section for the owner. + Parameters: + maxresults (int): Only return the specified number of results (optional). + mindate (datetime): Min datetime to return results from. + """ + return self._server.history(maxresults=maxresults, mindate=mindate, librarySectionID=self.key, accountID=1) + + def createCollection(self, title, items=None, smart=False, limit=None, + libtype=None, sort=None, filters=None, **kwargs): + """ Alias for :func:`~plexapi.server.PlexServer.createCollection` using this + :class:`~plexapi.library.LibrarySection`. + """ + return self._server.createCollection( + title, section=self, items=items, smart=smart, limit=limit, + libtype=libtype, sort=sort, filters=filters, **kwargs) + + def collection(self, title): + """ Returns the collection with the specified title. + + Parameters: + title (str): Title of the item to return. + + Raises: + :exc:`~plexapi.exceptions.NotFound`: Unable to find collection. + """ + try: + return self.collections(title=title, title__iexact=title)[0] + except IndexError: + raise NotFound('Unable to find collection with title "%s".' % title) from None + + def collections(self, **kwargs): + """ Returns a list of collections from this library section. + See description of :func:`~plexapi.library.LibrarySection.search` for details about filtering / sorting. + """ + return self.search(libtype='collection', **kwargs) + + def createPlaylist(self, title, items=None, smart=False, limit=None, + sort=None, filters=None, **kwargs): + """ Alias for :func:`~plexapi.server.PlexServer.createPlaylist` using this + :class:`~plexapi.library.LibrarySection`. + """ + return self._server.createPlaylist( + title, section=self, items=items, smart=smart, limit=limit, + sort=sort, filters=filters, **kwargs) + + def playlist(self, title): + """ Returns the playlist with the specified title. + + Parameters: + title (str): Title of the item to return. + + Raises: + :exc:`~plexapi.exceptions.NotFound`: Unable to find playlist. + """ + try: + return self.playlists(title=title, title__iexact=title)[0] + except IndexError: + raise NotFound('Unable to find playlist with title "%s".' % title) from None + + def playlists(self, sort=None, **kwargs): + """ Returns a list of playlists from this library section. """ + return self._server.playlists( + playlistType=self.CONTENT_TYPE, sectionId=self.key, sort=sort, **kwargs) + + @deprecated('use "listFields" instead') + def filterFields(self, mediaType=None): + return self.listFields(libtype=mediaType) + + @deprecated('use "listFilterChoices" instead') + def listChoices(self, category, libtype=None, **kwargs): + return self.listFilterChoices(field=category, libtype=libtype) + + def getWebURL(self, base=None, tab=None, key=None): + """ Returns the Plex Web URL for the library. + + Parameters: + base (str): The base URL before the fragment (``#!``). + Default is https://app.plex.tv/desktop. + tab (str): The library tab (recommended, library, collections, playlists, timeline). + key (str): A hub key. + """ + params = {'source': self.key} + if tab is not None: + params['pivot'] = tab + if key is not None: + params['key'] = key + params['pageType'] = 'list' + return self._server._buildWebURL(base=base, **params) + + +class MovieSection(LibrarySection): + """ Represents a :class:`~plexapi.library.LibrarySection` section containing movies. + + Attributes: + TAG (str): 'Directory' + TYPE (str): 'movie' + """ + TAG = 'Directory' + TYPE = 'movie' + METADATA_TYPE = 'movie' + CONTENT_TYPE = 'video' + + def searchMovies(self, **kwargs): + """ Search for a movie. See :func:`~plexapi.library.LibrarySection.search` for usage. """ + return self.search(libtype='movie', **kwargs) + + def recentlyAddedMovies(self, maxresults=50): + """ Returns a list of recently added movies from this library section. + + Parameters: + maxresults (int): Max number of items to return (default 50). + """ + return self.recentlyAdded(maxresults=maxresults, libtype='movie') + + def sync(self, videoQuality, limit=None, unwatched=False, **kwargs): + """ Add current Movie library section as sync item for specified device. + See description of :func:`~plexapi.library.LibrarySection.search` for details about filtering / sorting and + :func:`~plexapi.library.LibrarySection.sync` for details on syncing libraries and possible exceptions. + + Parameters: + videoQuality (int): idx of quality of the video, one of VIDEO_QUALITY_* values defined in + :mod:`~plexapi.sync` module. + limit (int): maximum count of movies to sync, unlimited if `None`. + unwatched (bool): if `True` watched videos wouldn't be synced. + + Returns: + :class:`~plexapi.sync.SyncItem`: an instance of created syncItem. + + Example: + + .. code-block:: python + + from plexapi import myplex + from plexapi.sync import VIDEO_QUALITY_3_MBPS_720p + + c = myplex.MyPlexAccount() + target = c.device('Plex Client') + sync_items_wd = c.syncItems(target.clientIdentifier) + srv = c.resource('Server Name').connect() + section = srv.library.section('Movies') + section.sync(VIDEO_QUALITY_3_MBPS_720p, client=target, limit=1, unwatched=True, + title='Next best movie', sort='rating:desc') + + """ + from plexapi.sync import Policy, MediaSettings + kwargs['mediaSettings'] = MediaSettings.createVideo(videoQuality) + kwargs['policy'] = Policy.create(limit, unwatched) + return super(MovieSection, self).sync(**kwargs) + + +class ShowSection(LibrarySection): + """ Represents a :class:`~plexapi.library.LibrarySection` section containing tv shows. + + Attributes: + TAG (str): 'Directory' + TYPE (str): 'show' + """ + TAG = 'Directory' + TYPE = 'show' + METADATA_TYPE = 'episode' + CONTENT_TYPE = 'video' + + def searchShows(self, **kwargs): + """ Search for a show. See :func:`~plexapi.library.LibrarySection.search` for usage. """ + return self.search(libtype='show', **kwargs) + + def searchSeasons(self, **kwargs): + """ Search for a season. See :func:`~plexapi.library.LibrarySection.search` for usage. """ + return self.search(libtype='season', **kwargs) + + def searchEpisodes(self, **kwargs): + """ Search for an episode. See :func:`~plexapi.library.LibrarySection.search` for usage. """ + return self.search(libtype='episode', **kwargs) + + def recentlyAddedShows(self, maxresults=50): + """ Returns a list of recently added shows from this library section. + + Parameters: + maxresults (int): Max number of items to return (default 50). + """ + return self.recentlyAdded(maxresults=maxresults, libtype='show') + + def recentlyAddedSeasons(self, maxresults=50): + """ Returns a list of recently added seasons from this library section. + + Parameters: + maxresults (int): Max number of items to return (default 50). + """ + return self.recentlyAdded(maxresults=maxresults, libtype='season') + + def recentlyAddedEpisodes(self, maxresults=50): + """ Returns a list of recently added episodes from this library section. + + Parameters: + maxresults (int): Max number of items to return (default 50). + """ + return self.recentlyAdded(maxresults=maxresults, libtype='episode') + + def sync(self, videoQuality, limit=None, unwatched=False, **kwargs): + """ Add current Show library section as sync item for specified device. + See description of :func:`~plexapi.library.LibrarySection.search` for details about filtering / sorting and + :func:`~plexapi.library.LibrarySection.sync` for details on syncing libraries and possible exceptions. + + Parameters: + videoQuality (int): idx of quality of the video, one of VIDEO_QUALITY_* values defined in + :mod:`~plexapi.sync` module. + limit (int): maximum count of episodes to sync, unlimited if `None`. + unwatched (bool): if `True` watched videos wouldn't be synced. + + Returns: + :class:`~plexapi.sync.SyncItem`: an instance of created syncItem. + + Example: + + .. code-block:: python + + from plexapi import myplex + from plexapi.sync import VIDEO_QUALITY_3_MBPS_720p + + c = myplex.MyPlexAccount() + target = c.device('Plex Client') + sync_items_wd = c.syncItems(target.clientIdentifier) + srv = c.resource('Server Name').connect() + section = srv.library.section('TV-Shows') + section.sync(VIDEO_QUALITY_3_MBPS_720p, client=target, limit=1, unwatched=True, + title='Next unwatched episode') + + """ + from plexapi.sync import Policy, MediaSettings + kwargs['mediaSettings'] = MediaSettings.createVideo(videoQuality) + kwargs['policy'] = Policy.create(limit, unwatched) + return super(ShowSection, self).sync(**kwargs) + + +class MusicSection(LibrarySection): + """ Represents a :class:`~plexapi.library.LibrarySection` section containing music artists. + + Attributes: + TAG (str): 'Directory' + TYPE (str): 'artist' + """ + TAG = 'Directory' + TYPE = 'artist' + METADATA_TYPE = 'track' + CONTENT_TYPE = 'audio' + + def albums(self): + """ Returns a list of :class:`~plexapi.audio.Album` objects in this section. """ + key = '/library/sections/%s/albums' % self.key + return self.fetchItems(key) + + def stations(self): + """ Returns a list of :class:`~plexapi.audio.Album` objects in this section. """ + key = '/hubs/sections/%s?includeStations=1' % self.key + return self.fetchItems(key, cls=Station) + + def searchArtists(self, **kwargs): + """ Search for an artist. See :func:`~plexapi.library.LibrarySection.search` for usage. """ + return self.search(libtype='artist', **kwargs) + + def searchAlbums(self, **kwargs): + """ Search for an album. See :func:`~plexapi.library.LibrarySection.search` for usage. """ + return self.search(libtype='album', **kwargs) + + def searchTracks(self, **kwargs): + """ Search for a track. See :func:`~plexapi.library.LibrarySection.search` for usage. """ + return self.search(libtype='track', **kwargs) + + def recentlyAddedArtists(self, maxresults=50): + """ Returns a list of recently added artists from this library section. + + Parameters: + maxresults (int): Max number of items to return (default 50). + """ + return self.recentlyAdded(maxresults=maxresults, libtype='artist') + + def recentlyAddedAlbums(self, maxresults=50): + """ Returns a list of recently added albums from this library section. + + Parameters: + maxresults (int): Max number of items to return (default 50). + """ + return self.recentlyAdded(maxresults=maxresults, libtype='album') + + def recentlyAddedTracks(self, maxresults=50): + """ Returns a list of recently added tracks from this library section. + + Parameters: + maxresults (int): Max number of items to return (default 50). + """ + return self.recentlyAdded(maxresults=maxresults, libtype='track') + + def sync(self, bitrate, limit=None, **kwargs): + """ Add current Music library section as sync item for specified device. + See description of :func:`~plexapi.library.LibrarySection.search` for details about filtering / sorting and + :func:`~plexapi.library.LibrarySection.sync` for details on syncing libraries and possible exceptions. + + Parameters: + bitrate (int): maximum bitrate for synchronized music, better use one of MUSIC_BITRATE_* values from the + module :mod:`~plexapi.sync`. + limit (int): maximum count of tracks to sync, unlimited if `None`. + + Returns: + :class:`~plexapi.sync.SyncItem`: an instance of created syncItem. + + Example: + + .. code-block:: python + + from plexapi import myplex + from plexapi.sync import AUDIO_BITRATE_320_KBPS + + c = myplex.MyPlexAccount() + target = c.device('Plex Client') + sync_items_wd = c.syncItems(target.clientIdentifier) + srv = c.resource('Server Name').connect() + section = srv.library.section('Music') + section.sync(AUDIO_BITRATE_320_KBPS, client=target, limit=100, sort='addedAt:desc', + title='New music') + + """ + from plexapi.sync import Policy, MediaSettings + kwargs['mediaSettings'] = MediaSettings.createMusic(bitrate) + kwargs['policy'] = Policy.create(limit) + return super(MusicSection, self).sync(**kwargs) + + +class PhotoSection(LibrarySection): + """ Represents a :class:`~plexapi.library.LibrarySection` section containing photos. + + Attributes: + TAG (str): 'Directory' + TYPE (str): 'photo' + """ + TAG = 'Directory' + TYPE = 'photo' + METADATA_TYPE = 'photo' + CONTENT_TYPE = 'photo' + + def all(self, libtype=None, **kwargs): + """ Returns a list of all items from this library section. + See description of :func:`plexapi.library.LibrarySection.search()` for details about filtering / sorting. + """ + libtype = libtype or 'photoalbum' + return self.search(libtype=libtype, **kwargs) + + def collections(self, **kwargs): + raise NotImplementedError('Collections are not available for a Photo library.') + + def searchAlbums(self, title, **kwargs): + """ Search for a photo album. See :func:`~plexapi.library.LibrarySection.search` for usage. """ + return self.search(libtype='photoalbum', title=title, **kwargs) + + def searchPhotos(self, title, **kwargs): + """ Search for a photo. See :func:`~plexapi.library.LibrarySection.search` for usage. """ + return self.search(libtype='photo', title=title, **kwargs) + + def recentlyAddedAlbums(self, maxresults=50): + """ Returns a list of recently added photo albums from this library section. + + Parameters: + maxresults (int): Max number of items to return (default 50). + """ + # Use search() instead of recentlyAdded() because libtype=None + return self.search(sort='addedAt:desc', maxresults=maxresults) + + def sync(self, resolution, limit=None, **kwargs): + """ Add current Music library section as sync item for specified device. + See description of :func:`~plexapi.library.LibrarySection.search` for details about filtering / sorting and + :func:`~plexapi.library.LibrarySection.sync` for details on syncing libraries and possible exceptions. + + Parameters: + resolution (str): maximum allowed resolution for synchronized photos, see PHOTO_QUALITY_* values in the + module :mod:`~plexapi.sync`. + limit (int): maximum count of tracks to sync, unlimited if `None`. + + Returns: + :class:`~plexapi.sync.SyncItem`: an instance of created syncItem. + + Example: + + .. code-block:: python + + from plexapi import myplex + from plexapi.sync import PHOTO_QUALITY_HIGH + + c = myplex.MyPlexAccount() + target = c.device('Plex Client') + sync_items_wd = c.syncItems(target.clientIdentifier) + srv = c.resource('Server Name').connect() + section = srv.library.section('Photos') + section.sync(PHOTO_QUALITY_HIGH, client=target, limit=100, sort='addedAt:desc', + title='Fresh photos') + + """ + from plexapi.sync import Policy, MediaSettings + kwargs['mediaSettings'] = MediaSettings.createPhoto(resolution) + kwargs['policy'] = Policy.create(limit) + return super(PhotoSection, self).sync(**kwargs) + + +@utils.registerPlexObject +class LibraryTimeline(PlexObject): + """Represents a LibrarySection timeline. + + Attributes: + TAG (str): 'LibraryTimeline' + size (int): Unknown + allowSync (bool): Unknown + art (str): Relative path to art image. + content (str): "secondary" + identifier (str): "com.plexapp.plugins.library" + latestEntryTime (int): Epoch timestamp + mediaTagPrefix (str): "/system/bundle/media/flags/" + mediaTagVersion (int): Unknown + thumb (str): Relative path to library thumb image. + title1 (str): Name of library section. + updateQueueSize (int): Number of items queued to update. + viewGroup (str): "secondary" + viewMode (int): Unknown + """ + TAG = 'LibraryTimeline' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.size = utils.cast(int, data.attrib.get('size')) + self.allowSync = utils.cast(bool, data.attrib.get('allowSync')) + self.art = data.attrib.get('art') + self.content = data.attrib.get('content') + self.identifier = data.attrib.get('identifier') + self.latestEntryTime = utils.cast(int, data.attrib.get('latestEntryTime')) + self.mediaTagPrefix = data.attrib.get('mediaTagPrefix') + self.mediaTagVersion = utils.cast(int, data.attrib.get('mediaTagVersion')) + self.thumb = data.attrib.get('thumb') + self.title1 = data.attrib.get('title1') + self.updateQueueSize = utils.cast(int, data.attrib.get('updateQueueSize')) + self.viewGroup = data.attrib.get('viewGroup') + self.viewMode = utils.cast(int, data.attrib.get('viewMode')) + + +@utils.registerPlexObject +class Location(PlexObject): + """ Represents a single library Location. + + Attributes: + TAG (str): 'Location' + id (int): Location path ID. + path (str): Path used for library.. + """ + TAG = 'Location' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.id = utils.cast(int, data.attrib.get('id')) + self.path = data.attrib.get('path') + + +@utils.registerPlexObject +class Hub(PlexObject): + """ Represents a single Hub (or category) in the PlexServer search. + + Attributes: + TAG (str): 'Hub' + context (str): The context of the hub. + hubKey (str): API URL for these specific hub items. + hubIdentifier (str): The identifier of the hub. + key (str): API URL for the hub. + more (bool): True if there are more items to load (call reload() to fetch all items). + size (int): The number of items in the hub. + style (str): The style of the hub. + title (str): The title of the hub. + type (str): The type of items in the hub. + """ + TAG = 'Hub' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.context = data.attrib.get('context') + self.hubKey = data.attrib.get('hubKey') + self.hubIdentifier = data.attrib.get('hubIdentifier') + self.items = self.findItems(data) + self.key = data.attrib.get('key') + self.more = utils.cast(bool, data.attrib.get('more')) + self.size = utils.cast(int, data.attrib.get('size')) + self.style = data.attrib.get('style') + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + self._section = None # cache for self.section + + def __len__(self): + return self.size + + def reload(self): + """ Reloads the hub to fetch all items in the hub. """ + if self.more and self.key: + self.items = self.fetchItems(self.key) + self.more = False + self.size = len(self.items) + + def section(self): + """ Returns the :class:`~plexapi.library.LibrarySection` this hub belongs to. + """ + if self._section is None: + self._section = self._server.library.sectionByID(self.librarySectionID) + return self._section + + +class HubMediaTag(PlexObject): + """ Base class of hub media tag search results. + + Attributes: + count (int): The number of items where this tag is found. + filter (str): The URL filter for the tag. + id (int): The id of the tag. + key (str): API URL (/library/section/<librarySectionID>/all?<filter>). + librarySectionID (int): The library section ID where the tag is found. + librarySectionKey (str): API URL for the library section (/library/section/<librarySectionID>) + librarySectionTitle (str): The library title where the tag is found. + librarySectionType (int): The library type where the tag is found. + reason (str): The reason for the search result. + reasonID (int): The reason ID for the search result. + reasonTitle (str): The reason title for the search result. + type (str): The type of search result (tag). + tag (str): The title of the tag. + tagType (int): The type ID of the tag. + tagValue (int): The value of the tag. + thumb (str): The URL for the thumbnail of the tag (if available). + """ + TAG = 'Directory' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.count = utils.cast(int, data.attrib.get('count')) + self.filter = data.attrib.get('filter') + self.id = utils.cast(int, data.attrib.get('id')) + self.key = data.attrib.get('key') + self.librarySectionID = utils.cast(int, data.attrib.get('librarySectionID')) + self.librarySectionKey = data.attrib.get('librarySectionKey') + self.librarySectionTitle = data.attrib.get('librarySectionTitle') + self.librarySectionType = utils.cast(int, data.attrib.get('librarySectionType')) + self.reason = data.attrib.get('reason') + self.reasonID = utils.cast(int, data.attrib.get('reasonID')) + self.reasonTitle = data.attrib.get('reasonTitle') + self.type = data.attrib.get('type') + self.tag = data.attrib.get('tag') + self.tagType = utils.cast(int, data.attrib.get('tagType')) + self.tagValue = utils.cast(int, data.attrib.get('tagValue')) + self.thumb = data.attrib.get('thumb') + + def items(self, *args, **kwargs): + """ Return the list of items within this tag. """ + if not self.key: + raise BadRequest('Key is not defined for this tag: %s' % self.tag) + return self.fetchItems(self.key) + + +@utils.registerPlexObject +class Tag(HubMediaTag): + """ Represents a single Tag hub search media tag. + + Attributes: + TAGTYPE (int): 0 + """ + TAGTYPE = 0 + + +@utils.registerPlexObject +class Genre(HubMediaTag): + """ Represents a single Genre hub search media tag. + + Attributes: + TAGTYPE (int): 1 + """ + TAGTYPE = 1 + + +@utils.registerPlexObject +class Director(HubMediaTag): + """ Represents a single Director hub search media tag. + + Attributes: + TAGTYPE (int): 4 + """ + TAGTYPE = 4 + + +@utils.registerPlexObject +class Actor(HubMediaTag): + """ Represents a single Actor hub search media tag. + + Attributes: + TAGTYPE (int): 6 + """ + TAGTYPE = 6 + + +@utils.registerPlexObject +class AutoTag(HubMediaTag): + """ Represents a single AutoTag hub search media tag. + + Attributes: + TAGTYPE (int): 207 + """ + TAGTYPE = 207 + + +@utils.registerPlexObject +class Place(HubMediaTag): + """ Represents a single Place hub search media tag. + + Attributes: + TAGTYPE (int): 400 + """ + TAGTYPE = 400 + + +@utils.registerPlexObject +class Station(PlexObject): + """ Represents the Station area in the MusicSection. + + Attributes: + TITLE (str): 'Stations' + TYPE (str): 'station' + hubIdentifier (str): Unknown. + size (int): Number of items found. + title (str): Title of this Hub. + type (str): Type of items in the Hub. + more (str): Unknown. + style (str): Unknown + items (str): List of items in the Hub. + """ + TITLE = 'Stations' + TYPE = 'station' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.hubIdentifier = data.attrib.get('hubIdentifier') + self.size = utils.cast(int, data.attrib.get('size')) + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + self.more = data.attrib.get('more') + self.style = data.attrib.get('style') + self.items = self.findItems(data) + + def __len__(self): + return self.size + + +class FilteringType(PlexObject): + """ Represents a single filtering Type object for a library. + + Attributes: + TAG (str): 'Type' + active (bool): True if this filter type is currently active. + fields (List<:class:`~plexapi.library.FilteringField`>): List of field objects. + filters (List<:class:`~plexapi.library.FilteringFilter`>): List of filter objects. + key (str): The API URL path for the libtype filter. + sorts (List<:class:`~plexapi.library.FilteringSort`>): List of sort objects. + title (str): The title for the libtype filter. + type (str): The libtype for the filter. + """ + TAG = 'Type' + + def __repr__(self): + _type = self._clean(self.firstAttr('type')) + return '<%s>' % ':'.join([p for p in [self.__class__.__name__, _type] if p]) + + def _loadData(self, data): + self._data = data + self.active = utils.cast(bool, data.attrib.get('active', '0')) + self.fields = self.findItems(data, FilteringField) + self.filters = self.findItems(data, FilteringFilter) + self.key = data.attrib.get('key') + self.sorts = self.findItems(data, FilteringSort) + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + + # Add additional manual sorts and fields which are available + # but not exposed on the Plex server + self.sorts += self._manualSorts() + self.fields += self._manualFields() + + def _manualSorts(self): + """ Manually add additional sorts which are available + but not exposed on the Plex server. + """ + # Sorts: key, dir, title + additionalSorts = [ + ('guid', 'asc', 'Guid'), + ('id', 'asc', 'Rating Key'), + ('index', 'asc', '%s Number' % self.type.capitalize()), + ('summary', 'asc', 'Summary'), + ('tagline', 'asc', 'Tagline'), + ('updatedAt', 'asc', 'Date Updated') + ] + + if self.type == 'season': + additionalSorts.extend([ + ('titleSort', 'asc', 'Title') + ]) + elif self.type == 'track': + # Don't know what this is but it is valid + additionalSorts.extend([ + ('absoluteIndex', 'asc', 'Absolute Index') + ]) + elif self.type == 'photo': + additionalSorts.extend([ + ('viewUpdatedAt', 'desc', 'View Updated At') + ]) + elif self.type == 'collection': + additionalSorts.extend([ + ('addedAt', 'asc', 'Date Added') + ]) + + manualSorts = [] + for sortField, sortDir, sortTitle in additionalSorts: + sortXML = ('<Sort defaultDirection="%s" descKey="%s:desc" key="%s" title="%s" />' + % (sortDir, sortField, sortField, sortTitle)) + manualSorts.append(self._manuallyLoadXML(sortXML, FilteringSort)) + + return manualSorts + + def _manualFields(self): + """ Manually add additional fields which are available + but not exposed on the Plex server. + """ + # Fields: key, type, title + additionalFields = [ + ('guid', 'string', 'Guid'), + ('id', 'integer', 'Rating Key'), + ('index', 'integer', '%s Number' % self.type.capitalize()), + ('lastRatedAt', 'date', '%s Last Rated' % self.type.capitalize()), + ('updatedAt', 'date', 'Date Updated') + ] + + if self.type == 'movie': + additionalFields.extend([ + ('audienceRating', 'integer', 'Audience Rating'), + ('rating', 'integer', 'Critic Rating'), + ('viewOffset', 'integer', 'View Offset') + ]) + elif self.type == 'show': + additionalFields.extend([ + ('audienceRating', 'integer', 'Audience Rating'), + ('originallyAvailableAt', 'date', 'Show Release Date'), + ('rating', 'integer', 'Critic Rating'), + ('unviewedLeafCount', 'integer', 'Episode Unplayed Count') + ]) + elif self.type == 'season': + additionalFields.extend([ + ('addedAt', 'date', 'Date Season Added'), + ('unviewedLeafCount', 'integer', 'Episode Unplayed Count'), + ('year', 'integer', 'Season Year') + ]) + elif self.type == 'episode': + additionalFields.extend([ + ('audienceRating', 'integer', 'Audience Rating'), + ('duration', 'integer', 'Duration'), + ('rating', 'integer', 'Critic Rating'), + ('viewOffset', 'integer', 'View Offset') + ]) + elif self.type == 'track': + additionalFields.extend([ + ('duration', 'integer', 'Duration'), + ('viewOffset', 'integer', 'View Offset') + ]) + elif self.type == 'collection': + additionalFields.extend([ + ('addedAt', 'date', 'Date Added') + ]) + + prefix = '' if self.type == 'movie' else self.type + '.' + + manualFields = [] + for field, fieldType, fieldTitle in additionalFields: + fieldXML = ('<Field key="%s%s" title="%s" type="%s"/>' + % (prefix, field, fieldTitle, fieldType)) + manualFields.append(self._manuallyLoadXML(fieldXML, FilteringField)) + + return manualFields + + +class FilteringFilter(PlexObject): + """ Represents a single Filter object for a :class:`~plexapi.library.FilteringType`. + + Attributes: + TAG (str): 'Filter' + filter (str): The key for the filter. + filterType (str): The :class:`~plexapi.library.FilteringFieldType` type (string, boolean, integer, date, etc). + key (str): The API URL path for the filter. + title (str): The title of the filter. + type (str): 'filter' + """ + TAG = 'Filter' + + def _loadData(self, data): + self._data = data + self.filter = data.attrib.get('filter') + self.filterType = data.attrib.get('filterType') + self.key = data.attrib.get('key') + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + + +class FilteringSort(PlexObject): + """ Represents a single Sort object for a :class:`~plexapi.library.FilteringType`. + + Attributes: + TAG (str): 'Sort' + active (bool): True if the sort is currently active. + activeDirection (str): The currently active sorting direction. + default (str): The currently active default sorting direction. + defaultDirection (str): The default sorting direction. + descKey (str): The URL key for sorting with desc. + firstCharacterKey (str): API URL path for first character endpoint. + key (str): The URL key for the sorting. + title (str): The title of the sorting. + """ + TAG = 'Sort' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.active = utils.cast(bool, data.attrib.get('active', '0')) + self.activeDirection = data.attrib.get('activeDirection') + self.default = data.attrib.get('default') + self.defaultDirection = data.attrib.get('defaultDirection') + self.descKey = data.attrib.get('descKey') + self.firstCharacterKey = data.attrib.get('firstCharacterKey') + self.key = data.attrib.get('key') + self.title = data.attrib.get('title') + + +class FilteringField(PlexObject): + """ Represents a single Field object for a :class:`~plexapi.library.FilteringType`. + + Attributes: + TAG (str): 'Field' + key (str): The URL key for the filter field. + title (str): The title of the filter field. + type (str): The :class:`~plexapi.library.FilteringFieldType` type (string, boolean, integer, date, etc). + subType (str): The subtype of the filter (decade, rating, etc). + """ + TAG = 'Field' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.key = data.attrib.get('key') + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + self.subType = data.attrib.get('subType') + + +class FilteringFieldType(PlexObject): + """ Represents a single FieldType for library filtering. + + Attributes: + TAG (str): 'FieldType' + type (str): The filtering data type (string, boolean, integer, date, etc). + operators (List<:class:`~plexapi.library.FilteringOperator`>): List of operator objects. + """ + TAG = 'FieldType' + + def __repr__(self): + _type = self._clean(self.firstAttr('type')) + return '<%s>' % ':'.join([p for p in [self.__class__.__name__, _type] if p]) + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.type = data.attrib.get('type') + self.operators = self.findItems(data, FilteringOperator) + + +class FilteringOperator(PlexObject): + """ Represents an single Operator for a :class:`~plexapi.library.FilteringFieldType`. + + Attributes: + TAG (str): 'Operator' + key (str): The URL key for the operator. + title (str): The title of the operator. + """ + TAG = 'Operator' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self.key = data.attrib.get('key') + self.title = data.attrib.get('title') + + +class FilterChoice(PlexObject): + """ Represents a single FilterChoice object. + These objects are gathered when using filters while searching for library items and is the + object returned in the result set of :func:`~plexapi.library.LibrarySection.listFilterChoices`. + + Attributes: + TAG (str): 'Directory' + fastKey (str): API URL path to quickly list all items with this filter choice. + (/library/sections/<section>/all?genre=<key>) + key (str): The id value of this filter choice. + thumb (str): Thumbnail URL for the filter choice. + title (str): The title of the filter choice. + type (str): The filter type (genre, contentRating, etc). + """ + TAG = 'Directory' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.fastKey = data.attrib.get('fastKey') + self.key = data.attrib.get('key') + self.thumb = data.attrib.get('thumb') + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + + +class Folder(PlexObject): + """ Represents a Folder inside a library. + + Attributes: + key (str): Url key for folder. + title (str): Title of folder. + """ + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self.key = data.attrib.get('key') + self.title = data.attrib.get('title') + + def subfolders(self): + """ Returns a list of available :class:`~plexapi.library.Folder` for this folder. + Continue down subfolders until a mediaType is found. + """ + if self.key.startswith('/library/metadata'): + return self.fetchItems(self.key) + else: + return self.fetchItems(self.key, Folder) + + def allSubfolders(self): + """ Returns a list of all available :class:`~plexapi.library.Folder` for this folder. + Only returns :class:`~plexapi.library.Folder`. + """ + folders = [] + for folder in self.subfolders(): + if not folder.key.startswith('/library/metadata'): + folders.append(folder) + while True: + for subfolder in folder.subfolders(): + if not subfolder.key.startswith('/library/metadata'): + folders.append(subfolder) + continue + break + return folders + + +class FirstCharacter(PlexObject): + """ Represents a First Character element from a library. + + Attributes: + key (str): Url key for character. + size (str): Total amount of library items starting with this character. + title (str): Character (#, !, A, B, C, ...). + """ + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.key = data.attrib.get('key') + self.size = data.attrib.get('size') + self.title = data.attrib.get('title') + + +@utils.registerPlexObject +class Path(PlexObject): + """ Represents a single directory Path. + + Attributes: + TAG (str): 'Path' + + home (bool): True if the path is the home directory + key (str): API URL (/services/browse/<base64path>) + network (bool): True if path is a network location + path (str): Full path to folder + title (str): Folder name + """ + TAG = 'Path' + + def _loadData(self, data): + self.home = utils.cast(bool, data.attrib.get('home')) + self.key = data.attrib.get('key') + self.network = utils.cast(bool, data.attrib.get('network')) + self.path = data.attrib.get('path') + self.title = data.attrib.get('title') + + def browse(self, includeFiles=True): + """ Alias for :func:`~plexapi.server.PlexServer.browse`. """ + return self._server.browse(self, includeFiles) + + def walk(self): + """ Alias for :func:`~plexapi.server.PlexServer.walk`. """ + for path, paths, files in self._server.walk(self): + yield path, paths, files + + +@utils.registerPlexObject +class File(PlexObject): + """ Represents a single File. + + Attributes: + TAG (str): 'File' + + key (str): API URL (/services/browse/<base64path>) + path (str): Full path to file + title (str): File name + """ + TAG = 'File' + + def _loadData(self, data): + self.key = data.attrib.get('key') + self.path = data.attrib.get('path') + self.title = data.attrib.get('title') diff --git a/service.plexskipintro/plexapi/media.py b/service.plexskipintro/plexapi/media.py new file mode 100644 index 0000000000..95385c4a2f --- /dev/null +++ b/service.plexskipintro/plexapi/media.py @@ -0,0 +1,1088 @@ +# -*- coding: utf-8 -*- + +import xml +from urllib.parse import quote_plus + +from plexapi import log, settings, utils +from plexapi.base import PlexObject +from plexapi.exceptions import BadRequest + + +@utils.registerPlexObject +class Media(PlexObject): + """ Container object for all MediaPart objects. Provides useful data about the + video or audio this media belong to such as video framerate, resolution, etc. + + Attributes: + TAG (str): 'Media' + aspectRatio (float): The aspect ratio of the media (ex: 2.35). + audioChannels (int): The number of audio channels of the media (ex: 6). + audioCodec (str): The audio codec of the media (ex: ac3). + audioProfile (str): The audio profile of the media (ex: dts). + bitrate (int): The bitrate of the media (ex: 1624). + container (str): The container of the media (ex: avi). + duration (int): The duration of the media in milliseconds (ex: 6990483). + height (int): The height of the media in pixels (ex: 256). + id (int): The unique ID for this media on the server. + has64bitOffsets (bool): True if video has 64 bit offsets. + optimizedForStreaming (bool): True if video is optimized for streaming. + parts (List<:class:`~plexapi.media.MediaPart`>): List of media part objects. + proxyType (int): Equals 42 for optimized versions. + target (str): The media version target name. + title (str): The title of the media. + videoCodec (str): The video codec of the media (ex: ac3). + videoFrameRate (str): The video frame rate of the media (ex: 24p). + videoProfile (str): The video profile of the media (ex: high). + videoResolution (str): The video resolution of the media (ex: sd). + width (int): The width of the video in pixels (ex: 608). + + <Photo_only_attributes>: The following attributes are only available for photos. + + * aperture (str): The apeture used to take the photo. + * exposure (str): The exposure used to take the photo. + * iso (int): The iso used to take the photo. + * lens (str): The lens used to take the photo. + * make (str): The make of the camera used to take the photo. + * model (str): The model of the camera used to take the photo. + """ + TAG = 'Media' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.aspectRatio = utils.cast(float, data.attrib.get('aspectRatio')) + self.audioChannels = utils.cast(int, data.attrib.get('audioChannels')) + self.audioCodec = data.attrib.get('audioCodec') + self.audioProfile = data.attrib.get('audioProfile') + self.bitrate = utils.cast(int, data.attrib.get('bitrate')) + self.container = data.attrib.get('container') + self.duration = utils.cast(int, data.attrib.get('duration')) + self.height = utils.cast(int, data.attrib.get('height')) + self.id = utils.cast(int, data.attrib.get('id')) + self.has64bitOffsets = utils.cast(bool, data.attrib.get('has64bitOffsets')) + self.optimizedForStreaming = utils.cast(bool, data.attrib.get('optimizedForStreaming')) + self.parts = self.findItems(data, MediaPart) + self.proxyType = utils.cast(int, data.attrib.get('proxyType')) + self.target = data.attrib.get('target') + self.title = data.attrib.get('title') + self.videoCodec = data.attrib.get('videoCodec') + self.videoFrameRate = data.attrib.get('videoFrameRate') + self.videoProfile = data.attrib.get('videoProfile') + self.videoResolution = data.attrib.get('videoResolution') + self.width = utils.cast(int, data.attrib.get('width')) + + if self._isChildOf(etag='Photo'): + self.aperture = data.attrib.get('aperture') + self.exposure = data.attrib.get('exposure') + self.iso = utils.cast(int, data.attrib.get('iso')) + self.lens = data.attrib.get('lens') + self.make = data.attrib.get('make') + self.model = data.attrib.get('model') + + parent = self._parent() + self._parentKey = parent.key + + @property + def isOptimizedVersion(self): + """ Returns True if the media is a Plex optimized version. """ + return self.proxyType == utils.SEARCHTYPES['optimizedVersion'] + + def delete(self): + part = '%s/media/%s' % (self._parentKey, self.id) + try: + return self._server.query(part, method=self._server._session.delete) + except BadRequest: + log.error("Failed to delete %s. This could be because you havn't allowed " + "items to be deleted" % part) + raise + + +@utils.registerPlexObject +class MediaPart(PlexObject): + """ Represents a single media part (often a single file) for the media this belongs to. + + Attributes: + TAG (str): 'Part' + accessible (bool): True if the file is accessible. + audioProfile (str): The audio profile of the file. + container (str): The container type of the file (ex: avi). + decision (str): Unknown. + deepAnalysisVersion (int): The Plex deep analysis version for the file. + duration (int): The duration of the file in milliseconds. + exists (bool): True if the file exists. + file (str): The path to this file on disk (ex: /media/Movies/Cars (2006)/Cars (2006).mkv) + has64bitOffsets (bool): True if the file has 64 bit offsets. + hasThumbnail (bool): True if the file (track) has an embedded thumbnail. + id (int): The unique ID for this media part on the server. + indexes (str, None): sd if the file has generated preview (BIF) thumbnails. + key (str): API URL (ex: /library/parts/46618/1389985872/file.mkv). + optimizedForStreaming (bool): True if the file is optimized for streaming. + packetLength (int): The packet length of the file. + requiredBandwidths (str): The required bandwidths to stream the file. + size (int): The size of the file in bytes (ex: 733884416). + streams (List<:class:`~plexapi.media.MediaPartStream`>): List of stream objects. + syncItemId (int): The unique ID for this media part if it is synced. + syncState (str): The sync state for this media part. + videoProfile (str): The video profile of the file. + """ + TAG = 'Part' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.accessible = utils.cast(bool, data.attrib.get('accessible')) + self.audioProfile = data.attrib.get('audioProfile') + self.container = data.attrib.get('container') + self.decision = data.attrib.get('decision') + self.deepAnalysisVersion = utils.cast(int, data.attrib.get('deepAnalysisVersion')) + self.duration = utils.cast(int, data.attrib.get('duration')) + self.exists = utils.cast(bool, data.attrib.get('exists')) + self.file = data.attrib.get('file') + self.has64bitOffsets = utils.cast(bool, data.attrib.get('has64bitOffsets')) + self.hasThumbnail = utils.cast(bool, data.attrib.get('hasThumbnail')) + self.id = utils.cast(int, data.attrib.get('id')) + self.indexes = data.attrib.get('indexes') + self.key = data.attrib.get('key') + self.optimizedForStreaming = utils.cast(bool, data.attrib.get('optimizedForStreaming')) + self.packetLength = utils.cast(int, data.attrib.get('packetLength')) + self.requiredBandwidths = data.attrib.get('requiredBandwidths') + self.size = utils.cast(int, data.attrib.get('size')) + self.streams = self._buildStreams(data) + self.syncItemId = utils.cast(int, data.attrib.get('syncItemId')) + self.syncState = data.attrib.get('syncState') + self.videoProfile = data.attrib.get('videoProfile') + + def _buildStreams(self, data): + streams = [] + for cls in (VideoStream, AudioStream, SubtitleStream, LyricStream): + items = self.findItems(data, cls, streamType=cls.STREAMTYPE) + streams.extend(items) + return streams + + @property + def hasPreviewThumbnails(self): + """ Returns True if the media part has generated preview (BIF) thumbnails. """ + return self.indexes == 'sd' + + def videoStreams(self): + """ Returns a list of :class:`~plexapi.media.VideoStream` objects in this MediaPart. """ + return [stream for stream in self.streams if isinstance(stream, VideoStream)] + + def audioStreams(self): + """ Returns a list of :class:`~plexapi.media.AudioStream` objects in this MediaPart. """ + return [stream for stream in self.streams if isinstance(stream, AudioStream)] + + def subtitleStreams(self): + """ Returns a list of :class:`~plexapi.media.SubtitleStream` objects in this MediaPart. """ + return [stream for stream in self.streams if isinstance(stream, SubtitleStream)] + + def lyricStreams(self): + """ Returns a list of :class:`~plexapi.media.LyricStream` objects in this MediaPart. """ + return [stream for stream in self.streams if isinstance(stream, LyricStream)] + + def setDefaultAudioStream(self, stream): + """ Set the default :class:`~plexapi.media.AudioStream` for this MediaPart. + + Parameters: + stream (:class:`~plexapi.media.AudioStream`): AudioStream to set as default + """ + if isinstance(stream, AudioStream): + key = "/library/parts/%d?audioStreamID=%d&allParts=1" % (self.id, stream.id) + else: + key = "/library/parts/%d?audioStreamID=%d&allParts=1" % (self.id, stream) + self._server.query(key, method=self._server._session.put) + + def setDefaultSubtitleStream(self, stream): + """ Set the default :class:`~plexapi.media.SubtitleStream` for this MediaPart. + + Parameters: + stream (:class:`~plexapi.media.SubtitleStream`): SubtitleStream to set as default. + """ + if isinstance(stream, SubtitleStream): + key = "/library/parts/%d?subtitleStreamID=%d&allParts=1" % (self.id, stream.id) + else: + key = "/library/parts/%d?subtitleStreamID=%d&allParts=1" % (self.id, stream) + self._server.query(key, method=self._server._session.put) + + def resetDefaultSubtitleStream(self): + """ Set default subtitle of this MediaPart to 'none'. """ + key = "/library/parts/%d?subtitleStreamID=0&allParts=1" % (self.id) + self._server.query(key, method=self._server._session.put) + + +class MediaPartStream(PlexObject): + """ Base class for media streams. These consist of video, audio, subtitles, and lyrics. + + Attributes: + bitrate (int): The bitrate of the stream. + codec (str): The codec of the stream (ex: srt, ac3, mpeg4). + default (bool): True if this is the default stream. + displayTitle (str): The display title of the stream. + extendedDisplayTitle (str): The extended display title of the stream. + key (str): API URL (/library/streams/<id>) + id (int): The unique ID for this stream on the server. + index (int): The index of the stream. + language (str): The language of the stream (ex: English, ไทย). + languageCode (str): The Ascii language code of the stream (ex: eng, tha). + requiredBandwidths (str): The required bandwidths to stream the file. + selected (bool): True if this stream is selected. + streamType (int): The stream type (1= :class:`~plexapi.media.VideoStream`, + 2= :class:`~plexapi.media.AudioStream`, 3= :class:`~plexapi.media.SubtitleStream`). + title (str): The title of the stream. + type (int): Alias for streamType. + """ + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.bitrate = utils.cast(int, data.attrib.get('bitrate')) + self.codec = data.attrib.get('codec') + self.default = utils.cast(bool, data.attrib.get('default')) + self.displayTitle = data.attrib.get('displayTitle') + self.extendedDisplayTitle = data.attrib.get('extendedDisplayTitle') + self.key = data.attrib.get('key') + self.id = utils.cast(int, data.attrib.get('id')) + self.index = utils.cast(int, data.attrib.get('index', '-1')) + self.language = data.attrib.get('language') + self.languageCode = data.attrib.get('languageCode') + self.requiredBandwidths = data.attrib.get('requiredBandwidths') + self.selected = utils.cast(bool, data.attrib.get('selected', '0')) + self.streamType = utils.cast(int, data.attrib.get('streamType')) + self.title = data.attrib.get('title') + self.type = utils.cast(int, data.attrib.get('streamType')) + + +@utils.registerPlexObject +class VideoStream(MediaPartStream): + """ Represents a video stream within a :class:`~plexapi.media.MediaPart`. + + Attributes: + TAG (str): 'Stream' + STREAMTYPE (int): 1 + anamorphic (str): If the video is anamorphic. + bitDepth (int): The bit depth of the video stream (ex: 8). + cabac (int): The context-adaptive binary arithmetic coding. + chromaLocation (str): The chroma location of the video stream. + chromaSubsampling (str): The chroma subsampling of the video stream (ex: 4:2:0). + codecID (str): The codec ID (ex: XVID). + codedHeight (int): The coded height of the video stream in pixels. + codedWidth (int): The coded width of the video stream in pixels. + colorPrimaries (str): The color primaries of the video stream. + colorRange (str): The color range of the video stream. + colorSpace (str): The color space of the video stream (ex: bt2020). + colorTrc (str): The color trc of the video stream. + DOVIBLCompatID (int): Dolby Vision base layer compatibility ID. + DOVIBLPresent (bool): True if Dolby Vision base layer is present. + DOVIELPresent (bool): True if Dolby Vision enhancement layer is present. + DOVILevel (int): Dolby Vision level. + DOVIPresent (bool): True if Dolby Vision is present. + DOVIProfile (int): Dolby Vision profile. + DOVIRPUPresent (bool): True if Dolby Vision reference processing unit is present. + DOVIVersion (float): The Dolby Vision version. + duration (int): The duration of video stream in milliseconds. + frameRate (float): The frame rate of the video stream (ex: 23.976). + frameRateMode (str): The frame rate mode of the video stream. + hasScallingMatrix (bool): True if video stream has a scaling matrix. + height (int): The hight of the video stream in pixels (ex: 1080). + level (int): The codec encoding level of the video stream (ex: 41). + profile (str): The profile of the video stream (ex: asp). + pixelAspectRatio (str): The pixel aspect ratio of the video stream. + pixelFormat (str): The pixel format of the video stream. + refFrames (int): The number of reference frames of the video stream. + scanType (str): The scan type of the video stream (ex: progressive). + streamIdentifier(int): The stream identifier of the video stream. + width (int): The width of the video stream in pixels (ex: 1920). + """ + TAG = 'Stream' + STREAMTYPE = 1 + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + super(VideoStream, self)._loadData(data) + self.anamorphic = data.attrib.get('anamorphic') + self.bitDepth = utils.cast(int, data.attrib.get('bitDepth')) + self.cabac = utils.cast(int, data.attrib.get('cabac')) + self.chromaLocation = data.attrib.get('chromaLocation') + self.chromaSubsampling = data.attrib.get('chromaSubsampling') + self.codecID = data.attrib.get('codecID') + self.codedHeight = utils.cast(int, data.attrib.get('codedHeight')) + self.codedWidth = utils.cast(int, data.attrib.get('codedWidth')) + self.colorPrimaries = data.attrib.get('colorPrimaries') + self.colorRange = data.attrib.get('colorRange') + self.colorSpace = data.attrib.get('colorSpace') + self.colorTrc = data.attrib.get('colorTrc') + self.DOVIBLCompatID = utils.cast(int, data.attrib.get('DOVIBLCompatID')) + self.DOVIBLPresent = utils.cast(bool, data.attrib.get('DOVIBLPresent')) + self.DOVIELPresent = utils.cast(bool, data.attrib.get('DOVIELPresent')) + self.DOVILevel = utils.cast(int, data.attrib.get('DOVILevel')) + self.DOVIPresent = utils.cast(bool, data.attrib.get('DOVIPresent')) + self.DOVIProfile = utils.cast(int, data.attrib.get('DOVIProfile')) + self.DOVIRPUPresent = utils.cast(bool, data.attrib.get('DOVIRPUPresent')) + self.DOVIVersion = utils.cast(float, data.attrib.get('DOVIVersion')) + self.duration = utils.cast(int, data.attrib.get('duration')) + self.frameRate = utils.cast(float, data.attrib.get('frameRate')) + self.frameRateMode = data.attrib.get('frameRateMode') + self.hasScallingMatrix = utils.cast(bool, data.attrib.get('hasScallingMatrix')) + self.height = utils.cast(int, data.attrib.get('height')) + self.level = utils.cast(int, data.attrib.get('level')) + self.profile = data.attrib.get('profile') + self.pixelAspectRatio = data.attrib.get('pixelAspectRatio') + self.pixelFormat = data.attrib.get('pixelFormat') + self.refFrames = utils.cast(int, data.attrib.get('refFrames')) + self.scanType = data.attrib.get('scanType') + self.streamIdentifier = utils.cast(int, data.attrib.get('streamIdentifier')) + self.width = utils.cast(int, data.attrib.get('width')) + + +@utils.registerPlexObject +class AudioStream(MediaPartStream): + """ Represents a audio stream within a :class:`~plexapi.media.MediaPart`. + + Attributes: + TAG (str): 'Stream' + STREAMTYPE (int): 2 + audioChannelLayout (str): The audio channel layout of the audio stream (ex: 5.1(side)). + bitDepth (int): The bit depth of the audio stream (ex: 16). + bitrateMode (str): The bitrate mode of the audio stream (ex: cbr). + channels (int): The number of audio channels of the audio stream (ex: 6). + duration (int): The duration of audio stream in milliseconds. + profile (str): The profile of the audio stream. + samplingRate (int): The sampling rate of the audio stream (ex: xxx) + streamIdentifier (int): The stream identifier of the audio stream. + + <Track_only_attributes>: The following attributes are only available for tracks. + + * albumGain (float): The gain for the album. + * albumPeak (float): The peak for the album. + * albumRange (float): The range for the album. + * endRamp (str): The end ramp for the track. + * gain (float): The gain for the track. + * loudness (float): The loudness for the track. + * lra (float): The lra for the track. + * peak (float): The peak for the track. + * startRamp (str): The start ramp for the track. + """ + TAG = 'Stream' + STREAMTYPE = 2 + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + super(AudioStream, self)._loadData(data) + self.audioChannelLayout = data.attrib.get('audioChannelLayout') + self.bitDepth = utils.cast(int, data.attrib.get('bitDepth')) + self.bitrateMode = data.attrib.get('bitrateMode') + self.channels = utils.cast(int, data.attrib.get('channels')) + self.duration = utils.cast(int, data.attrib.get('duration')) + self.profile = data.attrib.get('profile') + self.samplingRate = utils.cast(int, data.attrib.get('samplingRate')) + self.streamIdentifier = utils.cast(int, data.attrib.get('streamIdentifier')) + + if self._isChildOf(etag='Track'): + self.albumGain = utils.cast(float, data.attrib.get('albumGain')) + self.albumPeak = utils.cast(float, data.attrib.get('albumPeak')) + self.albumRange = utils.cast(float, data.attrib.get('albumRange')) + self.endRamp = data.attrib.get('endRamp') + self.gain = utils.cast(float, data.attrib.get('gain')) + self.loudness = utils.cast(float, data.attrib.get('loudness')) + self.lra = utils.cast(float, data.attrib.get('lra')) + self.peak = utils.cast(float, data.attrib.get('peak')) + self.startRamp = data.attrib.get('startRamp') + + +@utils.registerPlexObject +class SubtitleStream(MediaPartStream): + """ Represents a audio stream within a :class:`~plexapi.media.MediaPart`. + + Attributes: + TAG (str): 'Stream' + STREAMTYPE (int): 3 + container (str): The container of the subtitle stream. + forced (bool): True if this is a forced subtitle. + format (str): The format of the subtitle stream (ex: srt). + headerCommpression (str): The header compression of the subtitle stream. + transient (str): Unknown. + """ + TAG = 'Stream' + STREAMTYPE = 3 + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + super(SubtitleStream, self)._loadData(data) + self.container = data.attrib.get('container') + self.forced = utils.cast(bool, data.attrib.get('forced', '0')) + self.format = data.attrib.get('format') + self.headerCompression = data.attrib.get('headerCompression') + self.transient = data.attrib.get('transient') + + +class LyricStream(MediaPartStream): + """ Represents a lyric stream within a :class:`~plexapi.media.MediaPart`. + + Attributes: + TAG (str): 'Stream' + STREAMTYPE (int): 4 + format (str): The format of the lyric stream (ex: lrc). + minLines (int): The minimum number of lines in the (timed) lyric stream. + provider (str): The provider of the lyric stream (ex: com.plexapp.agents.lyricfind). + timed (bool): True if the lyrics are timed to the track. + """ + TAG = 'Stream' + STREAMTYPE = 4 + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + super(LyricStream, self)._loadData(data) + self.format = data.attrib.get('format') + self.minLines = utils.cast(int, data.attrib.get('minLines')) + self.provider = data.attrib.get('provider') + self.timed = utils.cast(bool, data.attrib.get('timed', '0')) + + +@utils.registerPlexObject +class Session(PlexObject): + """ Represents a current session. + + Attributes: + TAG (str): 'Session' + id (str): The unique identifier for the session. + bandwidth (int): The Plex streaming brain reserved bandwidth for the session. + location (str): The location of the session (lan, wan, or cellular) + """ + TAG = 'Session' + + def _loadData(self, data): + self.id = data.attrib.get('id') + self.bandwidth = utils.cast(int, data.attrib.get('bandwidth')) + self.location = data.attrib.get('location') + + +@utils.registerPlexObject +class TranscodeSession(PlexObject): + """ Represents a current transcode session. + + Attributes: + TAG (str): 'TranscodeSession' + audioChannels (int): The number of audio channels of the transcoded media. + audioCodec (str): The audio codec of the transcoded media. + audioDecision (str): The transcode decision for the audio stream. + complete (bool): True if the transcode is complete. + container (str): The container of the transcoded media. + context (str): The context for the transcode sesson. + duration (int): The duration of the transcoded media in milliseconds. + height (int): The height of the transcoded media in pixels. + key (str): API URL (ex: /transcode/sessions/<id>). + maxOffsetAvailable (float): Unknown. + minOffsetAvailable (float): Unknown. + progress (float): The progress percentage of the transcode. + protocol (str): The protocol of the transcode. + remaining (int): Unknown. + size (int): The size of the transcoded media in bytes. + sourceAudioCodec (str): The audio codec of the source media. + sourceVideoCodec (str): The video codec of the source media. + speed (float): The speed of the transcode. + subtitleDecision (str): The transcode decision for the subtitle stream + throttled (bool): True if the transcode is throttled. + timestamp (int): The epoch timestamp when the transcode started. + transcodeHwDecoding (str): The hardware transcoding decoder engine. + transcodeHwDecodingTitle (str): The title of the hardware transcoding decoder engine. + transcodeHwEncoding (str): The hardware transcoding encoder engine. + transcodeHwEncodingTitle (str): The title of the hardware transcoding encoder engine. + transcodeHwFullPipeline (str): True if hardware decoding and encoding is being used for the transcode. + transcodeHwRequested (str): True if hardware transcoding was requested for the transcode. + videoCodec (str): The video codec of the transcoded media. + videoDecision (str): The transcode decision for the video stream. + width (str): The width of the transcoded media in pixels. + """ + TAG = 'TranscodeSession' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.audioChannels = utils.cast(int, data.attrib.get('audioChannels')) + self.audioCodec = data.attrib.get('audioCodec') + self.audioDecision = data.attrib.get('audioDecision') + self.complete = utils.cast(bool, data.attrib.get('complete', '0')) + self.container = data.attrib.get('container') + self.context = data.attrib.get('context') + self.duration = utils.cast(int, data.attrib.get('duration')) + self.height = utils.cast(int, data.attrib.get('height')) + self.key = data.attrib.get('key') + self.maxOffsetAvailable = utils.cast(float, data.attrib.get('maxOffsetAvailable')) + self.minOffsetAvailable = utils.cast(float, data.attrib.get('minOffsetAvailable')) + self.progress = utils.cast(float, data.attrib.get('progress')) + self.protocol = data.attrib.get('protocol') + self.remaining = utils.cast(int, data.attrib.get('remaining')) + self.size = utils.cast(int, data.attrib.get('size')) + self.sourceAudioCodec = data.attrib.get('sourceAudioCodec') + self.sourceVideoCodec = data.attrib.get('sourceVideoCodec') + self.speed = utils.cast(float, data.attrib.get('speed')) + self.subtitleDecision = data.attrib.get('subtitleDecision') + self.throttled = utils.cast(bool, data.attrib.get('throttled', '0')) + self.timestamp = utils.cast(float, data.attrib.get('timeStamp')) + self.transcodeHwDecoding = data.attrib.get('transcodeHwDecoding') + self.transcodeHwDecodingTitle = data.attrib.get('transcodeHwDecodingTitle') + self.transcodeHwEncoding = data.attrib.get('transcodeHwEncoding') + self.transcodeHwEncodingTitle = data.attrib.get('transcodeHwEncodingTitle') + self.transcodeHwFullPipeline = utils.cast(bool, data.attrib.get('transcodeHwFullPipeline', '0')) + self.transcodeHwRequested = utils.cast(bool, data.attrib.get('transcodeHwRequested', '0')) + self.videoCodec = data.attrib.get('videoCodec') + self.videoDecision = data.attrib.get('videoDecision') + self.width = utils.cast(int, data.attrib.get('width')) + + +@utils.registerPlexObject +class TranscodeJob(PlexObject): + """ Represents an Optimizing job. + TrancodeJobs are the process for optimizing conversions. + Active or paused optimization items. Usually one item as a time.""" + TAG = 'TranscodeJob' + + def _loadData(self, data): + self._data = data + self.generatorID = data.attrib.get('generatorID') + self.key = data.attrib.get('key') + self.progress = data.attrib.get('progress') + self.ratingKey = data.attrib.get('ratingKey') + self.size = data.attrib.get('size') + self.targetTagID = data.attrib.get('targetTagID') + self.thumb = data.attrib.get('thumb') + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + + +@utils.registerPlexObject +class Optimized(PlexObject): + """ Represents a Optimized item. + Optimized items are optimized and queued conversions items.""" + TAG = 'Item' + + def _loadData(self, data): + self._data = data + self.id = data.attrib.get('id') + self.composite = data.attrib.get('composite') + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + self.target = data.attrib.get('target') + self.targetTagID = data.attrib.get('targetTagID') + + def items(self): + """ Returns a list of all :class:`~plexapi.media.Video` objects + in this optimized item. + """ + key = '%s/%s/items' % (self._initpath, self.id) + return self.fetchItems(key) + + def remove(self): + """ Remove an Optimized item""" + key = '%s/%s' % (self._initpath, self.id) + self._server.query(key, method=self._server._session.delete) + + def rename(self, title): + """ Rename an Optimized item""" + key = '%s/%s?Item[title]=%s' % (self._initpath, self.id, title) + self._server.query(key, method=self._server._session.put) + + def reprocess(self, ratingKey): + """ Reprocess a removed Conversion item that is still a listed Optimize item""" + key = '%s/%s/%s/enable' % (self._initpath, self.id, ratingKey) + self._server.query(key, method=self._server._session.put) + + +@utils.registerPlexObject +class Conversion(PlexObject): + """ Represents a Conversion item. + Conversions are items queued for optimization or being actively optimized.""" + TAG = 'Video' + + def _loadData(self, data): + self._data = data + self.addedAt = data.attrib.get('addedAt') + self.art = data.attrib.get('art') + self.chapterSource = data.attrib.get('chapterSource') + self.contentRating = data.attrib.get('contentRating') + self.duration = data.attrib.get('duration') + self.generatorID = data.attrib.get('generatorID') + self.generatorType = data.attrib.get('generatorType') + self.guid = data.attrib.get('guid') + self.key = data.attrib.get('key') + self.lastViewedAt = data.attrib.get('lastViewedAt') + self.librarySectionID = data.attrib.get('librarySectionID') + self.librarySectionKey = data.attrib.get('librarySectionKey') + self.librarySectionTitle = data.attrib.get('librarySectionTitle') + self.originallyAvailableAt = data.attrib.get('originallyAvailableAt') + self.playQueueItemID = data.attrib.get('playQueueItemID') + self.playlistID = data.attrib.get('playlistID') + self.primaryExtraKey = data.attrib.get('primaryExtraKey') + self.rating = data.attrib.get('rating') + self.ratingKey = data.attrib.get('ratingKey') + self.studio = data.attrib.get('studio') + self.summary = data.attrib.get('summary') + self.tagline = data.attrib.get('tagline') + self.target = data.attrib.get('target') + self.thumb = data.attrib.get('thumb') + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + self.updatedAt = data.attrib.get('updatedAt') + self.userID = data.attrib.get('userID') + self.username = data.attrib.get('username') + self.viewOffset = data.attrib.get('viewOffset') + self.year = data.attrib.get('year') + + def remove(self): + """ Remove Conversion from queue """ + key = '/playlists/%s/items/%s/%s/disable' % (self.playlistID, self.generatorID, self.ratingKey) + self._server.query(key, method=self._server._session.put) + + def move(self, after): + """ Move Conversion items position in queue + after (int): Place item after specified playQueueItemID. '-1' is the active conversion. + + Example: + Move 5th conversion Item to active conversion + conversions[4].move('-1') + + Move 4th conversion Item to 3rd in conversion queue + conversions[3].move(conversions[1].playQueueItemID) + """ + + key = '%s/items/%s/move?after=%s' % (self._initpath, self.playQueueItemID, after) + self._server.query(key, method=self._server._session.put) + + +class MediaTag(PlexObject): + """ Base class for media tags used for filtering and searching your library + items or navigating the metadata of media items in your library. Tags are + the construct used for things such as Country, Director, Genre, etc. + + Attributes: + filter (str): The library filter for the tag. + id (id): Tag ID (This seems meaningless except to use it as a unique id). + key (str): API URL (/library/section/<librarySectionID>/all?<filter>). + role (str): The name of the character role for :class:`~plexapi.media.Role` only. + tag (str): Name of the tag. This will be Animation, SciFi etc for Genres. The name of + person for Directors and Roles (ex: Animation, Stephen Graham, etc). + thumb (str): URL to thumbnail image for :class:`~plexapi.media.Role` only. + """ + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.filter = data.attrib.get('filter') + self.id = utils.cast(int, data.attrib.get('id')) + self.key = data.attrib.get('key') + self.role = data.attrib.get('role') + self.tag = data.attrib.get('tag') + self.thumb = data.attrib.get('thumb') + + parent = self._parent() + self._librarySectionID = utils.cast(int, parent._data.attrib.get('librarySectionID')) + self._librarySectionKey = parent._data.attrib.get('librarySectionKey') + self._librarySectionTitle = parent._data.attrib.get('librarySectionTitle') + self._parentType = parent.TYPE + + if self._librarySectionKey and self.filter: + self.key = '%s/all?%s&type=%s' % ( + self._librarySectionKey, self.filter, utils.searchType(self._parentType)) + + def items(self): + """ Return the list of items within this tag. """ + if not self.key: + raise BadRequest('Key is not defined for this tag: %s. ' + 'Reload the parent object.' % self.tag) + return self.fetchItems(self.key) + + +@utils.registerPlexObject +class Collection(MediaTag): + """ Represents a single Collection media tag. + + Attributes: + TAG (str): 'Collection' + FILTER (str): 'collection' + """ + TAG = 'Collection' + FILTER = 'collection' + + def collection(self): + """ Return the :class:`~plexapi.collection.Collection` object for this collection tag. + """ + key = '%s/collections' % self._librarySectionKey + return self.fetchItem(key, etag='Directory', index=self.id) + + +@utils.registerPlexObject +class Country(MediaTag): + """ Represents a single Country media tag. + + Attributes: + TAG (str): 'Country' + FILTER (str): 'country' + """ + TAG = 'Country' + FILTER = 'country' + + +@utils.registerPlexObject +class Director(MediaTag): + """ Represents a single Director media tag. + + Attributes: + TAG (str): 'Director' + FILTER (str): 'director' + """ + TAG = 'Director' + FILTER = 'director' + + +@utils.registerPlexObject +class Format(MediaTag): + """ Represents a single Format media tag. + + Attributes: + TAG (str): 'Format' + FILTER (str): 'format' + """ + TAG = 'Format' + FILTER = 'format' + + +@utils.registerPlexObject +class Genre(MediaTag): + """ Represents a single Genre media tag. + + Attributes: + TAG (str): 'Genre' + FILTER (str): 'genre' + """ + TAG = 'Genre' + FILTER = 'genre' + + +@utils.registerPlexObject +class Label(MediaTag): + """ Represents a single Label media tag. + + Attributes: + TAG (str): 'Label' + FILTER (str): 'label' + """ + TAG = 'Label' + FILTER = 'label' + + +@utils.registerPlexObject +class Mood(MediaTag): + """ Represents a single Mood media tag. + + Attributes: + TAG (str): 'Mood' + FILTER (str): 'mood' + """ + TAG = 'Mood' + FILTER = 'mood' + + +@utils.registerPlexObject +class Producer(MediaTag): + """ Represents a single Producer media tag. + + Attributes: + TAG (str): 'Producer' + FILTER (str): 'producer' + """ + TAG = 'Producer' + FILTER = 'producer' + + +@utils.registerPlexObject +class Role(MediaTag): + """ Represents a single Role (actor/actress) media tag. + + Attributes: + TAG (str): 'Role' + FILTER (str): 'role' + """ + TAG = 'Role' + FILTER = 'role' + + +@utils.registerPlexObject +class Similar(MediaTag): + """ Represents a single Similar media tag. + + Attributes: + TAG (str): 'Similar' + FILTER (str): 'similar' + """ + TAG = 'Similar' + FILTER = 'similar' + + +@utils.registerPlexObject +class Style(MediaTag): + """ Represents a single Style media tag. + + Attributes: + TAG (str): 'Style' + FILTER (str): 'style' + """ + TAG = 'Style' + FILTER = 'style' + + +@utils.registerPlexObject +class Subformat(MediaTag): + """ Represents a single Subformat media tag. + + Attributes: + TAG (str): 'Subformat' + FILTER (str): 'subformat' + """ + TAG = 'Subformat' + FILTER = 'subformat' + + +@utils.registerPlexObject +class Tag(MediaTag): + """ Represents a single Tag media tag. + + Attributes: + TAG (str): 'Tag' + FILTER (str): 'tag' + """ + TAG = 'Tag' + FILTER = 'tag' + + +@utils.registerPlexObject +class Writer(MediaTag): + """ Represents a single Writer media tag. + + Attributes: + TAG (str): 'Writer' + FILTER (str): 'writer' + """ + TAG = 'Writer' + FILTER = 'writer' + + +class GuidTag(PlexObject): + """ Base class for guid tags used only for Guids, as they contain only a string identifier + + Attributes: + id (id): The guid for external metadata sources (e.g. IMDB, TMDB, TVDB). + """ + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.id = data.attrib.get('id') + + +@utils.registerPlexObject +class Guid(GuidTag): + """ Represents a single Guid media tag. + + Attributes: + TAG (str): 'Guid' + """ + TAG = 'Guid' + + +@utils.registerPlexObject +class Review(PlexObject): + """ Represents a single Review for a Movie. + + Attributes: + TAG (str): 'Review' + filter (str): filter for reviews? + id (int): The ID of the review. + image (str): The image uri for the review. + link (str): The url to the online review. + source (str): The source of the review. + tag (str): The name of the reviewer. + text (str): The text of the review. + """ + TAG = 'Review' + + def _loadData(self, data): + self._data = data + self.filter = data.attrib.get('filter') + self.id = utils.cast(int, data.attrib.get('id', 0)) + self.image = data.attrib.get('image') + self.link = data.attrib.get('link') + self.source = data.attrib.get('source') + self.tag = data.attrib.get('tag') + self.text = data.attrib.get('text') + + +class BaseImage(PlexObject): + """ Base class for all Art, Banner, and Poster objects. + + Attributes: + TAG (str): 'Photo' + key (str): API URL (/library/metadata/<ratingkey>). + provider (str): The source of the poster or art. + ratingKey (str): Unique key identifying the poster or art. + selected (bool): True if the poster or art is currently selected. + thumb (str): The URL to retrieve the poster or art thumbnail. + """ + TAG = 'Photo' + + def _loadData(self, data): + self._data = data + self.key = data.attrib.get('key') + self.provider = data.attrib.get('provider') + self.ratingKey = data.attrib.get('ratingKey') + self.selected = utils.cast(bool, data.attrib.get('selected')) + self.thumb = data.attrib.get('thumb') + + def select(self): + key = self._initpath[:-1] + data = '%s?url=%s' % (key, quote_plus(self.ratingKey)) + try: + self._server.query(data, method=self._server._session.put) + except xml.etree.ElementTree.ParseError: + pass + + +class Art(BaseImage): + """ Represents a single Art object. """ + + +class Banner(BaseImage): + """ Represents a single Banner object. """ + + +class Poster(BaseImage): + """ Represents a single Poster object. """ + + +@utils.registerPlexObject +class Chapter(PlexObject): + """ Represents a single Writer media tag. + + Attributes: + TAG (str): 'Chapter' + """ + TAG = 'Chapter' + + def _loadData(self, data): + self._data = data + self.id = utils.cast(int, data.attrib.get('id', 0)) + self.filter = data.attrib.get('filter') # I couldn't filter on it anyways + self.tag = data.attrib.get('tag') + self.title = self.tag + self.index = utils.cast(int, data.attrib.get('index')) + self.start = utils.cast(int, data.attrib.get('startTimeOffset')) + self.end = utils.cast(int, data.attrib.get('endTimeOffset')) + + +@utils.registerPlexObject +class Marker(PlexObject): + """ Represents a single Marker media tag. + + Attributes: + TAG (str): 'Marker' + """ + TAG = 'Marker' + + def __repr__(self): + name = self._clean(self.firstAttr('type')) + start = utils.millisecondToHumanstr(self._clean(self.firstAttr('start'))) + end = utils.millisecondToHumanstr(self._clean(self.firstAttr('end'))) + offsets = '%s-%s' % (start, end) + return '<%s>' % ':'.join([self.__class__.__name__, name, offsets]) + + def _loadData(self, data): + self._data = data + self.id = utils.cast(int, data.attrib.get('id')) + self.type = data.attrib.get('type') + self.start = utils.cast(int, data.attrib.get('startTimeOffset')) + self.end = utils.cast(int, data.attrib.get('endTimeOffset')) + + +@utils.registerPlexObject +class Field(PlexObject): + """ Represents a single Field. + + Attributes: + TAG (str): 'Field' + """ + TAG = 'Field' + + def _loadData(self, data): + self._data = data + self.name = data.attrib.get('name') + self.locked = utils.cast(bool, data.attrib.get('locked')) + + +@utils.registerPlexObject +class SearchResult(PlexObject): + """ Represents a single SearchResult. + + Attributes: + TAG (str): 'SearchResult' + """ + TAG = 'SearchResult' + + def __repr__(self): + name = self._clean(self.firstAttr('name')) + score = self._clean(self.firstAttr('score')) + return '<%s>' % ':'.join([p for p in [self.__class__.__name__, name, score] if p]) + + def _loadData(self, data): + self._data = data + self.guid = data.attrib.get('guid') + self.lifespanEnded = data.attrib.get('lifespanEnded') + self.name = data.attrib.get('name') + self.score = utils.cast(int, data.attrib.get('score')) + self.year = data.attrib.get('year') + + +@utils.registerPlexObject +class Agent(PlexObject): + """ Represents a single Agent. + + Attributes: + TAG (str): 'Agent' + """ + TAG = 'Agent' + + def __repr__(self): + uid = self._clean(self.firstAttr('shortIdentifier')) + return '<%s>' % ':'.join([p for p in [self.__class__.__name__, uid] if p]) + + def _loadData(self, data): + self._data = data + self.hasAttribution = data.attrib.get('hasAttribution') + self.hasPrefs = data.attrib.get('hasPrefs') + self.identifier = data.attrib.get('identifier') + self.primary = data.attrib.get('primary') + self.shortIdentifier = self.identifier.rsplit('.', 1)[1] + if 'mediaType' in self._initpath: + self.name = data.attrib.get('name') + self.languageCode = [] + for code in data: + self.languageCode += [code.attrib.get('code')] + else: + self.mediaTypes = [AgentMediaType(server=self._server, data=d) for d in data] + + def _settings(self): + key = '/:/plugins/%s/prefs' % self.identifier + data = self._server.query(key) + return self.findItems(data, cls=settings.Setting) + + +class AgentMediaType(Agent): + + def __repr__(self): + uid = self._clean(self.firstAttr('name')) + return '<%s>' % ':'.join([p for p in [self.__class__.__name__, uid] if p]) + + def _loadData(self, data): + self.mediaType = utils.cast(int, data.attrib.get('mediaType')) + self.name = data.attrib.get('name') + self.languageCode = [] + for code in data: + self.languageCode += [code.attrib.get('code')] diff --git a/service.plexskipintro/plexapi/mixins.py b/service.plexskipintro/plexapi/mixins.py new file mode 100644 index 0000000000..c9365a4732 --- /dev/null +++ b/service.plexskipintro/plexapi/mixins.py @@ -0,0 +1,645 @@ +# -*- coding: utf-8 -*- +from urllib.parse import parse_qsl, quote_plus, unquote, urlencode, urlsplit + +from plexapi import media, settings, utils +from plexapi.exceptions import BadRequest, NotFound + + +class AdvancedSettingsMixin(object): + """ Mixin for Plex objects that can have advanced settings. """ + + def preferences(self): + """ Returns a list of :class:`~plexapi.settings.Preferences` objects. """ + data = self._server.query(self._details_key) + return self.findItems(data, settings.Preferences, rtag='Preferences') + + def preference(self, pref): + """ Returns a :class:`~plexapi.settings.Preferences` object for the specified pref. + + Parameters: + pref (str): The id of the preference to return. + """ + prefs = self.preferences() + try: + return next(p for p in prefs if p.id == pref) + except StopIteration: + availablePrefs = [p.id for p in prefs] + raise NotFound('Unknown preference "%s" for %s. ' + 'Available preferences: %s' + % (pref, self.TYPE, availablePrefs)) from None + + def editAdvanced(self, **kwargs): + """ Edit a Plex object's advanced settings. """ + data = {} + key = '%s/prefs?' % self.key + preferences = {pref.id: pref for pref in self.preferences() if pref.enumValues} + for settingID, value in list(kwargs.items()): + try: + pref = preferences[settingID] + except KeyError: + raise NotFound('%s not found in %s' % (value, list(preferences.keys()))) + + enumValues = pref.enumValues + if enumValues.get(value, enumValues.get(str(value))): + data[settingID] = value + else: + raise NotFound('%s not found in %s' % (value, list(enumValues))) + url = key + urlencode(data) + self._server.query(url, method=self._server._session.put) + + def defaultAdvanced(self): + """ Edit all of a Plex object's advanced settings to default. """ + data = {} + key = '%s/prefs?' % self.key + for preference in self.preferences(): + data[preference.id] = preference.default + url = key + urlencode(data) + self._server.query(url, method=self._server._session.put) + + +class ArtUrlMixin(object): + """ Mixin for Plex objects that can have a background artwork url. """ + + @property + def artUrl(self): + """ Return the art url for the Plex object. """ + art = self.firstAttr('art', 'grandparentArt') + return self._server.url(art, includeToken=True) if art else None + + +class ArtMixin(ArtUrlMixin): + """ Mixin for Plex objects that can have background artwork. """ + + def arts(self): + """ Returns list of available :class:`~plexapi.media.Art` objects. """ + return self.fetchItems('/library/metadata/%s/arts' % self.ratingKey, cls=media.Art) + + def uploadArt(self, url=None, filepath=None): + """ Upload a background artwork from a url or filepath. + + Parameters: + url (str): The full URL to the image to upload. + filepath (str): The full file path the the image to upload. + """ + if url: + key = '/library/metadata/%s/arts?url=%s' % (self.ratingKey, quote_plus(url)) + self._server.query(key, method=self._server._session.post) + elif filepath: + key = '/library/metadata/%s/arts?' % self.ratingKey + data = open(filepath, 'rb').read() + self._server.query(key, method=self._server._session.post, data=data) + + def setArt(self, art): + """ Set the background artwork for a Plex object. + + Parameters: + art (:class:`~plexapi.media.Art`): The art object to select. + """ + art.select() + + def lockArt(self): + """ Lock the background artwork for a Plex object. """ + self._edit(**{'art.locked': 1}) + + def unlockArt(self): + """ Unlock the background artwork for a Plex object. """ + self._edit(**{'art.locked': 0}) + + +class BannerUrlMixin(object): + """ Mixin for Plex objects that can have a banner url. """ + + @property + def bannerUrl(self): + """ Return the banner url for the Plex object. """ + banner = self.firstAttr('banner') + return self._server.url(banner, includeToken=True) if banner else None + + +class BannerMixin(BannerUrlMixin): + """ Mixin for Plex objects that can have banners. """ + + def banners(self): + """ Returns list of available :class:`~plexapi.media.Banner` objects. """ + return self.fetchItems('/library/metadata/%s/banners' % self.ratingKey, cls=media.Banner) + + def uploadBanner(self, url=None, filepath=None): + """ Upload a banner from a url or filepath. + + Parameters: + url (str): The full URL to the image to upload. + filepath (str): The full file path the the image to upload. + """ + if url: + key = '/library/metadata/%s/banners?url=%s' % (self.ratingKey, quote_plus(url)) + self._server.query(key, method=self._server._session.post) + elif filepath: + key = '/library/metadata/%s/banners?' % self.ratingKey + data = open(filepath, 'rb').read() + self._server.query(key, method=self._server._session.post, data=data) + + def setBanner(self, banner): + """ Set the banner for a Plex object. + + Parameters: + banner (:class:`~plexapi.media.Banner`): The banner object to select. + """ + banner.select() + + def lockBanner(self): + """ Lock the banner for a Plex object. """ + self._edit(**{'banner.locked': 1}) + + def unlockBanner(self): + """ Unlock the banner for a Plex object. """ + self._edit(**{'banner.locked': 0}) + + +class PosterUrlMixin(object): + """ Mixin for Plex objects that can have a poster url. """ + + @property + def thumbUrl(self): + """ Return the thumb url for the Plex object. """ + thumb = self.firstAttr('thumb', 'parentThumb', 'granparentThumb') + return self._server.url(thumb, includeToken=True) if thumb else None + + @property + def posterUrl(self): + """ Alias to self.thumbUrl. """ + return self.thumbUrl + + +class PosterMixin(PosterUrlMixin): + """ Mixin for Plex objects that can have posters. """ + + def posters(self): + """ Returns list of available :class:`~plexapi.media.Poster` objects. """ + return self.fetchItems('/library/metadata/%s/posters' % self.ratingKey, cls=media.Poster) + + def uploadPoster(self, url=None, filepath=None): + """ Upload a poster from a url or filepath. + + Parameters: + url (str): The full URL to the image to upload. + filepath (str): The full file path the the image to upload. + """ + if url: + key = '/library/metadata/%s/posters?url=%s' % (self.ratingKey, quote_plus(url)) + self._server.query(key, method=self._server._session.post) + elif filepath: + key = '/library/metadata/%s/posters?' % self.ratingKey + data = open(filepath, 'rb').read() + self._server.query(key, method=self._server._session.post, data=data) + + def setPoster(self, poster): + """ Set the poster for a Plex object. + + Parameters: + poster (:class:`~plexapi.media.Poster`): The poster object to select. + """ + poster.select() + + def lockPoster(self): + """ Lock the poster for a Plex object. """ + self._edit(**{'thumb.locked': 1}) + + def unlockPoster(self): + """ Unlock the poster for a Plex object. """ + self._edit(**{'thumb.locked': 0}) + + +class RatingMixin(object): + """ Mixin for Plex objects that can have user star ratings. """ + + def rate(self, rating=None): + """ Rate the Plex object. Note: Plex ratings are displayed out of 5 stars (e.g. rating 7.0 = 3.5 stars). + + Parameters: + rating (float, optional): Rating from 0 to 10. Exclude to reset the rating. + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: If the rating is invalid. + """ + if rating is None: + rating = -1 + elif not isinstance(rating, (int, float)) or rating < 0 or rating > 10: + raise BadRequest('Rating must be between 0 to 10.') + key = '/:/rate?key=%s&identifier=com.plexapp.plugins.library&rating=%s' % (self.ratingKey, rating) + self._server.query(key, method=self._server._session.put) + + +class SplitMergeMixin(object): + """ Mixin for Plex objects that can be split and merged. """ + + def split(self): + """ Split duplicated Plex object into separate objects. """ + key = '/library/metadata/%s/split' % self.ratingKey + return self._server.query(key, method=self._server._session.put) + + def merge(self, ratingKeys): + """ Merge other Plex objects into the current object. + + Parameters: + ratingKeys (list): A list of rating keys to merge. + """ + if not isinstance(ratingKeys, list): + ratingKeys = str(ratingKeys).split(',') + + key = '%s/merge?ids=%s' % (self.key, ','.join([str(r) for r in ratingKeys])) + return self._server.query(key, method=self._server._session.put) + + +class UnmatchMatchMixin(object): + """ Mixin for Plex objects that can be unmatched and matched. """ + + def unmatch(self): + """ Unmatches metadata match from object. """ + key = '/library/metadata/%s/unmatch' % self.ratingKey + self._server.query(key, method=self._server._session.put) + + def matches(self, agent=None, title=None, year=None, language=None): + """ Return list of (:class:`~plexapi.media.SearchResult`) metadata matches. + + Parameters: + agent (str): Agent name to be used (imdb, thetvdb, themoviedb, etc.) + title (str): Title of item to search for + year (str): Year of item to search in + language (str) : Language of item to search in + + Examples: + 1. video.matches() + 2. video.matches(title="something", year=2020) + 3. video.matches(title="something") + 4. video.matches(year=2020) + 5. video.matches(title="something", year="") + 6. video.matches(title="", year=2020) + 7. video.matches(title="", year="") + + 1. The default behaviour in Plex Web = no params in plexapi + 2. Both title and year specified by user + 3. Year automatically filled in + 4. Title automatically filled in + 5. Explicitly searches for title with blank year + 6. Explicitly searches for blank title with year + 7. I don't know what the user is thinking... return the same result as 1 + + For 2 to 7, the agent and language is automatically filled in + """ + key = '/library/metadata/%s/matches' % self.ratingKey + params = {'manual': 1} + + if agent and not any([title, year, language]): + params['language'] = self.section().language + params['agent'] = utils.getAgentIdentifier(self.section(), agent) + else: + if any(x is not None for x in [agent, title, year, language]): + if title is None: + params['title'] = self.title + else: + params['title'] = title + + if year is None: + params['year'] = self.year + else: + params['year'] = year + + params['language'] = language or self.section().language + + if agent is None: + params['agent'] = self.section().agent + else: + params['agent'] = utils.getAgentIdentifier(self.section(), agent) + + key = key + '?' + urlencode(params) + data = self._server.query(key, method=self._server._session.get) + return self.findItems(data, initpath=key) + + def fixMatch(self, searchResult=None, auto=False, agent=None): + """ Use match result to update show metadata. + + Parameters: + auto (bool): True uses first match from matches + False allows user to provide the match + searchResult (:class:`~plexapi.media.SearchResult`): Search result from + ~plexapi.base.matches() + agent (str): Agent name to be used (imdb, thetvdb, themoviedb, etc.) + """ + key = '/library/metadata/%s/match' % self.ratingKey + if auto: + autoMatch = self.matches(agent=agent) + if autoMatch: + searchResult = autoMatch[0] + else: + raise NotFound('No matches found using this agent: (%s:%s)' % (agent, autoMatch)) + elif not searchResult: + raise NotFound('fixMatch() requires either auto=True or ' + 'searchResult=:class:`~plexapi.media.SearchResult`.') + + params = {'guid': searchResult.guid, + 'name': searchResult.name} + + data = key + '?' + urlencode(params) + self._server.query(data, method=self._server._session.put) + + +class CollectionMixin(object): + """ Mixin for Plex objects that can have collections. """ + + def addCollection(self, collections, locked=True): + """ Add a collection tag(s). + + Parameters: + collections (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('collection', collections, locked=locked) + + def removeCollection(self, collections, locked=True): + """ Remove a collection tag(s). + + Parameters: + collections (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('collection', collections, locked=locked, remove=True) + + +class CountryMixin(object): + """ Mixin for Plex objects that can have countries. """ + + def addCountry(self, countries, locked=True): + """ Add a country tag(s). + + Parameters: + countries (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('country', countries, locked=locked) + + def removeCountry(self, countries, locked=True): + """ Remove a country tag(s). + + Parameters: + countries (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('country', countries, locked=locked, remove=True) + + +class DirectorMixin(object): + """ Mixin for Plex objects that can have directors. """ + + def addDirector(self, directors, locked=True): + """ Add a director tag(s). + + Parameters: + directors (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('director', directors, locked=locked) + + def removeDirector(self, directors, locked=True): + """ Remove a director tag(s). + + Parameters: + directors (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('director', directors, locked=locked, remove=True) + + +class GenreMixin(object): + """ Mixin for Plex objects that can have genres. """ + + def addGenre(self, genres, locked=True): + """ Add a genre tag(s). + + Parameters: + genres (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('genre', genres, locked=locked) + + def removeGenre(self, genres, locked=True): + """ Remove a genre tag(s). + + Parameters: + genres (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('genre', genres, locked=locked, remove=True) + + +class LabelMixin(object): + """ Mixin for Plex objects that can have labels. """ + + def addLabel(self, labels, locked=True): + """ Add a label tag(s). + + Parameters: + labels (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('label', labels, locked=locked) + + def removeLabel(self, labels, locked=True): + """ Remove a label tag(s). + + Parameters: + labels (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('label', labels, locked=locked, remove=True) + + +class MoodMixin(object): + """ Mixin for Plex objects that can have moods. """ + + def addMood(self, moods, locked=True): + """ Add a mood tag(s). + + Parameters: + moods (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('mood', moods, locked=locked) + + def removeMood(self, moods, locked=True): + """ Remove a mood tag(s). + + Parameters: + moods (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('mood', moods, locked=locked, remove=True) + + +class ProducerMixin(object): + """ Mixin for Plex objects that can have producers. """ + + def addProducer(self, producers, locked=True): + """ Add a producer tag(s). + + Parameters: + producers (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('producer', producers, locked=locked) + + def removeProducer(self, producers, locked=True): + """ Remove a producer tag(s). + + Parameters: + producers (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('producer', producers, locked=locked, remove=True) + + +class SimilarArtistMixin(object): + """ Mixin for Plex objects that can have similar artists. """ + + def addSimilarArtist(self, artists, locked=True): + """ Add a similar artist tag(s). + + Parameters: + artists (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('similar', artists, locked=locked) + + def removeSimilarArtist(self, artists, locked=True): + """ Remove a similar artist tag(s). + + Parameters: + artists (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('similar', artists, locked=locked, remove=True) + + +class StyleMixin(object): + """ Mixin for Plex objects that can have styles. """ + + def addStyle(self, styles, locked=True): + """ Add a style tag(s). + + Parameters: + styles (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('style', styles, locked=locked) + + def removeStyle(self, styles, locked=True): + """ Remove a style tag(s). + + Parameters: + styles (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('style', styles, locked=locked, remove=True) + + +class TagMixin(object): + """ Mixin for Plex objects that can have tags. """ + + def addTag(self, tags, locked=True): + """ Add a tag(s). + + Parameters: + tags (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('tag', tags, locked=locked) + + def removeTag(self, tags, locked=True): + """ Remove a tag(s). + + Parameters: + tags (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('tag', tags, locked=locked, remove=True) + + +class WriterMixin(object): + """ Mixin for Plex objects that can have writers. """ + + def addWriter(self, writers, locked=True): + """ Add a writer tag(s). + + Parameters: + writers (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('writer', writers, locked=locked) + + def removeWriter(self, writers, locked=True): + """ Remove a writer tag(s). + + Parameters: + writers (list): List of strings. + locked (bool): True (default) to lock the field, False to unlock the field. + """ + self._edit_tags('writer', writers, locked=locked, remove=True) + + +class SmartFilterMixin(object): + """ Mixing for Plex objects that can have smart filters. """ + + def _parseFilters(self, content): + """ Parse the content string and returns the filter dict. """ + content = urlsplit(unquote(content)) + filters = {} + filterOp = 'and' + filterGroups = [[]] + + for key, value in parse_qsl(content.query): + # Move = sign to key when operator is == + if value.startswith('='): + key += '=' + value = value[1:] + + if key == 'includeGuids': + filters['includeGuids'] = int(value) + elif key == 'type': + filters['libtype'] = utils.reverseSearchType(value) + elif key == 'sort': + filters['sort'] = value.split(',') + elif key == 'limit': + filters['limit'] = int(value) + elif key == 'push': + filterGroups[-1].append([]) + filterGroups.append(filterGroups[-1][-1]) + elif key == 'and': + filterOp = 'and' + elif key == 'or': + filterOp = 'or' + elif key == 'pop': + filterGroups[-1].insert(0, filterOp) + filterGroups.pop() + else: + filterGroups[-1].append({key: value}) + + if filterGroups: + filters['filters'] = self._formatFilterGroups(filterGroups.pop()) + return filters + + def _formatFilterGroups(self, groups): + """ Formats the filter groups into the advanced search rules. """ + if len(groups) == 1 and isinstance(groups[0], list): + groups = groups.pop() + + filterOp = 'and' + rules = [] + + for g in groups: + if isinstance(g, list): + rules.append(self._formatFilterGroups(g)) + elif isinstance(g, dict): + rules.append(g) + elif g in {'and', 'or'}: + filterOp = g + + return {filterOp: rules} diff --git a/service.plexskipintro/plexapi/myplex.py b/service.plexskipintro/plexapi/myplex.py new file mode 100644 index 0000000000..ddadce5ef5 --- /dev/null +++ b/service.plexskipintro/plexapi/myplex.py @@ -0,0 +1,1508 @@ +# -*- coding: utf-8 -*- +import copy +import threading +import time +from xml.etree import ElementTree + +import requests +from plexapi import (BASE_HEADERS, CONFIG, TIMEOUT, X_PLEX_ENABLE_FAST_CONNECT, + X_PLEX_IDENTIFIER, log, logfilter, utils) +from plexapi.base import PlexObject +from plexapi.client import PlexClient +from plexapi.exceptions import BadRequest, NotFound, Unauthorized +from plexapi.library import LibrarySection +from plexapi.server import PlexServer +from plexapi.sonos import PlexSonosClient +from plexapi.sync import SyncItem, SyncList +from requests.status_codes import _codes as codes + + +class MyPlexAccount(PlexObject): + """ MyPlex account and profile information. This object represents the data found Account on + the myplex.tv servers at the url https://plex.tv/users/account. You may create this object + directly by passing in your username & password (or token). There is also a convenience + method provided at :class:`~plexapi.server.PlexServer.myPlexAccount()` which will create + and return this object. + + Parameters: + username (str): Your MyPlex username. + password (str): Your MyPlex password. + session (requests.Session, optional): Use your own session object if you want to + cache the http responses from PMS + timeout (int): timeout in seconds on initial connect to myplex (default config.TIMEOUT). + + Attributes: + SIGNIN (str): 'https://plex.tv/users/sign_in.xml' + key (str): 'https://plex.tv/users/account' + authenticationToken (str): Unknown. + certificateVersion (str): Unknown. + cloudSyncDevice (str): Unknown. + email (str): Your current Plex email address. + entitlements (List<str>): List of devices your allowed to use with this account. + guest (bool): Unknown. + home (bool): Unknown. + homeSize (int): Unknown. + id (int): Your Plex account ID. + locale (str): Your Plex locale + mailing_list_status (str): Your current mailing list status. + maxHomeSize (int): Unknown. + queueEmail (str): Email address to add items to your `Watch Later` queue. + queueUid (str): Unknown. + restricted (bool): Unknown. + roles: (List<str>) Lit of account roles. Plexpass membership listed here. + scrobbleTypes (str): Description + secure (bool): Description + subscriptionActive (bool): True if your subsctiption is active. + subscriptionFeatures: (List<str>) List of features allowed on your subscription. + subscriptionPlan (str): Name of subscription plan. + subscriptionStatus (str): String representation of `subscriptionActive`. + thumb (str): URL of your account thumbnail. + title (str): Unknown. - Looks like an alias for `username`. + username (str): Your account username. + uuid (str): Unknown. + _token (str): Token used to access this client. + _session (obj): Requests session object used to access this client. + """ + FRIENDINVITE = 'https://plex.tv/api/servers/{machineId}/shared_servers' # post with data + HOMEUSERCREATE = 'https://plex.tv/api/home/users?title={title}' # post with data + EXISTINGUSER = 'https://plex.tv/api/home/users?invitedEmail={username}' # post with data + FRIENDSERVERS = 'https://plex.tv/api/servers/{machineId}/shared_servers/{serverId}' # put with data + PLEXSERVERS = 'https://plex.tv/api/servers/{machineId}' # get + FRIENDUPDATE = 'https://plex.tv/api/friends/{userId}' # put with args, delete + REMOVEHOMEUSER = 'https://plex.tv/api/home/users/{userId}' # delete + SIGNIN = 'https://plex.tv/users/sign_in.xml' # get with auth + WEBHOOKS = 'https://plex.tv/api/v2/user/webhooks' # get, post with data + OPTOUTS = 'https://plex.tv/api/v2/user/%(userUUID)s/settings/opt_outs' # get + LINK = 'https://plex.tv/api/v2/pins/link' # put + # Hub sections + VOD = 'https://vod.provider.plex.tv/' # get + WEBSHOWS = 'https://webshows.provider.plex.tv/' # get + NEWS = 'https://news.provider.plex.tv/' # get + PODCASTS = 'https://podcasts.provider.plex.tv/' # get + MUSIC = 'https://music.provider.plex.tv/' # get + # Key may someday switch to the following url. For now the current value works. + # https://plex.tv/api/v2/user?X-Plex-Token={token}&X-Plex-Client-Identifier={clientId} + key = 'https://plex.tv/users/account' + + def __init__(self, username=None, password=None, token=None, session=None, timeout=None): + self._token = token or CONFIG.get('auth.server_token') + self._session = session or requests.Session() + self._sonos_cache = [] + self._sonos_cache_timestamp = 0 + data, initpath = self._signin(username, password, timeout) + super(MyPlexAccount, self).__init__(self, data, initpath) + + def _signin(self, username, password, timeout): + if self._token: + return self.query(self.key), self.key + username = username or CONFIG.get('auth.myplex_username') + password = password or CONFIG.get('auth.myplex_password') + data = self.query(self.SIGNIN, method=self._session.post, auth=(username, password), timeout=timeout) + return data, self.SIGNIN + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self._token = logfilter.add_secret(data.attrib.get('authenticationToken')) + self._webhooks = [] + self.authenticationToken = self._token + self.certificateVersion = data.attrib.get('certificateVersion') + self.cloudSyncDevice = data.attrib.get('cloudSyncDevice') + self.email = data.attrib.get('email') + self.guest = utils.cast(bool, data.attrib.get('guest')) + self.home = utils.cast(bool, data.attrib.get('home')) + self.homeSize = utils.cast(int, data.attrib.get('homeSize')) + self.id = utils.cast(int, data.attrib.get('id')) + self.locale = data.attrib.get('locale') + self.mailing_list_status = data.attrib.get('mailing_list_status') + self.maxHomeSize = utils.cast(int, data.attrib.get('maxHomeSize')) + self.queueEmail = data.attrib.get('queueEmail') + self.queueUid = data.attrib.get('queueUid') + self.restricted = utils.cast(bool, data.attrib.get('restricted')) + self.scrobbleTypes = data.attrib.get('scrobbleTypes') + self.secure = utils.cast(bool, data.attrib.get('secure')) + self.thumb = data.attrib.get('thumb') + self.title = data.attrib.get('title') + self.username = data.attrib.get('username') + self.uuid = data.attrib.get('uuid') + + subscription = data.find('subscription') + self.subscriptionActive = utils.cast(bool, subscription.attrib.get('active')) + self.subscriptionStatus = subscription.attrib.get('status') + self.subscriptionPlan = subscription.attrib.get('plan') + self.subscriptionFeatures = self.listAttrs(subscription, 'id', etag='feature') + + self.roles = self.listAttrs(data, 'id', rtag='roles', etag='role') + + self.entitlements = self.listAttrs(data, 'id', rtag='entitlements', etag='entitlement') + + # TODO: Fetch missing MyPlexAccount attributes + self.profile_settings = None + self.services = None + self.joined_at = None + + def device(self, name=None, clientId=None): + """ Returns the :class:`~plexapi.myplex.MyPlexDevice` that matches the name specified. + + Parameters: + name (str): Name to match against. + clientId (str): clientIdentifier to match against. + """ + for device in self.devices(): + if (name and device.name.lower() == name.lower() or device.clientIdentifier == clientId): + return device + raise NotFound('Unable to find device %s' % name) + + def devices(self): + """ Returns a list of all :class:`~plexapi.myplex.MyPlexDevice` objects connected to the server. """ + data = self.query(MyPlexDevice.key) + return [MyPlexDevice(self, elem) for elem in data] + + def _headers(self, **kwargs): + """ Returns dict containing base headers for all requests to the server. """ + headers = BASE_HEADERS.copy() + if self._token: + headers['X-Plex-Token'] = self._token + headers.update(kwargs) + return headers + + def query(self, url, method=None, headers=None, timeout=None, **kwargs): + method = method or self._session.get + timeout = timeout or TIMEOUT + log.debug('%s %s %s', method.__name__.upper(), url, kwargs.get('json', '')) + headers = self._headers(**headers or {}) + response = method(url, headers=headers, timeout=timeout, **kwargs) + if response.status_code not in (200, 201, 204): # pragma: no cover + codename = codes.get(response.status_code)[0] + errtext = response.text.replace('\n', ' ') + message = '(%s) %s; %s %s' % (response.status_code, codename, response.url, errtext) + if response.status_code == 401: + raise Unauthorized(message) + elif response.status_code == 404: + raise NotFound(message) + else: + raise BadRequest(message) + data = response.text.encode('utf8') + return ElementTree.fromstring(data) if data.strip() else None + + def resource(self, name): + """ Returns the :class:`~plexapi.myplex.MyPlexResource` that matches the name specified. + + Parameters: + name (str): Name to match against. + """ + for resource in self.resources(): + if resource.name.lower() == name.lower(): + return resource + raise NotFound('Unable to find resource %s' % name) + + def resources(self): + """ Returns a list of all :class:`~plexapi.myplex.MyPlexResource` objects connected to the server. """ + data = self.query(MyPlexResource.key) + return [MyPlexResource(self, elem) for elem in data] + + def sonos_speakers(self): + if 'companions_sonos' not in self.subscriptionFeatures: + return [] + + t = time.time() + if t - self._sonos_cache_timestamp > 5: + self._sonos_cache_timestamp = t + data = self.query('https://sonos.plex.tv/resources') + self._sonos_cache = [PlexSonosClient(self, elem) for elem in data] + + return self._sonos_cache + + def sonos_speaker(self, name): + return next((x for x in self.sonos_speakers() if x.title.split("+")[0].strip() == name), None) + + def sonos_speaker_by_id(self, identifier): + return next((x for x in self.sonos_speakers() if x.machineIdentifier.startswith(identifier)), None) + + def inviteFriend(self, user, server, sections=None, allowSync=False, allowCameraUpload=False, + allowChannels=False, filterMovies=None, filterTelevision=None, filterMusic=None): + """ Share library content with the specified user. + + Parameters: + user (:class:`~plexapi.myplex.MyPlexUser`): `MyPlexUser` object, username, or email + of the user to be added. + server (:class:`~plexapi.server.PlexServer`): `PlexServer` object, or machineIdentifier + containing the library sections to share. + sections (List<:class:`~plexapi.library.LibrarySection`>): List of `LibrarySection` objecs, or names + to be shared (default None). `sections` must be defined in order to update shared libraries. + allowSync (Bool): Set True to allow user to sync content. + allowCameraUpload (Bool): Set True to allow user to upload photos. + allowChannels (Bool): Set True to allow user to utilize installed channels. + filterMovies (Dict): Dict containing key 'contentRating' and/or 'label' each set to a list of + values to be filtered. ex: `{'contentRating':['G'], 'label':['foo']}` + filterTelevision (Dict): Dict containing key 'contentRating' and/or 'label' each set to a list of + values to be filtered. ex: `{'contentRating':['G'], 'label':['foo']}` + filterMusic (Dict): Dict containing key 'label' set to a list of values to be filtered. + ex: `{'label':['foo']}` + """ + username = user.username if isinstance(user, MyPlexUser) else user + machineId = server.machineIdentifier if isinstance(server, PlexServer) else server + sectionIds = self._getSectionIds(machineId, sections) + params = { + 'server_id': machineId, + 'shared_server': {'library_section_ids': sectionIds, 'invited_email': username}, + 'sharing_settings': { + 'allowSync': ('1' if allowSync else '0'), + 'allowCameraUpload': ('1' if allowCameraUpload else '0'), + 'allowChannels': ('1' if allowChannels else '0'), + 'filterMovies': self._filterDictToStr(filterMovies or {}), + 'filterTelevision': self._filterDictToStr(filterTelevision or {}), + 'filterMusic': self._filterDictToStr(filterMusic or {}), + }, + } + headers = {'Content-Type': 'application/json'} + url = self.FRIENDINVITE.format(machineId=machineId) + return self.query(url, self._session.post, json=params, headers=headers) + + def createHomeUser(self, user, server, sections=None, allowSync=False, allowCameraUpload=False, + allowChannels=False, filterMovies=None, filterTelevision=None, filterMusic=None): + """ Share library content with the specified user. + + Parameters: + user (:class:`~plexapi.myplex.MyPlexUser`): `MyPlexUser` object, username, or email + of the user to be added. + server (:class:`~plexapi.server.PlexServer`): `PlexServer` object, or machineIdentifier + containing the library sections to share. + sections (List<:class:`~plexapi.library.LibrarySection`>): List of `LibrarySection` objecs, or names + to be shared (default None). `sections` must be defined in order to update shared libraries. + allowSync (Bool): Set True to allow user to sync content. + allowCameraUpload (Bool): Set True to allow user to upload photos. + allowChannels (Bool): Set True to allow user to utilize installed channels. + filterMovies (Dict): Dict containing key 'contentRating' and/or 'label' each set to a list of + values to be filtered. ex: `{'contentRating':['G'], 'label':['foo']}` + filterTelevision (Dict): Dict containing key 'contentRating' and/or 'label' each set to a list of + values to be filtered. ex: `{'contentRating':['G'], 'label':['foo']}` + filterMusic (Dict): Dict containing key 'label' set to a list of values to be filtered. + ex: `{'label':['foo']}` + """ + machineId = server.machineIdentifier if isinstance(server, PlexServer) else server + sectionIds = self._getSectionIds(server, sections) + + headers = {'Content-Type': 'application/json'} + url = self.HOMEUSERCREATE.format(title=user) + # UserID needs to be created and referenced when adding sections + user_creation = self.query(url, self._session.post, headers=headers) + userIds = {} + for elem in user_creation.findall("."): + # Find userID + userIds['id'] = elem.attrib.get('id') + log.debug(userIds) + params = { + 'server_id': machineId, + 'shared_server': {'library_section_ids': sectionIds, 'invited_id': userIds['id']}, + 'sharing_settings': { + 'allowSync': ('1' if allowSync else '0'), + 'allowCameraUpload': ('1' if allowCameraUpload else '0'), + 'allowChannels': ('1' if allowChannels else '0'), + 'filterMovies': self._filterDictToStr(filterMovies or {}), + 'filterTelevision': self._filterDictToStr(filterTelevision or {}), + 'filterMusic': self._filterDictToStr(filterMusic or {}), + }, + } + url = self.FRIENDINVITE.format(machineId=machineId) + library_assignment = self.query(url, self._session.post, json=params, headers=headers) + return user_creation, library_assignment + + def createExistingUser(self, user, server, sections=None, allowSync=False, allowCameraUpload=False, + allowChannels=False, filterMovies=None, filterTelevision=None, filterMusic=None): + """ Share library content with the specified user. + + Parameters: + user (:class:`~plexapi.myplex.MyPlexUser`): `MyPlexUser` object, username, or email + of the user to be added. + server (:class:`~plexapi.server.PlexServer`): `PlexServer` object, or machineIdentifier + containing the library sections to share. + sections (List<:class:`~plexapi.library.LibrarySection`>): List of `LibrarySection` objecs, or names + to be shared (default None). `sections` must be defined in order to update shared libraries. + allowSync (Bool): Set True to allow user to sync content. + allowCameraUpload (Bool): Set True to allow user to upload photos. + allowChannels (Bool): Set True to allow user to utilize installed channels. + filterMovies (Dict): Dict containing key 'contentRating' and/or 'label' each set to a list of + values to be filtered. ex: `{'contentRating':['G'], 'label':['foo']}` + filterTelevision (Dict): Dict containing key 'contentRating' and/or 'label' each set to a list of + values to be filtered. ex: `{'contentRating':['G'], 'label':['foo']}` + filterMusic (Dict): Dict containing key 'label' set to a list of values to be filtered. + ex: `{'label':['foo']}` + """ + headers = {'Content-Type': 'application/json'} + # If user already exists, carry over sections and settings. + if isinstance(user, MyPlexUser): + username = user.username + elif user in [_user.username for _user in self.users()]: + username = self.user(user).username + else: + # If user does not already exists, treat request as new request and include sections and settings. + newUser = user + url = self.EXISTINGUSER.format(username=newUser) + user_creation = self.query(url, self._session.post, headers=headers) + machineId = server.machineIdentifier if isinstance(server, PlexServer) else server + sectionIds = self._getSectionIds(server, sections) + params = { + 'server_id': machineId, + 'shared_server': {'library_section_ids': sectionIds, 'invited_email': newUser}, + 'sharing_settings': { + 'allowSync': ('1' if allowSync else '0'), + 'allowCameraUpload': ('1' if allowCameraUpload else '0'), + 'allowChannels': ('1' if allowChannels else '0'), + 'filterMovies': self._filterDictToStr(filterMovies or {}), + 'filterTelevision': self._filterDictToStr(filterTelevision or {}), + 'filterMusic': self._filterDictToStr(filterMusic or {}), + }, + } + url = self.FRIENDINVITE.format(machineId=machineId) + library_assignment = self.query(url, self._session.post, json=params, headers=headers) + return user_creation, library_assignment + + url = self.EXISTINGUSER.format(username=username) + return self.query(url, self._session.post, headers=headers) + + def removeFriend(self, user): + """ Remove the specified user from your friends. + + Parameters: + user (str): :class:`~plexapi.myplex.MyPlexUser`, username, or email of the user to be removed. + """ + user = user if isinstance(user, MyPlexUser) else self.user(user) + url = self.FRIENDUPDATE.format(userId=user.id) + return self.query(url, self._session.delete) + + def removeHomeUser(self, user): + """ Remove the specified user from your home users. + + Parameters: + user (str): :class:`~plexapi.myplex.MyPlexUser`, username, or email of the user to be removed. + """ + user = user if isinstance(user, MyPlexUser) else self.user(user) + url = self.REMOVEHOMEUSER.format(userId=user.id) + return self.query(url, self._session.delete) + + def acceptInvite(self, user): + """ Accept a pending firend invite from the specified user. + + Parameters: + user (str): :class:`~plexapi.myplex.MyPlexInvite`, username, or email of the friend invite to accept. + """ + invite = user if isinstance(user, MyPlexInvite) else self.pendingInvite(user, includeSent=False) + params = { + 'friend': int(invite.friend), + 'home': int(invite.home), + 'server': int(invite.server) + } + url = MyPlexInvite.REQUESTS + '/%s' % invite.id + utils.joinArgs(params) + return self.query(url, self._session.put) + + def cancelInvite(self, user): + """ Cancel a pending firend invite for the specified user. + + Parameters: + user (str): :class:`~plexapi.myplex.MyPlexInvite`, username, or email of the friend invite to cancel. + """ + invite = user if isinstance(user, MyPlexInvite) else self.pendingInvite(user, includeReceived=False) + params = { + 'friend': int(invite.friend), + 'home': int(invite.home), + 'server': int(invite.server) + } + url = MyPlexInvite.REQUESTED + '/%s' % invite.id + utils.joinArgs(params) + return self.query(url, self._session.delete) + + def updateFriend(self, user, server, sections=None, removeSections=False, allowSync=None, allowCameraUpload=None, + allowChannels=None, filterMovies=None, filterTelevision=None, filterMusic=None): + """ Update the specified user's share settings. + + Parameters: + user (:class:`~plexapi.myplex.MyPlexUser`): `MyPlexUser` object, username, or email + of the user to be updated. + server (:class:`~plexapi.server.PlexServer`): `PlexServer` object, or machineIdentifier + containing the library sections to share. + sections (List<:class:`~plexapi.library.LibrarySection`>): List of `LibrarySection` objecs, or names + to be shared (default None). `sections` must be defined in order to update shared libraries. + removeSections (Bool): Set True to remove all shares. Supersedes sections. + allowSync (Bool): Set True to allow user to sync content. + allowCameraUpload (Bool): Set True to allow user to upload photos. + allowChannels (Bool): Set True to allow user to utilize installed channels. + filterMovies (Dict): Dict containing key 'contentRating' and/or 'label' each set to a list of + values to be filtered. ex: `{'contentRating':['G'], 'label':['foo']}` + filterTelevision (Dict): Dict containing key 'contentRating' and/or 'label' each set to a list of + values to be filtered. ex: `{'contentRating':['G'], 'label':['foo']}` + filterMusic (Dict): Dict containing key 'label' set to a list of values to be filtered. + ex: `{'label':['foo']}` + """ + # Update friend servers + response_filters = '' + response_servers = '' + user = user if isinstance(user, MyPlexUser) else self.user(user) + machineId = server.machineIdentifier if isinstance(server, PlexServer) else server + sectionIds = self._getSectionIds(machineId, sections) + headers = {'Content-Type': 'application/json'} + # Determine whether user has access to the shared server. + user_servers = [s for s in user.servers if s.machineIdentifier == machineId] + if user_servers and sectionIds: + serverId = user_servers[0].id + params = {'server_id': machineId, 'shared_server': {'library_section_ids': sectionIds}} + url = self.FRIENDSERVERS.format(machineId=machineId, serverId=serverId) + else: + params = {'server_id': machineId, + 'shared_server': {'library_section_ids': sectionIds, 'invited_id': user.id}} + url = self.FRIENDINVITE.format(machineId=machineId) + # Remove share sections, add shares to user without shares, or update shares + if not user_servers or sectionIds: + if removeSections is True: + response_servers = self.query(url, self._session.delete, json=params, headers=headers) + elif 'invited_id' in params.get('shared_server', ''): + response_servers = self.query(url, self._session.post, json=params, headers=headers) + else: + response_servers = self.query(url, self._session.put, json=params, headers=headers) + else: + log.warning('Section name, number of section object is required changing library sections') + # Update friend filters + url = self.FRIENDUPDATE.format(userId=user.id) + params = {} + if isinstance(allowSync, bool): + params['allowSync'] = '1' if allowSync else '0' + if isinstance(allowCameraUpload, bool): + params['allowCameraUpload'] = '1' if allowCameraUpload else '0' + if isinstance(allowChannels, bool): + params['allowChannels'] = '1' if allowChannels else '0' + if isinstance(filterMovies, dict): + params['filterMovies'] = self._filterDictToStr(filterMovies or {}) # '1' if allowChannels else '0' + if isinstance(filterTelevision, dict): + params['filterTelevision'] = self._filterDictToStr(filterTelevision or {}) + if isinstance(allowChannels, dict): + params['filterMusic'] = self._filterDictToStr(filterMusic or {}) + if params: + url += utils.joinArgs(params) + response_filters = self.query(url, self._session.put) + return response_servers, response_filters + + def user(self, username): + """ Returns the :class:`~plexapi.myplex.MyPlexUser` that matches the specified username or email. + + Parameters: + username (str): Username, email or id of the user to return. + """ + username = str(username) + for user in self.users(): + # Home users don't have email, username etc. + if username.lower() == user.title.lower(): + return user + + elif (user.username and user.email and user.id and username.lower() in + (user.username.lower(), user.email.lower(), str(user.id))): + return user + + raise NotFound('Unable to find user %s' % username) + + def users(self): + """ Returns a list of all :class:`~plexapi.myplex.MyPlexUser` objects connected to your account. + """ + elem = self.query(MyPlexUser.key) + return self.findItems(elem, cls=MyPlexUser) + + def pendingInvite(self, username, includeSent=True, includeReceived=True): + """ Returns the :class:`~plexapi.myplex.MyPlexInvite` that matches the specified username or email. + Note: This can be a pending invite sent from your account or received to your account. + + Parameters: + username (str): Username, email or id of the user to return. + includeSent (bool): True to include sent invites. + includeReceived (bool): True to include received invites. + """ + username = str(username) + for invite in self.pendingInvites(includeSent, includeReceived): + if (invite.username and invite.email and invite.id and username.lower() in + (invite.username.lower(), invite.email.lower(), str(invite.id))): + return invite + + raise NotFound('Unable to find invite %s' % username) + + def pendingInvites(self, includeSent=True, includeReceived=True): + """ Returns a list of all :class:`~plexapi.myplex.MyPlexInvite` objects connected to your account. + Note: This includes all pending invites sent from your account and received to your account. + + Parameters: + includeSent (bool): True to include sent invites. + includeReceived (bool): True to include received invites. + """ + invites = [] + if includeSent: + elem = self.query(MyPlexInvite.REQUESTED) + invites += self.findItems(elem, cls=MyPlexInvite) + if includeReceived: + elem = self.query(MyPlexInvite.REQUESTS) + invites += self.findItems(elem, cls=MyPlexInvite) + return invites + + def _getSectionIds(self, server, sections): + """ Converts a list of section objects or names to sectionIds needed for library sharing. """ + if not sections: return [] + # Get a list of all section ids for looking up each section. + allSectionIds = {} + machineIdentifier = server.machineIdentifier if isinstance(server, PlexServer) else server + url = self.PLEXSERVERS.replace('{machineId}', machineIdentifier) + data = self.query(url, self._session.get) + for elem in data[0]: + _id = utils.cast(int, elem.attrib.get('id')) + _key = utils.cast(int, elem.attrib.get('key')) + _title = elem.attrib.get('title', '').lower() + allSectionIds[_id] = _id + allSectionIds[_key] = _id + allSectionIds[_title] = _id + log.debug(allSectionIds) + # Convert passed in section items to section ids from above lookup + sectionIds = [] + for section in sections: + sectionKey = section.key if isinstance(section, LibrarySection) else section.lower() + sectionIds.append(allSectionIds[sectionKey]) + return sectionIds + + def _filterDictToStr(self, filterDict): + """ Converts friend filters to a string representation for transport. """ + values = [] + for key, vals in list(filterDict.items()): + if key not in ('contentRating', 'label'): + raise BadRequest('Unknown filter key: %s', key) + values.append('%s=%s' % (key, '%2C'.join(vals))) + return '|'.join(values) + + def addWebhook(self, url): + # copy _webhooks and append url + urls = self._webhooks[:] + [url] + return self.setWebhooks(urls) + + def deleteWebhook(self, url): + urls = copy.copy(self._webhooks) + if url not in urls: + raise BadRequest('Webhook does not exist: %s' % url) + urls.remove(url) + return self.setWebhooks(urls) + + def setWebhooks(self, urls): + log.info('Setting webhooks: %s' % urls) + data = {'urls[]': urls} if len(urls) else {'urls': ''} + data = self.query(self.WEBHOOKS, self._session.post, data=data) + self._webhooks = self.listAttrs(data, 'url', etag='webhook') + return self._webhooks + + def webhooks(self): + data = self.query(self.WEBHOOKS) + self._webhooks = self.listAttrs(data, 'url', etag='webhook') + return self._webhooks + + def optOut(self, playback=None, library=None): + """ Opt in or out of sharing stuff with plex. + See: https://www.plex.tv/about/privacy-legal/ + """ + params = {} + if playback is not None: + params['optOutPlayback'] = int(playback) + if library is not None: + params['optOutLibraryStats'] = int(library) + url = 'https://plex.tv/api/v2/user/privacy' + return self.query(url, method=self._session.put, data=params) + + def syncItems(self, client=None, clientId=None): + """ Returns an instance of :class:`~plexapi.sync.SyncList` for specified client. + + Parameters: + client (:class:`~plexapi.myplex.MyPlexDevice`): a client to query SyncItems for. + clientId (str): an identifier of a client to query SyncItems for. + + If both `client` and `clientId` provided the client would be preferred. + If neither `client` nor `clientId` provided the clientId would be set to current clients`s identifier. + """ + if client: + clientId = client.clientIdentifier + elif clientId is None: + clientId = X_PLEX_IDENTIFIER + + data = self.query(SyncList.key.format(clientId=clientId)) + + return SyncList(self, data) + + def sync(self, sync_item, client=None, clientId=None): + """ Adds specified sync item for the client. It's always easier to use methods defined directly in the media + objects, e.g. :func:`~plexapi.video.Video.sync`, :func:`~plexapi.audio.Audio.sync`. + + Parameters: + client (:class:`~plexapi.myplex.MyPlexDevice`): a client for which you need to add SyncItem to. + clientId (str): an identifier of a client for which you need to add SyncItem to. + sync_item (:class:`~plexapi.sync.SyncItem`): prepared SyncItem object with all fields set. + + If both `client` and `clientId` provided the client would be preferred. + If neither `client` nor `clientId` provided the clientId would be set to current clients`s identifier. + + Returns: + :class:`~plexapi.sync.SyncItem`: an instance of created syncItem. + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: When client with provided clientId wasn`t found. + :exc:`~plexapi.exceptions.BadRequest`: Provided client doesn`t provides `sync-target`. + """ + if not client and not clientId: + clientId = X_PLEX_IDENTIFIER + + if not client: + for device in self.devices(): + if device.clientIdentifier == clientId: + client = device + break + + if not client: + raise BadRequest('Unable to find client by clientId=%s', clientId) + + if 'sync-target' not in client.provides: + raise BadRequest('Received client doesn`t provides sync-target') + + params = { + 'SyncItem[title]': sync_item.title, + 'SyncItem[rootTitle]': sync_item.rootTitle, + 'SyncItem[metadataType]': sync_item.metadataType, + 'SyncItem[machineIdentifier]': sync_item.machineIdentifier, + 'SyncItem[contentType]': sync_item.contentType, + 'SyncItem[Policy][scope]': sync_item.policy.scope, + 'SyncItem[Policy][unwatched]': str(int(sync_item.policy.unwatched)), + 'SyncItem[Policy][value]': str(sync_item.policy.value if hasattr(sync_item.policy, 'value') else 0), + 'SyncItem[Location][uri]': sync_item.location, + 'SyncItem[MediaSettings][audioBoost]': str(sync_item.mediaSettings.audioBoost), + 'SyncItem[MediaSettings][maxVideoBitrate]': str(sync_item.mediaSettings.maxVideoBitrate), + 'SyncItem[MediaSettings][musicBitrate]': str(sync_item.mediaSettings.musicBitrate), + 'SyncItem[MediaSettings][photoQuality]': str(sync_item.mediaSettings.photoQuality), + 'SyncItem[MediaSettings][photoResolution]': sync_item.mediaSettings.photoResolution, + 'SyncItem[MediaSettings][subtitleSize]': str(sync_item.mediaSettings.subtitleSize), + 'SyncItem[MediaSettings][videoQuality]': str(sync_item.mediaSettings.videoQuality), + 'SyncItem[MediaSettings][videoResolution]': sync_item.mediaSettings.videoResolution, + } + + url = SyncList.key.format(clientId=client.clientIdentifier) + data = self.query(url, method=self._session.post, params=params) + + return SyncItem(self, data, None, clientIdentifier=client.clientIdentifier) + + def claimToken(self): + """ Returns a str, a new "claim-token", which you can use to register your new Plex Server instance to your + account. + See: https://hub.docker.com/r/plexinc/pms-docker/, https://www.plex.tv/claim/ + """ + response = self._session.get('https://plex.tv/api/claim/token.json', headers=self._headers(), timeout=TIMEOUT) + if response.status_code not in (200, 201, 204): # pragma: no cover + codename = codes.get(response.status_code)[0] + errtext = response.text.replace('\n', ' ') + raise BadRequest('(%s) %s %s; %s' % (response.status_code, codename, response.url, errtext)) + return response.json()['token'] + + def history(self, maxresults=9999999, mindate=None): + """ Get Play History for all library sections on all servers for the owner. + Parameters: + maxresults (int): Only return the specified number of results (optional). + mindate (datetime): Min datetime to return results from. + """ + servers = [x for x in self.resources() if x.provides == 'server' and x.owned] + hist = [] + for server in servers: + conn = server.connect() + hist.extend(conn.history(maxresults=maxresults, mindate=mindate, accountID=1)) + return hist + + def videoOnDemand(self): + """ Returns a list of VOD Hub items :class:`~plexapi.library.Hub` + """ + req = requests.get(self.VOD + 'hubs/', headers={'X-Plex-Token': self._token}) + elem = ElementTree.fromstring(req.text) + return self.findItems(elem) + + def webShows(self): + """ Returns a list of Webshow Hub items :class:`~plexapi.library.Hub` + """ + req = requests.get(self.WEBSHOWS + 'hubs/', headers={'X-Plex-Token': self._token}) + elem = ElementTree.fromstring(req.text) + return self.findItems(elem) + + def news(self): + """ Returns a list of News Hub items :class:`~plexapi.library.Hub` + """ + req = requests.get(self.NEWS + 'hubs/sections/all', headers={'X-Plex-Token': self._token}) + elem = ElementTree.fromstring(req.text) + return self.findItems(elem) + + def podcasts(self): + """ Returns a list of Podcasts Hub items :class:`~plexapi.library.Hub` + """ + req = requests.get(self.PODCASTS + 'hubs/', headers={'X-Plex-Token': self._token}) + elem = ElementTree.fromstring(req.text) + return self.findItems(elem) + + def tidal(self): + """ Returns a list of tidal Hub items :class:`~plexapi.library.Hub` + """ + req = requests.get(self.MUSIC + 'hubs/', headers={'X-Plex-Token': self._token}) + elem = ElementTree.fromstring(req.text) + return self.findItems(elem) + + def onlineMediaSources(self): + """ Returns a list of user account Online Media Sources settings :class:`~plexapi.myplex.AccountOptOut` + """ + url = self.OPTOUTS % {'userUUID': self.uuid} + elem = self.query(url) + return self.findItems(elem, cls=AccountOptOut, etag='optOut') + + def link(self, pin): + """ Link a device to the account using a pin code. + + Parameters: + pin (str): The 4 digit link pin code. + """ + headers = { + 'Content-Type': 'application/x-www-form-urlencoded', + 'X-Plex-Product': 'Plex SSO' + } + data = {'code': pin} + self.query(self.LINK, self._session.put, headers=headers, data=data) + + +class MyPlexUser(PlexObject): + """ This object represents non-signed in users such as friends and linked + accounts. NOTE: This should not be confused with the :class:`~plexapi.myplex.MyPlexAccount` + which is your specific account. The raw xml for the data presented here + can be found at: https://plex.tv/api/users/ + + Attributes: + TAG (str): 'User' + key (str): 'https://plex.tv/api/users/' + allowCameraUpload (bool): True if this user can upload images. + allowChannels (bool): True if this user has access to channels. + allowSync (bool): True if this user can sync. + email (str): User's email address (user@gmail.com). + filterAll (str): Unknown. + filterMovies (str): Unknown. + filterMusic (str): Unknown. + filterPhotos (str): Unknown. + filterTelevision (str): Unknown. + home (bool): Unknown. + id (int): User's Plex account ID. + protected (False): Unknown (possibly SSL enabled?). + recommendationsPlaylistId (str): Unknown. + restricted (str): Unknown. + servers (List<:class:`~plexapi.myplex.<MyPlexServerShare`>)): Servers shared with the user. + thumb (str): Link to the users avatar. + title (str): Seems to be an aliad for username. + username (str): User's username. + """ + TAG = 'User' + key = 'https://plex.tv/api/users/' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.friend = self._initpath == self.key + self.allowCameraUpload = utils.cast(bool, data.attrib.get('allowCameraUpload')) + self.allowChannels = utils.cast(bool, data.attrib.get('allowChannels')) + self.allowSync = utils.cast(bool, data.attrib.get('allowSync')) + self.email = data.attrib.get('email') + self.filterAll = data.attrib.get('filterAll') + self.filterMovies = data.attrib.get('filterMovies') + self.filterMusic = data.attrib.get('filterMusic') + self.filterPhotos = data.attrib.get('filterPhotos') + self.filterTelevision = data.attrib.get('filterTelevision') + self.home = utils.cast(bool, data.attrib.get('home')) + self.id = utils.cast(int, data.attrib.get('id')) + self.protected = utils.cast(bool, data.attrib.get('protected')) + self.recommendationsPlaylistId = data.attrib.get('recommendationsPlaylistId') + self.restricted = data.attrib.get('restricted') + self.thumb = data.attrib.get('thumb') + self.title = data.attrib.get('title', '') + self.username = data.attrib.get('username', '') + self.servers = self.findItems(data, MyPlexServerShare) + for server in self.servers: + server.accountID = self.id + + def get_token(self, machineIdentifier): + try: + for item in self._server.query(self._server.FRIENDINVITE.format(machineId=machineIdentifier)): + if utils.cast(int, item.attrib.get('userID')) == self.id: + return item.attrib.get('accessToken') + except Exception: + log.exception('Failed to get access token for %s' % self.title) + + def server(self, name): + """ Returns the :class:`~plexapi.myplex.MyPlexServerShare` that matches the name specified. + + Parameters: + name (str): Name of the server to return. + """ + for server in self.servers: + if name.lower() == server.name.lower(): + return server + + raise NotFound('Unable to find server %s' % name) + + def history(self, maxresults=9999999, mindate=None): + """ Get all Play History for a user in all shared servers. + Parameters: + maxresults (int): Only return the specified number of results (optional). + mindate (datetime): Min datetime to return results from. + """ + hist = [] + for server in self.servers: + hist.extend(server.history(maxresults=maxresults, mindate=mindate)) + return hist + + +class MyPlexInvite(PlexObject): + """ This object represents pending friend invites. + + Attributes: + TAG (str): 'Invite' + createdAt (datetime): Datetime the user was invited. + email (str): User's email address (user@gmail.com). + friend (bool): True or False if the user is invited as a friend. + friendlyName (str): The user's friendly name. + home (bool): True or False if the user is invited to a Plex Home. + id (int): User's Plex account ID. + server (bool): True or False if the user is invited to any servers. + servers (List<:class:`~plexapi.myplex.<MyPlexServerShare`>)): Servers shared with the user. + thumb (str): Link to the users avatar. + username (str): User's username. + """ + TAG = 'Invite' + REQUESTS = 'https://plex.tv/api/invites/requests' + REQUESTED = 'https://plex.tv/api/invites/requested' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.createdAt = utils.toDatetime(data.attrib.get('createdAt')) + self.email = data.attrib.get('email') + self.friend = utils.cast(bool, data.attrib.get('friend')) + self.friendlyName = data.attrib.get('friendlyName') + self.home = utils.cast(bool, data.attrib.get('home')) + self.id = utils.cast(int, data.attrib.get('id')) + self.server = utils.cast(bool, data.attrib.get('server')) + self.servers = self.findItems(data, MyPlexServerShare) + self.thumb = data.attrib.get('thumb') + self.username = data.attrib.get('username', '') + for server in self.servers: + server.accountID = self.id + + +class Section(PlexObject): + """ This refers to a shared section. The raw xml for the data presented here + can be found at: https://plex.tv/api/servers/{machineId}/shared_servers + + Attributes: + TAG (str): section + id (int): The shared section ID + key (int): The shared library section key + shared (bool): If this section is shared with the user + title (str): Title of the section + type (str): movie, tvshow, artist + + """ + TAG = 'Section' + + def _loadData(self, data): + self._data = data + self.id = utils.cast(int, data.attrib.get('id')) + self.key = utils.cast(int, data.attrib.get('key')) + self.shared = utils.cast(bool, data.attrib.get('shared', '0')) + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + self.sectionId = self.id # For backwards compatibility + self.sectionKey = self.key # For backwards compatibility + + def history(self, maxresults=9999999, mindate=None): + """ Get all Play History for a user for this section in this shared server. + Parameters: + maxresults (int): Only return the specified number of results (optional). + mindate (datetime): Min datetime to return results from. + """ + server = self._server._server.resource(self._server.name).connect() + return server.history(maxresults=maxresults, mindate=mindate, + accountID=self._server.accountID, librarySectionID=self.sectionKey) + + +class MyPlexServerShare(PlexObject): + """ Represents a single user's server reference. Used for library sharing. + + Attributes: + id (int): id for this share + serverId (str): what id plex uses for this. + machineIdentifier (str): The servers machineIdentifier + name (str): The servers name + lastSeenAt (datetime): Last connected to the server? + numLibraries (int): Total number of libraries + allLibraries (bool): True if all libraries is shared with this user. + owned (bool): 1 if the server is owned by the user + pending (bool): True if the invite is pending. + + """ + TAG = 'Server' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.id = utils.cast(int, data.attrib.get('id')) + self.accountID = utils.cast(int, data.attrib.get('accountID')) + self.serverId = utils.cast(int, data.attrib.get('serverId')) + self.machineIdentifier = data.attrib.get('machineIdentifier') + self.name = data.attrib.get('name') + self.lastSeenAt = utils.toDatetime(data.attrib.get('lastSeenAt')) + self.numLibraries = utils.cast(int, data.attrib.get('numLibraries')) + self.allLibraries = utils.cast(bool, data.attrib.get('allLibraries')) + self.owned = utils.cast(bool, data.attrib.get('owned')) + self.pending = utils.cast(bool, data.attrib.get('pending')) + + def section(self, name): + """ Returns the :class:`~plexapi.myplex.Section` that matches the name specified. + + Parameters: + name (str): Name of the section to return. + """ + for section in self.sections(): + if name.lower() == section.title.lower(): + return section + + raise NotFound('Unable to find section %s' % name) + + def sections(self): + """ Returns a list of all :class:`~plexapi.myplex.Section` objects shared with this user. + """ + url = MyPlexAccount.FRIENDSERVERS.format(machineId=self.machineIdentifier, serverId=self.id) + data = self._server.query(url) + return self.findItems(data, Section, rtag='SharedServer') + + def history(self, maxresults=9999999, mindate=None): + """ Get all Play History for a user in this shared server. + Parameters: + maxresults (int): Only return the specified number of results (optional). + mindate (datetime): Min datetime to return results from. + """ + server = self._server.resource(self.name).connect() + return server.history(maxresults=maxresults, mindate=mindate, accountID=self.accountID) + + +class MyPlexResource(PlexObject): + """ This object represents resources connected to your Plex server that can provide + content such as Plex Media Servers, iPhone or Android clients, etc. The raw xml + for the data presented here can be found at: + https://plex.tv/api/resources?includeHttps=1&includeRelay=1 + + Attributes: + TAG (str): 'Device' + key (str): 'https://plex.tv/api/resources?includeHttps=1&includeRelay=1' + accessToken (str): This resources accesstoken. + clientIdentifier (str): Unique ID for this resource. + connections (list): List of :class:`~plexapi.myplex.ResourceConnection` objects + for this resource. + createdAt (datetime): Timestamp this resource first connected to your server. + device (str): Best guess on the type of device this is (PS, iPhone, Linux, etc). + home (bool): Unknown + lastSeenAt (datetime): Timestamp this resource last connected. + name (str): Descriptive name of this resource. + owned (bool): True if this resource is one of your own (you logged into it). + platform (str): OS the resource is running (Linux, Windows, Chrome, etc.) + platformVersion (str): Version of the platform. + presence (bool): True if the resource is online + product (str): Plex product (Plex Media Server, Plex for iOS, Plex Web, etc.) + productVersion (str): Version of the product. + provides (str): List of services this resource provides (client, server, + player, pubsub-player, etc.) + synced (bool): Unknown (possibly True if the resource has synced content?) + """ + TAG = 'Device' + key = 'https://plex.tv/api/resources?includeHttps=1&includeRelay=1' + + # Default order to prioritize available resource connections + DEFAULT_LOCATION_ORDER = ['local', 'remote', 'relay'] + DEFAULT_SCHEME_ORDER = ['https', 'http'] + + def _loadData(self, data): + self._data = data + self.name = data.attrib.get('name') + self.accessToken = logfilter.add_secret(data.attrib.get('accessToken')) + self.product = data.attrib.get('product') + self.productVersion = data.attrib.get('productVersion') + self.platform = data.attrib.get('platform') + self.platformVersion = data.attrib.get('platformVersion') + self.device = data.attrib.get('device') + self.clientIdentifier = data.attrib.get('clientIdentifier') + self.createdAt = utils.toDatetime(data.attrib.get('createdAt')) + self.lastSeenAt = utils.toDatetime(data.attrib.get('lastSeenAt')) + self.provides = data.attrib.get('provides') + self.owned = utils.cast(bool, data.attrib.get('owned')) + self.home = utils.cast(bool, data.attrib.get('home')) + self.synced = utils.cast(bool, data.attrib.get('synced')) + self.presence = utils.cast(bool, data.attrib.get('presence')) + self.connections = self.findItems(data, ResourceConnection) + self.publicAddressMatches = utils.cast(bool, data.attrib.get('publicAddressMatches')) + # This seems to only be available if its not your device (say are shared server) + self.httpsRequired = utils.cast(bool, data.attrib.get('httpsRequired')) + self.ownerid = utils.cast(int, data.attrib.get('ownerId', 0)) + self.sourceTitle = data.attrib.get('sourceTitle') # owners plex username. + + def preferred_connections( + self, + ssl=None, + timeout=None, + locations=DEFAULT_LOCATION_ORDER, + schemes=DEFAULT_SCHEME_ORDER, + ): + """ Returns a sorted list of the available connection addresses for this resource. + Often times there is more than one address specified for a server or client. + Default behavior will prioritize local connections before remote or relay and HTTPS before HTTP. + + Parameters: + ssl (bool, optional): Set True to only connect to HTTPS connections. Set False to + only connect to HTTP connections. Set None (default) to connect to any + HTTP or HTTPS connection. + timeout (int, optional): The timeout in seconds to attempt each connection. + """ + connections_dict = {location: {scheme: [] for scheme in schemes} for location in locations} + for connection in self.connections: + # Only check non-local connections unless we own the resource + if self.owned or (not self.owned and not connection.local): + location = 'relay' if connection.relay else ('local' if connection.local else 'remote') + if location not in locations: + continue + if 'http' in schemes: + connections_dict[location]['http'].append(connection.httpuri) + if 'https' in schemes: + connections_dict[location]['https'].append(connection.uri) + if ssl is True: schemes.remove('http') + elif ssl is False: schemes.remove('https') + connections = [] + for location in locations: + for scheme in schemes: + connections.extend(connections_dict[location][scheme]) + return connections + + def connect( + self, + ssl=None, + timeout=None, + locations=DEFAULT_LOCATION_ORDER, + schemes=DEFAULT_SCHEME_ORDER, + ): + """ Returns a new :class:`~plexapi.server.PlexServer` or :class:`~plexapi.client.PlexClient` object. + Uses `MyPlexResource.preferred_connections()` to generate the priority order of connection addresses. + After trying to connect to all available addresses for this resource and + assuming at least one connection was successful, the PlexServer object is built and returned. + + Parameters: + ssl (bool, optional): Set True to only connect to HTTPS connections. Set False to + only connect to HTTP connections. Set None (default) to connect to any + HTTP or HTTPS connection. + timeout (int, optional): The timeout in seconds to attempt each connection. + + Raises: + :exc:`~plexapi.exceptions.NotFound`: When unable to connect to any addresses for this resource. + """ + connections = self.preferred_connections(ssl, timeout, locations, schemes) + # Try connecting to all known resource connections in parellel, but + # only return the first server (in order) that provides a response. + cls = PlexServer if 'server' in self.provides else PlexClient + listargs = [[cls, url, self.accessToken, timeout] for url in connections] + log.debug('Testing %s resource connections..', len(listargs)) + results = utils.threaded(_connect, listargs) + return _chooseConnection('Resource', self.name, results) + + +class ResourceConnection(PlexObject): + """ Represents a Resource Connection object found within the + :class:`~plexapi.myplex.MyPlexResource` objects. + + Attributes: + TAG (str): 'Connection' + address (str): Local IP address + httpuri (str): Full local address + local (bool): True if local + port (int): 32400 + protocol (str): HTTP or HTTPS + uri (str): External address + """ + TAG = 'Connection' + + def _loadData(self, data): + self._data = data + self.protocol = data.attrib.get('protocol') + self.address = data.attrib.get('address') + self.port = utils.cast(int, data.attrib.get('port')) + self.uri = data.attrib.get('uri') + self.local = utils.cast(bool, data.attrib.get('local')) + self.httpuri = 'http://%s:%s' % (self.address, self.port) + self.relay = utils.cast(bool, data.attrib.get('relay')) + + +class MyPlexDevice(PlexObject): + """ This object represents resources connected to your Plex server that provide + playback ability from your Plex Server, iPhone or Android clients, Plex Web, + this API, etc. The raw xml for the data presented here can be found at: + https://plex.tv/devices.xml + + Attributes: + TAG (str): 'Device' + key (str): 'https://plex.tv/devices.xml' + clientIdentifier (str): Unique ID for this resource. + connections (list): List of connection URIs for the device. + device (str): Best guess on the type of device this is (Linux, iPad, AFTB, etc). + id (str): MyPlex ID of the device. + model (str): Model of the device (bueller, Linux, x86_64, etc.) + name (str): Hostname of the device. + platform (str): OS the resource is running (Linux, Windows, Chrome, etc.) + platformVersion (str): Version of the platform. + product (str): Plex product (Plex Media Server, Plex for iOS, Plex Web, etc.) + productVersion (string): Version of the product. + provides (str): List of services this resource provides (client, controller, + sync-target, player, pubsub-player). + publicAddress (str): Public IP address. + screenDensity (str): Unknown + screenResolution (str): Screen resolution (750x1334, 1242x2208, etc.) + token (str): Plex authentication token for the device. + vendor (str): Device vendor (ubuntu, etc). + version (str): Unknown (1, 2, 1.3.3.3148-b38628e, 1.3.15, etc.) + """ + TAG = 'Device' + key = 'https://plex.tv/devices.xml' + + def _loadData(self, data): + self._data = data + self.name = data.attrib.get('name') + self.publicAddress = data.attrib.get('publicAddress') + self.product = data.attrib.get('product') + self.productVersion = data.attrib.get('productVersion') + self.platform = data.attrib.get('platform') + self.platformVersion = data.attrib.get('platformVersion') + self.device = data.attrib.get('device') + self.model = data.attrib.get('model') + self.vendor = data.attrib.get('vendor') + self.provides = data.attrib.get('provides') + self.clientIdentifier = data.attrib.get('clientIdentifier') + self.version = data.attrib.get('version') + self.id = data.attrib.get('id') + self.token = logfilter.add_secret(data.attrib.get('token')) + self.screenResolution = data.attrib.get('screenResolution') + self.screenDensity = data.attrib.get('screenDensity') + self.createdAt = utils.toDatetime(data.attrib.get('createdAt')) + self.lastSeenAt = utils.toDatetime(data.attrib.get('lastSeenAt')) + self.connections = self.listAttrs(data, 'uri', etag='Connection') + + def connect(self, timeout=None): + """ Returns a new :class:`~plexapi.client.PlexClient` or :class:`~plexapi.server.PlexServer` + Sometimes there is more than one address specified for a server or client. + After trying to connect to all available addresses for this client and assuming + at least one connection was successful, the PlexClient object is built and returned. + + Raises: + :exc:`~plexapi.exceptions.NotFound`: When unable to connect to any addresses for this device. + """ + cls = PlexServer if 'server' in self.provides else PlexClient + listargs = [[cls, url, self.token, timeout] for url in self.connections] + log.debug('Testing %s device connections..', len(listargs)) + results = utils.threaded(_connect, listargs) + return _chooseConnection('Device', self.name, results) + + def delete(self): + """ Remove this device from your account. """ + key = 'https://plex.tv/devices/%s.xml' % self.id + self._server.query(key, self._server._session.delete) + + def syncItems(self): + """ Returns an instance of :class:`~plexapi.sync.SyncList` for current device. + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: when the device doesn`t provides `sync-target`. + """ + if 'sync-target' not in self.provides: + raise BadRequest('Requested syncList for device which do not provides sync-target') + + return self._server.syncItems(client=self) + + +class MyPlexPinLogin(object): + """ + MyPlex PIN login class which supports getting the four character PIN which the user must + enter on https://plex.tv/link to authenticate the client and provide an access token to + create a :class:`~plexapi.myplex.MyPlexAccount` instance. + This helper class supports a polling, threaded and callback approach. + + - The polling approach expects the developer to periodically check if the PIN login was + successful using :func:`~plexapi.myplex.MyPlexPinLogin.checkLogin`. + - The threaded approach expects the developer to call + :func:`~plexapi.myplex.MyPlexPinLogin.run` and then at a later time call + :func:`~plexapi.myplex.MyPlexPinLogin.waitForLogin` to wait for and check the result. + - The callback approach is an extension of the threaded approach and expects the developer + to pass the `callback` parameter to the call to :func:`~plexapi.myplex.MyPlexPinLogin.run`. + The callback will be called when the thread waiting for the PIN login to succeed either + finishes or expires. The parameter passed to the callback is the received authentication + token or `None` if the login expired. + + Parameters: + session (requests.Session, optional): Use your own session object if you want to + cache the http responses from PMS + requestTimeout (int): timeout in seconds on initial connect to plex.tv (default config.TIMEOUT). + + Attributes: + PINS (str): 'https://plex.tv/api/v2/pins' + CHECKPINS (str): 'https://plex.tv/api/v2/pins/{pinid}' + LINK (str): 'https://plex.tv/api/v2/pins/link' + POLLINTERVAL (int): 1 + finished (bool): Whether the pin login has finished or not. + expired (bool): Whether the pin login has expired or not. + token (str): Token retrieved through the pin login. + pin (str): Pin to use for the login on https://plex.tv/link. + """ + PINS = 'https://plex.tv/api/v2/pins' # get + CHECKPINS = 'https://plex.tv/api/v2/pins/{pinid}' # get + POLLINTERVAL = 1 + + def __init__(self, session=None, requestTimeout=None, headers=None): + super(MyPlexPinLogin, self).__init__() + self._session = session or requests.Session() + self._requestTimeout = requestTimeout or TIMEOUT + self.headers = headers + + self._loginTimeout = None + self._callback = None + self._thread = None + self._abort = False + self._id = None + self._code = None + self._getCode() + + self.finished = False + self.expired = False + self.token = None + + @property + def pin(self): + return self._code + + def run(self, callback=None, timeout=None): + """ Starts the thread which monitors the PIN login state. + Parameters: + callback (Callable[str]): Callback called with the received authentication token (optional). + timeout (int): Timeout in seconds waiting for the PIN login to succeed (optional). + + Raises: + :class:`RuntimeError`: If the thread is already running. + :class:`RuntimeError`: If the PIN login for the current PIN has expired. + """ + if self._thread and not self._abort: + raise RuntimeError('MyPlexPinLogin thread is already running') + if self.expired: + raise RuntimeError('MyPlexPinLogin has expired') + + self._loginTimeout = timeout + self._callback = callback + self._abort = False + self.finished = False + self._thread = threading.Thread(target=self._pollLogin, name='plexapi.myplex.MyPlexPinLogin') + self._thread.start() + + def waitForLogin(self): + """ Waits for the PIN login to succeed or expire. + Parameters: + callback (Callable[str]): Callback called with the received authentication token (optional). + timeout (int): Timeout in seconds waiting for the PIN login to succeed (optional). + + Returns: + `True` if the PIN login succeeded or `False` otherwise. + """ + if not self._thread or self._abort: + return False + + self._thread.join() + if self.expired or not self.token: + return False + + return True + + def stop(self): + """ Stops the thread monitoring the PIN login state. """ + if not self._thread or self._abort: + return + + self._abort = True + self._thread.join() + + def checkLogin(self): + """ Returns `True` if the PIN login has succeeded. """ + if self._thread: + return False + + try: + return self._checkLogin() + except Exception: + self.expired = True + self.finished = True + + return False + + def _getCode(self): + url = self.PINS + response = self._query(url, self._session.post) + if not response: + return None + + self._id = response.attrib.get('id') + self._code = response.attrib.get('code') + + return self._code + + def _checkLogin(self): + if not self._id: + return False + + if self.token: + return True + + url = self.CHECKPINS.format(pinid=self._id) + response = self._query(url) + if not response: + return False + + token = response.attrib.get('authToken') + if not token: + return False + + self.token = token + self.finished = True + return True + + def _pollLogin(self): + try: + start = time.time() + while not self._abort and (not self._loginTimeout or (time.time() - start) < self._loginTimeout): + try: + result = self._checkLogin() + except Exception: + self.expired = True + break + + if result: + break + + time.sleep(self.POLLINTERVAL) + + if self.token and self._callback: + self._callback(self.token) + finally: + self.finished = True + + def _headers(self, **kwargs): + """ Returns dict containing base headers for all requests for pin login. """ + headers = BASE_HEADERS.copy() + if self.headers: + headers.update(self.headers) + headers.update(kwargs) + return headers + + def _query(self, url, method=None, headers=None, **kwargs): + method = method or self._session.get + log.debug('%s %s', method.__name__.upper(), url) + headers = headers or self._headers() + response = method(url, headers=headers, timeout=self._requestTimeout, **kwargs) + if not response.ok: # pragma: no cover + codename = codes.get(response.status_code)[0] + errtext = response.text.replace('\n', ' ') + raise BadRequest('(%s) %s %s; %s' % (response.status_code, codename, response.url, errtext)) + data = response.text.encode('utf8') + return ElementTree.fromstring(data) if data.strip() else None + + +def _connect(cls, url, token, timeout, results, i, job_is_done_event=None): + """ Connects to the specified cls with url and token. Stores the connection + information to results[i] in a threadsafe way. + + Arguments: + cls: the class which is responsible for establishing connection, basically it's + :class:`~plexapi.client.PlexClient` or :class:`~plexapi.server.PlexServer` + url (str): url which should be passed as `baseurl` argument to cls.__init__() + token (str): authentication token which should be passed as `baseurl` argument to cls.__init__() + timeout (int): timeout which should be passed as `baseurl` argument to cls.__init__() + results (list): pre-filled list for results + i (int): index of current job, should be less than len(results) + job_is_done_event (:class:`~threading.Event`): is X_PLEX_ENABLE_FAST_CONNECT is True then the + event would be set as soon the connection is established + """ + starttime = time.time() + try: + device = cls(baseurl=url, token=token, timeout=timeout) + runtime = int(time.time() - starttime) + results[i] = (url, token, device, runtime) + if X_PLEX_ENABLE_FAST_CONNECT and job_is_done_event: + job_is_done_event.set() + except Exception as err: + runtime = int(time.time() - starttime) + log.error('%s: %s', url, err) + results[i] = (url, token, None, runtime) + + +def _chooseConnection(ctype, name, results): + """ Chooses the first (best) connection from the given _connect results. """ + # At this point we have a list of result tuples containing (url, token, PlexServer, runtime) + # or (url, token, None, runtime) in the case a connection could not be established. + for url, token, result, runtime in results: + okerr = 'OK' if result else 'ERR' + log.debug('%s connection %s (%ss): %s?X-Plex-Token=%s', ctype, okerr, runtime, url, token) + results = [r[2] for r in results if r and r[2] is not None] + if results: + log.debug('Connecting to %s: %s?X-Plex-Token=%s', ctype, results[0]._baseurl, results[0]._token) + return results[0] + raise NotFound('Unable to connect to %s: %s' % (ctype.lower(), name)) + + +class AccountOptOut(PlexObject): + """ Represents a single AccountOptOut + 'https://plex.tv/api/v2/user/{userUUID}/settings/opt_outs' + + Attributes: + TAG (str): optOut + key (str): Online Media Source key + value (str): Online Media Source opt_in, opt_out, or opt_out_managed + """ + TAG = 'optOut' + CHOICES = {'opt_in', 'opt_out', 'opt_out_managed'} + + def _loadData(self, data): + self.key = data.attrib.get('key') + self.value = data.attrib.get('value') + + def _updateOptOut(self, option): + """ Sets the Online Media Sources option. + + Parameters: + option (str): see CHOICES + + Raises: + :exc:`~plexapi.exceptions.NotFound`: ``option`` str not found in CHOICES. + """ + if option not in self.CHOICES: + raise NotFound('%s not found in available choices: %s' % (option, self.CHOICES)) + url = self._server.OPTOUTS % {'userUUID': self._server.uuid} + params = {'key': self.key, 'value': option} + self._server.query(url, method=self._server._session.post, params=params) + self.value = option # assume query successful and set the value to option + + def optIn(self): + """ Sets the Online Media Source to "Enabled". """ + self._updateOptOut('opt_in') + + def optOut(self): + """ Sets the Online Media Source to "Disabled". """ + self._updateOptOut('opt_out') + + def optOutManaged(self): + """ Sets the Online Media Source to "Disabled for Managed Users". + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: When trying to opt out music. + """ + if self.key == 'tv.plex.provider.music': + raise BadRequest('%s does not have the option to opt out managed users.' % self.key) + self._updateOptOut('opt_out_managed') diff --git a/service.plexskipintro/plexapi/photo.py b/service.plexskipintro/plexapi/photo.py new file mode 100644 index 0000000000..c24d7fb169 --- /dev/null +++ b/service.plexskipintro/plexapi/photo.py @@ -0,0 +1,276 @@ +# -*- coding: utf-8 -*- +import os +from urllib.parse import quote_plus + +from plexapi import media, utils, video +from plexapi.base import Playable, PlexPartialObject +from plexapi.exceptions import BadRequest +from plexapi.mixins import ArtUrlMixin, ArtMixin, PosterUrlMixin, PosterMixin, RatingMixin, TagMixin + + +@utils.registerPlexObject +class Photoalbum(PlexPartialObject, ArtMixin, PosterMixin, RatingMixin): + """ Represents a single Photoalbum (collection of photos). + + Attributes: + TAG (str): 'Directory' + TYPE (str): 'photo' + addedAt (datetime): Datetime the photo album was added to the library. + art (str): URL to artwork image (/library/metadata/<ratingKey>/art/<artid>). + composite (str): URL to composite image (/library/metadata/<ratingKey>/composite/<compositeid>) + fields (List<:class:`~plexapi.media.Field`>): List of field objects. + guid (str): Plex GUID for the photo album (local://229674). + index (sting): Plex index number for the photo album. + key (str): API URL (/library/metadata/<ratingkey>). + lastRatedAt (datetime): Datetime the photo album was last rated. + librarySectionID (int): :class:`~plexapi.library.LibrarySection` ID. + librarySectionKey (str): :class:`~plexapi.library.LibrarySection` key. + librarySectionTitle (str): :class:`~plexapi.library.LibrarySection` title. + listType (str): Hardcoded as 'photo' (useful for search filters). + ratingKey (int): Unique key identifying the photo album. + summary (str): Summary of the photoalbum. + thumb (str): URL to thumbnail image (/library/metadata/<ratingKey>/thumb/<thumbid>). + title (str): Name of the photo album. (Trip to Disney World) + titleSort (str): Title to use when sorting (defaults to title). + type (str): 'photo' + updatedAt (datatime): Datetime the photo album was updated. + userRating (float): Rating of the photo album (0.0 - 10.0) equaling (0 stars - 5 stars). + """ + TAG = 'Directory' + TYPE = 'photo' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self.addedAt = utils.toDatetime(data.attrib.get('addedAt')) + self.art = data.attrib.get('art') + self.composite = data.attrib.get('composite') + self.fields = self.findItems(data, media.Field) + self.guid = data.attrib.get('guid') + self.index = utils.cast(int, data.attrib.get('index')) + self.key = data.attrib.get('key', '').replace('/children', '') # FIX_BUG_50 + self.lastRatedAt = utils.toDatetime(data.attrib.get('lastRatedAt')) + self.librarySectionID = utils.cast(int, data.attrib.get('librarySectionID')) + self.librarySectionKey = data.attrib.get('librarySectionKey') + self.librarySectionTitle = data.attrib.get('librarySectionTitle') + self.listType = 'photo' + self.ratingKey = utils.cast(int, data.attrib.get('ratingKey')) + self.summary = data.attrib.get('summary') + self.thumb = data.attrib.get('thumb') + self.title = data.attrib.get('title') + self.titleSort = data.attrib.get('titleSort', self.title) + self.type = data.attrib.get('type') + self.updatedAt = utils.toDatetime(data.attrib.get('updatedAt')) + self.userRating = utils.cast(float, data.attrib.get('userRating')) + + def album(self, title): + """ Returns the :class:`~plexapi.photo.Photoalbum` that matches the specified title. + + Parameters: + title (str): Title of the photo album to return. + """ + key = '/library/metadata/%s/children' % self.ratingKey + return self.fetchItem(key, Photoalbum, title__iexact=title) + + def albums(self, **kwargs): + """ Returns a list of :class:`~plexapi.photo.Photoalbum` objects in the album. """ + key = '/library/metadata/%s/children' % self.ratingKey + return self.fetchItems(key, Photoalbum, **kwargs) + + def photo(self, title): + """ Returns the :class:`~plexapi.photo.Photo` that matches the specified title. + + Parameters: + title (str): Title of the photo to return. + """ + key = '/library/metadata/%s/children' % self.ratingKey + return self.fetchItem(key, Photo, title__iexact=title) + + def photos(self, **kwargs): + """ Returns a list of :class:`~plexapi.photo.Photo` objects in the album. """ + key = '/library/metadata/%s/children' % self.ratingKey + return self.fetchItems(key, Photo, **kwargs) + + def clip(self, title): + """ Returns the :class:`~plexapi.video.Clip` that matches the specified title. + + Parameters: + title (str): Title of the clip to return. + """ + key = '/library/metadata/%s/children' % self.ratingKey + return self.fetchItem(key, video.Clip, title__iexact=title) + + def clips(self, **kwargs): + """ Returns a list of :class:`~plexapi.video.Clip` objects in the album. """ + key = '/library/metadata/%s/children' % self.ratingKey + return self.fetchItems(key, video.Clip, **kwargs) + + def get(self, title): + """ Alias to :func:`~plexapi.photo.Photoalbum.photo`. """ + return self.episode(title) + + def download(self, savepath=None, keep_original_name=False, subfolders=False): + """ Download all photos and clips from the photo ablum. See :func:`~plexapi.base.Playable.download` for details. + + Parameters: + savepath (str): Defaults to current working dir. + keep_original_name (bool): True to keep the original filename otherwise + a friendlier filename is generated. + subfolders (bool): True to separate photos/clips in to photo album folders. + """ + filepaths = [] + for album in self.albums(): + _savepath = os.path.join(savepath, album.title) if subfolders else savepath + filepaths += album.download(_savepath, keep_original_name) + for photo in self.photos() + self.clips(): + filepaths += photo.download(savepath, keep_original_name) + return filepaths + + def _getWebURL(self, base=None): + """ Get the Plex Web URL with the correct parameters. """ + return self._server._buildWebURL(base=base, endpoint='details', key=self.key, legacy=1) + + +@utils.registerPlexObject +class Photo(PlexPartialObject, Playable, ArtUrlMixin, PosterUrlMixin, RatingMixin, TagMixin): + """ Represents a single Photo. + + Attributes: + TAG (str): 'Photo' + TYPE (str): 'photo' + addedAt (datetime): Datetime the photo was added to the library. + createdAtAccuracy (str): Unknown (local). + createdAtTZOffset (int): Unknown (-25200). + fields (List<:class:`~plexapi.media.Field`>): List of field objects. + guid (str): Plex GUID for the photo (com.plexapp.agents.none://231714?lang=xn). + index (sting): Plex index number for the photo. + key (str): API URL (/library/metadata/<ratingkey>). + lastRatedAt (datetime): Datetime the photo was last rated. + librarySectionID (int): :class:`~plexapi.library.LibrarySection` ID. + librarySectionKey (str): :class:`~plexapi.library.LibrarySection` key. + librarySectionTitle (str): :class:`~plexapi.library.LibrarySection` title. + listType (str): Hardcoded as 'photo' (useful for search filters). + media (List<:class:`~plexapi.media.Media`>): List of media objects. + originallyAvailableAt (datetime): Datetime the photo was added to Plex. + parentGuid (str): Plex GUID for the photo album (local://229674). + parentIndex (int): Plex index number for the photo album. + parentKey (str): API URL of the photo album (/library/metadata/<parentRatingKey>). + parentRatingKey (int): Unique key identifying the photo album. + parentThumb (str): URL to photo album thumbnail image (/library/metadata/<parentRatingKey>/thumb/<thumbid>). + parentTitle (str): Name of the photo album for the photo. + ratingKey (int): Unique key identifying the photo. + summary (str): Summary of the photo. + tags (List<:class:`~plexapi.media.Tag`>): List of tag objects. + thumb (str): URL to thumbnail image (/library/metadata/<ratingKey>/thumb/<thumbid>). + title (str): Name of the photo. + titleSort (str): Title to use when sorting (defaults to title). + type (str): 'photo' + updatedAt (datatime): Datetime the photo was updated. + userRating (float): Rating of the photo (0.0 - 10.0) equaling (0 stars - 5 stars). + year (int): Year the photo was taken. + """ + TAG = 'Photo' + TYPE = 'photo' + METADATA_TYPE = 'photo' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + Playable._loadData(self, data) + self.addedAt = utils.toDatetime(data.attrib.get('addedAt')) + self.createdAtAccuracy = data.attrib.get('createdAtAccuracy') + self.createdAtTZOffset = utils.cast(int, data.attrib.get('createdAtTZOffset')) + self.fields = self.findItems(data, media.Field) + self.guid = data.attrib.get('guid') + self.index = utils.cast(int, data.attrib.get('index')) + self.key = data.attrib.get('key', '') + self.lastRatedAt = utils.toDatetime(data.attrib.get('lastRatedAt')) + self.librarySectionID = utils.cast(int, data.attrib.get('librarySectionID')) + self.librarySectionKey = data.attrib.get('librarySectionKey') + self.librarySectionTitle = data.attrib.get('librarySectionTitle') + self.listType = 'photo' + self.media = self.findItems(data, media.Media) + self.originallyAvailableAt = utils.toDatetime(data.attrib.get('originallyAvailableAt'), '%Y-%m-%d') + self.parentGuid = data.attrib.get('parentGuid') + self.parentIndex = utils.cast(int, data.attrib.get('parentIndex')) + self.parentKey = data.attrib.get('parentKey') + self.parentRatingKey = utils.cast(int, data.attrib.get('parentRatingKey')) + self.parentThumb = data.attrib.get('parentThumb') + self.parentTitle = data.attrib.get('parentTitle') + self.ratingKey = utils.cast(int, data.attrib.get('ratingKey')) + self.summary = data.attrib.get('summary') + self.tags = self.findItems(data, media.Tag) + self.thumb = data.attrib.get('thumb') + self.title = data.attrib.get('title') + self.titleSort = data.attrib.get('titleSort', self.title) + self.type = data.attrib.get('type') + self.updatedAt = utils.toDatetime(data.attrib.get('updatedAt')) + self.userRating = utils.cast(float, data.attrib.get('userRating')) + self.year = utils.cast(int, data.attrib.get('year')) + + def _prettyfilename(self): + """ Returns a filename for use in download. """ + if self.parentTitle: + return '%s - %s' % (self.parentTitle, self.title) + return self.title + + def photoalbum(self): + """ Return the photo's :class:`~plexapi.photo.Photoalbum`. """ + return self.fetchItem(self.parentKey) + + def section(self): + """ Returns the :class:`~plexapi.library.LibrarySection` the item belongs to. """ + if hasattr(self, 'librarySectionID'): + return self._server.library.sectionByID(self.librarySectionID) + elif self.parentKey: + return self._server.library.sectionByID(self.photoalbum().librarySectionID) + else: + raise BadRequest('Unable to get section for photo, can`t find librarySectionID') + + @property + def locations(self): + """ This does not exist in plex xml response but is added to have a common + interface to get the locations of the photo. + + Returns: + List<str> of file paths where the photo is found on disk. + """ + return [part.file for item in self.media for part in item.parts if part] + + def sync(self, resolution, client=None, clientId=None, limit=None, title=None): + """ Add current photo as sync item for specified device. + See :func:`~plexapi.myplex.MyPlexAccount.sync` for possible exceptions. + + Parameters: + resolution (str): maximum allowed resolution for synchronized photos, see PHOTO_QUALITY_* values in the + module :mod:`~plexapi.sync`. + client (:class:`~plexapi.myplex.MyPlexDevice`): sync destination, see + :func:`~plexapi.myplex.MyPlexAccount.sync`. + clientId (str): sync destination, see :func:`~plexapi.myplex.MyPlexAccount.sync`. + limit (int): maximum count of items to sync, unlimited if `None`. + title (str): descriptive title for the new :class:`~plexapi.sync.SyncItem`, if empty the value would be + generated from metadata of current photo. + + Returns: + :class:`~plexapi.sync.SyncItem`: an instance of created syncItem. + """ + + from plexapi.sync import SyncItem, Policy, MediaSettings + + myplex = self._server.myPlexAccount() + sync_item = SyncItem(self._server, None) + sync_item.title = title if title else self.title + sync_item.rootTitle = self.title + sync_item.contentType = self.listType + sync_item.metadataType = self.METADATA_TYPE + sync_item.machineIdentifier = self._server.machineIdentifier + + section = self.section() + + sync_item.location = 'library://%s/item/%s' % (section.uuid, quote_plus(self.key)) + sync_item.policy = Policy.create(limit) + sync_item.mediaSettings = MediaSettings.createPhoto(resolution) + + return myplex.sync(sync_item, client=client, clientId=clientId) + + def _getWebURL(self, base=None): + """ Get the Plex Web URL with the correct parameters. """ + return self._server._buildWebURL(base=base, endpoint='details', key=self.parentKey, legacy=1) diff --git a/service.plexskipintro/plexapi/playlist.py b/service.plexskipintro/plexapi/playlist.py new file mode 100644 index 0000000000..88ab6aadf5 --- /dev/null +++ b/service.plexskipintro/plexapi/playlist.py @@ -0,0 +1,470 @@ +# -*- coding: utf-8 -*- +import re +from urllib.parse import quote_plus, unquote + +from plexapi import media, utils +from plexapi.base import Playable, PlexPartialObject +from plexapi.exceptions import BadRequest, NotFound, Unsupported +from plexapi.library import LibrarySection +from plexapi.mixins import ArtMixin, PosterMixin, SmartFilterMixin +from plexapi.playqueue import PlayQueue +from plexapi.utils import deprecated + + +@utils.registerPlexObject +class Playlist(PlexPartialObject, Playable, ArtMixin, PosterMixin, SmartFilterMixin): + """ Represents a single Playlist. + + Attributes: + TAG (str): 'Playlist' + TYPE (str): 'playlist' + addedAt (datetime): Datetime the playlist was added to the server. + allowSync (bool): True if you allow syncing playlists. + composite (str): URL to composite image (/playlist/<ratingKey>/composite/<compositeid>) + content (str): The filter URI string for smart playlists. + duration (int): Duration of the playlist in milliseconds. + durationInSeconds (int): Duration of the playlist in seconds. + fields (List<:class:`~plexapi.media.Field`>): List of field objects. + guid (str): Plex GUID for the playlist (com.plexapp.agents.none://XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX). + icon (str): Icon URI string for smart playlists. + key (str): API URL (/playlist/<ratingkey>). + leafCount (int): Number of items in the playlist view. + playlistType (str): 'audio', 'video', or 'photo' + ratingKey (int): Unique key identifying the playlist. + smart (bool): True if the playlist is a smart playlist. + summary (str): Summary of the playlist. + title (str): Name of the playlist. + type (str): 'playlist' + updatedAt (datatime): Datetime the playlist was updated. + """ + TAG = 'Playlist' + TYPE = 'playlist' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + Playable._loadData(self, data) + self.addedAt = utils.toDatetime(data.attrib.get('addedAt')) + self.allowSync = utils.cast(bool, data.attrib.get('allowSync')) + self.composite = data.attrib.get('composite') # url to thumbnail + self.content = data.attrib.get('content') + self.duration = utils.cast(int, data.attrib.get('duration')) + self.durationInSeconds = utils.cast(int, data.attrib.get('durationInSeconds')) + self.fields = self.findItems(data, media.Field) + self.guid = data.attrib.get('guid') + self.icon = data.attrib.get('icon') + self.key = data.attrib.get('key', '').replace('/items', '') # FIX_BUG_50 + self.leafCount = utils.cast(int, data.attrib.get('leafCount')) + self.playlistType = data.attrib.get('playlistType') + self.ratingKey = utils.cast(int, data.attrib.get('ratingKey')) + self.smart = utils.cast(bool, data.attrib.get('smart')) + self.summary = data.attrib.get('summary') + self.title = data.attrib.get('title') + self.type = data.attrib.get('type') + self.updatedAt = utils.toDatetime(data.attrib.get('updatedAt')) + self._items = None # cache for self.items + self._section = None # cache for self.section + self._filters = None # cache for self.filters + + def __len__(self): # pragma: no cover + return len(list(self.items())) + + def __iter__(self): # pragma: no cover + for item in list(self.items()): + yield item + + def __contains__(self, other): # pragma: no cover + return any(i.key == other.key for i in list(self.items())) + + def __getitem__(self, key): # pragma: no cover + return list(self.items())[key] + + @property + def thumb(self): + """ Alias to self.composite. """ + return self.composite + + @property + def metadataType(self): + """ Returns the type of metadata in the playlist (movie, track, or photo). """ + if self.isVideo: + return 'movie' + elif self.isAudio: + return 'track' + elif self.isPhoto: + return 'photo' + else: + raise Unsupported('Unexpected playlist type') + + @property + def isVideo(self): + """ Returns True if this is a video playlist. """ + return self.playlistType == 'video' + + @property + def isAudio(self): + """ Returns True if this is an audio playlist. """ + return self.playlistType == 'audio' + + @property + def isPhoto(self): + """ Returns True if this is a photo playlist. """ + return self.playlistType == 'photo' + + def _getPlaylistItemID(self, item): + """ Match an item to a playlist item and return the item playlistItemID. """ + for _item in list(self.items()): + if _item.ratingKey == item.ratingKey: + return _item.playlistItemID + raise NotFound('Item with title "%s" not found in the playlist' % item.title) + + def filters(self): + """ Returns the search filter dict for smart playlist. + The filter dict be passed back into :func:`~plexapi.library.LibrarySection.search` + to get the list of items. + """ + if self.smart and self._filters is None: + self._filters = self._parseFilters(self.content) + return self._filters + + def section(self): + """ Returns the :class:`~plexapi.library.LibrarySection` this smart playlist belongs to. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When trying to get the section for a regular playlist. + :class:`plexapi.exceptions.Unsupported`: When unable to determine the library section. + """ + if not self.smart: + raise BadRequest('Regular playlists are not associated with a library.') + + if self._section is None: + # Try to parse the library section from the content URI string + match = re.search(r'/library/sections/(\d+)/all', unquote(self.content or '')) + if match: + sectionKey = int(match.group(1)) + self._section = self._server.library.sectionByID(sectionKey) + return self._section + + # Try to get the library section from the first item in the playlist + if list(self.items()): + self._section = list(self.items())[0].section() + return self._section + + raise Unsupported('Unable to determine the library section') + + return self._section + + def item(self, title): + """ Returns the item in the playlist that matches the specified title. + + Parameters: + title (str): Title of the item to return. + + Raises: + :class:`plexapi.exceptions.NotFound`: When the item is not found in the playlist. + """ + for item in list(self.items()): + if item.title.lower() == title.lower(): + return item + raise NotFound('Item with title "%s" not found in the playlist' % title) + + def items(self): + """ Returns a list of all items in the playlist. """ + if self._items is None: + key = '%s/items' % self.key + items = self.fetchItems(key) + self._items = items + return self._items + + def get(self, title): + """ Alias to :func:`~plexapi.playlist.Playlist.item`. """ + return self.item(title) + + def addItems(self, items): + """ Add items to the playlist. + + Parameters: + items (List): List of :class:`~plexapi.audio.Audio`, :class:`~plexapi.video.Video`, + or :class:`~plexapi.photo.Photo` objects to be added to the playlist. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When trying to add items to a smart playlist. + """ + if self.smart: + raise BadRequest('Cannot add items to a smart playlist.') + + if items and not isinstance(items, (list, tuple)): + items = [items] + + ratingKeys = [] + for item in items: + if item.listType != self.playlistType: # pragma: no cover + raise BadRequest('Can not mix media types when building a playlist: %s and %s' % + (self.playlistType, item.listType)) + ratingKeys.append(str(item.ratingKey)) + + ratingKeys = ','.join(ratingKeys) + uri = '%s/library/metadata/%s' % (self._server._uriRoot(), ratingKeys) + + key = '%s/items%s' % (self.key, utils.joinArgs({ + 'uri': uri + })) + self._server.query(key, method=self._server._session.put) + + @deprecated('use "removeItems" instead', stacklevel=3) + def removeItem(self, item): + self.removeItems(item) + + def removeItems(self, items): + """ Remove items from the playlist. + + Parameters: + items (List): List of :class:`~plexapi.audio.Audio`, :class:`~plexapi.video.Video`, + or :class:`~plexapi.photo.Photo` objects to be removed from the playlist. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When trying to remove items from a smart playlist. + :class:`plexapi.exceptions.NotFound`: When the item does not exist in the playlist. + """ + if self.smart: + raise BadRequest('Cannot remove items from a smart playlist.') + + if items and not isinstance(items, (list, tuple)): + items = [items] + + for item in items: + playlistItemID = self._getPlaylistItemID(item) + key = '%s/items/%s' % (self.key, playlistItemID) + self._server.query(key, method=self._server._session.delete) + + def moveItem(self, item, after=None): + """ Move an item to a new position in the playlist. + + Parameters: + items (obj): :class:`~plexapi.audio.Audio`, :class:`~plexapi.video.Video`, + or :class:`~plexapi.photo.Photo` objects to be moved in the playlist. + after (obj): :class:`~plexapi.audio.Audio`, :class:`~plexapi.video.Video`, + or :class:`~plexapi.photo.Photo` objects to move the item after in the playlist. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When trying to move items in a smart playlist. + :class:`plexapi.exceptions.NotFound`: When the item or item after does not exist in the playlist. + """ + if self.smart: + raise BadRequest('Cannot move items in a smart playlist.') + + playlistItemID = self._getPlaylistItemID(item) + key = '%s/items/%s/move' % (self.key, playlistItemID) + + if after: + afterPlaylistItemID = self._getPlaylistItemID(after) + key += '?after=%s' % afterPlaylistItemID + + self._server.query(key, method=self._server._session.put) + + def updateFilters(self, limit=None, sort=None, filters=None, **kwargs): + """ Update the filters for a smart playlist. + + Parameters: + limit (int): Limit the number of items in the playlist. + sort (str or list, optional): A string of comma separated sort fields + or a list of sort fields in the format ``column:dir``. + See :func:`~plexapi.library.LibrarySection.search` for more info. + filters (dict): A dictionary of advanced filters. + See :func:`~plexapi.library.LibrarySection.search` for more info. + **kwargs (dict): Additional custom filters to apply to the search results. + See :func:`~plexapi.library.LibrarySection.search` for more info. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When trying update filters for a regular playlist. + """ + if not self.smart: + raise BadRequest('Cannot update filters for a regular playlist.') + + section = self.section() + searchKey = section._buildSearchKey( + sort=sort, libtype=section.METADATA_TYPE, limit=limit, filters=filters, **kwargs) + uri = '%s%s' % (self._server._uriRoot(), searchKey) + + key = '%s/items%s' % (self.key, utils.joinArgs({ + 'uri': uri + })) + self._server.query(key, method=self._server._session.put) + + def _edit(self, **kwargs): + """ Actually edit the playlist. """ + key = '%s%s' % (self.key, utils.joinArgs(kwargs)) + self._server.query(key, method=self._server._session.put) + + def edit(self, title=None, summary=None): + """ Edit the playlist. + + Parameters: + title (str, optional): The title of the playlist. + summary (str, optional): The summary of the playlist. + """ + args = {} + if title: + args['title'] = title + if summary: + args['summary'] = summary + self._edit(**args) + + def delete(self): + """ Delete the playlist. """ + self._server.query(self.key, method=self._server._session.delete) + + def playQueue(self, *args, **kwargs): + """ Returns a new :class:`~plexapi.playqueue.PlayQueue` from the playlist. """ + return PlayQueue.create(self._server, self, *args, **kwargs) + + @classmethod + def _create(cls, server, title, items): + """ Create a regular playlist. """ + if not items: + raise BadRequest('Must include items to add when creating new playlist.') + + if items and not isinstance(items, (list, tuple)): + items = [items] + + listType = items[0].listType + ratingKeys = [] + for item in items: + if item.listType != listType: # pragma: no cover + raise BadRequest('Can not mix media types when building a playlist.') + ratingKeys.append(str(item.ratingKey)) + + ratingKeys = ','.join(ratingKeys) + uri = '%s/library/metadata/%s' % (server._uriRoot(), ratingKeys) + + key = '/playlists%s' % utils.joinArgs({ + 'uri': uri, + 'type': listType, + 'title': title, + 'smart': 0 + }) + data = server.query(key, method=server._session.post)[0] + return cls(server, data, initpath=key) + + @classmethod + def _createSmart(cls, server, title, section, limit=None, libtype=None, sort=None, filters=None, **kwargs): + """ Create a smart playlist. """ + if not isinstance(section, LibrarySection): + section = server.library.section(section) + + libtype = libtype or section.METADATA_TYPE + + searchKey = section._buildSearchKey( + sort=sort, libtype=libtype, limit=limit, filters=filters, **kwargs) + uri = '%s%s' % (server._uriRoot(), searchKey) + + key = '/playlists%s' % utils.joinArgs({ + 'uri': uri, + 'type': section.CONTENT_TYPE, + 'title': title, + 'smart': 1, + }) + data = server.query(key, method=server._session.post)[0] + return cls(server, data, initpath=key) + + @classmethod + def create(cls, server, title, section=None, items=None, smart=False, limit=None, + libtype=None, sort=None, filters=None, **kwargs): + """ Create a playlist. + + Parameters: + server (:class:`~plexapi.server.PlexServer`): Server to create the playlist on. + title (str): Title of the playlist. + section (:class:`~plexapi.library.LibrarySection`, str): Smart playlists only, + the library section to create the playlist in. + items (List): Regular playlists only, list of :class:`~plexapi.audio.Audio`, + :class:`~plexapi.video.Video`, or :class:`~plexapi.photo.Photo` objects to be added to the playlist. + smart (bool): True to create a smart playlist. Default False. + limit (int): Smart playlists only, limit the number of items in the playlist. + libtype (str): Smart playlists only, the specific type of content to filter + (movie, show, season, episode, artist, album, track, photoalbum, photo). + sort (str or list, optional): Smart playlists only, a string of comma separated sort fields + or a list of sort fields in the format ``column:dir``. + See :func:`~plexapi.library.LibrarySection.search` for more info. + filters (dict): Smart playlists only, a dictionary of advanced filters. + See :func:`~plexapi.library.LibrarySection.search` for more info. + **kwargs (dict): Smart playlists only, additional custom filters to apply to the + search results. See :func:`~plexapi.library.LibrarySection.search` for more info. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When no items are included to create the playlist. + :class:`plexapi.exceptions.BadRequest`: When mixing media types in the playlist. + + Returns: + :class:`~plexapi.playlist.Playlist`: A new instance of the created Playlist. + """ + if smart: + return cls._createSmart(server, title, section, limit, libtype, sort, filters, **kwargs) + else: + return cls._create(server, title, items) + + def copyToUser(self, user): + """ Copy playlist to another user account. + + Parameters: + user (str): Username, email or user id of the user to copy the playlist to. + """ + userServer = self._server.switchUser(user) + return self.create(server=userServer, title=self.title, items=list(self.items())) + + def sync(self, videoQuality=None, photoResolution=None, audioBitrate=None, client=None, clientId=None, limit=None, + unwatched=False, title=None): + """ Add the playlist as a sync item for the specified device. + See :func:`~plexapi.myplex.MyPlexAccount.sync` for possible exceptions. + + Parameters: + videoQuality (int): idx of quality of the video, one of VIDEO_QUALITY_* values defined in + :mod:`~plexapi.sync` module. Used only when playlist contains video. + photoResolution (str): maximum allowed resolution for synchronized photos, see PHOTO_QUALITY_* values in + the module :mod:`~plexapi.sync`. Used only when playlist contains photos. + audioBitrate (int): maximum bitrate for synchronized music, better use one of MUSIC_BITRATE_* values + from the module :mod:`~plexapi.sync`. Used only when playlist contains audio. + client (:class:`~plexapi.myplex.MyPlexDevice`): sync destination, see + :func:`~plexapi.myplex.MyPlexAccount.sync`. + clientId (str): sync destination, see :func:`~plexapi.myplex.MyPlexAccount.sync`. + limit (int): maximum count of items to sync, unlimited if `None`. + unwatched (bool): if `True` watched videos wouldn't be synced. + title (str): descriptive title for the new :class:`~plexapi.sync.SyncItem`, if empty the value would be + generated from metadata of current photo. + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: When playlist is not allowed to sync. + :exc:`~plexapi.exceptions.Unsupported`: When playlist content is unsupported. + + Returns: + :class:`~plexapi.sync.SyncItem`: A new instance of the created sync item. + """ + if not self.allowSync: + raise BadRequest('The playlist is not allowed to sync') + + from plexapi.sync import SyncItem, Policy, MediaSettings + + myplex = self._server.myPlexAccount() + sync_item = SyncItem(self._server, None) + sync_item.title = title if title else self.title + sync_item.rootTitle = self.title + sync_item.contentType = self.playlistType + sync_item.metadataType = self.metadataType + sync_item.machineIdentifier = self._server.machineIdentifier + + sync_item.location = 'playlist:///%s' % quote_plus(self.guid) + sync_item.policy = Policy.create(limit, unwatched) + + if self.isVideo: + sync_item.mediaSettings = MediaSettings.createVideo(videoQuality) + elif self.isAudio: + sync_item.mediaSettings = MediaSettings.createMusic(audioBitrate) + elif self.isPhoto: + sync_item.mediaSettings = MediaSettings.createPhoto(photoResolution) + else: + raise Unsupported('Unsupported playlist content') + + return myplex.sync(sync_item, client=client, clientId=clientId) + + def _getWebURL(self, base=None): + """ Get the Plex Web URL with the correct parameters. """ + return self._server._buildWebURL(base=base, endpoint='playlist', key=self.key) diff --git a/service.plexskipintro/plexapi/playqueue.py b/service.plexskipintro/plexapi/playqueue.py new file mode 100644 index 0000000000..ca6fda6393 --- /dev/null +++ b/service.plexskipintro/plexapi/playqueue.py @@ -0,0 +1,289 @@ +# -*- coding: utf-8 -*- +from urllib.parse import quote_plus + +from plexapi import utils +from plexapi.base import PlexObject +from plexapi.exceptions import BadRequest, Unsupported + + +class PlayQueue(PlexObject): + """Control a PlayQueue. + + Attributes: + TAG (str): 'PlayQueue' + TYPE (str): 'playqueue' + identifier (str): com.plexapp.plugins.library + items (list): List of :class:`~plexapi.media.Media` or :class:`~plexapi.playlist.Playlist` + mediaTagPrefix (str): Fx /system/bundle/media/flags/ + mediaTagVersion (int): Fx 1485957738 + playQueueID (int): ID of the PlayQueue. + playQueueLastAddedItemID (int): + Defines where the "Up Next" region starts. Empty unless PlayQueue is modified after creation. + playQueueSelectedItemID (int): The queue item ID of the currently selected item. + playQueueSelectedItemOffset (int): + The offset of the selected item in the PlayQueue, from the beginning of the queue. + playQueueSelectedMetadataItemID (int): ID of the currently selected item, matches ratingKey. + playQueueShuffled (bool): True if shuffled. + playQueueSourceURI (str): Original URI used to create the PlayQueue. + playQueueTotalCount (int): How many items in the PlayQueue. + playQueueVersion (int): Version of the PlayQueue. Increments every time a change is made to the PlayQueue. + selectedItem (:class:`~plexapi.media.Media`): Media object for the currently selected item. + _server (:class:`~plexapi.server.PlexServer`): PlexServer associated with the PlayQueue. + size (int): Alias for playQueueTotalCount. + """ + + TAG = "PlayQueue" + TYPE = "playqueue" + + def _loadData(self, data): + self._data = data + self.identifier = data.attrib.get("identifier") + self.mediaTagPrefix = data.attrib.get("mediaTagPrefix") + self.mediaTagVersion = utils.cast(int, data.attrib.get("mediaTagVersion")) + self.playQueueID = utils.cast(int, data.attrib.get("playQueueID")) + self.playQueueLastAddedItemID = utils.cast( + int, data.attrib.get("playQueueLastAddedItemID") + ) + self.playQueueSelectedItemID = utils.cast( + int, data.attrib.get("playQueueSelectedItemID") + ) + self.playQueueSelectedItemOffset = utils.cast( + int, data.attrib.get("playQueueSelectedItemOffset") + ) + self.playQueueSelectedMetadataItemID = utils.cast( + int, data.attrib.get("playQueueSelectedMetadataItemID") + ) + self.playQueueShuffled = utils.cast( + bool, data.attrib.get("playQueueShuffled", 0) + ) + self.playQueueSourceURI = data.attrib.get("playQueueSourceURI") + self.playQueueTotalCount = utils.cast( + int, data.attrib.get("playQueueTotalCount") + ) + self.playQueueVersion = utils.cast(int, data.attrib.get("playQueueVersion")) + self.size = utils.cast(int, data.attrib.get("size", 0)) + self.items = self.findItems(data) + self.selectedItem = self[self.playQueueSelectedItemOffset] + + def __getitem__(self, key): + if not self.items: + return None + return self.items[key] + + def __len__(self): + return self.playQueueTotalCount + + def __iter__(self): + yield from self.items + + def __contains__(self, media): + """Returns True if the PlayQueue contains the provided media item.""" + return any(x.playQueueItemID == media.playQueueItemID for x in self.items) + + def getQueueItem(self, item): + """ + Accepts a media item and returns a similar object from this PlayQueue. + Useful for looking up playQueueItemIDs using items obtained from the Library. + """ + matches = [x for x in self.items if x == item] + if len(matches) == 1: + return matches[0] + elif len(matches) > 1: + raise BadRequest( + "{item} occurs multiple times in this PlayQueue, provide exact item".format(item=item) + ) + else: + raise BadRequest("{item} not valid for this PlayQueue".format(item=item)) + + @classmethod + def get( + cls, + server, + playQueueID, + own=False, + center=None, + window=50, + includeBefore=True, + includeAfter=True, + ): + """Retrieve an existing :class:`~plexapi.playqueue.PlayQueue` by identifier. + + Parameters: + server (:class:`~plexapi.server.PlexServer`): Server you are connected to. + playQueueID (int): Identifier of an existing PlayQueue. + own (bool, optional): If server should transfer ownership. + center (int, optional): The playQueueItemID of the center of the window. Does not change selectedItem. + window (int, optional): Number of items to return from each side of the center item. + includeBefore (bool, optional): + Include items before the center, defaults True. Does not include center if False. + includeAfter (bool, optional): + Include items after the center, defaults True. Does not include center if False. + """ + args = { + "own": utils.cast(int, own), + "window": window, + "includeBefore": utils.cast(int, includeBefore), + "includeAfter": utils.cast(int, includeAfter), + } + if center: + args["center"] = center + + path = "/playQueues/{playQueueID}{args}".format(playQueueID=playQueueID, args=utils.joinArgs(args)) + data = server.query(path, method=server._session.get) + c = cls(server, data, initpath=path) + c._server = server + return c + + @classmethod + def create( + cls, + server, + items, + startItem=None, + shuffle=0, + repeat=0, + includeChapters=1, + includeRelated=1, + continuous=0, + ): + """Create and return a new :class:`~plexapi.playqueue.PlayQueue`. + + Parameters: + server (:class:`~plexapi.server.PlexServer`): Server you are connected to. + items (:class:`~plexapi.media.Media` or :class:`~plexapi.playlist.Playlist`): + A media item, list of media items, or Playlist. + startItem (:class:`~plexapi.media.Media`, optional): + Media item in the PlayQueue where playback should begin. + shuffle (int, optional): Start the playqueue shuffled. + repeat (int, optional): Start the playqueue shuffled. + includeChapters (int, optional): include Chapters. + includeRelated (int, optional): include Related. + continuous (int, optional): include additional items after the initial item. + For a show this would be the next episodes, for a movie it does nothing. + """ + args = { + "includeChapters": includeChapters, + "includeRelated": includeRelated, + "repeat": repeat, + "shuffle": shuffle, + "continuous": continuous, + } + + if isinstance(items, list): + item_keys = ",".join([str(x.ratingKey) for x in items]) + uri_args = quote_plus("/library/metadata/{item_keys}".format(item_keys=item_keys)) + args["uri"] = "library:///directory/{uri_args}".format(uri_args=uri_args) + args["type"] = items[0].listType + elif items.type == "playlist": + args["playlistID"] = items.ratingKey + args["type"] = items.playlistType + else: + uuid = items.section().uuid + args["type"] = items.listType + args["uri"] = "library://{uuid}/item/{key}".format(uuid=uuid, key=items.key) + + if startItem: + args["key"] = startItem.key + + path = "/playQueues{args}".format(args=utils.joinArgs(args)) + data = server.query(path, method=server._session.post) + c = cls(server, data, initpath=path) + c.playQueueType = args["type"] + c._server = server + return c + + def addItem(self, item, playNext=False, refresh=True): + """ + Append the provided item to the "Up Next" section of the PlayQueue. + Items can only be added to the section immediately following the current playing item. + + Parameters: + item (:class:`~plexapi.media.Media` or :class:`~plexapi.playlist.Playlist`): Single media item or Playlist. + playNext (bool, optional): If True, add this item to the front of the "Up Next" section. + If False, the item will be appended to the end of the "Up Next" section. + Only has an effect if an item has already been added to the "Up Next" section. + See https://support.plex.tv/articles/202188298-play-queues/ for more details. + refresh (bool, optional): Refresh the PlayQueue from the server before updating. + """ + if refresh: + self.refresh() + + args = {} + if item.type == "playlist": + args["playlistID"] = item.ratingKey + itemType = item.playlistType + else: + uuid = item.section().uuid + itemType = item.listType + args["uri"] = "library://{uuid}/item{key}".format(uuid=uuid, key=item.key) + + if itemType != self.playQueueType: + raise Unsupported("Item type does not match PlayQueue type") + + if playNext: + args["next"] = 1 + + path = "/playQueues/{playQueueID}{args}".format(playQueueID=self.playQueueID, args=utils.joinArgs(args)) + data = self._server.query(path, method=self._server._session.put) + self._loadData(data) + + def moveItem(self, item, after=None, refresh=True): + """ + Moves an item to the beginning of the PlayQueue. If `after` is provided, + the item will be placed immediately after the specified item. + + Parameters: + item (:class:`~plexapi.base.Playable`): An existing item in the PlayQueue to move. + afterItemID (:class:`~plexapi.base.Playable`, optional): A different item in the PlayQueue. + If provided, `item` will be placed in the PlayQueue after this item. + refresh (bool, optional): Refresh the PlayQueue from the server before updating. + """ + args = {} + + if refresh: + self.refresh() + + if item not in self: + item = self.getQueueItem(item) + + if after: + if after not in self: + after = self.getQueueItem(after) + args["after"] = after.playQueueItemID + + path = "/playQueues/{playQueueID}/items/{playQueueItemID}/move{args}".format( + playQueueID=self.playQueueID, playQueueItemID=item.playQueueItemID, args=utils.joinArgs(args) + ) + data = self._server.query(path, method=self._server._session.put) + self._loadData(data) + + def removeItem(self, item, refresh=True): + """Remove an item from the PlayQueue. + + Parameters: + item (:class:`~plexapi.base.Playable`): An existing item in the PlayQueue to move. + refresh (bool, optional): Refresh the PlayQueue from the server before updating. + """ + if refresh: + self.refresh() + + if item not in self: + item = self.getQueueItem(item) + + path = "/playQueues/{playQueueID}/items/{playQueueItemID}".format( + playQueueID=self.playQueueID, playQueueItemID=item.playQueueItemID + ) + data = self._server.query(path, method=self._server._session.delete) + self._loadData(data) + + def clear(self): + """Remove all items from the PlayQueue.""" + path = "/playQueues/{playQueueID}/items".format(playQueueID=self.playQueueID) + data = self._server.query(path, method=self._server._session.delete) + self._loadData(data) + + def refresh(self): + """Refresh the PlayQueue from the Plex server.""" + path = "/playQueues/{playQueueID}".format(playQueueID=self.playQueueID) + data = self._server.query(path, method=self._server._session.get) + self._loadData(data) diff --git a/service.plexskipintro/plexapi/server.py b/service.plexskipintro/plexapi/server.py new file mode 100644 index 0000000000..6cf32102a3 --- /dev/null +++ b/service.plexskipintro/plexapi/server.py @@ -0,0 +1,1155 @@ +# -*- coding: utf-8 -*- +from urllib.parse import urlencode +from xml.etree import ElementTree + +import requests +from plexapi import (BASE_HEADERS, CONFIG, TIMEOUT, X_PLEX_CONTAINER_SIZE, log, + logfilter) +from plexapi import utils +from plexapi.alert import AlertListener +from plexapi.base import PlexObject +from plexapi.client import PlexClient +from plexapi.collection import Collection +from plexapi.exceptions import BadRequest, NotFound, Unauthorized +from plexapi.library import Hub, Library, Path, File +from plexapi.media import Conversion, Optimized +from plexapi.playlist import Playlist +from plexapi.playqueue import PlayQueue +from plexapi.settings import Settings +from plexapi.utils import deprecated +from requests.status_codes import _codes as codes + +# Need these imports to populate utils.PLEXOBJECTS +from plexapi import audio as _audio # noqa: F401 +from plexapi import collection as _collection # noqa: F401 +from plexapi import media as _media # noqa: F401 +from plexapi import photo as _photo # noqa: F401 +from plexapi import playlist as _playlist # noqa: F401 +from plexapi import video as _video # noqa: F401 + + +class PlexServer(PlexObject): + """ This is the main entry point to interacting with a Plex server. It allows you to + list connected clients, browse your library sections and perform actions such as + emptying trash. If you do not know the auth token required to access your Plex + server, or simply want to access your server with your username and password, you + can also create an PlexServer instance from :class:`~plexapi.myplex.MyPlexAccount`. + + Parameters: + baseurl (str): Base url for to access the Plex Media Server (default: 'http://localhost:32400'). + token (str): Required Plex authentication token to access the server. + session (requests.Session, optional): Use your own session object if you want to + cache the http responses from the server. + timeout (int, optional): Timeout in seconds on initial connection to the server + (default config.TIMEOUT). + + Attributes: + allowCameraUpload (bool): True if server allows camera upload. + allowChannelAccess (bool): True if server allows channel access (iTunes?). + allowMediaDeletion (bool): True is server allows media to be deleted. + allowSharing (bool): True is server allows sharing. + allowSync (bool): True is server allows sync. + backgroundProcessing (bool): Unknown + certificate (bool): True if server has an HTTPS certificate. + companionProxy (bool): Unknown + diagnostics (bool): Unknown + eventStream (bool): Unknown + friendlyName (str): Human friendly name for this server. + hubSearch (bool): True if `Hub Search <https://www.plex.tv/blog + /seek-plex-shall-find-leveling-web-app/>`_ is enabled. I believe this + is enabled for everyone + machineIdentifier (str): Unique ID for this server (looks like an md5). + multiuser (bool): True if `multiusers <https://support.plex.tv/hc/en-us/articles + /200250367-Multi-User-Support>`_ are enabled. + myPlex (bool): Unknown (True if logged into myPlex?). + myPlexMappingState (str): Unknown (ex: mapped). + myPlexSigninState (str): Unknown (ex: ok). + myPlexSubscription (bool): True if you have a myPlex subscription. + myPlexUsername (str): Email address if signed into myPlex (user@example.com) + ownerFeatures (list): List of features allowed by the server owner. This may be based + on your PlexPass subscription. Features include: camera_upload, cloudsync, + content_filter, dvr, hardware_transcoding, home, lyrics, music_videos, pass, + photo_autotags, premium_music_metadata, session_bandwidth_restrictions, sync, + trailers, webhooks (and maybe more). + photoAutoTag (bool): True if photo `auto-tagging <https://support.plex.tv/hc/en-us + /articles/234976627-Auto-Tagging-of-Photos>`_ is enabled. + platform (str): Platform the server is hosted on (ex: Linux) + platformVersion (str): Platform version (ex: '6.1 (Build 7601)', '4.4.0-59-generic'). + pluginHost (bool): Unknown + readOnlyLibraries (bool): Unknown + requestParametersInCookie (bool): Unknown + streamingBrainVersion (bool): Current `Streaming Brain <https://www.plex.tv/blog + /mcstreamy-brain-take-world-two-easy-steps/>`_ version. + sync (bool): True if `syncing to a device <https://support.plex.tv/hc/en-us/articles + /201053678-Sync-Media-to-a-Device>`_ is enabled. + transcoderActiveVideoSessions (int): Number of active video transcoding sessions. + transcoderAudio (bool): True if audio transcoding audio is available. + transcoderLyrics (bool): True if audio transcoding lyrics is available. + transcoderPhoto (bool): True if audio transcoding photos is available. + transcoderSubtitles (bool): True if audio transcoding subtitles is available. + transcoderVideo (bool): True if audio transcoding video is available. + transcoderVideoBitrates (bool): List of video bitrates. + transcoderVideoQualities (bool): List of video qualities. + transcoderVideoResolutions (bool): List of video resolutions. + updatedAt (int): Datetime the server was updated. + updater (bool): Unknown + version (str): Current Plex version (ex: 1.3.2.3112-1751929) + voiceSearch (bool): True if voice search is enabled. (is this Google Voice search?) + _baseurl (str): HTTP address of the client. + _token (str): Token used to access this client. + _session (obj): Requests session object used to access this client. + """ + key = '/' + + def __init__(self, baseurl=None, token=None, session=None, timeout=None): + self._baseurl = baseurl or CONFIG.get('auth.server_baseurl', 'http://localhost:32400') + self._baseurl = self._baseurl.rstrip('/') + self._token = logfilter.add_secret(token or CONFIG.get('auth.server_token')) + self._showSecrets = CONFIG.get('log.show_secrets', '').lower() == 'true' + self._session = session or requests.Session() + self._timeout = timeout + self._library = None # cached library + self._settings = None # cached settings + self._myPlexAccount = None # cached myPlexAccount + self._systemAccounts = None # cached list of SystemAccount + self._systemDevices = None # cached list of SystemDevice + data = self.query(self.key, timeout=self._timeout) + super(PlexServer, self).__init__(self, data, self.key) + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.allowCameraUpload = utils.cast(bool, data.attrib.get('allowCameraUpload')) + self.allowChannelAccess = utils.cast(bool, data.attrib.get('allowChannelAccess')) + self.allowMediaDeletion = utils.cast(bool, data.attrib.get('allowMediaDeletion')) + self.allowSharing = utils.cast(bool, data.attrib.get('allowSharing')) + self.allowSync = utils.cast(bool, data.attrib.get('allowSync')) + self.backgroundProcessing = utils.cast(bool, data.attrib.get('backgroundProcessing')) + self.certificate = utils.cast(bool, data.attrib.get('certificate')) + self.companionProxy = utils.cast(bool, data.attrib.get('companionProxy')) + self.diagnostics = utils.toList(data.attrib.get('diagnostics')) + self.eventStream = utils.cast(bool, data.attrib.get('eventStream')) + self.friendlyName = data.attrib.get('friendlyName') + self.hubSearch = utils.cast(bool, data.attrib.get('hubSearch')) + self.machineIdentifier = data.attrib.get('machineIdentifier') + self.multiuser = utils.cast(bool, data.attrib.get('multiuser')) + self.myPlex = utils.cast(bool, data.attrib.get('myPlex')) + self.myPlexMappingState = data.attrib.get('myPlexMappingState') + self.myPlexSigninState = data.attrib.get('myPlexSigninState') + self.myPlexSubscription = utils.cast(bool, data.attrib.get('myPlexSubscription')) + self.myPlexUsername = data.attrib.get('myPlexUsername') + self.ownerFeatures = utils.toList(data.attrib.get('ownerFeatures')) + self.photoAutoTag = utils.cast(bool, data.attrib.get('photoAutoTag')) + self.platform = data.attrib.get('platform') + self.platformVersion = data.attrib.get('platformVersion') + self.pluginHost = utils.cast(bool, data.attrib.get('pluginHost')) + self.readOnlyLibraries = utils.cast(int, data.attrib.get('readOnlyLibraries')) + self.requestParametersInCookie = utils.cast(bool, data.attrib.get('requestParametersInCookie')) + self.streamingBrainVersion = data.attrib.get('streamingBrainVersion') + self.sync = utils.cast(bool, data.attrib.get('sync')) + self.transcoderActiveVideoSessions = int(data.attrib.get('transcoderActiveVideoSessions', 0)) + self.transcoderAudio = utils.cast(bool, data.attrib.get('transcoderAudio')) + self.transcoderLyrics = utils.cast(bool, data.attrib.get('transcoderLyrics')) + self.transcoderPhoto = utils.cast(bool, data.attrib.get('transcoderPhoto')) + self.transcoderSubtitles = utils.cast(bool, data.attrib.get('transcoderSubtitles')) + self.transcoderVideo = utils.cast(bool, data.attrib.get('transcoderVideo')) + self.transcoderVideoBitrates = utils.toList(data.attrib.get('transcoderVideoBitrates')) + self.transcoderVideoQualities = utils.toList(data.attrib.get('transcoderVideoQualities')) + self.transcoderVideoResolutions = utils.toList(data.attrib.get('transcoderVideoResolutions')) + self.updatedAt = utils.toDatetime(data.attrib.get('updatedAt')) + self.updater = utils.cast(bool, data.attrib.get('updater')) + self.version = data.attrib.get('version') + self.voiceSearch = utils.cast(bool, data.attrib.get('voiceSearch')) + + def _headers(self, **kwargs): + """ Returns dict containing base headers for all requests to the server. """ + headers = BASE_HEADERS.copy() + if self._token: + headers['X-Plex-Token'] = self._token + headers.update(kwargs) + return headers + + def _uriRoot(self): + return 'server://%s/com.plexapp.plugins.library' % self.machineIdentifier + + @property + def library(self): + """ Library to browse or search your media. """ + if not self._library: + try: + data = self.query(Library.key) + self._library = Library(self, data) + except BadRequest: + data = self.query('/library/sections/') + # Only the owner has access to /library + # so just return the library without the data. + return Library(self, data) + return self._library + + @property + def settings(self): + """ Returns a list of all server settings. """ + if not self._settings: + data = self.query(Settings.key) + self._settings = Settings(self, data) + return self._settings + + def account(self): + """ Returns the :class:`~plexapi.server.Account` object this server belongs to. """ + data = self.query(Account.key) + return Account(self, data) + + def claim(self, account): + """ Claim the Plex server using a :class:`~plexapi.myplex.MyPlexAccount`. + This will only work with an unclaimed server on localhost or the same subnet. + + Parameters: + account (:class:`~plexapi.myplex.MyPlexAccount`): The account used to + claim the server. + """ + key = '/myplex/claim' + params = {'token': account.claimToken()} + data = self.query(key, method=self._session.post, params=params) + return Account(self, data) + + def unclaim(self): + """ Unclaim the Plex server. This will remove the server from your + :class:`~plexapi.myplex.MyPlexAccount`. + """ + data = self.query(Account.key, method=self._session.delete) + return Account(self, data) + + @property + def activities(self): + """Returns all current PMS activities.""" + activities = [] + for elem in self.query(Activity.key): + activities.append(Activity(self, elem)) + return activities + + def agents(self, mediaType=None): + """ Returns the :class:`~plexapi.media.Agent` objects this server has available. """ + key = '/system/agents' + if mediaType: + key += '?mediaType=%s' % mediaType + return self.fetchItems(key) + + def createToken(self, type='delegation', scope='all'): + """ Create a temp access token for the server. """ + if not self._token: + # Handle unclaimed servers + return None + q = self.query('/security/token?type=%s&scope=%s' % (type, scope)) + return q.attrib.get('token') + + def switchUser(self, username, session=None, timeout=None): + """ Returns a new :class:`~plexapi.server.PlexServer` object logged in as the given username. + Note: Only the admin account can switch to other users. + + Parameters: + username (str): Username, email or user id of the user to log in to the server. + session (requests.Session, optional): Use your own session object if you want to + cache the http responses from the server. This will default to the same + session as the admin account if no new session is provided. + timeout (int, optional): Timeout in seconds on initial connection to the server. + This will default to the same timeout as the admin account if no new timeout + is provided. + + Example: + + .. code-block:: python + + from plexapi.server import PlexServer + # Login to the Plex server using the admin token + plex = PlexServer('http://plexserver:32400', token='2ffLuB84dqLswk9skLos') + # Login to the same Plex server using a different account + userPlex = plex.switchUser("Username") + + """ + user = self.myPlexAccount().user(username) + userToken = user.get_token(self.machineIdentifier) + if session is None: + session = self._session + if timeout is None: + timeout = self._timeout + return PlexServer(self._baseurl, token=userToken, session=session, timeout=timeout) + + def systemAccounts(self): + """ Returns a list of :class:`~plexapi.server.SystemAccount` objects this server contains. """ + if self._systemAccounts is None: + key = '/accounts' + self._systemAccounts = self.fetchItems(key, SystemAccount) + return self._systemAccounts + + def systemAccount(self, accountID): + """ Returns the :class:`~plexapi.server.SystemAccount` object for the specified account ID. + + Parameters: + accountID (int): The :class:`~plexapi.server.SystemAccount` ID. + """ + try: + return next(account for account in self.systemAccounts() if account.id == accountID) + except StopIteration: + raise NotFound('Unknown account with accountID=%s' % accountID) from None + + def systemDevices(self): + """ Returns a list of :class:`~plexapi.server.SystemDevice` objects this server contains. """ + if self._systemDevices is None: + key = '/devices' + self._systemDevices = self.fetchItems(key, SystemDevice) + return self._systemDevices + + def systemDevice(self, deviceID): + """ Returns the :class:`~plexapi.server.SystemDevice` object for the specified device ID. + + Parameters: + deviceID (int): The :class:`~plexapi.server.SystemDevice` ID. + """ + try: + return next(device for device in self.systemDevices() if device.id == deviceID) + except StopIteration: + raise NotFound('Unknown device with deviceID=%s' % deviceID) from None + + def myPlexAccount(self): + """ Returns a :class:`~plexapi.myplex.MyPlexAccount` object using the same + token to access this server. If you are not the owner of this PlexServer + you're likley to recieve an authentication error calling this. + """ + if self._myPlexAccount is None: + from plexapi.myplex import MyPlexAccount + self._myPlexAccount = MyPlexAccount(token=self._token) + return self._myPlexAccount + + def _myPlexClientPorts(self): + """ Sometimes the PlexServer does not properly advertise port numbers required + to connect. This attemps to look up device port number from plex.tv. + See issue #126: Make PlexServer.clients() more user friendly. + https://github.com/pkkid/python-plexapi/issues/126 + """ + try: + ports = {} + account = self.myPlexAccount() + for device in account.devices(): + if device.connections and ':' in device.connections[0][6:]: + ports[device.clientIdentifier] = device.connections[0].split(':')[-1] + return ports + except Exception as err: + log.warning('Unable to fetch client ports from myPlex: %s', err) + return ports + + def browse(self, path=None, includeFiles=True): + """ Browse the system file path using the Plex API. + Returns list of :class:`~plexapi.library.Path` and :class:`~plexapi.library.File` objects. + + Parameters: + path (:class:`~plexapi.library.Path` or str, optional): Full path to browse. + includeFiles (bool): True to include files when browsing (Default). + False to only return folders. + """ + if isinstance(path, Path): + key = path.key + elif path is not None: + base64path = utils.base64str(path) + key = '/services/browse/%s' % base64path + else: + key = '/services/browse' + if includeFiles: + key += '?includeFiles=1' + return self.fetchItems(key) + + def walk(self, path=None): + """ Walk the system file tree using the Plex API similar to `os.walk`. + Yields a 3-tuple `(path, paths, files)` where + `path` is a string of the directory path, + `paths` is a list of :class:`~plexapi.library.Path` objects, and + `files` is a list of :class:`~plexapi.library.File` objects. + + Parameters: + path (:class:`~plexapi.library.Path` or str, optional): Full path to walk. + """ + paths = [] + files = [] + for item in self.browse(path): + if isinstance(item, Path): + paths.append(item) + elif isinstance(item, File): + files.append(item) + + if isinstance(path, Path): + path = path.path + + yield path or '', paths, files + + for _path in paths: + for path, paths, files in self.walk(_path): + yield path, paths, files + + def clients(self): + """ Returns list of all :class:`~plexapi.client.PlexClient` objects connected to server. """ + items = [] + ports = None + for elem in self.query('/clients'): + port = elem.attrib.get('port') + if not port: + log.warning('%s did not advertise a port, checking plex.tv.', elem.attrib.get('name')) + ports = self._myPlexClientPorts() if ports is None else ports + port = ports.get(elem.attrib.get('machineIdentifier')) + baseurl = 'http://%s:%s' % (elem.attrib['host'], port) + items.append(PlexClient(baseurl=baseurl, server=self, + token=self._token, data=elem, connect=False)) + + return items + + def client(self, name): + """ Returns the :class:`~plexapi.client.PlexClient` that matches the specified name. + + Parameters: + name (str): Name of the client to return. + + Raises: + :exc:`~plexapi.exceptions.NotFound`: Unknown client name. + """ + for client in self.clients(): + if client and client.title == name: + return client + + raise NotFound('Unknown client name: %s' % name) + + def createCollection(self, title, section, items=None, smart=False, limit=None, + libtype=None, sort=None, filters=None, **kwargs): + """ Creates and returns a new :class:`~plexapi.collection.Collection`. + + Parameters: + title (str): Title of the collection. + section (:class:`~plexapi.library.LibrarySection`, str): The library section to create the collection in. + items (List): Regular collections only, list of :class:`~plexapi.audio.Audio`, + :class:`~plexapi.video.Video`, or :class:`~plexapi.photo.Photo` objects to be added to the collection. + smart (bool): True to create a smart collection. Default False. + limit (int): Smart collections only, limit the number of items in the collection. + libtype (str): Smart collections only, the specific type of content to filter + (movie, show, season, episode, artist, album, track, photoalbum, photo). + sort (str or list, optional): Smart collections only, a string of comma separated sort fields + or a list of sort fields in the format ``column:dir``. + See :func:`~plexapi.library.LibrarySection.search` for more info. + filters (dict): Smart collections only, a dictionary of advanced filters. + See :func:`~plexapi.library.LibrarySection.search` for more info. + **kwargs (dict): Smart collections only, additional custom filters to apply to the + search results. See :func:`~plexapi.library.LibrarySection.search` for more info. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When no items are included to create the collection. + :class:`plexapi.exceptions.BadRequest`: When mixing media types in the collection. + + Returns: + :class:`~plexapi.collection.Collection`: A new instance of the created Collection. + """ + return Collection.create( + self, title, section, items=items, smart=smart, limit=limit, + libtype=libtype, sort=sort, filters=filters, **kwargs) + + def createPlaylist(self, title, section=None, items=None, smart=False, limit=None, + libtype=None, sort=None, filters=None, **kwargs): + """ Creates and returns a new :class:`~plexapi.playlist.Playlist`. + + Parameters: + title (str): Title of the playlist. + section (:class:`~plexapi.library.LibrarySection`, str): Smart playlists only, + library section to create the playlist in. + items (List): Regular playlists only, list of :class:`~plexapi.audio.Audio`, + :class:`~plexapi.video.Video`, or :class:`~plexapi.photo.Photo` objects to be added to the playlist. + smart (bool): True to create a smart playlist. Default False. + limit (int): Smart playlists only, limit the number of items in the playlist. + libtype (str): Smart playlists only, the specific type of content to filter + (movie, show, season, episode, artist, album, track, photoalbum, photo). + sort (str or list, optional): Smart playlists only, a string of comma separated sort fields + or a list of sort fields in the format ``column:dir``. + See :func:`~plexapi.library.LibrarySection.search` for more info. + filters (dict): Smart playlists only, a dictionary of advanced filters. + See :func:`~plexapi.library.LibrarySection.search` for more info. + **kwargs (dict): Smart playlists only, additional custom filters to apply to the + search results. See :func:`~plexapi.library.LibrarySection.search` for more info. + + Raises: + :class:`plexapi.exceptions.BadRequest`: When no items are included to create the playlist. + :class:`plexapi.exceptions.BadRequest`: When mixing media types in the playlist. + + Returns: + :class:`~plexapi.playlist.Playlist`: A new instance of the created Playlist. + """ + return Playlist.create( + self, title, section=section, items=items, smart=smart, limit=limit, + libtype=libtype, sort=sort, filters=filters, **kwargs) + + def createPlayQueue(self, item, **kwargs): + """ Creates and returns a new :class:`~plexapi.playqueue.PlayQueue`. + + Parameters: + item (Media or Playlist): Media or playlist to add to PlayQueue. + kwargs (dict): See `~plexapi.playqueue.PlayQueue.create`. + """ + return PlayQueue.create(self, item, **kwargs) + + def downloadDatabases(self, savepath=None, unpack=False): + """ Download databases. + + Parameters: + savepath (str): Defaults to current working dir. + unpack (bool): Unpack the zip file. + """ + url = self.url('/diagnostics/databases') + filepath = utils.download(url, self._token, None, savepath, self._session, unpack=unpack) + return filepath + + def downloadLogs(self, savepath=None, unpack=False): + """ Download server logs. + + Parameters: + savepath (str): Defaults to current working dir. + unpack (bool): Unpack the zip file. + """ + url = self.url('/diagnostics/logs') + filepath = utils.download(url, self._token, None, savepath, self._session, unpack=unpack) + return filepath + + @deprecated('use "checkForUpdate" instead') + def check_for_update(self, force=True, download=False): + return self.checkForUpdate() + + def checkForUpdate(self, force=True, download=False): + """ Returns a :class:`~plexapi.base.Release` object containing release info. + + Parameters: + force (bool): Force server to check for new releases + download (bool): Download if a update is available. + """ + part = '/updater/check?download=%s' % (1 if download else 0) + if force: + self.query(part, method=self._session.put) + releases = self.fetchItems('/updater/status') + if len(releases): + return releases[0] + + def isLatest(self): + """ Check if the installed version of PMS is the latest. """ + release = self.checkForUpdate(force=True) + return release is None + + def installUpdate(self): + """ Install the newest version of Plex Media Server. """ + # We can add this but dunno how useful this is since it sometimes + # requires user action using a gui. + part = '/updater/apply' + release = self.checkForUpdate(force=True, download=True) + if release and release.version != self.version: + # figure out what method this is.. + return self.query(part, method=self._session.put) + + def history(self, maxresults=9999999, mindate=None, ratingKey=None, accountID=None, librarySectionID=None): + """ Returns a list of media items from watched history. If there are many results, they will + be fetched from the server in batches of X_PLEX_CONTAINER_SIZE amounts. If you're only + looking for the first <num> results, it would be wise to set the maxresults option to that + amount so this functions doesn't iterate over all results on the server. + + Parameters: + maxresults (int): Only return the specified number of results (optional). + mindate (datetime): Min datetime to return results from. This really helps speed + up the result listing. For example: datetime.now() - timedelta(days=7) + ratingKey (int/str) Request history for a specific ratingKey item. + accountID (int/str) Request history for a specific account ID. + librarySectionID (int/str) Request history for a specific library section ID. + """ + results, subresults = [], '_init' + args = {'sort': 'viewedAt:desc'} + if ratingKey: + args['metadataItemID'] = ratingKey + if accountID: + args['accountID'] = accountID + if librarySectionID: + args['librarySectionID'] = librarySectionID + if mindate: + args['viewedAt>'] = int(mindate.timestamp()) + args['X-Plex-Container-Start'] = 0 + args['X-Plex-Container-Size'] = min(X_PLEX_CONTAINER_SIZE, maxresults) + while subresults and maxresults > len(results): + key = '/status/sessions/history/all%s' % utils.joinArgs(args) + subresults = self.fetchItems(key) + results += subresults[:maxresults - len(results)] + args['X-Plex-Container-Start'] += args['X-Plex-Container-Size'] + return results + + def playlists(self, playlistType=None, sectionId=None, title=None, sort=None, **kwargs): + """ Returns a list of all :class:`~plexapi.playlist.Playlist` objects on the server. + + Parameters: + playlistType (str, optional): The type of playlists to return (audio, video, photo). + Default returns all playlists. + sectionId (int, optional): The section ID (key) of the library to search within. + title (str, optional): General string query to search for. Partial string matches are allowed. + sort (str or list, optional): A string of comma separated sort fields in the format ``column:dir``. + """ + args = {} + if playlistType is not None: + args['playlistType'] = playlistType + if sectionId is not None: + args['sectionID'] = sectionId + if title is not None: + args['title'] = title + if sort is not None: + # TODO: Automatically retrieve and validate sort field similar to LibrarySection.search() + args['sort'] = sort + + key = '/playlists%s' % utils.joinArgs(args) + return self.fetchItems(key, **kwargs) + + def playlist(self, title): + """ Returns the :class:`~plexapi.client.Playlist` that matches the specified title. + + Parameters: + title (str): Title of the playlist to return. + + Raises: + :exc:`~plexapi.exceptions.NotFound`: Unable to find playlist. + """ + try: + return self.playlists(title=title, title__iexact=title)[0] + except IndexError: + raise NotFound('Unable to find playlist with title "%s".' % title) from None + + def optimizedItems(self, removeAll=None): + """ Returns list of all :class:`~plexapi.media.Optimized` objects connected to server. """ + if removeAll is True: + key = '/playlists/generators?type=42' + self.query(key, method=self._server._session.delete) + else: + backgroundProcessing = self.fetchItem('/playlists?type=42') + return self.fetchItems('%s/items' % backgroundProcessing.key, cls=Optimized) + + @deprecated('use "plexapi.media.Optimized.items()" instead') + def optimizedItem(self, optimizedID): + """ Returns single queued optimized item :class:`~plexapi.media.Video` object. + Allows for using optimized item ID to connect back to source item. + """ + + backgroundProcessing = self.fetchItem('/playlists?type=42') + return self.fetchItem('%s/items/%s/items' % (backgroundProcessing.key, optimizedID)) + + def conversions(self, pause=None): + """ Returns list of all :class:`~plexapi.media.Conversion` objects connected to server. """ + if pause is True: + self.query('/:/prefs?BackgroundQueueIdlePaused=1', method=self._server._session.put) + elif pause is False: + self.query('/:/prefs?BackgroundQueueIdlePaused=0', method=self._server._session.put) + else: + return self.fetchItems('/playQueues/1', cls=Conversion) + + def currentBackgroundProcess(self): + """ Returns list of all :class:`~plexapi.media.TranscodeJob` objects running or paused on server. """ + return self.fetchItems('/status/sessions/background') + + def query(self, key, method=None, headers=None, timeout=None, **kwargs): + """ Main method used to handle HTTPS requests to the Plex server. This method helps + by encoding the response to utf-8 and parsing the returned XML into and + ElementTree object. Returns None if no data exists in the response. + """ + url = self.url(key) + method = method or self._session.get + timeout = timeout or TIMEOUT + log.debug('%s %s', method.__name__.upper(), url) + headers = self._headers(**headers or {}) + response = method(url, headers=headers, timeout=timeout, **kwargs) + if response.status_code not in (200, 201, 204): + codename = codes.get(response.status_code)[0] + errtext = response.text.replace('\n', ' ') + message = '(%s) %s; %s %s' % (response.status_code, codename, response.url, errtext) + if response.status_code == 401: + raise Unauthorized(message) + elif response.status_code == 404: + raise NotFound(message) + else: + raise BadRequest(message) + data = response.text.encode('utf8') + return ElementTree.fromstring(data) if data.strip() else None + + def search(self, query, mediatype=None, limit=None, sectionId=None): + """ Returns a list of media items or filter categories from the resulting + `Hub Search <https://www.plex.tv/blog/seek-plex-shall-find-leveling-web-app/>`_ + against all items in your Plex library. This searches genres, actors, directors, + playlists, as well as all the obvious media titles. It performs spell-checking + against your search terms (because KUROSAWA is hard to spell). It also provides + contextual search results. So for example, if you search for 'Pernice', it’ll + return 'Pernice Brothers' as the artist result, but we’ll also go ahead and + return your most-listened to albums and tracks from the artist. If you type + 'Arnold' you’ll get a result for the actor, but also the most recently added + movies he’s in. + + Parameters: + query (str): Query to use when searching your library. + mediatype (str, optional): Limit your search to the specified media type. + actor, album, artist, autotag, collection, director, episode, game, genre, + movie, photo, photoalbum, place, playlist, shared, show, tag, track + limit (int, optional): Limit to the specified number of results per Hub. + sectionId (int, optional): The section ID (key) of the library to search within. + """ + results = [] + params = { + 'query': query, + 'includeCollections': 1, + 'includeExternalMedia': 1} + if limit: + params['limit'] = limit + if sectionId: + params['sectionId'] = sectionId + key = '/hubs/search?%s' % urlencode(params) + for hub in self.fetchItems(key, Hub): + if mediatype: + if hub.type == mediatype: + return hub.items + else: + results += hub.items + return results + + def sessions(self): + """ Returns a list of all active session (currently playing) media objects. """ + return self.fetchItems('/status/sessions') + + def transcodeSessions(self): + """ Returns a list of all active :class:`~plexapi.media.TranscodeSession` objects. """ + return self.fetchItems('/transcode/sessions') + + def startAlertListener(self, callback=None): + """ Creates a websocket connection to the Plex Server to optionally recieve + notifications. These often include messages from Plex about media scans + as well as updates to currently running Transcode Sessions. + + NOTE: You need websocket-client installed in order to use this feature. + >> pip install websocket-client + + Parameters: + callback (func): Callback function to call on recieved messages. + + Raises: + :exc:`~plexapi.exception.Unsupported`: Websocket-client not installed. + """ + notifier = AlertListener(self, callback) + notifier.start() + return notifier + + def transcodeImage(self, imageUrl, height, width, + opacity=None, saturation=None, blur=None, background=None, + minSize=True, upscale=True, imageFormat=None): + """ Returns the URL for a transcoded image. + + Parameters: + imageUrl (str): The URL to the image + (eg. returned by :func:`~plexapi.mixins.PosterUrlMixin.thumbUrl` + or :func:`~plexapi.mixins.ArtUrlMixin.artUrl`). + The URL can be an online image. + height (int): Height to transcode the image to. + width (int): Width to transcode the image to. + opacity (int, optional): Change the opacity of the image (0 to 100) + saturation (int, optional): Change the saturation of the image (0 to 100). + blur (int, optional): The blur to apply to the image in pixels (e.g. 3). + background (str, optional): The background hex colour to apply behind the opacity (e.g. '000000'). + minSize (bool, optional): Maintain smallest dimension. Default True. + upscale (bool, optional): Upscale the image if required. Default True. + imageFormat (str, optional): 'jpeg' (default) or 'png'. + """ + params = { + 'url': imageUrl, + 'height': height, + 'width': width, + 'minSize': int(bool(minSize)), + 'upscale': int(bool(upscale)) + } + if opacity is not None: + params['opacity'] = opacity + if saturation is not None: + params['saturation'] = saturation + if blur is not None: + params['blur'] = blur + if background is not None: + params['background'] = str(background).strip('#') + if imageFormat is not None: + params['format'] = imageFormat.lower() + + key = '/photo/:/transcode%s' % utils.joinArgs(params) + return self.url(key, includeToken=True) + + def url(self, key, includeToken=None): + """ Build a URL string with proper token argument. Token will be appended to the URL + if either includeToken is True or CONFIG.log.show_secrets is 'true'. + """ + if self._token and (includeToken or self._showSecrets): + delim = '&' if '?' in key else '?' + return '%s%s%sX-Plex-Token=%s' % (self._baseurl, key, delim, self._token) + return '%s%s' % (self._baseurl, key) + + def refreshSynclist(self): + """ Force PMS to download new SyncList from Plex.tv. """ + return self.query('/sync/refreshSynclists', self._session.put) + + def refreshContent(self): + """ Force PMS to refresh content for known SyncLists. """ + return self.query('/sync/refreshContent', self._session.put) + + def refreshSync(self): + """ Calls :func:`~plexapi.server.PlexServer.refreshSynclist` and + :func:`~plexapi.server.PlexServer.refreshContent`, just like the Plex Web UI does when you click 'refresh'. + """ + self.refreshSynclist() + self.refreshContent() + + def _allowMediaDeletion(self, toggle=False): + """ Toggle allowMediaDeletion. + Parameters: + toggle (bool): True enables Media Deletion + False or None disable Media Deletion (Default) + """ + if self.allowMediaDeletion and toggle is False: + log.debug('Plex is currently allowed to delete media. Toggling off.') + elif self.allowMediaDeletion and toggle is True: + log.debug('Plex is currently allowed to delete media. Toggle set to allow, exiting.') + raise BadRequest('Plex is currently allowed to delete media. Toggle set to allow, exiting.') + elif self.allowMediaDeletion is None and toggle is True: + log.debug('Plex is currently not allowed to delete media. Toggle set to allow.') + else: + log.debug('Plex is currently not allowed to delete media. Toggle set to not allow, exiting.') + raise BadRequest('Plex is currently not allowed to delete media. Toggle set to not allow, exiting.') + value = 1 if toggle is True else 0 + return self.query('/:/prefs?allowMediaDeletion=%s' % value, self._session.put) + + def bandwidth(self, timespan=None, **kwargs): + """ Returns a list of :class:`~plexapi.server.StatisticsBandwidth` objects + with the Plex server dashboard bandwidth data. + + Parameters: + timespan (str, optional): The timespan to bin the bandwidth data. Default is seconds. + Available timespans: seconds, hours, days, weeks, months. + **kwargs (dict, optional): Any of the available filters that can be applied to the bandwidth data. + The time frame (at) and bytes can also be filtered using less than or greater than (see examples below). + + * accountID (int): The :class:`~plexapi.server.SystemAccount` ID to filter. + * at (datetime): The time frame to filter (inclusive). The time frame can be either: + 1. An exact time frame (e.g. Only December 1st 2020 `at=datetime(2020, 12, 1)`). + 2. Before a specific time (e.g. Before and including December 2020 `at<=datetime(2020, 12, 1)`). + 3. After a specific time (e.g. After and including January 2021 `at>=datetime(2021, 1, 1)`). + * bytes (int): The amount of bytes to filter (inclusive). The bytes can be either: + 1. An exact number of bytes (not very useful) (e.g. `bytes=1024**3`). + 2. Less than or equal number of bytes (e.g. `bytes<=1024**3`). + 3. Greater than or equal number of bytes (e.g. `bytes>=1024**3`). + * deviceID (int): The :class:`~plexapi.server.SystemDevice` ID to filter. + * lan (bool): True to only retrieve local bandwidth, False to only retrieve remote bandwidth. + Default returns all local and remote bandwidth. + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: When applying an invalid timespan or unknown filter. + + Example: + + .. code-block:: python + + from plexapi.server import PlexServer + plex = PlexServer('http://localhost:32400', token='xxxxxxxxxxxxxxxxxxxx') + + # Filter bandwidth data for December 2020 and later, and more than 1 GB used. + filters = { + 'at>': datetime(2020, 12, 1), + 'bytes>': 1024**3 + } + + # Retrieve bandwidth data in one day timespans. + bandwidthData = plex.bandwidth(timespan='days', **filters) + + # Print out bandwidth usage for each account and device combination. + for bandwidth in sorted(bandwidthData, key=lambda x: x.at): + account = bandwidth.account() + device = bandwidth.device() + gigabytes = round(bandwidth.bytes / 1024**3, 3) + local = 'local' if bandwidth.lan else 'remote' + date = bandwidth.at.strftime('%Y-%m-%d') + print('%s used %s GB of %s bandwidth on %s from %s' + % (account.name, gigabytes, local, date, device.name)) + + """ + params = {} + + if timespan is None: + params['timespan'] = 6 # Default to seconds + else: + timespans = { + 'seconds': 6, + 'hours': 4, + 'days': 3, + 'weeks': 2, + 'months': 1 + } + try: + params['timespan'] = timespans[timespan] + except KeyError: + raise BadRequest('Invalid timespan specified: %s. ' + 'Available timespans: %s' % (timespan, ', '.join(list(timespans.keys())))) + + filters = {'accountID', 'at', 'at<', 'at>', 'bytes', 'bytes<', 'bytes>', 'deviceID', 'lan'} + + for key, value in list(kwargs.items()): + if key not in filters: + raise BadRequest('Unknown filter: %s=%s' % (key, value)) + if key.startswith('at'): + try: + value = utils.cast(int, value.timestamp()) + except AttributeError: + raise BadRequest('Time frame filter must be a datetime object: %s=%s' % (key, value)) + elif key.startswith('bytes') or key == 'lan': + value = utils.cast(int, value) + elif key == 'accountID': + if value == self.myPlexAccount().id: + value = 1 # The admin account is accountID=1 + params[key] = value + + key = '/statistics/bandwidth?%s' % urlencode(params) + return self.fetchItems(key, StatisticsBandwidth) + + def resources(self): + """ Returns a list of :class:`~plexapi.server.StatisticsResources` objects + with the Plex server dashboard resources data. """ + key = '/statistics/resources?timespan=6' + return self.fetchItems(key, StatisticsResources) + + def _buildWebURL(self, base=None, endpoint=None, **kwargs): + """ Build the Plex Web URL for the object. + + Parameters: + base (str): The base URL before the fragment (``#!``). + Default is https://app.plex.tv/desktop. + endpoint (str): The Plex Web URL endpoint. + None for server, 'playlist' for playlists, 'details' for all other media types. + **kwargs (dict): Dictionary of URL parameters. + """ + if base is None: + base = 'https://app.plex.tv/desktop/' + + if endpoint: + return '%s#!/server/%s/%s%s' % ( + base, self.machineIdentifier, endpoint, utils.joinArgs(kwargs) + ) + else: + return '%s#!/media/%s/com.plexapp.plugins.library%s' % ( + base, self.machineIdentifier, utils.joinArgs(kwargs) + ) + + def getWebURL(self, base=None, playlistTab=None): + """ Returns the Plex Web URL for the server. + + Parameters: + base (str): The base URL before the fragment (``#!``). + Default is https://app.plex.tv/desktop. + playlistTab (str): The playlist tab (audio, video, photo). Only used for the playlist URL. + """ + if playlistTab is not None: + params = {'source': 'playlists', 'pivot': 'playlists.%s' % playlistTab} + else: + params = {'key': '/hubs', 'pageType': 'hub'} + return self._buildWebURL(base=base, **params) + + +class Account(PlexObject): + """ Contains the locally cached MyPlex account information. The properties provided don't + match the :class:`~plexapi.myplex.MyPlexAccount` object very well. I believe this exists + because access to myplex is not required to get basic plex information. I can't imagine + object is terribly useful except unless you were needed this information while offline. + + Parameters: + server (:class:`~plexapi.server.PlexServer`): PlexServer this account is connected to (optional) + data (ElementTree): Response from PlexServer used to build this object (optional). + + Attributes: + authToken (str): Plex authentication token to access the server. + mappingError (str): Unknown + mappingErrorMessage (str): Unknown + mappingState (str): Unknown + privateAddress (str): Local IP address of the Plex server. + privatePort (str): Local port of the Plex server. + publicAddress (str): Public IP address of the Plex server. + publicPort (str): Public port of the Plex server. + signInState (str): Signin state for this account (ex: ok). + subscriptionActive (str): True if the account subscription is active. + subscriptionFeatures (str): List of features allowed by the server for this account. + This may be based on your PlexPass subscription. Features include: camera_upload, + cloudsync, content_filter, dvr, hardware_transcoding, home, lyrics, music_videos, + pass, photo_autotags, premium_music_metadata, session_bandwidth_restrictions, + sync, trailers, webhooks' (and maybe more). + subscriptionState (str): 'Active' if this subscription is active. + username (str): Plex account username (user@example.com). + """ + key = '/myplex/account' + + def _loadData(self, data): + self._data = data + self.authToken = data.attrib.get('authToken') + self.username = data.attrib.get('username') + self.mappingState = data.attrib.get('mappingState') + self.mappingError = data.attrib.get('mappingError') + self.mappingErrorMessage = data.attrib.get('mappingErrorMessage') + self.signInState = data.attrib.get('signInState') + self.publicAddress = data.attrib.get('publicAddress') + self.publicPort = data.attrib.get('publicPort') + self.privateAddress = data.attrib.get('privateAddress') + self.privatePort = data.attrib.get('privatePort') + self.subscriptionFeatures = utils.toList(data.attrib.get('subscriptionFeatures')) + self.subscriptionActive = utils.cast(bool, data.attrib.get('subscriptionActive')) + self.subscriptionState = data.attrib.get('subscriptionState') + + +class Activity(PlexObject): + """A currently running activity on the PlexServer.""" + key = '/activities' + + def _loadData(self, data): + self._data = data + self.cancellable = utils.cast(bool, data.attrib.get('cancellable')) + self.progress = utils.cast(int, data.attrib.get('progress')) + self.title = data.attrib.get('title') + self.subtitle = data.attrib.get('subtitle') + self.type = data.attrib.get('type') + self.uuid = data.attrib.get('uuid') + + +@utils.registerPlexObject +class Release(PlexObject): + TAG = 'Release' + key = '/updater/status' + + def _loadData(self, data): + self.download_key = data.attrib.get('key') + self.version = data.attrib.get('version') + self.added = data.attrib.get('added') + self.fixed = data.attrib.get('fixed') + self.downloadURL = data.attrib.get('downloadURL') + self.state = data.attrib.get('state') + + +class SystemAccount(PlexObject): + """ Represents a single system account. + + Attributes: + TAG (str): 'Account' + autoSelectAudio (bool): True or False if the account has automatic audio language enabled. + defaultAudioLanguage (str): The default audio language code for the account. + defaultSubtitleLanguage (str): The default subtitle language code for the account. + id (int): The Plex account ID. + key (str): API URL (/accounts/<id>) + name (str): The username of the account. + subtitleMode (bool): The subtitle mode for the account. + thumb (str): URL for the account thumbnail. + """ + TAG = 'Account' + + def _loadData(self, data): + self._data = data + self.autoSelectAudio = utils.cast(bool, data.attrib.get('autoSelectAudio')) + self.defaultAudioLanguage = data.attrib.get('defaultAudioLanguage') + self.defaultSubtitleLanguage = data.attrib.get('defaultSubtitleLanguage') + self.id = utils.cast(int, data.attrib.get('id')) + self.key = data.attrib.get('key') + self.name = data.attrib.get('name') + self.subtitleMode = utils.cast(int, data.attrib.get('subtitleMode')) + self.thumb = data.attrib.get('thumb') + # For backwards compatibility + self.accountID = self.id + self.accountKey = self.key + + +class SystemDevice(PlexObject): + """ Represents a single system device. + + Attributes: + TAG (str): 'Device' + clientIdentifier (str): The unique identifier for the device. + createdAt (datatime): Datetime the device was created. + id (int): The ID of the device (not the same as :class:`~plexapi.myplex.MyPlexDevice` ID). + key (str): API URL (/devices/<id>) + name (str): The name of the device. + platform (str): OS the device is running (Linux, Windows, Chrome, etc.) + """ + TAG = 'Device' + + def _loadData(self, data): + self._data = data + self.clientIdentifier = data.attrib.get('clientIdentifier') + self.createdAt = utils.toDatetime(data.attrib.get('createdAt')) + self.id = utils.cast(int, data.attrib.get('id')) + self.key = '/devices/%s' % self.id + self.name = data.attrib.get('name') + self.platform = data.attrib.get('platform') + + +class StatisticsBandwidth(PlexObject): + """ Represents a single statistics bandwidth data. + + Attributes: + TAG (str): 'StatisticsBandwidth' + accountID (int): The associated :class:`~plexapi.server.SystemAccount` ID. + at (datatime): Datetime of the bandwidth data. + bytes (int): The total number of bytes for the specified timespan. + deviceID (int): The associated :class:`~plexapi.server.SystemDevice` ID. + lan (bool): True or False wheter the bandwidth is local or remote. + timespan (int): The timespan for the bandwidth data. + 1: months, 2: weeks, 3: days, 4: hours, 6: seconds. + + """ + TAG = 'StatisticsBandwidth' + + def _loadData(self, data): + self._data = data + self.accountID = utils.cast(int, data.attrib.get('accountID')) + self.at = utils.toDatetime(data.attrib.get('at')) + self.bytes = utils.cast(int, data.attrib.get('bytes')) + self.deviceID = utils.cast(int, data.attrib.get('deviceID')) + self.lan = utils.cast(bool, data.attrib.get('lan')) + self.timespan = utils.cast(int, data.attrib.get('timespan')) + + def __repr__(self): + return '<%s>' % ':'.join([p for p in [ + self.__class__.__name__, + self._clean(self.accountID), + self._clean(self.deviceID), + self._clean(int(self.at.timestamp())) + ] if p]) + + def account(self): + """ Returns the :class:`~plexapi.server.SystemAccount` associated with the bandwidth data. """ + return self._server.systemAccount(self.accountID) + + def device(self): + """ Returns the :class:`~plexapi.server.SystemDevice` associated with the bandwidth data. """ + return self._server.systemDevice(self.deviceID) + + +class StatisticsResources(PlexObject): + """ Represents a single statistics resources data. + + Attributes: + TAG (str): 'StatisticsResources' + at (datatime): Datetime of the resource data. + hostCpuUtilization (float): The system CPU usage %. + hostMemoryUtilization (float): The Plex Media Server CPU usage %. + processCpuUtilization (float): The system RAM usage %. + processMemoryUtilization (float): The Plex Media Server RAM usage %. + timespan (int): The timespan for the resource data (6: seconds). + """ + TAG = 'StatisticsResources' + + def _loadData(self, data): + self._data = data + self.at = utils.toDatetime(data.attrib.get('at')) + self.hostCpuUtilization = utils.cast(float, data.attrib.get('hostCpuUtilization')) + self.hostMemoryUtilization = utils.cast(float, data.attrib.get('hostMemoryUtilization')) + self.processCpuUtilization = utils.cast(float, data.attrib.get('processCpuUtilization')) + self.processMemoryUtilization = utils.cast(float, data.attrib.get('processMemoryUtilization')) + self.timespan = utils.cast(int, data.attrib.get('timespan')) + + def __repr__(self): + return '<%s>' % ':'.join([p for p in [ + self.__class__.__name__, + self._clean(int(self.at.timestamp())) + ] if p]) diff --git a/service.plexskipintro/plexapi/settings.py b/service.plexskipintro/plexapi/settings.py new file mode 100644 index 0000000000..7733feabba --- /dev/null +++ b/service.plexskipintro/plexapi/settings.py @@ -0,0 +1,177 @@ +# -*- coding: utf-8 -*- +from collections import defaultdict +from urllib.parse import quote + +from plexapi import log, utils +from plexapi.base import PlexObject +from plexapi.exceptions import BadRequest, NotFound + + +class Settings(PlexObject): + """ Container class for all settings. Allows getting and setting PlexServer settings. + + Attributes: + key (str): '/:/prefs' + """ + key = '/:/prefs' + + def __init__(self, server, data, initpath=None): + self._settings = {} + super(Settings, self).__init__(server, data, initpath) + + def __getattr__(self, attr): + if attr.startswith('_'): + try: + return self.__dict__[attr] + except KeyError: + raise AttributeError + return self.get(attr).value + + def __setattr__(self, attr, value): + if not attr.startswith('_'): + return self.get(attr).set(value) + self.__dict__[attr] = value + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + for elem in data: + id = utils.lowerFirst(elem.attrib['id']) + if id in self._settings: + self._settings[id]._loadData(elem) + continue + self._settings[id] = Setting(self._server, elem, self._initpath) + + def all(self): + """ Returns a list of all :class:`~plexapi.settings.Setting` objects available. """ + return [v for id, v in sorted(self._settings.items())] + + def get(self, id): + """ Return the :class:`~plexapi.settings.Setting` object with the specified id. """ + id = utils.lowerFirst(id) + if id in self._settings: + return self._settings[id] + raise NotFound('Invalid setting id: %s' % id) + + def groups(self): + """ Returns a dict of lists for all :class:`~plexapi.settings.Setting` + objects grouped by setting group. + """ + groups = defaultdict(list) + for setting in self.all(): + groups[setting.group].append(setting) + return dict(groups) + + def group(self, group): + """ Return a list of all :class:`~plexapi.settings.Setting` objects in the specified group. + + Parameters: + group (str): Group to return all settings. + """ + return self.groups().get(group, []) + + def save(self): + """ Save any outstanding settnig changes to the :class:`~plexapi.server.PlexServer`. This + performs a full reload() of Settings after complete. + """ + params = {} + for setting in self.all(): + if setting._setValue: + log.info('Saving PlexServer setting %s = %s' % (setting.id, setting._setValue)) + params[setting.id] = quote(setting._setValue) + if not params: + raise BadRequest('No setting have been modified.') + querystr = '&'.join(['%s=%s' % (k, v) for k, v in list(params.items())]) + url = '%s?%s' % (self.key, querystr) + self._server.query(url, self._server._session.put) + self.reload() + + +class Setting(PlexObject): + """ Represents a single Plex setting. + + Attributes: + id (str): Setting id (or name). + label (str): Short description of what this setting is. + summary (str): Long description of what this setting is. + type (str): Setting type (text, int, double, bool). + default (str): Default value for this setting. + value (str,bool,int,float): Current value for this setting. + hidden (bool): True if this is a hidden setting. + advanced (bool): True if this is an advanced setting. + group (str): Group name this setting is categorized as. + enumValues (list,dict): List or dictionary of valis values for this setting. + """ + _bool_cast = lambda x: bool(x == 'true' or x == '1') + _bool_str = lambda x: str(x).lower() + TYPES = { + 'bool': {'type': bool, 'cast': _bool_cast, 'tostr': _bool_str}, + 'double': {'type': float, 'cast': float, 'tostr': str}, + 'int': {'type': int, 'cast': int, 'tostr': str}, + 'text': {'type': str, 'cast': str, 'tostr': str}, + } + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._setValue = None + self.id = data.attrib.get('id') + self.label = data.attrib.get('label') + self.summary = data.attrib.get('summary') + self.type = data.attrib.get('type') + self.default = self._cast(data.attrib.get('default')) + self.value = self._cast(data.attrib.get('value')) + self.hidden = utils.cast(bool, data.attrib.get('hidden')) + self.advanced = utils.cast(bool, data.attrib.get('advanced')) + self.group = data.attrib.get('group') + self.enumValues = self._getEnumValues(data) + + def _cast(self, value): + """ Cast the specific value to the type of this setting. """ + if self.type != 'enum': + value = utils.cast(self.TYPES.get(self.type)['cast'], value) + return value + + def _getEnumValues(self, data): + """ Returns a list of dictionary of valis value for this setting. """ + enumstr = data.attrib.get('enumValues') + if not enumstr: + return None + if ':' in enumstr: + return {self._cast(k): v for k, v in [kv.split(':') for kv in enumstr.split('|')]} + return enumstr.split('|') + + def set(self, value): + """ Set a new value for this setitng. NOTE: You must call plex.settings.save() for before + any changes to setting values are persisted to the :class:`~plexapi.server.PlexServer`. + """ + # check a few things up front + if not isinstance(value, self.TYPES[self.type]['type']): + badtype = type(value).__name__ + raise BadRequest('Invalid value for %s: a %s is required, not %s' % (self.id, self.type, badtype)) + if self.enumValues and value not in self.enumValues: + raise BadRequest('Invalid value for %s: %s not in %s' % (self.id, value, list(self.enumValues))) + # store value off to the side until we call settings.save() + tostr = self.TYPES[self.type]['tostr'] + self._setValue = tostr(value) + + def toUrl(self): + """Helper for urls""" + return '%s=%s' % (self.id, self._value or self.value) + + +@utils.registerPlexObject +class Preferences(Setting): + """ Represents a single Preferences. + + Attributes: + TAG (str): 'Setting' + FILTER (str): 'preferences' + """ + TAG = 'Setting' + FILTER = 'preferences' + + def _default(self): + """ Set the default value for this setting.""" + key = '%s/prefs?' % self._initpath + url = key + '%s=%s' % (self.id, self.default) + self._server.query(url, method=self._server._session.put) diff --git a/service.plexskipintro/plexapi/sonos.py b/service.plexskipintro/plexapi/sonos.py new file mode 100644 index 0000000000..3bdfc1f218 --- /dev/null +++ b/service.plexskipintro/plexapi/sonos.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +import requests +from plexapi import CONFIG, X_PLEX_IDENTIFIER +from plexapi.client import PlexClient +from plexapi.exceptions import BadRequest +from plexapi.playqueue import PlayQueue + + +class PlexSonosClient(PlexClient): + """ Class for interacting with a Sonos speaker via the Plex API. This class + makes requests to an external Plex API which then forwards the + Sonos-specific commands back to your Plex server & Sonos speakers. Use + of this feature requires an active Plex Pass subscription and Sonos + speakers linked to your Plex account. It also requires remote access to + be working properly. + + More details on the Sonos integration are avaialble here: + https://support.plex.tv/articles/218237558-requirements-for-using-plex-for-sonos/ + + The Sonos API emulates the Plex player control API closely: + https://github.com/plexinc/plex-media-player/wiki/Remote-control-API + + Parameters: + account (:class:`~plexapi.myplex.PlexAccount`): PlexAccount instance this + Sonos speaker is associated with. + data (ElementTree): Response from Plex Sonos API used to build this client. + + Attributes: + deviceClass (str): "speaker" + lanIP (str): Local IP address of speaker. + machineIdentifier (str): Unique ID for this device. + platform (str): "Sonos" + platformVersion (str): Build version of Sonos speaker firmware. + product (str): "Sonos" + protocol (str): "plex" + protocolCapabilities (list<str>): List of client capabilities (timeline, playback, + playqueues, provider-playback) + server (:class:`~plexapi.server.PlexServer`): Server this client is connected to. + session (:class:`~requests.Session`): Session object used for connection. + title (str): Name of this Sonos speaker. + token (str): X-Plex-Token used for authenication + _baseurl (str): Address of public Plex Sonos API endpoint. + _commandId (int): Counter for commands sent to Plex API. + _token (str): Token associated with linked Plex account. + _session (obj): Requests session object used to access this client. + """ + + def __init__(self, account, data): + self._data = data + self.deviceClass = data.attrib.get("deviceClass") + self.machineIdentifier = data.attrib.get("machineIdentifier") + self.product = data.attrib.get("product") + self.platform = data.attrib.get("platform") + self.platformVersion = data.attrib.get("platformVersion") + self.protocol = data.attrib.get("protocol") + self.protocolCapabilities = data.attrib.get("protocolCapabilities") + self.lanIP = data.attrib.get("lanIP") + self.title = data.attrib.get("title") + self._baseurl = "https://sonos.plex.tv" + self._commandId = 0 + self._token = account._token + self._session = account._session or requests.Session() + + # Dummy values for PlexClient inheritance + self._last_call = 0 + self._proxyThroughServer = False + self._showSecrets = CONFIG.get("log.show_secrets", "").lower() == "true" + + def playMedia(self, media, offset=0, **params): + + if hasattr(media, "playlistType"): + mediatype = media.playlistType + else: + if isinstance(media, PlayQueue): + mediatype = media.items[0].listType + else: + mediatype = media.listType + + if mediatype == "audio": + mediatype = "music" + else: + raise BadRequest("Sonos currently only supports music for playback") + + server_protocol, server_address, server_port = media._server._baseurl.split(":") + server_address = server_address.strip("/") + server_port = server_port.strip("/") + + playqueue = ( + media + if isinstance(media, PlayQueue) + else media._server.createPlayQueue(media) + ) + self.sendCommand( + "playback/playMedia", + **dict( + { + "type": "music", + "providerIdentifier": "com.plexapp.plugins.library", + "containerKey": "/playQueues/{}?own=1".format( + playqueue.playQueueID + ), + "key": media.key, + "offset": offset, + "machineIdentifier": media._server.machineIdentifier, + "protocol": server_protocol, + "address": server_address, + "port": server_port, + "token": media._server.createToken(), + "commandID": self._nextCommandId(), + "X-Plex-Client-Identifier": X_PLEX_IDENTIFIER, + "X-Plex-Token": media._server._token, + "X-Plex-Target-Client-Identifier": self.machineIdentifier, + }, + **params + ) + ) diff --git a/service.plexskipintro/plexapi/sync.py b/service.plexskipintro/plexapi/sync.py new file mode 100644 index 0000000000..53dc0636f4 --- /dev/null +++ b/service.plexskipintro/plexapi/sync.py @@ -0,0 +1,312 @@ +# -*- coding: utf-8 -*- +""" +You can work with Mobile Sync on other devices straight away, but if you'd like to use your app as a `sync-target` (when +you can set items to be synced to your app) you need to init some variables. + +.. code-block:: python + + def init_sync(): + import plexapi + plexapi.X_PLEX_PROVIDES = 'sync-target' + plexapi.BASE_HEADERS['X-Plex-Sync-Version'] = '2' + plexapi.BASE_HEADERS['X-Plex-Provides'] = plexapi.X_PLEX_PROVIDES + + # mimic iPhone SE + plexapi.X_PLEX_PLATFORM = 'iOS' + plexapi.X_PLEX_PLATFORM_VERSION = '11.4.1' + plexapi.X_PLEX_DEVICE = 'iPhone' + + plexapi.BASE_HEADERS['X-Plex-Platform'] = plexapi.X_PLEX_PLATFORM + plexapi.BASE_HEADERS['X-Plex-Platform-Version'] = plexapi.X_PLEX_PLATFORM_VERSION + plexapi.BASE_HEADERS['X-Plex-Device'] = plexapi.X_PLEX_DEVICE + +You have to fake platform/device/model because transcoding profiles are hardcoded in Plex, and you obviously have +to explicitly specify that your app supports `sync-target`. +""" + +import requests + +import plexapi +from plexapi.base import PlexObject +from plexapi.exceptions import NotFound, BadRequest + + +class SyncItem(PlexObject): + """ + Represents single sync item, for specified server and client. When you saying in the UI to sync "this" to "that" + you're basically creating a sync item. + + Attributes: + id (int): unique id of the item. + clientIdentifier (str): an identifier of Plex Client device, to which the item is belongs. + machineIdentifier (str): the id of server which holds all this content. + version (int): current version of the item. Each time you modify the item (e.g. by changing amount if media to + sync) the new version is created. + rootTitle (str): the title of library/media from which the sync item was created. E.g.: + + * when you create an item for an episode 3 of season 3 of show Example, the value would be `Title of + Episode 3` + * when you create an item for a season 3 of show Example, the value would be `Season 3` + * when you set to sync all your movies in library named "My Movies" to value would be `My Movies`. + + title (str): the title which you've set when created the sync item. + metadataType (str): the type of media which hides inside, can be `episode`, `movie`, etc. + contentType (str): basic type of the content: `video` or `audio`. + status (:class:`~plexapi.sync.Status`): current status of the sync. + mediaSettings (:class:`~plexapi.sync.MediaSettings`): media transcoding settings used for the item. + policy (:class:`~plexapi.sync.Policy`): the policy of which media to sync. + location (str): plex-style library url with all required filters / sorting. + """ + TAG = 'SyncItem' + + def __init__(self, server, data, initpath=None, clientIdentifier=None): + super(SyncItem, self).__init__(server, data, initpath) + self.clientIdentifier = clientIdentifier + + def _loadData(self, data): + self._data = data + self.id = plexapi.utils.cast(int, data.attrib.get('id')) + self.version = plexapi.utils.cast(int, data.attrib.get('version')) + self.rootTitle = data.attrib.get('rootTitle') + self.title = data.attrib.get('title') + self.metadataType = data.attrib.get('metadataType') + self.contentType = data.attrib.get('contentType') + self.machineIdentifier = data.find('Server').get('machineIdentifier') + self.status = Status(**data.find('Status').attrib) + self.mediaSettings = MediaSettings(**data.find('MediaSettings').attrib) + self.policy = Policy(**data.find('Policy').attrib) + self.location = data.find('Location').attrib.get('uri', '') + + def server(self): + """ Returns :class:`~plexapi.myplex.MyPlexResource` with server of current item. """ + server = [s for s in self._server.resources() if s.clientIdentifier == self.machineIdentifier] + if len(server) == 0: + raise NotFound('Unable to find server with uuid %s' % self.machineIdentifier) + return server[0] + + def getMedia(self): + """ Returns list of :class:`~plexapi.base.Playable` which belong to this sync item. """ + server = self.server().connect() + key = '/sync/items/%s' % self.id + return server.fetchItems(key) + + def markDownloaded(self, media): + """ Mark the file as downloaded (by the nature of Plex it will be marked as downloaded within + any SyncItem where it presented). + + Parameters: + media (base.Playable): the media to be marked as downloaded. + """ + url = '/sync/%s/item/%s/downloaded' % (self.clientIdentifier, media.ratingKey) + media._server.query(url, method=requests.put) + + def delete(self): + """ Removes current SyncItem """ + url = SyncList.key.format(clientId=self.clientIdentifier) + url += '/' + str(self.id) + self._server.query(url, self._server._session.delete) + + +class SyncList(PlexObject): + """ Represents a Mobile Sync state, specific for single client, within one SyncList may be presented + items from different servers. + + Attributes: + clientId (str): an identifier of the client. + items (List<:class:`~plexapi.sync.SyncItem`>): list of registered items to sync. + """ + key = 'https://plex.tv/devices/{clientId}/sync_items' + TAG = 'SyncList' + + def _loadData(self, data): + self._data = data + self.clientId = data.attrib.get('clientIdentifier') + self.items = [] + + syncItems = data.find('SyncItems') + if syncItems: + for sync_item in syncItems.iter('SyncItem'): + item = SyncItem(self._server, sync_item, clientIdentifier=self.clientId) + self.items.append(item) + + +class Status(object): + """ Represents a current status of specific :class:`~plexapi.sync.SyncItem`. + + Attributes: + failureCode: unknown, never got one yet. + failure: unknown. + state (str): server-side status of the item, can be `completed`, `pending`, empty, and probably something + else. + itemsCount (int): total items count. + itemsCompleteCount (int): count of transcoded and/or downloaded items. + itemsDownloadedCount (int): count of downloaded items. + itemsReadyCount (int): count of transcoded items, which can be downloaded. + totalSize (int): total size in bytes of complete items. + itemsSuccessfulCount (int): unknown, in my experience it always was equal to `itemsCompleteCount`. + """ + + def __init__(self, itemsCount, itemsCompleteCount, state, totalSize, itemsDownloadedCount, itemsReadyCount, + itemsSuccessfulCount, failureCode, failure): + self.itemsDownloadedCount = plexapi.utils.cast(int, itemsDownloadedCount) + self.totalSize = plexapi.utils.cast(int, totalSize) + self.itemsReadyCount = plexapi.utils.cast(int, itemsReadyCount) + self.failureCode = failureCode + self.failure = failure + self.itemsSuccessfulCount = plexapi.utils.cast(int, itemsSuccessfulCount) + self.state = state + self.itemsCompleteCount = plexapi.utils.cast(int, itemsCompleteCount) + self.itemsCount = plexapi.utils.cast(int, itemsCount) + + def __repr__(self): + return '<%s>:%s' % (self.__class__.__name__, dict( + itemsCount=self.itemsCount, + itemsCompleteCount=self.itemsCompleteCount, + itemsDownloadedCount=self.itemsDownloadedCount, + itemsReadyCount=self.itemsReadyCount, + itemsSuccessfulCount=self.itemsSuccessfulCount + )) + + +class MediaSettings(object): + """ Transcoding settings used for all media within :class:`~plexapi.sync.SyncItem`. + + Attributes: + audioBoost (int): unknown. + maxVideoBitrate (int|str): maximum bitrate for video, may be empty string. + musicBitrate (int|str): maximum bitrate for music, may be an empty string. + photoQuality (int): photo quality on scale 0 to 100. + photoResolution (str): maximum photo resolution, formatted as WxH (e.g. `1920x1080`). + videoResolution (str): maximum video resolution, formatted as WxH (e.g. `1280x720`, may be empty). + subtitleSize (int): subtitle size on scale 0 to 100. + videoQuality (int): video quality on scale 0 to 100. + """ + + def __init__(self, maxVideoBitrate=4000, videoQuality=100, videoResolution='1280x720', audioBoost=100, + musicBitrate=192, photoQuality=74, photoResolution='1920x1080', subtitleSize=100): + self.audioBoost = plexapi.utils.cast(int, audioBoost) + self.maxVideoBitrate = plexapi.utils.cast(int, maxVideoBitrate) if maxVideoBitrate != '' else '' + self.musicBitrate = plexapi.utils.cast(int, musicBitrate) if musicBitrate != '' else '' + self.photoQuality = plexapi.utils.cast(int, photoQuality) if photoQuality != '' else '' + self.photoResolution = photoResolution + self.videoResolution = videoResolution + self.subtitleSize = plexapi.utils.cast(int, subtitleSize) if subtitleSize != '' else '' + self.videoQuality = plexapi.utils.cast(int, videoQuality) if videoQuality != '' else '' + + @staticmethod + def createVideo(videoQuality): + """ Returns a :class:`~plexapi.sync.MediaSettings` object, based on provided video quality value. + + Parameters: + videoQuality (int): idx of quality of the video, one of VIDEO_QUALITY_* values defined in this module. + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: When provided unknown video quality. + """ + if videoQuality == VIDEO_QUALITY_ORIGINAL: + return MediaSettings('', '', '') + elif videoQuality < len(VIDEO_QUALITIES['bitrate']): + return MediaSettings(VIDEO_QUALITIES['bitrate'][videoQuality], + VIDEO_QUALITIES['videoQuality'][videoQuality], + VIDEO_QUALITIES['videoResolution'][videoQuality]) + else: + raise BadRequest('Unexpected video quality') + + @staticmethod + def createMusic(bitrate): + """ Returns a :class:`~plexapi.sync.MediaSettings` object, based on provided music quality value + + Parameters: + bitrate (int): maximum bitrate for synchronized music, better use one of MUSIC_BITRATE_* values from the + module + """ + return MediaSettings(musicBitrate=bitrate) + + @staticmethod + def createPhoto(resolution): + """ Returns a :class:`~plexapi.sync.MediaSettings` object, based on provided photo quality value. + + Parameters: + resolution (str): maximum allowed resolution for synchronized photos, see PHOTO_QUALITY_* values in the + module. + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: When provided unknown video quality. + """ + if resolution in PHOTO_QUALITIES: + return MediaSettings(photoQuality=PHOTO_QUALITIES[resolution], photoResolution=resolution) + else: + raise BadRequest('Unexpected photo quality') + + +class Policy(object): + """ Policy of syncing the media (how many items to sync and process watched media or not). + + Attributes: + scope (str): type of limitation policy, can be `count` or `all`. + value (int): amount of media to sync, valid only when `scope=count`. + unwatched (bool): True means disallow to sync watched media. + """ + + def __init__(self, scope, unwatched, value=0): + self.scope = scope + self.unwatched = plexapi.utils.cast(bool, unwatched) + self.value = plexapi.utils.cast(int, value) + + @staticmethod + def create(limit=None, unwatched=False): + """ Creates a :class:`~plexapi.sync.Policy` object for provided options and automatically sets proper `scope` + value. + + Parameters: + limit (int): limit items by count. + unwatched (bool): if True then watched items wouldn't be synced. + + Returns: + :class:`~plexapi.sync.Policy`. + """ + scope = 'all' + if limit is None: + limit = 0 + else: + scope = 'count' + + return Policy(scope, unwatched, limit) + + +VIDEO_QUALITIES = { + 'bitrate': [64, 96, 208, 320, 720, 1500, 2e3, 3e3, 4e3, 8e3, 1e4, 12e3, 2e4], + 'videoResolution': ['220x128', '220x128', '284x160', '420x240', '576x320', '720x480', '1280x720', '1280x720', + '1280x720', '1920x1080', '1920x1080', '1920x1080', '1920x1080'], + 'videoQuality': [10, 20, 30, 30, 40, 60, 60, 75, 100, 60, 75, 90, 100], +} + +VIDEO_QUALITY_0_2_MBPS = 2 +VIDEO_QUALITY_0_3_MBPS = 3 +VIDEO_QUALITY_0_7_MBPS = 4 +VIDEO_QUALITY_1_5_MBPS_480p = 5 +VIDEO_QUALITY_2_MBPS_720p = 6 +VIDEO_QUALITY_3_MBPS_720p = 7 +VIDEO_QUALITY_4_MBPS_720p = 8 +VIDEO_QUALITY_8_MBPS_1080p = 9 +VIDEO_QUALITY_10_MBPS_1080p = 10 +VIDEO_QUALITY_12_MBPS_1080p = 11 +VIDEO_QUALITY_20_MBPS_1080p = 12 +VIDEO_QUALITY_ORIGINAL = -1 + +AUDIO_BITRATE_96_KBPS = 96 +AUDIO_BITRATE_128_KBPS = 128 +AUDIO_BITRATE_192_KBPS = 192 +AUDIO_BITRATE_320_KBPS = 320 + +PHOTO_QUALITIES = { + '720x480': 24, + '1280x720': 49, + '1920x1080': 74, + '3840x2160': 99, +} + +PHOTO_QUALITY_HIGHEST = PHOTO_QUALITY_2160p = '3840x2160' +PHOTO_QUALITY_HIGH = PHOTO_QUALITY_1080p = '1920x1080' +PHOTO_QUALITY_MEDIUM = PHOTO_QUALITY_720p = '1280x720' +PHOTO_QUALITY_LOW = PHOTO_QUALITY_480p = '720x480' diff --git a/service.plexskipintro/plexapi/utils.py b/service.plexskipintro/plexapi/utils.py new file mode 100644 index 0000000000..9f2ac19ed2 --- /dev/null +++ b/service.plexskipintro/plexapi/utils.py @@ -0,0 +1,509 @@ +# -*- coding: utf-8 -*- +import base64 +import functools +import logging +import os +import re +import string +import time +import unicodedata +import warnings +import zipfile +from datetime import datetime +from getpass import getpass +from threading import Event, Thread +from urllib.parse import quote + +import requests +from plexapi.exceptions import BadRequest, NotFound + +try: + from tqdm import tqdm +except ImportError: + tqdm = None + +log = logging.getLogger('plexapi') + +# Search Types - Plex uses these to filter specific media types when searching. +# Library Types - Populated at runtime +SEARCHTYPES = {'movie': 1, 'show': 2, 'season': 3, 'episode': 4, 'trailer': 5, 'comic': 6, 'person': 7, + 'artist': 8, 'album': 9, 'track': 10, 'picture': 11, 'clip': 12, 'photo': 13, 'photoalbum': 14, + 'playlist': 15, 'playlistFolder': 16, 'collection': 18, 'optimizedVersion': 42, 'userPlaylistItem': 1001} +PLEXOBJECTS = {} + + +class SecretsFilter(logging.Filter): + """ Logging filter to hide secrets. """ + + def __init__(self, secrets=None): + self.secrets = secrets or set() + + def add_secret(self, secret): + if secret is not None: + self.secrets.add(secret) + return secret + + def filter(self, record): + cleanargs = list(record.args) + for i in range(len(cleanargs)): + if isinstance(cleanargs[i], str): + for secret in self.secrets: + cleanargs[i] = cleanargs[i].replace(secret, '<hidden>') + record.args = tuple(cleanargs) + return True + + +def registerPlexObject(cls): + """ Registry of library types we may come across when parsing XML. This allows us to + define a few helper functions to dynamically convery the XML into objects. See + buildItem() below for an example. + """ + etype = getattr(cls, 'STREAMTYPE', getattr(cls, 'TAGTYPE', cls.TYPE)) + ehash = '%s.%s' % (cls.TAG, etype) if etype else cls.TAG + if ehash in PLEXOBJECTS: + raise Exception('Ambiguous PlexObject definition %s(tag=%s, type=%s) with %s' % + (cls.__name__, cls.TAG, etype, PLEXOBJECTS[ehash].__name__)) + PLEXOBJECTS[ehash] = cls + return cls + + +def cast(func, value): + """ Cast the specified value to the specified type (returned by func). Currently this + only support str, int, float, bool. Should be extended if needed. + + Parameters: + func (func): Calback function to used cast to type (int, bool, float). + value (any): value to be cast and returned. + """ + if value is not None: + if func == bool: + if value in (1, True, "1", "true"): + return True + elif value in (0, False, "0", "false"): + return False + else: + raise ValueError(value) + + elif func in (int, float): + try: + return func(value) + except ValueError: + return float('nan') + return func(value) + return value + + +def joinArgs(args): + """ Returns a query string (uses for HTTP URLs) where only the value is URL encoded. + Example return value: '?genre=action&type=1337'. + + Parameters: + args (dict): Arguments to include in query string. + """ + if not args: + return '' + arglist = [] + for key in sorted(args, key=lambda x: x.lower()): + value = str(args[key]) + arglist.append('%s=%s' % (key, quote(value, safe=''))) + return '?%s' % '&'.join(arglist) + + +def lowerFirst(s): + return s[0].lower() + s[1:] + + +def rget(obj, attrstr, default=None, delim='.'): # pragma: no cover + """ Returns the value at the specified attrstr location within a nexted tree of + dicts, lists, tuples, functions, classes, etc. The lookup is done recursively + for each key in attrstr (split by by the delimiter) This function is heavily + influenced by the lookups used in Django templates. + + Parameters: + obj (any): Object to start the lookup in (dict, obj, list, tuple, etc). + attrstr (str): String to lookup (ex: 'foo.bar.baz.value') + default (any): Default value to return if not found. + delim (str): Delimiter separating keys in attrstr. + """ + try: + parts = attrstr.split(delim, 1) + attr = parts[0] + attrstr = parts[1] if len(parts) == 2 else None + if isinstance(obj, dict): + value = obj[attr] + elif isinstance(obj, list): + value = obj[int(attr)] + elif isinstance(obj, tuple): + value = obj[int(attr)] + elif isinstance(obj, object): + value = getattr(obj, attr) + if attrstr: + return rget(value, attrstr, default, delim) + return value + except: # noqa: E722 + return default + + +def searchType(libtype): + """ Returns the integer value of the library string type. + + Parameters: + libtype (str): LibType to lookup (movie, show, season, episode, artist, album, track, + collection) + + Raises: + :exc:`~plexapi.exceptions.NotFound`: Unknown libtype + """ + libtype = str(libtype) + if libtype in [str(v) for v in list(SEARCHTYPES.values())]: + return libtype + if SEARCHTYPES.get(libtype) is not None: + return SEARCHTYPES[libtype] + raise NotFound('Unknown libtype: %s' % libtype) + + +def reverseSearchType(libtype): + """ Returns the string value of the library type. + + Parameters: + libtype (int): Integer value of the library type. + + Raises: + :exc:`~plexapi.exceptions.NotFound`: Unknown libtype + """ + if libtype in SEARCHTYPES: + return libtype + libtype = int(libtype) + for k, v in list(SEARCHTYPES.items()): + if libtype == v: + return k + raise NotFound('Unknown libtype: %s' % libtype) + + +def threaded(callback, listargs): + """ Returns the result of <callback> for each set of `*args` in listargs. Each call + to <callback> is called concurrently in their own separate threads. + + Parameters: + callback (func): Callback function to apply to each set of `*args`. + listargs (list): List of lists; `*args` to pass each thread. + """ + threads, results = [], [] + job_is_done_event = Event() + for args in listargs: + args += [results, len(results)] + results.append(None) + threads.append(Thread(target=callback, args=args, kwargs=dict(job_is_done_event=job_is_done_event))) + threads[-1].setDaemon(True) + threads[-1].start() + while not job_is_done_event.is_set(): + if all(not t.is_alive() for t in threads): + break + time.sleep(0.05) + + return [r for r in results if r is not None] + + +def toDatetime(value, format=None): + """ Returns a datetime object from the specified value. + + Parameters: + value (str): value to return as a datetime + format (str): Format to pass strftime (optional; if value is a str). + """ + if value and value is not None: + if format: + try: + # value = datetime.strptime(value, format) + t=1 + except ValueError: + log.info('Failed to parse %s to datetime, defaulting to None', value) + return None + else: + # https://bugs.python.org/issue30684 + # And platform support for before epoch seems to be flaky. + # Also limit to max 32-bit integer + value = min(max(int(value), 86400), 2**31 - 1) + value = datetime.fromtimestamp(int(value)) + return value + + +def millisecondToHumanstr(milliseconds): + """ Returns human readable time duration from milliseconds. + HH:MM:SS:MMMM + + Parameters: + milliseconds (str,int): time duration in milliseconds. + """ + milliseconds = int(milliseconds) + r = datetime.utcfromtimestamp(milliseconds / 1000) + f = r.strftime("%H:%M:%S.%f") + return f[:-2] + + +def toList(value, itemcast=None, delim=','): + """ Returns a list of strings from the specified value. + + Parameters: + value (str): comma delimited string to convert to list. + itemcast (func): Function to cast each list item to (default str). + delim (str): string delimiter (optional; default ','). + """ + value = value or '' + itemcast = itemcast or str + return [itemcast(item) for item in value.split(delim) if item != ''] + + +def cleanFilename(filename, replace='_'): + whitelist = "-_.()[] {}{}".format(string.ascii_letters, string.digits) + cleaned_filename = unicodedata.normalize('NFKD', filename).encode('ASCII', 'ignore').decode() + cleaned_filename = ''.join(c if c in whitelist else replace for c in cleaned_filename) + return cleaned_filename + + +def downloadSessionImages(server, filename=None, height=150, width=150, + opacity=100, saturation=100): # pragma: no cover + """ Helper to download a bif image or thumb.url from plex.server.sessions. + + Parameters: + filename (str): default to None, + height (int): Height of the image. + width (int): width of the image. + opacity (int): Opacity of the resulting image (possibly deprecated). + saturation (int): Saturating of the resulting image. + + Returns: + {'hellowlol': {'filepath': '<filepath>', 'url': 'http://<url>'}, + {'<username>': {filepath, url}}, ... + """ + info = {} + for media in server.sessions(): + url = None + for part in media.iterParts(): + if media.thumb: + url = media.thumb + if part.indexes: # always use bif images if available. + url = '/library/parts/%s/indexes/%s/%s' % (part.id, part.indexes.lower(), media.viewOffset) + if url: + if filename is None: + prettyname = media._prettyfilename() + filename = 'session_transcode_%s_%s_%s' % (media.usernames[0], prettyname, int(time.time())) + url = server.transcodeImage(url, height, width, opacity, saturation) + filepath = download(url, filename=filename) + info['username'] = {'filepath': filepath, 'url': url} + return info + + +def download(url, token, filename=None, savepath=None, session=None, chunksize=4024, + unpack=False, mocked=False, showstatus=False): + """ Helper to download a thumb, videofile or other media item. Returns the local + path to the downloaded file. + + Parameters: + url (str): URL where the content be reached. + token (str): Plex auth token to include in headers. + filename (str): Filename of the downloaded file, default None. + savepath (str): Defaults to current working dir. + chunksize (int): What chunksize read/write at the time. + mocked (bool): Helper to do evertything except write the file. + unpack (bool): Unpack the zip file. + showstatus(bool): Display a progressbar. + + Example: + >>> download(a_episode.getStreamURL(), a_episode.location) + /path/to/file + """ + # fetch the data to be saved + session = session or requests.Session() + headers = {'X-Plex-Token': token} + response = session.get(url, headers=headers, stream=True) + # make sure the savepath directory exists + savepath = savepath or os.getcwd() + os.makedirs(savepath, exist_ok=True) + + # try getting filename from header if not specified in arguments (used for logs, db) + if not filename and response.headers.get('Content-Disposition'): + filename = re.findall(r'filename=\"(.+)\"', response.headers.get('Content-Disposition')) + filename = filename[0] if filename[0] else None + + filename = os.path.basename(filename) + fullpath = os.path.join(savepath, filename) + # append file.ext from content-type if not already there + extension = os.path.splitext(fullpath)[-1] + if not extension: + contenttype = response.headers.get('content-type') + if contenttype and 'image' in contenttype: + fullpath += contenttype.split('/')[1] + + # check this is a mocked download (testing) + if mocked: + log.debug('Mocked download %s', fullpath) + return fullpath + + # save the file to disk + log.info('Downloading: %s', fullpath) + if showstatus and tqdm: # pragma: no cover + total = int(response.headers.get('content-length', 0)) + bar = tqdm(unit='B', unit_scale=True, total=total, desc=filename) + + with open(fullpath, 'wb') as handle: + for chunk in response.iter_content(chunk_size=chunksize): + handle.write(chunk) + if showstatus and tqdm: + bar.update(len(chunk)) + + if showstatus and tqdm: # pragma: no cover + bar.close() + # check we want to unzip the contents + if fullpath.endswith('zip') and unpack: + with zipfile.ZipFile(fullpath, 'r') as handle: + handle.extractall(savepath) + + return fullpath + + +def tag_singular(tag): + if tag == 'countries': + return 'country' + elif tag == 'similar': + return 'similar' + else: + return tag[:-1] + + +def tag_plural(tag): + if tag == 'country': + return 'countries' + elif tag == 'similar': + return 'similar' + else: + return tag + 's' + + +def tag_helper(tag, items, locked=True, remove=False): + """ Simple tag helper for editing a object. """ + if not isinstance(items, list): + items = [items] + data = {} + if not remove: + for i, item in enumerate(items): + tagname = '%s[%s].tag.tag' % (tag, i) + data[tagname] = item + if remove: + tagname = '%s[].tag.tag-' % tag + data[tagname] = ','.join(items) + data['%s.locked' % tag] = 1 if locked else 0 + return data + + +def getMyPlexAccount(opts=None): # pragma: no cover + """ Helper function tries to get a MyPlex Account instance by checking + the the following locations for a username and password. This is + useful to create user-friendly command line tools. + 1. command-line options (opts). + 2. environment variables and config.ini + 3. Prompt on the command line. + """ + from plexapi import CONFIG + from plexapi.myplex import MyPlexAccount + # 1. Check command-line options + if opts and opts.username and opts.password: + print('Authenticating with Plex.tv as %s..' % opts.username) + return MyPlexAccount(opts.username, opts.password) + # 2. Check Plexconfig (environment variables and config.ini) + config_username = CONFIG.get('auth.myplex_username') + config_password = CONFIG.get('auth.myplex_password') + if config_username and config_password: + print('Authenticating with Plex.tv as %s..' % config_username) + return MyPlexAccount(config_username, config_password) + config_token = CONFIG.get('auth.server_token') + if config_token: + print('Authenticating with Plex.tv with token') + return MyPlexAccount(token=config_token) + # 3. Prompt for username and password on the command line + username = input('What is your plex.tv username: ') + password = getpass('What is your plex.tv password: ') + print('Authenticating with Plex.tv as %s..' % username) + return MyPlexAccount(username, password) + + +def createMyPlexDevice(headers, account, timeout=10): # pragma: no cover + """ Helper function to create a new MyPlexDevice. + + Parameters: + headers (dict): Provide the X-Plex- headers for the new device. + A unique X-Plex-Client-Identifier is required. + account (MyPlexAccount): The Plex account to create the device on. + timeout (int): Timeout in seconds to wait for device login. + """ + from plexapi.myplex import MyPlexPinLogin + + if 'X-Plex-Client-Identifier' not in headers: + raise BadRequest('The X-Plex-Client-Identifier header is required.') + + clientIdentifier = headers['X-Plex-Client-Identifier'] + + pinlogin = MyPlexPinLogin(headers=headers) + pinlogin.run(timeout=timeout) + account.link(pinlogin.pin) + pinlogin.waitForLogin() + + return account.device(clientId=clientIdentifier) + + +def choose(msg, items, attr): # pragma: no cover + """ Command line helper to display a list of choices, asking the + user to choose one of the options. + """ + # Return the first item if there is only one choice + if len(items) == 1: + return items[0] + # Print all choices to the command line + print() + for index, i in enumerate(items): + name = attr(i) if callable(attr) else getattr(i, attr) + print(' %s: %s' % (index, name)) + print() + # Request choice from the user + while True: + try: + inp = input('%s: ' % msg) + if any(s in inp for s in (':', '::', '-')): + idx = slice(*[int(x.strip()) if x.strip() else None for x in inp.split(':')]) + return items[idx] + else: + return items[int(inp)] + + except (ValueError, IndexError): + pass + + +def getAgentIdentifier(section, agent): + """ Return the full agent identifier from a short identifier, name, or confirm full identifier. """ + agents = [] + for ag in section.agents(): + identifiers = [ag.identifier, ag.shortIdentifier, ag.name] + if agent in identifiers: + return ag.identifier + agents += identifiers + raise NotFound('Couldnt find "%s" in agents list (%s)' % + (agent, ', '.join(agents))) + + +def base64str(text): + return base64.b64encode(text.encode('utf-8')).decode('utf-8') + + +def deprecated(message, stacklevel=2): + def decorator(func): + """This is a decorator which can be used to mark functions + as deprecated. It will result in a warning being emitted + when the function is used.""" + @functools.wraps(func) + def wrapper(*args, **kwargs): + msg = 'Call to deprecated function or method "%s", %s.' % (func.__name__, message) + warnings.warn(msg, category=DeprecationWarning, stacklevel=stacklevel) + log.warning(msg) + return func(*args, **kwargs) + return wrapper + return decorator diff --git a/service.plexskipintro/plexapi/video.py b/service.plexskipintro/plexapi/video.py new file mode 100644 index 0000000000..4049d6c532 --- /dev/null +++ b/service.plexskipintro/plexapi/video.py @@ -0,0 +1,949 @@ +# -*- coding: utf-8 -*- +import os +from urllib.parse import quote_plus, urlencode + +from plexapi import library, media, utils +from plexapi.base import Playable, PlexPartialObject +from plexapi.exceptions import BadRequest +from plexapi.mixins import AdvancedSettingsMixin, ArtUrlMixin, ArtMixin, BannerMixin, PosterUrlMixin, PosterMixin +from plexapi.mixins import RatingMixin, SplitMergeMixin, UnmatchMatchMixin +from plexapi.mixins import CollectionMixin, CountryMixin, DirectorMixin, GenreMixin, LabelMixin, ProducerMixin, WriterMixin + + +class Video(PlexPartialObject): + """ Base class for all video objects including :class:`~plexapi.video.Movie`, + :class:`~plexapi.video.Show`, :class:`~plexapi.video.Season`, + :class:`~plexapi.video.Episode`, and :class:`~plexapi.video.Clip`. + + Attributes: + addedAt (datetime): Datetime the item was added to the library. + art (str): URL to artwork image (/library/metadata/<ratingKey>/art/<artid>). + artBlurHash (str): BlurHash string for artwork image. + fields (List<:class:`~plexapi.media.Field`>): List of field objects. + guid (str): Plex GUID for the movie, show, season, episode, or clip (plex://movie/5d776b59ad5437001f79c6f8). + key (str): API URL (/library/metadata/<ratingkey>). + lastRatedAt (datetime): Datetime the item was last rated. + lastViewedAt (datetime): Datetime the item was last played. + librarySectionID (int): :class:`~plexapi.library.LibrarySection` ID. + librarySectionKey (str): :class:`~plexapi.library.LibrarySection` key. + librarySectionTitle (str): :class:`~plexapi.library.LibrarySection` title. + listType (str): Hardcoded as 'video' (useful for search filters). + ratingKey (int): Unique key identifying the item. + summary (str): Summary of the movie, show, season, episode, or clip. + thumb (str): URL to thumbnail image (/library/metadata/<ratingKey>/thumb/<thumbid>). + thumbBlurHash (str): BlurHash string for thumbnail image. + title (str): Name of the movie, show, season, episode, or clip. + titleSort (str): Title to use when sorting (defaults to title). + type (str): 'movie', 'show', 'season', 'episode', or 'clip'. + updatedAt (datatime): Datetime the item was updated. + userRating (float): Rating of the item (0.0 - 10.0) equaling (0 stars - 5 stars). + viewCount (int): Count of times the item was played. + """ + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + self._data = data + self.addedAt = utils.toDatetime(data.attrib.get('addedAt')) + self.art = data.attrib.get('art') + self.artBlurHash = data.attrib.get('artBlurHash') + self.fields = self.findItems(data, media.Field) + self.guid = data.attrib.get('guid') + self.key = data.attrib.get('key', '') + self.lastRatedAt = utils.toDatetime(data.attrib.get('lastRatedAt')) + self.lastViewedAt = utils.toDatetime(data.attrib.get('lastViewedAt')) + self.librarySectionID = utils.cast(int, data.attrib.get('librarySectionID')) + self.librarySectionKey = data.attrib.get('librarySectionKey') + self.librarySectionTitle = data.attrib.get('librarySectionTitle') + self.listType = 'video' + self.ratingKey = utils.cast(int, data.attrib.get('ratingKey')) + self.summary = data.attrib.get('summary') + self.thumb = data.attrib.get('thumb') + self.thumbBlurHash = data.attrib.get('thumbBlurHash') + self.title = data.attrib.get('title') + self.titleSort = data.attrib.get('titleSort', self.title) + self.type = data.attrib.get('type') + self.updatedAt = utils.toDatetime(data.attrib.get('updatedAt')) + self.userRating = utils.cast(float, data.attrib.get('userRating')) + self.viewCount = utils.cast(int, data.attrib.get('viewCount', 0)) + + @property + def isWatched(self): + """ Returns True if this video is watched. """ + return bool(self.viewCount > 0) if self.viewCount else False + + def url(self, part): + """ Returns the full url for something. Typically used for getting a specific image. """ + return self._server.url(part, includeToken=True) if part else None + + def markWatched(self): + """ Mark the video as palyed. """ + key = '/:/scrobble?key=%s&identifier=com.plexapp.plugins.library' % self.ratingKey + self._server.query(key) + + def markUnwatched(self): + """ Mark the video as unplayed. """ + key = '/:/unscrobble?key=%s&identifier=com.plexapp.plugins.library' % self.ratingKey + self._server.query(key) + + def augmentation(self): + """ Returns a list of :class:`~plexapi.library.Hub` objects. + Augmentation returns hub items relating to online media sources + such as Tidal Music "Track from {item}" or "Soundtrack of {item}". + Plex Pass and linked Tidal account are required. + """ + account = self._server.myPlexAccount() + tidalOptOut = next( + (service.value for service in account.onlineMediaSources() + if service.key == 'tv.plex.provider.music'), + None + ) + if account.subscriptionStatus != 'Active' or tidalOptOut == 'opt_out': + raise BadRequest('Requires Plex Pass and Tidal Music enabled.') + data = self._server.query(self.key + '?asyncAugmentMetadata=1') + augmentationKey = data.attrib.get('augmentationKey') + return self.fetchItems(augmentationKey) + + def _defaultSyncTitle(self): + """ Returns str, default title for a new syncItem. """ + return self.title + + def subtitleStreams(self): + """ Returns a list of :class:`~plexapi.media.SubtitleStream` objects for all MediaParts. """ + streams = [] + + parts = self.iterParts() + for part in parts: + streams += part.subtitleStreams() + return streams + + def uploadSubtitles(self, filepath): + """ Upload Subtitle file for video. """ + url = '%s/subtitles' % self.key + filename = os.path.basename(filepath) + subFormat = os.path.splitext(filepath)[1][1:] + with open(filepath, 'rb') as subfile: + params = {'title': filename, + 'format': subFormat + } + headers = {'Accept': 'text/plain, */*'} + self._server.query(url, self._server._session.post, data=subfile, params=params, headers=headers) + + def removeSubtitles(self, streamID=None, streamTitle=None): + """ Remove Subtitle from movie's subtitles listing. + + Note: If subtitle file is located inside video directory it will bbe deleted. + Files outside of video directory are not effected. + """ + for stream in self.subtitleStreams(): + if streamID == stream.id or streamTitle == stream.title: + self._server.query(stream.key, self._server._session.delete) + + def optimize(self, title=None, target="", targetTagID=None, locationID=-1, policyScope='all', + policyValue="", policyUnwatched=0, videoQuality=None, deviceProfile=None): + """ Optimize item + + locationID (int): -1 in folder with original items + 2 library path id + library path id is found in library.locations[i].id + + target (str): custom quality name. + if none provided use "Custom: {deviceProfile}" + + targetTagID (int): Default quality settings + 1 Mobile + 2 TV + 3 Original Quality + + deviceProfile (str): Android, IOS, Universal TV, Universal Mobile, Windows Phone, + Windows, Xbox One + + Example: + Optimize for Mobile + item.optimize(targetTagID="Mobile") or item.optimize(targetTagID=1") + Optimize for Android 10 MBPS 1080p + item.optimize(deviceProfile="Android", videoQuality=10) + Optimize for IOS Original Quality + item.optimize(deviceProfile="IOS", videoQuality=-1) + + * see sync.py VIDEO_QUALITIES for additional information for using videoQuality + """ + tagValues = [1, 2, 3] + tagKeys = ["Mobile", "TV", "Original Quality"] + tagIDs = tagKeys + tagValues + + if targetTagID not in tagIDs and (deviceProfile is None or videoQuality is None): + raise BadRequest('Unexpected or missing quality profile.') + + libraryLocationIDs = [location.id for location in self.section()._locations()] + libraryLocationIDs.append(-1) + + if locationID not in libraryLocationIDs: + raise BadRequest('Unexpected library path ID. %s not in %s' % + (locationID, libraryLocationIDs)) + + if isinstance(targetTagID, str): + tagIndex = tagKeys.index(targetTagID) + targetTagID = tagValues[tagIndex] + + if title is None: + title = self.title + + backgroundProcessing = self.fetchItem('/playlists?type=42') + key = '%s/items?' % backgroundProcessing.key + params = { + 'Item[type]': 42, + 'Item[target]': target, + 'Item[targetTagID]': targetTagID if targetTagID else '', + 'Item[locationID]': locationID, + 'Item[Policy][scope]': policyScope, + 'Item[Policy][value]': policyValue, + 'Item[Policy][unwatched]': policyUnwatched + } + + if deviceProfile: + params['Item[Device][profile]'] = deviceProfile + + if videoQuality: + from plexapi.sync import MediaSettings + mediaSettings = MediaSettings.createVideo(videoQuality) + params['Item[MediaSettings][videoQuality]'] = mediaSettings.videoQuality + params['Item[MediaSettings][videoResolution]'] = mediaSettings.videoResolution + params['Item[MediaSettings][maxVideoBitrate]'] = mediaSettings.maxVideoBitrate + params['Item[MediaSettings][audioBoost]'] = '' + params['Item[MediaSettings][subtitleSize]'] = '' + params['Item[MediaSettings][musicBitrate]'] = '' + params['Item[MediaSettings][photoQuality]'] = '' + + titleParam = {'Item[title]': title} + section = self._server.library.sectionByID(self.librarySectionID) + params['Item[Location][uri]'] = 'library://' + section.uuid + '/item/' + \ + quote_plus(self.key + '?includeExternalMedia=1') + + data = key + urlencode(params) + '&' + urlencode(titleParam) + return self._server.query(data, method=self._server._session.put) + + def sync(self, videoQuality, client=None, clientId=None, limit=None, unwatched=False, title=None): + """ Add current video (movie, tv-show, season or episode) as sync item for specified device. + See :func:`~plexapi.myplex.MyPlexAccount.sync` for possible exceptions. + + Parameters: + videoQuality (int): idx of quality of the video, one of VIDEO_QUALITY_* values defined in + :mod:`~plexapi.sync` module. + client (:class:`~plexapi.myplex.MyPlexDevice`): sync destination, see + :func:`~plexapi.myplex.MyPlexAccount.sync`. + clientId (str): sync destination, see :func:`~plexapi.myplex.MyPlexAccount.sync`. + limit (int): maximum count of items to sync, unlimited if `None`. + unwatched (bool): if `True` watched videos wouldn't be synced. + title (str): descriptive title for the new :class:`~plexapi.sync.SyncItem`, if empty the value would be + generated from metadata of current media. + + Returns: + :class:`~plexapi.sync.SyncItem`: an instance of created syncItem. + """ + + from plexapi.sync import SyncItem, Policy, MediaSettings + + myplex = self._server.myPlexAccount() + sync_item = SyncItem(self._server, None) + sync_item.title = title if title else self._defaultSyncTitle() + sync_item.rootTitle = self.title + sync_item.contentType = self.listType + sync_item.metadataType = self.METADATA_TYPE + sync_item.machineIdentifier = self._server.machineIdentifier + + section = self._server.library.sectionByID(self.librarySectionID) + + sync_item.location = 'library://%s/item/%s' % (section.uuid, quote_plus(self.key)) + sync_item.policy = Policy.create(limit, unwatched) + sync_item.mediaSettings = MediaSettings.createVideo(videoQuality) + + return myplex.sync(sync_item, client=client, clientId=clientId) + + +@utils.registerPlexObject +class Movie(Video, Playable, AdvancedSettingsMixin, ArtMixin, PosterMixin, RatingMixin, SplitMergeMixin, UnmatchMatchMixin, + CollectionMixin, CountryMixin, DirectorMixin, GenreMixin, LabelMixin, ProducerMixin, WriterMixin): + """ Represents a single Movie. + + Attributes: + TAG (str): 'Video' + TYPE (str): 'movie' + audienceRating (float): Audience rating (usually from Rotten Tomatoes). + audienceRatingImage (str): Key to audience rating image (rottentomatoes://image.rating.spilled). + chapters (List<:class:`~plexapi.media.Chapter`>): List of Chapter objects. + chapterSource (str): Chapter source (agent; media; mixed). + collections (List<:class:`~plexapi.media.Collection`>): List of collection objects. + contentRating (str) Content rating (PG-13; NR; TV-G). + countries (List<:class:`~plexapi.media.Country`>): List of countries objects. + directors (List<:class:`~plexapi.media.Director`>): List of director objects. + duration (int): Duration of the movie in milliseconds. + genres (List<:class:`~plexapi.media.Genre`>): List of genre objects. + guids (List<:class:`~plexapi.media.Guid`>): List of guid objects. + labels (List<:class:`~plexapi.media.Label`>): List of label objects. + languageOverride (str): Setting that indicates if a languge is used to override metadata + (eg. en-CA, None = Library default). + media (List<:class:`~plexapi.media.Media`>): List of media objects. + originallyAvailableAt (datetime): Datetime the movie was released. + originalTitle (str): Original title, often the foreign title (転々; 엽기적인 그녀). + primaryExtraKey (str) Primary extra key (/library/metadata/66351). + producers (List<:class:`~plexapi.media.Producer`>): List of producers objects. + rating (float): Movie critic rating (7.9; 9.8; 8.1). + ratingImage (str): Key to critic rating image (rottentomatoes://image.rating.rotten). + roles (List<:class:`~plexapi.media.Role`>): List of role objects. + similar (List<:class:`~plexapi.media.Similar`>): List of Similar objects. + studio (str): Studio that created movie (Di Bonaventura Pictures; 21 Laps Entertainment). + tagline (str): Movie tag line (Back 2 Work; Who says men can't change?). + useOriginalTitle (int): Setting that indicates if the original title is used for the movie + (-1 = Library default, 0 = No, 1 = Yes). + viewOffset (int): View offset in milliseconds. + writers (List<:class:`~plexapi.media.Writer`>): List of writers objects. + year (int): Year movie was released. + """ + TAG = 'Video' + TYPE = 'movie' + METADATA_TYPE = 'movie' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + Video._loadData(self, data) + Playable._loadData(self, data) + self.audienceRating = utils.cast(float, data.attrib.get('audienceRating')) + self.audienceRatingImage = data.attrib.get('audienceRatingImage') + self.chapters = self.findItems(data, media.Chapter) + self.chapterSource = data.attrib.get('chapterSource') + self.collections = self.findItems(data, media.Collection) + self.contentRating = data.attrib.get('contentRating') + self.countries = self.findItems(data, media.Country) + self.directors = self.findItems(data, media.Director) + self.duration = utils.cast(int, data.attrib.get('duration')) + self.genres = self.findItems(data, media.Genre) + self.guids = self.findItems(data, media.Guid) + self.labels = self.findItems(data, media.Label) + self.languageOverride = data.attrib.get('languageOverride') + self.media = self.findItems(data, media.Media) + self.originallyAvailableAt = utils.toDatetime(data.attrib.get('originallyAvailableAt'), '%Y-%m-%d') + self.originalTitle = data.attrib.get('originalTitle') + self.primaryExtraKey = data.attrib.get('primaryExtraKey') + self.producers = self.findItems(data, media.Producer) + self.rating = utils.cast(float, data.attrib.get('rating')) + self.ratingImage = data.attrib.get('ratingImage') + self.roles = self.findItems(data, media.Role) + self.similar = self.findItems(data, media.Similar) + self.studio = data.attrib.get('studio') + self.tagline = data.attrib.get('tagline') + self.useOriginalTitle = utils.cast(int, data.attrib.get('useOriginalTitle', '-1')) + self.viewOffset = utils.cast(int, data.attrib.get('viewOffset', 0)) + self.writers = self.findItems(data, media.Writer) + self.year = utils.cast(int, data.attrib.get('year')) + + @property + def actors(self): + """ Alias to self.roles. """ + return self.roles + + @property + def locations(self): + """ This does not exist in plex xml response but is added to have a common + interface to get the locations of the movie. + + Returns: + List<str> of file paths where the movie is found on disk. + """ + return [part.file for part in self.iterParts() if part] + + @property + def hasPreviewThumbnails(self): + """ Returns True if any of the media parts has generated preview (BIF) thumbnails. """ + return any(part.hasPreviewThumbnails for media in self.media for part in media.parts) + + def _prettyfilename(self): + """ Returns a filename for use in download. """ + return '%s (%s)' % (self.title, self.year) + + def reviews(self): + """ Returns a list of :class:`~plexapi.media.Review` objects. """ + data = self._server.query(self._details_key) + return self.findItems(data, media.Review, rtag='Video') + + def extras(self): + """ Returns a list of :class:`~plexapi.video.Extra` objects. """ + data = self._server.query(self._details_key) + return self.findItems(data, Extra, rtag='Extras') + + def hubs(self): + """ Returns a list of :class:`~plexapi.library.Hub` objects. """ + data = self._server.query(self._details_key) + return self.findItems(data, library.Hub, rtag='Related') + + +@utils.registerPlexObject +class Show(Video, AdvancedSettingsMixin, ArtMixin, BannerMixin, PosterMixin, RatingMixin, SplitMergeMixin, UnmatchMatchMixin, + CollectionMixin, GenreMixin, LabelMixin): + """ Represents a single Show (including all seasons and episodes). + + Attributes: + TAG (str): 'Directory' + TYPE (str): 'show' + audienceRating (float): Audience rating (TMDB or TVDB). + audienceRatingImage (str): Key to audience rating image (tmdb://image.rating). + autoDeletionItemPolicyUnwatchedLibrary (int): Setting that indicates the number of unplayed + episodes to keep for the show (0 = All episodes, 5 = 5 latest episodes, 3 = 3 latest episodes, + 1 = 1 latest episode, -3 = Episodes added in the past 3 days, -7 = Episodes added in the + past 7 days, -30 = Episodes added in the past 30 days). + autoDeletionItemPolicyWatchedLibrary (int): Setting that indicates if episodes are deleted + after being watched for the show (0 = Never, 1 = After a day, 7 = After a week, + 100 = On next refresh). + banner (str): Key to banner artwork (/library/metadata/<ratingkey>/banner/<bannerid>). + childCount (int): Number of seasons in the show. + collections (List<:class:`~plexapi.media.Collection`>): List of collection objects. + contentRating (str) Content rating (PG-13; NR; TV-G). + duration (int): Typical duration of the show episodes in milliseconds. + episodeSort (int): Setting that indicates how episodes are sorted for the show + (-1 = Library default, 0 = Oldest first, 1 = Newest first). + flattenSeasons (int): Setting that indicates if seasons are set to hidden for the show + (-1 = Library default, 0 = Hide, 1 = Show). + genres (List<:class:`~plexapi.media.Genre`>): List of genre objects. + guids (List<:class:`~plexapi.media.Guid`>): List of guid objects. + index (int): Plex index number for the show. + key (str): API URL (/library/metadata/<ratingkey>). + labels (List<:class:`~plexapi.media.Label`>): List of label objects. + languageOverride (str): Setting that indicates if a languge is used to override metadata + (eg. en-CA, None = Library default). + leafCount (int): Number of items in the show view. + locations (List<str>): List of folder paths where the show is found on disk. + network (str): The network that distributed the show. + originallyAvailableAt (datetime): Datetime the show was released. + originalTitle (str): The original title of the show. + rating (float): Show rating (7.9; 9.8; 8.1). + roles (List<:class:`~plexapi.media.Role`>): List of role objects. + showOrdering (str): Setting that indicates the episode ordering for the show + (None = Library default). + similar (List<:class:`~plexapi.media.Similar`>): List of Similar objects. + studio (str): Studio that created show (Di Bonaventura Pictures; 21 Laps Entertainment). + tagline (str): Show tag line. + theme (str): URL to theme resource (/library/metadata/<ratingkey>/theme/<themeid>). + useOriginalTitle (int): Setting that indicates if the original title is used for the show + (-1 = Library default, 0 = No, 1 = Yes). + viewedLeafCount (int): Number of items marked as played in the show view. + year (int): Year the show was released. + """ + TAG = 'Directory' + TYPE = 'show' + METADATA_TYPE = 'episode' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + Video._loadData(self, data) + self.audienceRating = utils.cast(float, data.attrib.get('audienceRating')) + self.audienceRatingImage = data.attrib.get('audienceRatingImage') + self.autoDeletionItemPolicyUnwatchedLibrary = utils.cast( + int, data.attrib.get('autoDeletionItemPolicyUnwatchedLibrary', '0')) + self.autoDeletionItemPolicyWatchedLibrary = utils.cast( + int, data.attrib.get('autoDeletionItemPolicyWatchedLibrary', '0')) + self.banner = data.attrib.get('banner') + self.childCount = utils.cast(int, data.attrib.get('childCount')) + self.collections = self.findItems(data, media.Collection) + self.contentRating = data.attrib.get('contentRating') + self.duration = utils.cast(int, data.attrib.get('duration')) + self.episodeSort = utils.cast(int, data.attrib.get('episodeSort', '-1')) + self.flattenSeasons = utils.cast(int, data.attrib.get('flattenSeasons', '-1')) + self.genres = self.findItems(data, media.Genre) + self.guids = self.findItems(data, media.Guid) + self.index = utils.cast(int, data.attrib.get('index')) + self.key = self.key.replace('/children', '') # FIX_BUG_50 + self.labels = self.findItems(data, media.Label) + self.languageOverride = data.attrib.get('languageOverride') + self.leafCount = utils.cast(int, data.attrib.get('leafCount')) + self.locations = self.listAttrs(data, 'path', etag='Location') + self.network = data.attrib.get('network') + self.originallyAvailableAt = utils.toDatetime(data.attrib.get('originallyAvailableAt'), '%Y-%m-%d') + self.originalTitle = data.attrib.get('originalTitle') + self.rating = utils.cast(float, data.attrib.get('rating')) + self.roles = self.findItems(data, media.Role) + self.showOrdering = data.attrib.get('showOrdering') + self.similar = self.findItems(data, media.Similar) + self.studio = data.attrib.get('studio') + self.tagline = data.attrib.get('tagline') + self.theme = data.attrib.get('theme') + self.useOriginalTitle = utils.cast(int, data.attrib.get('useOriginalTitle', '-1')) + self.viewedLeafCount = utils.cast(int, data.attrib.get('viewedLeafCount')) + self.year = utils.cast(int, data.attrib.get('year')) + + def __iter__(self): + for season in self.seasons(): + yield season + + @property + def actors(self): + """ Alias to self.roles. """ + return self.roles + + @property + def isWatched(self): + """ Returns True if the show is fully watched. """ + return bool(self.viewedLeafCount == self.leafCount) + + def hubs(self): + """ Returns a list of :class:`~plexapi.library.Hub` objects. """ + data = self._server.query(self._details_key) + return self.findItems(data, library.Hub, rtag='Related') + + def onDeck(self): + """ Returns show's On Deck :class:`~plexapi.video.Video` object or `None`. + If show is unwatched, return will likely be the first episode. + """ + data = self._server.query(self._details_key) + return next(iter(self.findItems(data, rtag='OnDeck')), None) + + def season(self, title=None, season=None): + """ Returns the season with the specified title or number. + + Parameters: + title (str): Title of the season to return. + season (int): Season number (default: None; required if title not specified). + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: If title or season parameter is missing. + """ + key = '/library/metadata/%s/children?excludeAllLeaves=1' % self.ratingKey + if title is not None and not isinstance(title, int): + return self.fetchItem(key, Season, title__iexact=title) + elif season is not None or isinstance(title, int): + if isinstance(title, int): + index = title + else: + index = season + return self.fetchItem(key, Season, index=index) + raise BadRequest('Missing argument: title or season is required') + + def seasons(self, **kwargs): + """ Returns a list of :class:`~plexapi.video.Season` objects in the show. """ + key = '/library/metadata/%s/children?excludeAllLeaves=1' % self.ratingKey + return self.fetchItems(key, Season, **kwargs) + + def episode(self, title=None, season=None, episode=None): + """ Find a episode using a title or season and episode. + + Parameters: + title (str): Title of the episode to return + season (int): Season number (default: None; required if title not specified). + episode (int): Episode number (default: None; required if title not specified). + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: If title or season and episode parameters are missing. + """ + key = '/library/metadata/%s/allLeaves' % self.ratingKey + if title is not None: + return self.fetchItem(key, Episode, title__iexact=title) + elif season is not None and episode is not None: + return self.fetchItem(key, Episode, parentIndex=season, index=episode) + raise BadRequest('Missing argument: title or season and episode are required') + + def episodes(self, **kwargs): + """ Returns a list of :class:`~plexapi.video.Episode` objects in the show. """ + key = '/library/metadata/%s/allLeaves' % self.ratingKey + return self.fetchItems(key, Episode, **kwargs) + + def get(self, title=None, season=None, episode=None): + """ Alias to :func:`~plexapi.video.Show.episode`. """ + return self.episode(title, season, episode) + + def watched(self): + """ Returns list of watched :class:`~plexapi.video.Episode` objects. """ + return self.episodes(viewCount__gt=0) + + def unwatched(self): + """ Returns list of unwatched :class:`~plexapi.video.Episode` objects. """ + return self.episodes(viewCount=0) + + def download(self, savepath=None, keep_original_name=False, subfolders=False, **kwargs): + """ Download all episodes from the show. See :func:`~plexapi.base.Playable.download` for details. + + Parameters: + savepath (str): Defaults to current working dir. + keep_original_name (bool): True to keep the original filename otherwise + a friendlier filename is generated. + subfolders (bool): True to separate episodes in to season folders. + **kwargs: Additional options passed into :func:`~plexapi.base.PlexObject.getStreamURL`. + """ + filepaths = [] + for episode in self.episodes(): + _savepath = os.path.join(savepath, 'Season %s' % str(episode.seasonNumber).zfill(2)) if subfolders else savepath + filepaths += episode.download(_savepath, keep_original_name, **kwargs) + return filepaths + + +@utils.registerPlexObject +class Season(Video, ArtMixin, PosterMixin, RatingMixin, CollectionMixin): + """ Represents a single Show Season (including all episodes). + + Attributes: + TAG (str): 'Directory' + TYPE (str): 'season' + collections (List<:class:`~plexapi.media.Collection`>): List of collection objects. + guids (List<:class:`~plexapi.media.Guid`>): List of guid objects. + index (int): Season number. + key (str): API URL (/library/metadata/<ratingkey>). + leafCount (int): Number of items in the season view. + parentGuid (str): Plex GUID for the show (plex://show/5d9c086fe9d5a1001f4d9fe6). + parentIndex (int): Plex index number for the show. + parentKey (str): API URL of the show (/library/metadata/<parentRatingKey>). + parentRatingKey (int): Unique key identifying the show. + parentStudio (str): Studio that created show. + parentTheme (str): URL to show theme resource (/library/metadata/<parentRatingkey>/theme/<themeid>). + parentThumb (str): URL to show thumbnail image (/library/metadata/<parentRatingKey>/thumb/<thumbid>). + parentTitle (str): Name of the show for the season. + viewedLeafCount (int): Number of items marked as played in the season view. + year (int): Year the season was released. + """ + TAG = 'Directory' + TYPE = 'season' + METADATA_TYPE = 'episode' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + Video._loadData(self, data) + self.collections = self.findItems(data, media.Collection) + self.guids = self.findItems(data, media.Guid) + self.index = utils.cast(int, data.attrib.get('index')) + self.key = self.key.replace('/children', '') # FIX_BUG_50 + self.leafCount = utils.cast(int, data.attrib.get('leafCount')) + self.parentGuid = data.attrib.get('parentGuid') + self.parentIndex = utils.cast(int, data.attrib.get('parentIndex')) + self.parentKey = data.attrib.get('parentKey') + self.parentRatingKey = utils.cast(int, data.attrib.get('parentRatingKey')) + self.parentStudio = data.attrib.get('parentStudio') + self.parentTheme = data.attrib.get('parentTheme') + self.parentThumb = data.attrib.get('parentThumb') + self.parentTitle = data.attrib.get('parentTitle') + self.viewedLeafCount = utils.cast(int, data.attrib.get('viewedLeafCount')) + self.year = utils.cast(int, data.attrib.get('year')) + + def __iter__(self): + for episode in self.episodes(): + yield episode + + def __repr__(self): + return '<%s>' % ':'.join([p for p in [ + self.__class__.__name__, + self.key.replace('/library/metadata/', '').replace('/children', ''), + '%s-s%s' % (self.parentTitle.replace(' ', '-')[:20], self.seasonNumber), + ] if p]) + + @property + def isWatched(self): + """ Returns True if the season is fully watched. """ + return bool(self.viewedLeafCount == self.leafCount) + + @property + def seasonNumber(self): + """ Returns the season number. """ + return self.index + + def episodes(self, **kwargs): + """ Returns a list of :class:`~plexapi.video.Episode` objects in the season. """ + key = '/library/metadata/%s/children' % self.ratingKey + return self.fetchItems(key, Episode, **kwargs) + + def episode(self, title=None, episode=None): + """ Returns the episode with the given title or number. + + Parameters: + title (str): Title of the episode to return. + episode (int): Episode number (default: None; required if title not specified). + + Raises: + :exc:`~plexapi.exceptions.BadRequest`: If title or episode parameter is missing. + """ + key = '/library/metadata/%s/children' % self.ratingKey + if title is not None and not isinstance(title, int): + return self.fetchItem(key, Episode, title__iexact=title) + elif episode is not None or isinstance(title, int): + if isinstance(title, int): + index = title + else: + index = episode + return self.fetchItem(key, Episode, parentIndex=self.index, index=index) + raise BadRequest('Missing argument: title or episode is required') + + def get(self, title=None, episode=None): + """ Alias to :func:`~plexapi.video.Season.episode`. """ + return self.episode(title, episode) + + def onDeck(self): + """ Returns season's On Deck :class:`~plexapi.video.Video` object or `None`. + Will only return a match if the show's On Deck episode is in this season. + """ + data = self._server.query(self._details_key) + return next(iter(self.findItems(data, rtag='OnDeck')), None) + + def show(self): + """ Return the season's :class:`~plexapi.video.Show`. """ + return self.fetchItem(self.parentRatingKey) + + def watched(self): + """ Returns list of watched :class:`~plexapi.video.Episode` objects. """ + return self.episodes(viewCount__gt=0) + + def unwatched(self): + """ Returns list of unwatched :class:`~plexapi.video.Episode` objects. """ + return self.episodes(viewCount=0) + + def download(self, savepath=None, keep_original_name=False, **kwargs): + """ Download all episodes from the season. See :func:`~plexapi.base.Playable.download` for details. + + Parameters: + savepath (str): Defaults to current working dir. + keep_original_name (bool): True to keep the original filename otherwise + a friendlier filename is generated. + **kwargs: Additional options passed into :func:`~plexapi.base.PlexObject.getStreamURL`. + """ + filepaths = [] + for episode in self.episodes(): + filepaths += episode.download(savepath, keep_original_name, **kwargs) + return filepaths + + def _defaultSyncTitle(self): + """ Returns str, default title for a new syncItem. """ + return '%s - %s' % (self.parentTitle, self.title) + + +@utils.registerPlexObject +class Episode(Video, Playable, ArtMixin, PosterMixin, RatingMixin, + CollectionMixin, DirectorMixin, WriterMixin): + """ Represents a single Shows Episode. + + Attributes: + TAG (str): 'Video' + TYPE (str): 'episode' + audienceRating (float): Audience rating (TMDB or TVDB). + audienceRatingImage (str): Key to audience rating image (tmdb://image.rating). + chapters (List<:class:`~plexapi.media.Chapter`>): List of Chapter objects. + chapterSource (str): Chapter source (agent; media; mixed). + collections (List<:class:`~plexapi.media.Collection`>): List of collection objects. + contentRating (str) Content rating (PG-13; NR; TV-G). + directors (List<:class:`~plexapi.media.Director`>): List of director objects. + duration (int): Duration of the episode in milliseconds. + grandparentArt (str): URL to show artwork (/library/metadata/<grandparentRatingKey>/art/<artid>). + grandparentGuid (str): Plex GUID for the show (plex://show/5d9c086fe9d5a1001f4d9fe6). + grandparentKey (str): API URL of the show (/library/metadata/<grandparentRatingKey>). + grandparentRatingKey (int): Unique key identifying the show. + grandparentTheme (str): URL to show theme resource (/library/metadata/<grandparentRatingkey>/theme/<themeid>). + grandparentThumb (str): URL to show thumbnail image (/library/metadata/<grandparentRatingKey>/thumb/<thumbid>). + grandparentTitle (str): Name of the show for the episode. + guids (List<:class:`~plexapi.media.Guid`>): List of guid objects. + index (int): Episode number. + markers (List<:class:`~plexapi.media.Marker`>): List of marker objects. + media (List<:class:`~plexapi.media.Media`>): List of media objects. + originallyAvailableAt (datetime): Datetime the episode was released. + parentGuid (str): Plex GUID for the season (plex://season/5d9c09e42df347001e3c2a72). + parentIndex (int): Season number of episode. + parentKey (str): API URL of the season (/library/metadata/<parentRatingKey>). + parentRatingKey (int): Unique key identifying the season. + parentThumb (str): URL to season thumbnail image (/library/metadata/<parentRatingKey>/thumb/<thumbid>). + parentTitle (str): Name of the season for the episode. + parentYear (int): Year the season was released. + producers (List<:class:`~plexapi.media.Producer`>): List of producers objects. + rating (float): Episode rating (7.9; 9.8; 8.1). + roles (List<:class:`~plexapi.media.Role`>): List of role objects. + skipParent (bool): True if the show's seasons are set to hidden. + viewOffset (int): View offset in milliseconds. + writers (List<:class:`~plexapi.media.Writer`>): List of writers objects. + year (int): Year the episode was released. + """ + TAG = 'Video' + TYPE = 'episode' + METADATA_TYPE = 'episode' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + Video._loadData(self, data) + Playable._loadData(self, data) + self._seasonNumber = None # cached season number + self.audienceRating = utils.cast(float, data.attrib.get('audienceRating')) + self.audienceRatingImage = data.attrib.get('audienceRatingImage') + self.chapters = self.findItems(data, media.Chapter) + self.chapterSource = data.attrib.get('chapterSource') + self.collections = self.findItems(data, media.Collection) + self.contentRating = data.attrib.get('contentRating') + self.directors = self.findItems(data, media.Director) + self.duration = utils.cast(int, data.attrib.get('duration')) + self.grandparentArt = data.attrib.get('grandparentArt') + self.grandparentGuid = data.attrib.get('grandparentGuid') + self.grandparentKey = data.attrib.get('grandparentKey') + self.grandparentRatingKey = utils.cast(int, data.attrib.get('grandparentRatingKey')) + self.grandparentTheme = data.attrib.get('grandparentTheme') + self.grandparentThumb = data.attrib.get('grandparentThumb') + self.grandparentTitle = data.attrib.get('grandparentTitle') + self.guids = self.findItems(data, media.Guid) + self.index = utils.cast(int, data.attrib.get('index')) + self.markers = self.findItems(data, media.Marker) + self.media = self.findItems(data, media.Media) + self.originallyAvailableAt = utils.toDatetime(data.attrib.get('originallyAvailableAt'), '%Y-%m-%d') + self.parentGuid = data.attrib.get('parentGuid') + self.parentIndex = utils.cast(int, data.attrib.get('parentIndex')) + self.parentKey = data.attrib.get('parentKey') + self.parentRatingKey = utils.cast(int, data.attrib.get('parentRatingKey')) + self.parentThumb = data.attrib.get('parentThumb') + self.parentTitle = data.attrib.get('parentTitle') + self.parentYear = utils.cast(int, data.attrib.get('parentYear')) + self.producers = self.findItems(data, media.Producer) + self.rating = utils.cast(float, data.attrib.get('rating')) + self.roles = self.findItems(data, media.Role) + self.skipParent = utils.cast(bool, data.attrib.get('skipParent', '0')) + self.viewOffset = utils.cast(int, data.attrib.get('viewOffset', 0)) + self.writers = self.findItems(data, media.Writer) + self.year = utils.cast(int, data.attrib.get('year')) + + # If seasons are hidden, parentKey and parentRatingKey are missing from the XML response. + # https://forums.plex.tv/t/parentratingkey-not-in-episode-xml-when-seasons-are-hidden/300553 + if self.skipParent and not self.parentRatingKey: + # Parse the parentRatingKey from the parentThumb + if self.parentThumb and self.parentThumb.startswith('/library/metadata/'): + self.parentRatingKey = utils.cast(int, self.parentThumb.split('/')[3]) + # Get the parentRatingKey from the season's ratingKey + if not self.parentRatingKey and self.grandparentRatingKey: + self.parentRatingKey = self.show().season(season=self.parentIndex).ratingKey + if self.parentRatingKey: + self.parentKey = '/library/metadata/%s' % self.parentRatingKey + + def __repr__(self): + return '<%s>' % ':'.join([p for p in [ + self.__class__.__name__, + self.key.replace('/library/metadata/', '').replace('/children', ''), + '%s-%s' % (self.grandparentTitle.replace(' ', '-')[:20], self.seasonEpisode), + ] if p]) + + def _prettyfilename(self): + """ Returns a filename for use in download. """ + return '%s - %s - %s' % (self.grandparentTitle, self.seasonEpisode, self.title) + + @property + def actors(self): + """ Alias to self.roles. """ + return self.roles + + @property + def locations(self): + """ This does not exist in plex xml response but is added to have a common + interface to get the locations of the episode. + + Returns: + List<str> of file paths where the episode is found on disk. + """ + return [part.file for part in self.iterParts() if part] + + @property + def episodeNumber(self): + """ Returns the episode number. """ + return self.index + + @property + def seasonNumber(self): + """ Returns the episode's season number. """ + if self._seasonNumber is None: + self._seasonNumber = self.parentIndex if self.parentIndex else self.season().seasonNumber + return utils.cast(int, self._seasonNumber) + + @property + def seasonEpisode(self): + """ Returns the s00e00 string containing the season and episode numbers. """ + return 's%se%s' % (str(self.seasonNumber).zfill(2), str(self.episodeNumber).zfill(2)) + + @property + def hasCommercialMarker(self): + """ Returns True if the episode has a commercial marker in the xml. """ + return any(marker.type == 'commercial' for marker in self.markers) + + @property + def hasIntroMarker(self): + """ Returns True if the episode has an intro marker in the xml. """ + return any(marker.type == 'intro' for marker in self.markers) + + @property + def hasPreviewThumbnails(self): + """ Returns True if any of the media parts has generated preview (BIF) thumbnails. """ + return any(part.hasPreviewThumbnails for media in self.media for part in media.parts) + + def season(self): + """" Return the episode's :class:`~plexapi.video.Season`. """ + return self.fetchItem(self.parentKey) + + def show(self): + """" Return the episode's :class:`~plexapi.video.Show`. """ + return self.fetchItem(self.grandparentRatingKey) + + def _defaultSyncTitle(self): + """ Returns str, default title for a new syncItem. """ + return '%s - %s - (%s) %s' % (self.grandparentTitle, self.parentTitle, self.seasonEpisode, self.title) + + +@utils.registerPlexObject +class Clip(Video, Playable, ArtUrlMixin, PosterUrlMixin): + """ Represents a single Clip. + + Attributes: + TAG (str): 'Video' + TYPE (str): 'clip' + duration (int): Duration of the clip in milliseconds. + extraType (int): Unknown. + index (int): Plex index number for the clip. + media (List<:class:`~plexapi.media.Media`>): List of media objects. + originallyAvailableAt (datetime): Datetime the clip was released. + skipDetails (int): Unknown. + subtype (str): Type of clip (trailer, behindTheScenes, sceneOrSample, etc.). + thumbAspectRatio (str): Aspect ratio of the thumbnail image. + viewOffset (int): View offset in milliseconds. + year (int): Year clip was released. + """ + TAG = 'Video' + TYPE = 'clip' + METADATA_TYPE = 'clip' + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + Video._loadData(self, data) + Playable._loadData(self, data) + self._data = data + self.addedAt = utils.toDatetime(data.attrib.get('addedAt')) + self.duration = utils.cast(int, data.attrib.get('duration')) + self.extraType = utils.cast(int, data.attrib.get('extraType')) + self.index = utils.cast(int, data.attrib.get('index')) + self.media = self.findItems(data, media.Media) + self.originallyAvailableAt = utils.toDatetime( + data.attrib.get('originallyAvailableAt'), '%Y-%m-%d') + self.skipDetails = utils.cast(int, data.attrib.get('skipDetails')) + self.subtype = data.attrib.get('subtype') + self.thumbAspectRatio = data.attrib.get('thumbAspectRatio') + self.viewOffset = utils.cast(int, data.attrib.get('viewOffset', 0)) + self.year = utils.cast(int, data.attrib.get('year')) + + @property + def locations(self): + """ This does not exist in plex xml response but is added to have a common + interface to get the locations of the clip. + + Returns: + List<str> of file paths where the clip is found on disk. + """ + return [part.file for part in self.iterParts() if part] + + def _prettyfilename(self): + """ Returns a filename for use in download. """ + return self.title + + +class Extra(Clip): + """ Represents a single Extra (trailer, behindTheScenes, etc). """ + + def _loadData(self, data): + """ Load attribute values from Plex XML response. """ + super(Extra, self)._loadData(data) + parent = self._parent() + self.librarySectionID = parent.librarySectionID + self.librarySectionKey = parent.librarySectionKey + self.librarySectionTitle = parent.librarySectionTitle + + def _prettyfilename(self): + """ Returns a filename for use in download. """ + return '%s (%s)' % (self.title, self.subtype) diff --git a/service.plexskipintro/resources/fanart.jpg b/service.plexskipintro/resources/fanart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..211168f32ff43fe0dba19cb9d854719aa0ac7c1f GIT binary patch literal 12016 zcmeI0PiPZS5XQgvHru4hrrm8fwTOoZQ7;xmMZ8rTZHYt-u|jJFO*Z`pNg9$AFM=1r zYf;2M7poq;c<`iGkzR#@psk9C;LVew7b(wq+t9Sqw0PB-Y_eZwzIiYE+w5i3lKKSu z)L?25LP+eP7u09@G?h$V%w*3DrqU;=0Lb~GSE>aL0Ht!hnjIR5kBpv=2fx5VHv-s) zo}5>!9M5FZXc<4>fK~!t_vy7-+BPpl3*$8p5OFFW^D5Ok=}V-KT&`ENzC+serg8<+ zPe|{t(hnrPr1SYz{Z;EpUrUm3tHaqOU7JffKDkck*J*F6S|ZP3@+1nSGOaI1R&_z^ zD_WO|v-I2i&{t@Um(QK0bAsNxFoYCNBZD~dn8h@TsH2b0Wy;i$rTRdN{+)h*hPv|9 zH4TqCPGANl<otf<dq5tFCfnM?p@V)(SOb9hQK|2APlGpsl{uw;Jy2@pAz*v}UX+{t zGxNaFAC#YK<`VaT&TGK4g=Q{)8+d*l=v}VlsyTljgFfZN1n})K5FG`&7lH8DDmSX> zIv%|RhKW`B6>#?+uy>NyzR=>jL)5UwZA(vspL&lZ3@P<N5un2inPwnhhJ(SjkQKJ9 zNH`LSc68a%4yPj$v3qQ%+l|FyR_Bi19=Es4jk$UeVNg%NY&XqzHyVk$e;w*2oRC~J zVF(A(5r!kw0%HC%q&cibh|;cpvNnc#2g?wUwqets_twTDe`5knfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)Aj{QCs1>glQd=k#=url%pAsR~o(4DE0>cNjwSi!B|p>1er2 zTYqDhmJZRsn|5hTbp1KFeIu3Ng9$JJCcp%k025#WOn?b60Vco%m;e)C0!)AjFaaj; VUlG`5T5E4Rt!+5An8j+x@^6F_!a@K5 literal 0 HcmV?d00001 diff --git a/service.plexskipintro/resources/icon.png b/service.plexskipintro/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..38b6b037e3f3303ca3a83e0f7547d86f76109659 GIT binary patch literal 9665 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 literal 0 HcmV?d00001 diff --git a/service.plexskipintro/resources/media/icon_array.png b/service.plexskipintro/resources/media/icon_array.png new file mode 100644 index 0000000000000000000000000000000000000000..f2603a8b1c962f37079d15618ae82f6c437e3678 GIT binary patch literal 2132 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 CnBq17 literal 0 HcmV?d00001 diff --git a/service.plexskipintro/resources/media/icon_date.png b/service.plexskipintro/resources/media/icon_date.png new file mode 100644 index 0000000000000000000000000000000000000000..c99bd98b15e4264e482ac04097676594280c1165 GIT binary patch literal 2113 zcmcgsX;2eq7~T*milWr&Sh3<7FQ9C8H)NB|3MwSQ(n6pZH6Ey&-7hgE$)?Ey0Z}p< ztF}1BB3RKX=nOJd!J`%L*m{k&f>x^*Em%5J#}NuvWfTv(L9lj4{nMGgf4=K^pZES& zrRk=I1cwDf5EPR1o+cfFM8Z}C^%V<C<_?2iScdaj13!&3@j0{;K=CYR1aOj#HiL9P zv$-Fi0kIGy_FD7?-jI?^F`P|G`!Q0t%^_$*Q0!#4gJv=T4;z8mVvm!w9r8(F3mYey zNu*#Y4mDV4c`wfirse7MOkO6VVkMI&!Le>iAg}?RhTS%+-9@?MB;CA}u=ii161W?} zXU0jMIb}#mgVmf9z=TwRFu0t6l`1K&h>@#Q(Xb4|NfaYdJO;rPlpLdEGPp-1f;A^= zqS7^qJ+_2XoMa)-J17**$;pxC#7H@(8O2p96^hAFnG6vSh%495({9A>8q>?50WQXA zaqt$-4*MBtBbUX;Nd!-yg<x}}q&z3KyLu8OqzrY_4iuMSsLke&s~hd&)4@M(ycF%y z=Q;qI4qRN8lM(7+8q=#R<nHx`{6N7QD%EKbib7j89Ft`Oc0NfHClOwxtc9iU7=|{{ z4302HlM*2maucFbVmP8=F-Ad}NI6C*dU;-^FDEgL1|#sqL^X-yT2;I@J|Tf5NRmjD z$<>&;S2xM-;%PerdTm<-+daD2Yjr8L6VN>8)N`D*w+qr1ay;i+$T?uO+Fx}Q95K^k zXSp0#q`yqhqSgSXB^$7bPR<5*=b5s+#0Ld~lO~K70>%gop=I(I#K@2UAxuU92$p0S zTq)_%XJ5$QvpyAWgg6|%?ogOfMi4TZL`YhxLU0@?5z;6l5thJ>1VJ(k$&wOOa1r&l z&I_&7dnNRzfBSqegv0aE0(N1ZoWkH_t%)fUhE9=|tk+gmRYgQZq^71878Y8qR-@5a zQBk4QYRk&XqNAhp^Ye>~i%F8?d4ATcSzfPq#E21HU0r1xii`roU_M<pO*sBrpk|+M zurTj;lQi*qcSFlB*S=_mLp`)&W4~2(k9;j<Cx)xW9lTt+{P%jWrSyp?McjP*_y+$s z@M?KLbyauVf(l-Z_-`+s31x<cZi;rp-pvC-v#{o6qEGJc?O|=NgFZ}};9YZ8A$lB( zv@I{Xn7=4WdqLk>ysqZ$(Hr%<3!n{Ni7gQG%HLN`4k*9gdM7e_VEJDdFA6<N9?yU# zn(9~o8CD+bI4XuKCqkF!PAz_?Anj4${tn-zk0V>wl_w8$+`-~&&U~k<+!(%k?EaH& z`^xVthFNQ&Ieq>x8|$w$ez253I6xOJa<8i^-aF`_GEZ#i+PNF7JoH2PxryJ1FmPvn z!-MN%-65XpZB>){Tuoov5VUf86&kd@Wyk{SV^wb7U7Z^{M3o19S4I_P1e`!xYZFg8 z*2+&U_5j`b#7#eE1nej{M{Ii-?x|0xhOB#ZrcuEe0bXnDsJ6hz<!ir44;NRRDxxNr z^qCg`Zy&rQXu&|~_S|fdZs)_sF!N&QOVj+B(Ag4glXS}T@EP-O1y6|$Sn%r-`B2Y; z#Zc$$;a^<}EofX4dThq<u-3h`r=dL;I_Cyne=>G|>HAyJ#&GfB`c*~N>hqDu=1$*t z8v4C>k<Z@0B5kN*Q1r4+8}!GF!D+XS@1{oOmxoeE>MN=&LoCw3D(^jf%8;(ifrsCK zFC7{^E(*%fIoEt1G^eseZs`cwm1W3-x7>ZJ!s&bGQ|%FIP}8XsXMFvR<rEaGxUp_* zY2Bm95do9dPCwW1+xXI;fbYSolc(*XYW3{>NrRR(X0M16t-P|e9TZ;8O1&ZTgq%-4 zj-{SNzotjNk)5{9{8RIG=&@n#j;)(7o=}#Uo1(-kE2FX(GisJPIxOO8&An^##skC7 zn@ei?cXrgZ&HXmER(iPoqvWQ2i*CR9pvb%g?D;GvBf7Bj=KWTB!1(@6DM!to4?^kn zePut^YBsUiHKmJmt|K?2o1``9(yjWVxtpUVfQj=0g>?L{(suFb$Q$ag*V$}Wwbnpl X$P?7|ZbHU^7C$setJ72`ELi$CPI$?i literal 0 HcmV?d00001 diff --git a/service.plexskipintro/resources/media/icon_float.png b/service.plexskipintro/resources/media/icon_float.png new file mode 100644 index 0000000000000000000000000000000000000000..4531d5398be6f3399b21052f86403827813b6e49 GIT binary patch literal 2007 zcmb_cX;2eq7~Y5$6qV6BgJRoRW5uIvb~j{`O&}nUq(+G#q#8y+H@h2&B-yxGOh8m@ zDPGZPv4~g{MysH<UafUNIqEgo%FvNAiXFAs3W`8m2M}7N8z9!sc>L-2=R5X!-uHR0 z-4s9n{V}70MgagYMmtB900091C;<F?_$}?ILC<fKIJJRGWK5isU}+$VVvIDXwGzwe z1e%~SR@Tzt0N|5j)*Cp3E>=M@RuSRBh+I}X&jx_-NSB=;(`XJf(#y>@rLeQ2N(h=M zrEn3ZLv;2SI@LTUlcf_g=j+MLG*V6pBO}0Ymx4E7r8xq0SuHk)!le`r*j4an&oe9p z2OwOUQaC8epo<4%7?uVxkrX0P2?omKB2*eGk;_9sF@oYSg2QMigh~|>L?IS~Lrche zV=0p&L8Te;#ov^|RF1PNVA$z&ikzV$hFuP$a=9Ev#IRTl@d(I~VdDrFWOGdQT2Rpr zk~P~oGh+ii76~Jh&MAew(!mg{cAf5-VVh$pQGCi^7h#7{5dvGSp120k4laTISH=s` z4t<85h7)K9lg^TSJxo)*WIlJVcH{x_Y7}v-nJ)@qQ88q?m9}wOl~Txm5m9DJfrgTV zi6BvkG@4`(CY6{VxeP%eIfal?+=NRIOzO4sB7P`_<7zREX*4l7imLhS;aD_|OQSTh z=qRy9<K=2?4vw&qwAZ(p_dUdwyppSkVQGS6SUtm7yj>8V%5aP$m9c{{F`lZ+!5NFp zHi~gNW_rpr7`2LK&8uii!!lNIAkPZ(3p7Yc6gMFRA25O;5FwU?LPip&A<Sf?X^g@t z5|s&u_|$Xx8|+j5g^$DTm7_q6Vhj@#ID`{2IfSCL48o0K9HKDPh+#NM;uJ1~d5N&6 zb)IV_?-Spjp5wE@;4jZci?;Fe#PWkPdrMIpKXlUgSiO42j2UrpaTbfEq@={{cB|ED zqtO@=5|Wjbm6w-SSXhYTcv4al$8kA1Ii;nglP6E^@9z(=P!`_8crIanB7gnw0-CF; z#`E*ONvn#|yP6(0-CVUFoRIy?NkM=MT+_d+=&;!*b;<7CKZLB`cjQ3o!rtK&^Z4=6 zvss=$!OK_Htt+#>@p%pC<@DEnf%8w_cX!|FF|BCo19Iy&T$Fq!*x0Qt^Dll>xdKSq z^YDU*jJnGB9uM?Ap0=f;^VowgftYLNbt{2W5?AGuH?ymHPxOyCo}OKj0&EJKy#{FW z+rC-QI4%3|#A=^-wED-s&fnLaHug=^6wvs_{g-ObU^xYsICkU~%D?{1okDri^|I6{ z?U()pEc=#VMVH1Un}HR9Gy5u){s#`afs}&bKb^Zeue4!X&%MISzwPfSPirKI=}+n= zbp-+En}VTQm)|=F{Xd<)aC&&J&(S9a-$yAGBd?#T{x09Axceh#+TE=D#XDG_acuo% zS*-T)#47Z5;Nqo%WroO4YRg+Ja~GX3bO3FS8t%XC5MOIg-z;byyP@K(6JO6&xlvkB zaK5fGd0fX{cTrf~%$Bj+?~U5VjO&q<?G4LbC#WvZOa6EiP`J7j*%Gw&!C~NdP4lA2 z?!@nhwZ;Y4+}VsMLj0F)8}@fA)>=u{9Ba9KYwn2cE&e4PC*lii7l&Ea$FYWGeowC- z%2N^V)$9rL%PlXy*=edhhyXWyBNpVGZJV;@=jQH^jP2^^3t#BYR`oO$pEK>661z58 z{6@Ss!qKoGCtMw2{WfgrNqT3l+nF2Gk4K6n!CH4fkN!-uEH1yJ*_dq|eP3I)@(P!B z^ak8DO&2iYgYmbOt&tH<Zuhww^v1;cyN|Z+Fs=UeLH)6-6YezT9%}vk-FClOThGbx zO!R5PktKrs6a>0Fr)b9?pnveZBI(V_vL@YMOS^3H^|J!o1-qcvHrf9Q=-qkSxAed( dO?K^EI&3r$1xpuHcV-UA)2ipIzKUM<;XkElsICA2 literal 0 HcmV?d00001 diff --git a/service.plexskipintro/resources/media/icon_integer.png b/service.plexskipintro/resources/media/icon_integer.png new file mode 100644 index 0000000000000000000000000000000000000000..bca3808dd8d89089defdf4f578715446ff122e97 GIT binary patch literal 1846 zcmbVMeM}Q)7=O!$8!RewB*NVEb~wWZ*ZXL%y;h1MEwc&G3RPfA@OpQJt{+$1gSG~h zF*c^?5{C{&GbKwDopTFjlAr@zRKnCv$ION#4s}x|OsAW&_yKzh)VV}W-22b_KF|Gr z&-Zg{&AD$(j(sr}05I9OP@e~Y3_fMx*+_Uf_7z&-l_(hsrF_vQ`B|?3GI-G{AVwEk zD&z?)A6(HbqyZ3FW49Dag*n+;PISrH5Jnzwc_15rw0Qv!%Q*xIu?nSjw+_92r~^gp zybdj(bBG*Irch>IxY8@+ugtY@D;=DMN9Uy@X#p)X;1VPj3AmhYpEjUF$Lwn1JEX=@ zWDFuXbm(|cg*j#<Q}hZ5EmvV2siYCLMoy{}N{uEJp$L+}2?i$>7^%`K2`xn-69<Lf zyu3}Dr_Y-31tlF?CP^MGj{E(7xnCg{y`?y*(P(gj!YK-a2+S9BOKbph`;x*I^n#D` z+C7q8bR!{)tW_+RbSR8;JO!60C+C4-w{N0Quw;0E_28tOz+J9TUSnvVlqdWf#v{=_ zOVA_Wd4f+Y_j0fwwxlo_*6zuULO>Xe*5tLrrm#-E$d$VUw`A1oQ20g8+j%Xi;8+{W zkr-#SsWDomv|$=GL1G%7;8cu_Q4+K&Z0AvYO22^2P^;;ztW1U^4X}D@QlCZZDGf~% z83YmL8r?pLb#p@4w;lSP;3}WU)n<AHRua7yQFMl<z+5IuqOVN!Aeot=u4|Cw0=t_R z{l3>iZ5q#7FL>=00-xm-UC3CSwf0BEpyEizMzAnpf+jGQQYtVj#|Rj0vkC&uGdxGC z(Fs2PQ2oZ|6l!1|o^Uu?!b;IJ#WEPfsx=r%3Tlk8QVhn^q?M)_j$?QR#bJneXmlPL zrLYRlXXyE0F`)2ZwFEcZCof!_cO6q};nJzh*%m`{b8~WXvdLs}I-N~TO{uA=_4W0Y zm6cYjwXv~LlBAlN8irwtii!*d!}|5>XUv!}Iy%}P?fnv3m?q`r=0own2VCsvm<B+^ zfKi`e37i}1?fYOG5eLlEeI2uVM@M_-#I?k=U2WO;`tI#PG|5ptRh95U`jnZWzsh4y z|D~I2j-8RMegfn%%%@RzmLBzN7^?W8%QtgD&)LCA7tZuQ-@9e$$orSr;^LG|#l@8e zojVlW5%I1qpLE{_@rwB;uS5h7x2DY6sx7K=Uj2DbOkJ}dESpnx@o=hH=PcMN$?l}p z;8E={=Kaqd-97T%f!T|y0(0*lUPqq4yK(p~Xsbvymu8ml9;&_3R-*WQyD_0(HPZK6 z)@It2bbBdiO<$7#_G)TqfB82(QbTe{W7KHGa?OCLCpx7<mU_3~<bkH`j`&k;{5nvV z_~z#s?J=iaIi`}$*>O9Ib{&7^^tGtMZ~w3<e%ZFTJ4&{sb>Qkpn(L7RDn}hrSwv-2 z^<2L9=PHnLgjM|7^`Y=JSTk61@Y5p)FV7l@9xq#9dewzaaO$?uo*v&BJn;QjQf)+; zdhlHOOR+o8@4I!PLH1rkU8^j4m#(F2FmKVj(`CnBuD|z}91JJ!D6RYK+Pzn+-Z~V$ zQ8|C!b<eScz7>DBUTFX~zgQJ*O6(7=nQO_v+y#cI-afEw@8Z$E6Lp~Yr(4+z!SWkt zQ#SRc&AGE9f@go6!p4FIv_kz(%c+msn@0vnW>eGJJ!zAAranz?{~xw$c<p`gOw41+ dohvT3f=E!!-m2Z}+E5+B84bDm{R@^?{{xHvS(pF- literal 0 HcmV?d00001 diff --git a/service.plexskipintro/resources/media/icon_string.png b/service.plexskipintro/resources/media/icon_string.png new file mode 100644 index 0000000000000000000000000000000000000000..25fa751998deb8a189838b3093907c894936a081 GIT binary patch literal 2190 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 literal 0 HcmV?d00001 diff --git a/service.plexskipintro/resources/media/plexskipintroSS.png b/service.plexskipintro/resources/media/plexskipintroSS.png new file mode 100644 index 0000000000000000000000000000000000000000..a4e5ee6e8f7ebcf48e237a0e5b9103a9ec07ff20 GIT binary patch literal 630257 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 dNJ#=12#h-%lr)*pm2WWy<?q$6NaGVa#ibi+C0 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%0D_3?+Y?^SuN$gyfa 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 VP1mM_Qk4+!&&<dgU25Qb<$u!#NDKe~ literal 0 HcmV?d00001 diff --git a/service.plexskipintro/resources/media/plexskipintroTokenSS.png b/service.plexskipintro/resources/media/plexskipintroTokenSS.png new file mode 100644 index 0000000000000000000000000000000000000000..dcad7df5912a1602a8c0a088ad0c9d5378973b64 GIT binary patch literal 207425 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%0Ac29<k@PuQX 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 jMmrpuB`NSbhM{U1KTqwY)@~}FSVXzrIo4} z!Vr~S0{5BB^gp80yh_XSp1ex_xD@d;SeVxeb1a3~7AG3Lb9K4wJBH+Qk;9C`&Hixb zi%41-OTfb&XDF0NM4#@wZmJoM9nkX+2Rkbok<Xw|*h|}~g&YoaBwPP_RgqJYUD7i< zme|=zBqG7^QgHuMxzE$6h?TX-95d%Zq@XvLipyZQSsvJ3hnE;0i;Dtz>)%e__3z_u zg=$|<6wYG%o<_T{k*R6-$En(+9?$2CJO(tqUJvmdfzRq92zvbS_-YVPBo_2i%^Ka0 z`-mr(sf-PU2mU$0*99wkZ6lok9z##zRM`6i|Jd4&?Y@|pFc%+#-(MNeHVt`lpx6KB zyuj_Fn5p#UI_s-Hou5BD4G(Fd5#m$n&Y|ZEu>A88<f<N>X_%vTYfz_Gb-qHrQ0IP6 zExjARnf91gr}X966I>l7EWNpI5M~d2Db1Nd;-rjYgjl;OhAkQ)RWP#pT%^B>+e}U# z5&fPKCz#@21EA0oY4|LY$DwTDC+szOI%;H}m3*ih)Ut=4Kw^GME2Lzlo=)6m3XHMq z5knnaUb*sQ{vYzwcbl4gqZVcg99^Qy(^8YChbs%cW=TajA=8_rlMg2+A3t8%Bkb)i zEYuIPdta@XlwdW-2|~m2b|KxyF$MBa26Gvqf3<<|x&XZ{?(+uF=gFkmmqK2(?9j>k zy<Z_u*ifU|tiG%iSuwbnHc2XCJa!(V&or58^Glpe`}*w-j4o>Eus)zh4~Hyp+f<0Z zDB;^LOTojXP{=npn?_!IDHe)_Ly6g*=*}-=P4v7I2qgD@;2Tb7gA>?m#n_a-8o1hZ z{&&2`8XSz$OE?q`6ZU*E=V@>)&Eo-89&vNA-h9VkFkxs+NRx4wM&IK6^nL`(^Y}j7 zvlH+l?nd}H5%O-<CaFUUuf^l>V8<5^u~YE6tW8by$K6B^Yh-nG8_07J@(7UbXf)y_ zrlTLf8=Lz3_fxSK$?($u_&U3ort&n5V{2;<Ekj!xDa8hBYu2wF*$Xsani*??6Li!e z=v*vI7~5oVySrl`7!m<j1;#>fq(QJkXfnYR+Np-xl0s)3f@UVA0YsungV}7@n5-sq z>-E0R`#<fl7wf6QIfsul+F#%A=UuroI52QQUNg~1#?%-8`4=>Nrsn4jW()=KjDpFe zgwA^f_mb`UFnM2iKPnhR^}zepr8O~`Kp~ynu$dC%{etG{u?xs_4j#ZazrMAf0=$ki z?qu(GdszY(-sT~0d1kt_+{B`)yG@rHO$II7I+cZ|eH3Cz0#gFictTtj4#Tc<?S|FD zl4A-X+s=h?*h9TofvymuwqTB_A*U18OsGe*s*yqjk_;=Rfh0yu;yFFJioijgLQJH~ zRYD_oj%l?#8Ke-)(~$;6-?YLgR~7adEr-~$Db=W_L%7nQwkk_Y4;hqd2?Oc|gT;sy z8Y3gUKrb{sO~x*eJ3N7W1|{ch*2su8$Yzf3h_om-xCF+%a5;hRjp2`4Vg8z2`Rc=s z(c}%ec=*j0==$XyVNBk!meY2;C+e&^v>262D5cxzp|?ufg|lbxisQ>Hp)+&bS<7%~ zO2|{Js&^KljpZ<eZVQ}w@(N4JG|id#qsU}F!E$vXnn}dN;n-NWdueHD6-B{xBAYEL zK<S3>FM>12C0o8Er&D+rpGbrW`dOMT%;A{7ZvOnf0UruBG&W}9R+8_ZU-nkAcf zwTW>E<h^_J?$OY@A&6tb=KTxgJ;m`)ESX$g4bB9~MmO>%qt=E~+3>{E@RP_LPn{1+ zV=!-S_Z&R{pg;0cCW<8tbi0{+RkE7?XlORII24MkBv<-VftF+<F)%RD$|M)CsJ%ZD z&!D?HHJ=)?sg+7h2JvVR*YYaN#dK{_eTckQRkekmUG6|$bKv~vQ@IiJ4&D{SC4<ge zk6#__Jo-RW@4_Zrmv;}eBi3O7@u%b5{i+5c&+BCJB)N7jMu6y(Odk3(dHz6BOM(dY zGU>%|yQ%4B+g?GQSWZF&c{Y&tU|BIR#>%%A>;ghgh1FB&K3gPAI~a3YV0n%fB?+-9 zR#M1iJ(f&z2$>b2WfucO$Zm@20#BeL*5esiZrpU(Q5>Wz`U$(;_}l)xefum1G_5Fg zDBkHxi*;(HLCNwn<YpSw^y0Q^9X_9L1UuW3E7?$J`c8m*R048VB>?*;z;e0rY0H}2 zt(q-&39_1OG?WQ2ZLX%)VPW%fl?CFnb(qLwN$U13B?Vjxz4%tqw`pe=-=LCgDvM2L zwV($N^#!eC0S(i_<^|(FB>dIT*yOf~Dqf=C+`;7WvgVSqEytN>nb}}YdW^`M3C2T- znc(DD_gLT3QZ|j+#PgN3kD{VlG+h_?LZSZWD?OnRUwV73W+$3Ax+g*2S}+lfN5lT` zeO}}>r^m`8n^m%^Fsq=Gl-TB_qD$jY?f`(Y(fjq@^4F|<#0Sv(dUbe55dt!&^Dn5R z2C|8C=fHT&wk{^j?PlzR)eFXdj$mGv9L}DuGwiKKGNDu^o_zT5<@aq5AHM&7G(0%q z{WJZtM&ws&>zfm^^Fu=^WJN>sf49Nv;ZcG8(&%O>MrA=KeSo~Tm&y;9|E~7q8kSO7 ze0y)|_t;%>wBy>k@HUCOYp{8HI;+ZH8-@7T>svyRg}(aa>Q#3;8^eO#6}xpXbt+k> z58)Zevk-Z<oE)Hpawt(D0y%=Kq3L{ElgA{6h~$+DDk4v`qVRfi6?>rs#F2{tN-y>y zSkOQw$z9Os%G4T#QZ-A7S-336J50ED(<pZ4iS}qC&nald7@kAHnM@>KwCK=OR2m)h z35}h`%1UD;8q&z<<uWWMh+L6jDJ_NU7$Q7nF;o@Q*chUeO3CQy?Er6>*c(N#mlo&= z_TWW|T7oN&kgG<Jl&>D}ZJEMvV*aO3(=IO`?c{9+JSYNsImPLM1DZT0m+eJ8p*61$ z&o;1CNF!C^|3z&!s9;A-B86p>B&z~bLi=T#H!+)u#!8&dqQgM1tiGVUysEyoh^-#> z$1;)mqdJnAU7P&P+YATenTS6)hMnn46X|p^8(K;GpRb_d6Ggz<<Vq;qJ~x~!FUqb| zm1uTWGkHsW-_B4J_9ztYisie<%+MvI=UQyC8t{T<Wsw|ti;IgxTcW-BsaKybumI8% zCNH?Ud@j;c)L0JmK64FrbPfd9{GN{SmhEKH*x=2v(VJuRV$no3gpu6GyZr2K21Ai} zJeqy^=FN-E7n_?eH(&O)KDf@ytC3%+t)7Teu$dZ~Po)s&p~l47%?h0C<rS8D_nK@U zAaAOru=aY%N1C$w8|YK{uH*H+si{Q(wXiM<dc@blW0cK1$-_S&RLGdTlpt^V+~cWr zkm=cmIL{!4USZ+Hw1I`llT<_=mjjUf5K>1LAv8wkHyc!v$#X@oI#}2C2at2(^aYTo zFTQf|B-y<yr;pHgR<vC_sghi$E_|vt*IhixWkPNq<Bn=Xg(7Du`;k1Uz+y*YERTCz zw6f}-mJ4)ZeJsPL6~nS<U*S<a5&s#rl?wYlhq2ObbZG5%htb4FkA6mlHI-;yIRq(p zay_wTLDK2e1S3qJ!KT*xMwq>D5@s*n0QA_}dGl^3^x6X=(YeL;$uMsD=<4^!g26c9 zHa<Q+4b?x7XIiMTh;}rJ^RoRck1MQRJ9d9TME4W9?^=*&B>#;<JUUQASF>1$83IVg zg}XVMcWol^<7%wXS+(Op5zvC_7_TltWdXu}1^-K4BJyl)i_MG9L^Bi3F#^xs*B44Y zAMTBhq<y2IGo0VAuP-SX?R6J9v5K}g>(rDL9`DwaO|HehU0RF!{qgujZ0!D3u_s++ zHrt9#Iy1VaZS<aIvRPF&dioBSI@ZJ#<h=uVLvP>y@$vE#45CAMEVvqcb#6Ai1L;&U zQ#S@XJFmyq&aI7)AG_Ss)eMWrHjmJ2Zk}@&x!t~M76a_*n!%1Ce<B`@&LmsjY|^p! z%?psX&E=~V=s9bvXP$8pkiFehN@v=|9n&c3?G}nG0C1Q2|C2WrtI`yHthuZq^jaS9 zK;G;1b@YrK6{U1mU|D{=zvH_-o#f$b&dUmaA-To}HHh^oUM$;C!aXe9JjR2r=mYyx z)84w<R+WCE$<+3ViftGDRZDWYk4xw`ZxVi<HcK77k$X-{sydICPB!!>a4jA5(B)~> z5s%mF`Lu>E8a6zhCeIbIbx7h^PZANHkY8by6?Syx**dg!@;DGg;OUfw0To7hd#s{T zUrE*yl{^aU#I%B*3kuxK2{jhGUGH${^_4{2#*q_r;?OG(DGiv<gPV!vm5BFrm=!{S zp;%|LS+(SC`sqPdZ<rj;Y$ibLF-P3J639a*SPO`+xxkXw)qg7O5+)A+2A;rZY;E=F zv?#xy>K$!|;;knSUQISR+9LYMaw-$_;cvVVTF$TVUND8qiaL)@X(QV~uV*qKHl@t~ z1*EfbX7lbslwSV+s=}fZ2b_XDf~}BzPVzU&-6ZttHF@s3yJPWqW@eHDJtptRa4<n{ z6BOo+jjhG!M(0LCbD>`M2=x7Sq7bO55*v!hl+NKd9Y2osUx*3A6Kl~>*gYxs#?DDr zlg(f%CTG(?0TTvfi;HbGo7td$v<R6@nY?$h(ff7%)xF2dZ1w)V3~zJ!AG5Q`@<xPu zjh6>I2DiIo3$g2-V}I>o#6*lIVm)z&+WMtCBS9iB7K}v0BR%KOZ*IPS|NcKO4!(H5 zxy?6vMv&L&tRDU0r~lG*wLeYeX|yTc+DpsOmPTu_Vl76pnhbs@E}b;cHbEl7Xt(-7 zuuJ47l4T^b7$+oB9Hd3T=+p)&3=;?w3>4BKeIs@10>Z8nY(%ipNa_beLL&PI_<5h_ z`Q0*RHgns;wbDSK=bq>F9P(;dPA#V(9c(9EY3!XJ6-~TK4%4~ePmwp~G}pp~=%TaL zS=6wUA{~~uF>2_sRyyfxz6Im~7;6vYJ8LbB=~9gIPW`-&uFcalN_La^DkzxJrh?jf z4n!VM5^&!2Dsdx0K}$d+pDDwlORtMBIU_i@w(EMuMM0}-yQY$z6|$UgM{Mx%X9d-F zZrW3|Tv2h=ZjRYhVyKDDKBk)~Rf#7E7(OTdAZ{y2d2tAoK@NL&411LQA<8u3RsyhL zIr*cTOoUCEmL>u$m9o*!(o&5cg*DYmqY_Ij$~>L=FuDny*nc8V$>jkmbpU%WK+n_P zKRCz&&b3YZ$g`0g%tZdn;SDg<Cek6??LiN`z(O-HRFMf;nxm0$4tc?32M&6&sWS>u zZ~KCqqALpdqTI-NL5uMxRyJ`zk9wv`1E+@YP0btg0EIdfI#Dcrog=+hQ>o?fxLj_n zF?V;1oL6klmsn|G0VQj#yNO<R--}nvp=XiLIB#KQCO#7hk9Jp%O-7$!AFtS&^w7-N zKDnHb$K0N4(DPD$KyDkQP&K--G5)VtV`G8Ih?wUolsL3$q?HAu)~EyYX$y4*ouQP) zn!B90JcrPGKD{$MoT*0-FA6s6zrHm;KR?@#;ilxO``&$*FM4jHqqU>D-_y{N%kqf! zq7ZY!Nu|wfKIV&zdn!GVaAM|TLGaBlpFVA4sJRWdt&a^%21+6snq8bD;HB{Ur#AaJ zEUqBQm9Wp$R6l+ct{8uYye0F6FKT+s)pbR!1M(kZF?22IdK-I>oJYu;K&O)<3$e^H z!0fbqk5yjNM$il0j8U}dKX(^1Lu&5TQ&&N3fU|WV4mj^Z9sIc~+`6-XJPJX1CJ3lv zRzeVM!d1QPBCr}xKMU0*0?JPdSzd6Ep61DmXQ~8MR;a6nms-A(@(!W*v}lCR$}6}6 zq$jf<DQRg+neMHE)j_FnDWz5e1)NyYBtV*&kpc}|le8_IluJcHC4d;2nE(@-;H(r= zy_`5pX_-_hBYHzQZM2ud4g)Tzqq!F;Ow06uJg>KZaA?Tq3nqP7XBn`J0PBs6q|hP3 zj%QS9q0En-$Yp&&Z)LN0(~bcpJ|M^x;5yxJVJo(PJm9>aLM+jvQI^dha31XuVV7b+ zgdm;M>MYxgJtGzOvy3`ypYw2)fY1}S7F0{Q36@7M<LSA?c(-j5Xz0Z#<at&Eo4kgQ zw-;qMcf-w5_=>SmDi!%X&--y<VK$wJjG+bcs11`l35mFv&HHfh1x1fgDUd8t%-9$# zDryi%$0h^evG`OVn)s1%o{HCLbvh;W9)a!JQHn*4ek>|P90Kp*9DKmr+%h3=dIGTb zx0k2_u~a|Y2%PtHK0de?pttt|ke)voT}s+pd;W6C!*I8Yy(bKTEjF92IWXk$j6<yH z{rKk1)-T&zuRoT&-ugsQrx_Ittxe4{^S}NI@hyaz*i)Dqlvp{PHc!Vo=m+8QpgoKu zELiOPKhE3v00H8Mot=(7kMDn3mtQTB*HrgSPiN}=G%VKG1;|^Eu?--A7bJD-*lUO1 zT)zAgw(yQTz8hP`#`?ld5^CA$?CN@4PYOurY);0Jw69R;b~xNw&T!4bTh3CCPeE&~ zY(0oknyWYK0I*dH=#DOYmld$T2YH@A11x8R-s@Fx>ZlUz4u$24g5ytK5!_kgRt<IN zSOZ+c_Jvfeps5hEI@V%mBDW}I#CGo30xS(+mx^46#Y@&Zz&^T4bVfHx%gan~lmh_E zOb~AZ|G_Kt5L2SQEfzJ=zB>=K|8Q?ewx7BTIJXJ7!&np07xWDVlgZ$X0sHF6>T24R zwy!-4jo7Kc*~T!)?koemfi>^u@Txx~vYdZp4?I)+g^RpRT)=q%JXWk>q}c(;bA7(x zz$VakwOYh678*@A;JOW`#1m8wfOJZxS1dhZ7GA)4iFkY^`a(SVMx7WJO5|ojUM&f= zQ%6sZwaXXpUZvyljn8Zq#=_~j`1s8D_)wsQOrJ^LFQ4XK*yIbmd2xsgC0d9#o5k6) zK2IVXe>xrsi^zi?P>Wg>1~n?Nz{SF-gDll(;1v&d`+0=F9P*}jCMFPjkLqv5GQ$jc zi;MHY;wEds--XV5r|g0A8*8^uf7AcubI!y1$`e*=X|~zW`)f9xPIwxQ9lQGa&Gt4# zn}9rcyxum`Ua%+ed~uPyP!Rv2H4pqw+S~IA4<BTHv8cg<>v`DGYyV@OH?iFHA=BCA z_kCI1c`x65KrVM$I)8(oHiMJX>vuDckKhJS2F*-F<YA4|Wp>ItiVD8P0JQT~Y_+q~ z?`Jl8)6?%?zJFQIyo6Y50M&(XS?A6J{+b((Ea$F3jUseK=9xJj2AhZ+R~^>;`K(~z z6r50@5Do$kg{(rT#;&{YPmSuVKs$f-IzS#1^Ru{^^D8_!67eIOE;8@ZNO3WiHiD?T z&IBT8olhfHQOG}!S;oTmHzBK)m1)Wp@L5A`J$OkeV>ih14q=BuqbVyZHDT!!ka$R? zRP(eJD?3q$-g&sF$55!wQ}a9kkJETD++-1_&*w|7`5@UF=-9jw-;Dd#>PAB1VxB!m zc_RIdgl^j)+mEiqf#2}v4<#FHPHThr(l^Og*Ry99;5<M3KRC!*FAm5PXI|1S*VO03 zpUhy7pa;k^81(Q?hTnfXDdDJPoY7$9G-coKR#?6dr{-4rUc7@F9WB^|lbDNYaMrn& ztnjP{sAcdDkCnM}I`BK^osT5ur{amg(9r0l6G4lOynXv{?nTTFiy-(b*jrEo5hr_Q zRGfh6YmS6xXTt&N=V7!d<Fz^iq@-%CR>rk!W$=^A0A)a$zkma|^11m%z#ew-#1aQ0 zFSUcn8^-%EeQLb<bpGiad~LY4sp-;BUH4A4ZET#2etWulPcE~|C3<i~Tbf&*cq<z` zftmRH;;gsHTKu0agdH5&*Mz(+D<UuOZ;UjTDbZwvCux%KO6n@;NcJcXYnwWpV<~L^ zBj-*3)-_cR)a5!><L|10=)310(AV?E#^*Q%y%fvf6m-{mCNtd_V#OAMq}^<$c;WPY z|KrfzOk@46o3}^+2}i4AcVijJUr~pJ+()Q@f`idncQs#e<xI&@`va!5q9;cL=I_ek zu!*$Jg>3^)Z*gCC^tx4gx8?F>i;z`W+*wD3s;%mHMH@t$6~`UDRf;=q$4NLnS@(b> zl2jZ?6!GLD#PnH6Mup{ll-?nVR0Mc7CMJfARC=K<I-3}SkL8phQf`N%n~=~^U&3U9 zJF0F<k^0IG!Of%stZ9||3)NWERH71#3}VeZ^sz)Z?$^uo8V^|ld*NM(&`aVhSuh#I z$6zuDk!NbRvrg#QJq?X`Yz>iD3-R1WLyyO1tEsJRF1WhqAN?UeAa8(BhYlw!5gZr~ zeuZ)8sznr<V5_jLYZor8_4Fijhel=O^fDz*)EW#p#)4CvMwyY<EafQg(Ycwa^%aIH zJP3KfP;w_O>D8jmazVjp-wz`2-mRn`##x?6q<4O1Dili3j#rLOwh-_Dc~0jp?65&t zjGPD0%27e78*mrhAnlePngcWG#Ms!(hRAtFnHHPp9B`eHTr7=B{3oZHo2Rjr#YIBi zf0r@QTMX??Am`Bm&>NoKfjsYjWL;fMlW7`-mR4%%^rJMfQVCQran)V8al4=-BPNxM zYomtQy?`|zDGBcCx{DJNlKDPY*_NRaB9LwYArK9u(55lemVh0_qF|(v(UOocYc|Hj z3oho?>wV7ie*9#7Yg<BpAf(6V_ngCPor|&7mg*Zyr~3v0@9k*8)xR$6G*;vV-|R{p z`6h$Wt48B5evFNuTCQIv+<mMe(0%@t`}8T7%PlVx@Fre9)XL2C<H);EqgafSVC@Gs zx)riV<)Ydvx0YY~_1@<F5AH}0O!2xbeM)`dKMNbdHBb~bNr-&UI6HVynR)e?+nv3) z9<4v_&op%GXW;GMYdN0ic{DuC{$E?(3&V7PJiS3;WoZc;n&|hRx%Btn8&ChK?%#Sz zC?J_x0ZU^A0dq}fF&vkqLsan9otDg}FSWIOM|Ga*2de+fXHW#T>At?w*4A{i^z@as zD+EM(9<oUj>!?UV2T2FhAmO)Hs+EB{t<%Y?X+nDiE|nSwuSPO!p^*oBtTSE7O_xfs zHpY}aiE2Hm1}~|p5*iUuN21(Ps7pg$+6w1pN;!>&eaDP&N@pcPRrLo|75EEMu@?&Z z!&LMI{lT!`8=hagGXuf`fHs3hrMMa6+oo`>IynAxM97u(cOlcHx3O6Kt@(lLQw@YX z4U-)75c6h%yoQDwm*)eae5x;1)gsFl{B*in)M~Ze-(IcSBv!~NGf>_Jg&Y_C^_i(x zb!#WvoQTI#Td<=mA&(vO_HxW~dSK(_>)wXu(`0Nsv9RqWbRn6Jz-Lt^<kd4dp(QWR zvwIFv0`RheXJN_yn>Q!#qOJK8us1t6J|0U&qi^pC<e7MFlT!CGhs$oKFJ16;FEiK{ z=Q!jo^7iIKF;ah+p1%LfHuQkL_Zy2ELg!-bjUAmz=g`|{lZnaNf_8Z);-yxG<jB&H zydVR8vTyeJ^A}H2ekwzOyj){7;@;8RaxV9Ax#glax}pIuoeU4Ej5-YXTt%3kGbtT& zJ#;tAE3m@(Ma=u)es!zg-KQvL#uO)9yMj|&{Jfd-gsBh0p+p?zc@G7@bN{+aCGpjg z!h(`L^+&2}o55s<V#IH!H#g~a^KrTv8`D+|bVdzYlJu7*WSieQK%he+Dy&IN+Crwp zMqH%~AVay`#Ik-?*u@$oT~RrVpAR7{(Sv$kvp!0oDtEBGI_HqkVF4}3AS{7&OraGT z5xhud)=Wx7kmD+lW&PO2l1W2mp#&(2HET_fOlM}A9z-G7)<nlM2lQPeTUAx53-nig zg%$godaz{o@i6_E(V^ELI|g>TnM!p+o~(v3*!x=`9K>ARkHw|h(7PLT{UTAE5q%U5 zcQ|XROdy>|6X@uY$*jq>a$}?4FBAG&^G{@eyi7(Q4?&OK<<4y21m&vN=WmDLL=00@ zZ#{0Dvh0LIsw}H?wMpOxndo;U@KG$Gyx3)Oxrz*CWSbgEXfTyczut*?9ue~{7Fu|7 z(_^8a=iEVFWF|S`^KW~aT!^KUX+qxQXu?;&$Kpg)c(I;UMldi>Orp*M8VPxOk!m7( z0(-07-9IIgsdywCNeJXgrAC(v;<k=52b!8zm;HdXtn8X3&21qHh-2hY@Qd8P-#on= zdB1tN$Vuq{J@H+2>sV*s!iCp~ggn}4*=lOinOzwOObnz$6!TE+$>X#CdlE~A>pd+k zRO5Z(D`lFwT<gbNo}60b=1yj5Afj@kQ%u&W&V%ZT!+PMrAK1(U0|hGj4wXB8jl4~F z|Ap)B>vxpiDW#DzfSWxVX_i`1UY#eHO>cH~x-~|gyEDZ)o5Snt_l_6RAJJ3t_3`8F z^^Ny7H$S}m1%<8BxjBsP=KH)uggl8;$x>E@Hkl2)`CNB~cT*r!#Jgo?R!m`mTZ#3@ zSbdiBRGWeKG|d{jM+ZM=3<tUY$i9_48({ZKGmjNGoJs6MYcjAnAP*N<<qtb89QaB# zuXLNJ?sTjf!Mp~p{wT^Z2OXCxiPax!xF4fgHB<RVC7(?~;RoVSsgXiP(E%%jH96&^ zVsD?`1;5xL@PzbwQzZdTEs$kDMLYT;6bc1H{-6vlv^ThReI&Ch+-Y|p%J#1fs_I~P zC<)m0WinHlwL!0JangGb@LK)znYsYSybMbTidRP_0w+dBnuY?m{a&#JMaSdy*1{gu z>%<l?6wPghGMB?3IVjVF<{$XpV!K^;>pxrPABku-y|Ilv#5@u7oUC~3$s_1#$QuUo z(obf6>f|=FH6Du$M3T|T(N!NOl^$5n3gF!p-BS8Yx3Eci3Baf!kFa+)kw~Rtv1Cd^ z9(^8+#oz}S4VdHE?Pch(z_8*+jUco*u(-sXj)#j6mp%~McE`N?8;b&$OZ3#aK-G7> z4ZZ~Z3}5XjlyqA$FaBa+DVkhLhbidM_hnU`c#_P<y`CJEd7qGF{*F+W`;2sRHpzy2 z0NyJ<8w1v#WbmDIQKZw`?G+X5<5hu;=>q_t-t`6Yl)i#*+-EKQid#9ex3J{i^l;C{ zn{*`p?0c4sUf+23ijDFPDw*f^P|I;}+c@PZxVmS5LEjiU!aqEC@IZNxS#MU9*N>*x zJC$?nCBy<qx>9z<<4Wwm9UTpS?C3BFk!Z;btp}*Gu<(k+ELW3Y`(W=`xF;BdA{jy$ zi$fT+a*YL%SZ)PuS{|LVD3UO109jr5bMfpB;{##S453>zT|^bgdn!7u@xpL~mNZv= zbVs?R=8i5bgs?l!)4an}-l6ET9j>gB;G$6EC@v<%VYuM1Vv_}We@1B07>ga|N|o}y zpx>(ogR&Yd2w|f|Wf1~ztsK65ry(Q2#&{b;(I!MW11d_xiM4k#ggW{+MNssrmg*o9 zSHF5YQx^(!^=}0|!E8Sp2y~5f%@2J=;j;D=f@3fkET9uA$ah-2!F>8nC<nDMMaWc) zA(^ABs0^EtMiW&~(l+w`JU$!EzS+jz=Fhwz44~wJ8f(e(I4yb3g;hL67y8h|CI$z0 zsIjSRCYz1T%A>2@9`@S1sO6g7TC?;ft5ieBYzujb)wg)$Sz<OCj}!6)Sz*C!vKND+ zU@a@M+Ff*y(La5|RP_YRpgE3w0}O?M#l`+jM&9ra@}92noNoY+&ZVl4j5YZZZxh|V z(VM$ASbXnSUM?*~vjjbvg5CnG|He~uNq@`7WrVtGIjZqK=Wx{coQAulfoxFNP}6@& zCxJjinZ4Z3o0{bWz6xQJPB&j}OgAgN)koY{I@&uAy3ZEw9Y>w^s0T-MOwcfS{f3gD z$n*2J&NVl0GVmTxP4&9nC-z@;_Z~0ww060b$cS6n=*cKgAFVfcy5Hngl$Tcs6?c{r zGjIy`%_Tl|gXVe;9SAnWGqFb{6NZFBv}EQKl6ic>SkJ^Ek-fT*k_u&MsQzJ8j+c}Q zJwItns8;NVfdauJb6(Me*ouxBvD|i*MBZs*`FElJCo#ly7}?o)H@Z?x_ZWKI`mE%! zLrvA;DzsZ{rGz;brI<!ND!qM>A#>1|JXW_BQ_WXo*2(_-5b{lbeo$>KC?GV1gEA;! zfm%5fSi3XRzx%R%!l=#$34B8{aAKgCSF3t0UW=bHM!zaIWEz5@E{cX*;KRv=LYFTO z&3^^j=P7TOwm`<rytT$^@7m?HwQq0F&sWl)vq(@RDW15B4ZM!!aGADa-m_>l9?Qnw z)7iigF^|hK$h-^WIi2$A&l?+f&igmnWIP(*mUFle%g$s``c1B``hd~A`u~%4eIae- zX;fox>NQ4hVrVs*+HAAb9oVtV5>mB+S{Pd>IwE!!T3Avn)a@)~5DG%?6<ZS51d3MD zsAExDro<$KPW48zrhg_Gt7y>L7G#CO!ooiIG|zq8?|i?+I-Q$fn%tWp*5f(fzw`C5 ztQ;zG+ejaV^x!+@{=|6;8-%{MZ<EnzR8Rg=i1VZ}ivumD4vW*_Ko1KAdrrqq$+QB- zd;a{nP?}uWd%6y#Ny=;=c=MYH<~+vbE8XAxUGD;BkqCM21F214YAv73C6;rUImCML z)m(0NE}7K4uW`I%-uvIXtFJGhdM=b^F1H-+;EkL@Z31}~n2(XZJWc?_h6UU4YWQyc zzMgkQ9c(tM*E-6-AN2H=&+t?N=SZgJ=L-pwE1Nr<W9rNf;>hmJPc3`Y*u&QE>-zsN z*i-k#jXR!uzFE?kqvM|JdN!*9d89VMWhOh<qnW6zc7Z7Nd0+_Hd7ZK%wsuJdiHmS( zIYWk0;;lk<Q^B265p%7G$LzA0-{V*8pfkm4FEnNnP9()7(wD;92w4+e_-cT6pTa9) ztuT2ouq6x8Ta!zqL9INxfU*Kgc1=yktO95#pSvJ0t$dQ0t_hd9j#-bLPyn){)v}C5 zkZiX}F<vctIEe*iQk+E6ek~X<lSmBuOU?dLzYppYl;@kA^ar+f2STv}cpKjbUxWfW zg4jev3y)(9%9Aa63k6q%yk@Pd^vRP}LLNhsC^0MG*Bi!0lPWVsge`$8`22;6Q?Y^i z>)IAUFTIscTe*FRevu`+kpxGjv$E3RsI<ri*YJZ*x;=RCW;U68q3aZ@Ek*MyE88y; zz7n2i?dj<-^H4fh3hL)xzF5%-CVDiVPbTL^_DOFdiP2c!(1<`@(Z;=eq*x)`;FJya z6CEi>bpmdG8{9p%F*~a#@_PI&Po)#`(8EHJsARL%R!aCYQF{|RV@)8trRUG-Aty?D z1hDN#e<sd5fV{n*qukHQr=KoG4qrUyU)We!n3)+GDwY%Y(ASo;nYBzd7D3`Ak;_K^ zrD;TH@9Mi4eJB6;jt~gKW89I{%uJS?A<iSE`IWciE1*v)b2hLaL_>q6tkH&fbc#^1 z@b+`${hC$JUQqA3JN|M0pO?yS6Q8m5-~8U*ULjYx_e6ctxw!cLJt_>?F*NvLG3r_W z0cn<RJ*u~^ru>jceK_b*H%DWSJ-q#7o4dz&-z1ES?6QH)X=QFC<6R^SEKdH5bwV7Y z6&hX;rU|vlhXK=g3X4%OH_i){?cATq=dA_16@%D?z<v)_HaB99<C%oQ4ihV9TZ+8L zBj?z@%-hhpYM>PCY@1wcGRDh;Kz^hyU4~OAu(Q!E?u0>lR7g-dj26P55iai*l9{r^ zHVf4#?O})62~E3R8Z;Bt`AdBSKp%<>K%SP~3PiR-1JT~!A`j29+3ARe5iwGn6OlA; zK{?mb-i7_ba5>Pf(eq&7t^gkPq!9VV#(UHKZFj3Qjg)4;|5hjz<(nSTZw&;^7fKm- zTX(ja6wYNjNn~<q!H9`(n^Tbqd86X??ActL4zX~2mj1=Kt1szryD8A)$PL-eNIXgG zNJlC;J2xRFV;OnR^r)UlF3fCf{Cfn9M{h)w_v1eBHb%TW-sVN`7>WvG8%5}m&dn#{ z+8C=%zbw~swXxPg-=d963zE~~G)l@6vMUAT-51b`afml{<skAhi2ua+-qTlc^Vz=z z7Z$*I<wJc3j`+*f?M!ZU^?o)JK~a4<o5N$Dy9XVsMDxUaufw_^JeHcv@vaW{*Bv6t zJJUz-^K$oCBR1wW*cuwKVS(7Mv5~&#&ye@)$5@-W;)b`zeYK*ae1;IWI=`3A?agP@ z-23^${$`J79a|HovYzSg;dS+KZ1jWY-gf5N#hNOQYObrRIf+8Vz5e0RWzXQ7&GkXg zdP(Ey)0MKYN?|K^_G6LQ%$Bn%Y+1y%&_q-c=P_aEz(sN36n2^>Vby@{=0dBPViIjB zC?jCL$W&0K+=?l)r3y2hQWzjAY^fA`y6|yUVYO)xv+1z8<td{R!j%R2OB33md0L%q z|L{lzcgloZrVGt0hNfeHB>|D18BQopqs-mXWysDG*-_+=r$-5mQZ?KF6)SWmg?Ze* z=?`|XKM3{&6X9(I(pa+`Ywf*=qChWd=;2_fl>)z8aOWXiiT0PcPC9gYIs&U6IJ27T z!@a%Jp-7;OQ!CTw@P_GIkvoLDwtz245Dk|4`?o@&f!+T8-OxZfJ>b7wAJ{4lhW&wX zx=EHDPN;k!k3#H9qf?SGDC_F(B-qh?IGKv?M%Saex}Hh_S)Y(sfdV+#56Cmmrc$Iz zch~dzcq%!ve~cwFdBWb@TU6rv>g(C+wxWg`%|6M^k`gx|ugG~D5S(Kh-ESt6guK~_ zg#za(7>0G$+K>uDhEqab$R;VLP^4R0Sz%Zekhd<<ntN0G&|BLi<bkLlHebC;HDCQM zyfC)#;|$d1fg`g0Vr~0=PABNa(!Q?t?Obk`Pq>ft^z|M7FX_#9bAs>+z?<~C-4$PV z6tXK2n_l@QhV#m7>@3|_R#uJOCe=1e?PtjQ&rcsifB&ND+w<q^E<b$e9eTf~syjQ6 z)t$whCnh$S%oCbC>IZ`1eAW~F;r8e@ksH>i6VJ7js-7<oeR;TFRnMB;r8l~xo@x47 ztrPN&pFVw@2g^B=3Fz4|6=dXfCQO5jE>sfiKo-(4q)rjN*?E9m=8dsD=wM>mX%bmd z#UM63%R;X5x&+*CIb^G_9HU4Ok)Nyxk6KQ&*u}<lE}f&Yfa|z;M-=K(gdwMuCl!kQ z(!yxdWiaqQ1#l(jIz?xh$#n|KQ?Zmej7F!WwyYAoN5P%bcoZffsPmEHL`N3#9RBM* zKat&4E!fghbpGhl!s*G$Thr5_NrK}9U4)#!zrCH#(6b5P&KC(ri1fng2>J+7i14ws z4+VOf775>ppgd3S1FZd%{R4N~!hWPp=~_bhB+{w=Fg+0BO1p3k(lg-`isY!297d;% zwREyX;te~q>A$9Xw38`scrKny>3Kbt&*!6wgq}|zRs%`7D>_(gQhWpG&F1xdCX<iq z`BZ%0d~9UoErEwX`)mQlz_Ai@huF1OUiV3DZuEH>c^v|I3_L#jW=_xNcT@2q@-Saa zBu9j2u{p5O3tudf<T{AFf}CWr`RLJ=edN90`6W+RA=Fy}^7QNG)+$C``)`rg_iX!x zzIH#iwoJH+?#2_jTt?#)Gj6`HzNF6=6)oDFTnY5JkJKFDMzS;Bk~0iI*-?vGg@)ry zbr?#wVP4^PJ}f`|<>NR6q}p0>a!{==AEmHwvy;#_n(>T_70vU5o+O2D52k>@*zLu| zKdI`=pVh(Lmpk7KhgDCNx1!Fis+YVyCkL7@JszhkR#iq`H6*352NT|Yy!urZuoL7b z7A62DJYQ!3uy~4GWK`@{wt)aO7JRAMl!cR^fG9+$B65?w7r|;j7!ev|F^yhKyNIq# zZeCHiqmAuXtO^gSD}_NmQ(<HX*_bBL<B9AhFege1Yz|LsN1BsDK>{iqgp6p?B+wCQ zlsU^#;H$2#K8nI#Wu-+j`1#kJ;L?m*T#Lx?quSQq5)4f4w#GslJXhg@MX1ER1<8MK z9^L%_-ej-^Z(!8Yi$tP?zpmg7`s1wOeO<nm7VS=3sK4!yz^6tK4*GFu;;XOzGQCKj zhmWQoEN0v+4n=ap<5tF~5ExMD9%bPDmDJ{JBC4mNgr968n)*Li*B{elVuq!(*wR)D zDs-*&?3GR9cA}ZRj@_{xTd3sph&JlwB7c-{iJX^s7ZaBzv~!w5sEa#odf?3q#2lpX zHH}i*MkrWCqv0B$goGS9lOx%3Im~wZbNg%C`@HW*K|iW|d@a;qpFZ!;=P4vw7<rAp zO1%&JLJ$%A`I~?EHZ}^yy+kIFjt?k9J?ru2;$!;8gd)iM+Ak)T$n-XmUJA%#iFlbp zQ>pOlhYQI>B9k2RvufuAFB6&^SX9{Vq@ef$)W@(NTb)N~vxK~x6jbJx-w@6#C3+)s z3hJN8^yuL?^Vx{`_)(SfUWzt-9ZE4#jNhDmCXG5Mt8~j<w|zU@J|E7y)kt&ZZlT+| ztGTAeT~pKC>}y;<bS6+7qD{D0LSDKYLS);mFV{9d0P;M+kFR@zADzA){Kz-AggQwe zxZDNgak*tR7&!SL7+hT%8OeD9y-T;yI(R=geDbe^vG)U>POsgkANIVX_ia0K>6j;Y zd1>TX@P_Ov=v1R1ak}HIPAv0eeS!DsfF!X}5Enh8xZmkS8lJzAy-pCE8rVse)r&;M z#mE}(MnM)YAz0W>$i}l_Hg)^JD8^jUH%CpSj=i8QQh3qWSZqv;y0~kAJ#_@1+&V|d zT4yYctnBC5m0JuN7A3P_YRmzjJOY~&VB1**vctk&t<_|zHC0p-0{r3nP^&f)iunBv z+|H&;4JbfHW1Yu-cR$q1#T4}22pN11P6I?k{?_hjw2ueS{7rraCEXQ6tuz+9Phdg~ zh92KNfA!k7&WLpALy?dSi}w8>GowU=EkGV3Siim6P=PT>tE0l<bY8%?g9EiqolbM2 zSB{7Cgr!_2nO-3_D-Z(X>&UCo!!_3KZ9DwtU;gveZ;z)5Vae%2ypS7=4sL{-1Gt_^ z_3!{p%5HbF4+^{!HYIxYEj1<NeTGO=?pz!|ggd5ko~FWT;(8_}P*y8cZ>>auRwp>` zRphC`=AE;v>&RQ1OXl-adEAfILw+i<^}xHS&xVM}O30fKDF|P(I9(LeJVw{d%sei8 z36vdfHzRK%$Jb{j3u6t${*69S&wg84dPls@3p+8n!g`y(+Rb8{EV=pe^w<aY2zl2$ z*Bd_#dd{C8_I!Eu#!S$Y=o<FKDPkPH%&X`*&lhtK0-i@i-;<tT@A%SF&-FiD4g{VT zXD82o9)Pj)uPeU{9(7+a@7ULQ?Nn-f<m~dYY{qg5rV}+jm`(yWY>8kniZu`_nH4rR z;9}UIPcHskY!$>U307`EiIn3@i;;^d1|63_EfPcO*gxGU3YyS&2Zu>L)u<wqy(xtN zRgE#=t-4yKRb=~4o#j;5g*3902hOWgb^lzlzwY7=17&+I%K9irs@h%wtW`Npa8xkS zOSq!SRLj|31zpm)h;r&F>T3<P`-yu9Objb97a=Hi|JoOQ0HYsw@!Sc{LkKGAp~QG$ z9zF{LnN7@Y2sX8hJZ(RIQkVkHNdNrBOY<>AlMPLwR(iG)?zE8~=-K^tdn?G74;PE- zv%?zw&B&v3qQPnvd6yL>LwL&(lMSxWNjkA&<`F5%)}Xs-w>SR%_uqf@&f)e0@%X@C zA~~AN#S@t{i%c`^4O0G>NdkEwJ+m1>nHOGpn`$id^C~wZkJCKJ{taf5iV__X&ePC) zgb8EPgf<7a6`aJ>R-J{BH#J>C-ran@ct@hmTmLK}uU8@D@dyi=4pUR%t@WMJRI1}u z&g<xC>LBPPU`jbDJ&K$05+8Q>Bs5L)KHy}!4{P->K|137nHR0Rx4ENkxxj7;uVH9& zuWY2l)@ygwX5{_r9wG04M?Jw)#CZpOP%}bdve@;=GfT(|2=W4`p3tp0zC_4-{`3)@ zc8v!((Odm|IPmA|A6~3{>)nHmmHHial#Oq9jVz6emyk`P&W9PqK7qCRkd*P}km$Oz z>50f>vgwbFTMJ_TW8t9_)rd$mR}5ml%)LFhQ;HCah1J~E?u8Upq+iFS6jp}NtnZl1 zs)7-Icox;jSvAIE89+#m;mKVZ%OP1CLWhC*PqQDh($Zz;h!fRKqobU%yecP_>uakF zrdo%t7C9b8pjBWzlg{P}hw%DG$mwr2a~m8mBI=?~v3^2cT6yK*k_Lx{t^O#ba_VI` z0dSsYHb=S#(UR|uaCeY^clF|1SLVyg2zU(*%$ku+hgM6JSC1aL*&i~8%ypOtve`uB zl)`rh|0ltoXB~MN0?y-fJe`|e3`OIGOj@)uG3%u#v{0b)n}2-&ZN0bBAL&VTkEU~l z%uGg!j|t%s_7*4rO(vo#X~a*M8#yHN=^1(7Y#`4Ke=pQFKPv(9;UXoO%0RS7kY^#F zT|hyT&86|-fXTGZQk~s|Jf^(DGNbK{O(hmWUUq%FjMBoXCm~ncnJ7w|?my~%FGJ7W z#H{y>jbrHtPR>qHddJ99AL)(Zi3*7jTm$tx;G%?no>wihY_XV7VfiULca@hz6MN_G za*91SbKZCC9{b;RU?|YJ#r^T?fz!ut1POJc^yfK@gKmu=*qkjEpO1P*m&aED!r*X` zh;MeZSS&8TH~##+6CEv;KhbY#G5Zecc`DBrnI0Lz42#Jo=H-&wv67~aE^vcS!z0u> z87pH^TcadvY-0y*LmX&eX5zvKOCZ^pw`^z`Xrz*96b(OQiqi2msvzc=Q5Fs?s=|ue zMSzi)M!E+aR*HkA8fm)tpCJ_%)KUm+MgkatOyiO^17Ad;WzYUSdk~F6YqOm45Ok(@ zLKYJCU4{ysql&O+K))BY%}D$CNTglR7HN-QfEtAo%F_DhFP(~);Kn8T3|{t$WEAWb z#&~s%f-j}NzdMXfG2FhsbyUWOwydl@a$wt)(^opRF|EMb-s-1&B4s7$5#+-yWf-C6 z?2p~zbw-<$T?%zhCn{V{`rW%e5#-IK3-QEbuvj4(jV6`8q;^XQd3yGF-SzJu57#%k z-I1Z5%uJGUx{Q(;%`oK+G3O;S$;8;=@*Iu@gqw)VDk;%>_zgaY3mJJnAn*1%=K+%o zi(>;xB^ebzq6rHj%}RJPIH3!H#X@|dx4J`wy!?~tCs`GF`F!E5%6WIrE(!8(t@RFM zvw7mMygD@P-_!PKpUQbnj4CgOl$_8tDG5m7vL`HMdXp0yoF||Bx!hzn*`ROsHSgNh zj8OB4*LTE6#7B8=TN@*fJ<<tr*1gufufb)LzTDJFhk5M1U;fP=44%1SH`nWrz5ZdD zJ{9-e=qd(tKwiA~baiAD^~|oWxj^vI(pqjd@nEj2YkcX}QZGzo$FZc)+t+fytKWKV zUzuKC*%<D>`{Kom?~v#Hf*qG_y!T@e3rm}7D`eyVkuyFculFEow6SEgQG_&k$<845 zUyzh$xoM49oP)t2)5%*2tOPBs0=9hBi1#wjVrrx}$1cv*(m&t8ppg|L)Bu(9ylSJU z9f{=$*Hy5XSLdQz^`UClo;qZF`&~vtB6A*sPYXsstWfwfU@-_*CfM-SVSw7CGt?4~ z7*V1OcN1Jf{sux`Jt2Zg57+(O*X9c=f;+(;AB4Sr*>8w2RL+I>(f7AU+UYEO5W`^F z12K$%;!GPREQigZhVZugWilRZZ{0XBH;vg%`^H7-k<v?;V@@Y1PiKPA?fy@Cp*qxc zVo*sZ76z1+mBo{(hUj2w$h(fb9rW%B83_H4dm7F3HIZHqI4W6)=i)0pLu#~%2{1(& zQ=nyANT<)4-Rz?0*1MDGVxpL!TaswBvJ%MCHw;A=1|B~qh|+BVt;7K(Dy}9I8i&(r z)tOW|hzf|igYq1@I=D$rKPVyZZnn5Fxw0n6TU#3+%x1B(&ePS|?2}e=TfH_Vd0x{d z!ei_;Hw`4Fp9u0`BkKp{{hzU`3vKf}qly$Ml0K={k88`a<ya``a<SDW*+;6Zg6bmQ z3?ph0EU;7;G7e<fiqo5dA+ZNV4pE^j2v5%D@QHwn9SM=jkxZR9Hk(sQFmbyX0*2sq zw}V|RSG^c}&hxyVthf!^D_N0c*~C9b=lMI&F)Z}qCcj!L`gLzl&+GVh2y?`Ds<B|R z<(ybn(Ty<E(M8Zhpb4$e(T?dcf*sDBF*)gn;>Y{(>DzkW{8!9(H?KZpvCy~g-+lP> z1^{;M-1|TorpllPT9PRjK06D;ul?NZc862O3}A=Dnsm)FL)TcKr?CVR-ci`F8Rd34 zCusI4D-ck`#J=bN8#=S27dug^Ta-@hGEp56V`WvsguWJK65a+F3Q2&<d?(w*6z+KD z8U+<zDjkw3&yd>Y&N{qMLd?)bxn~CfGCD)tRZmc8nIPbS0C}#30#<q_;0wlF*gfWQ z`nrOYjzk;|x*Kss&}+bU6D@?YW&SWIYKjv$M18}Bq9k3jAALf>=AIR1^2Ic()w$xK z*~5q4EMA(T49%)g7Jo#SF>u)!liTPNUGx1EU;=C?naY&3j7TR{88u@hjif-12dI<D z5dGao;af>W;)|n~hba-_k;D~(9ZsWOt5!_2Ui<5HY)H?~tKuCa&&vatBYq>5wWa#U zO4m(v(idBGb6Gf#;8&`^D!GJqUv0P6D)$>%Hp=t58%*l-a4XNq%j)5ziLXEp(S!8X zsF+o=A;|mFs)pRIyPMMI_&@}MENW)j8Cu&|S$VX%&v`5Bit+B;x}%WyuO)>%X!$na zua_Ad%rWwa^YoWs#{uWOxlYjgih=iFYqhiX$yH8zZYC9WdtW!QGAnHe_PCu+(PkXm z#|F?#80zM=e_b$Hm}n#KSAx7#U+AA*d##W1v+yrYPxc$(Z?4_^-Luc0+<5oN;y2Hq zo!f!(4r491c6N4No+|5bV^|1}y0dQYJLm8IvyD8=uwcpy_Q{q2mUsVY;$|YP1}<D` zY?BvNgPQ2Vak58TXNeb_O6$Wwf))s^KjuPZuE#;C#se)d{R$}8WiF%e+@^;$3wADM zDq`amWY!jUg*YyvFfwsx1nLA%{&)>iXaoyyPf*}FqMd+fJwYj;77Rj#j%1G@*A>SQ zva1(+SzseXgh<~Z#gu5l6$^)0F6S>?C>AmVtTKTwU)VmgOIX`80XxRtTp^iF^J@RJ zbuy`p0kw}plKMBP?!NlqDS1Nap_$>lg-RSdcEVwy0_99xW(mf46@TE^6{ftaSFbdx z6=vcmrTkR6F+ML#mAUP$C&fbO2%2%Dsnue+Mo6l+cB_!aE(q%_6XsftQoV*6XRTTH z_v>O&>CRWH^r2?6Y65v-tcFk1YYj8KMBI%Aab9UzA&=-df|rK~Acq+ir^^@Yiqn4< z$XjRRap7`BrFkmR6VAJH|Lc_%Lgor<V^=mFXL84Km-B?Y>1ntAQlggvzH}V}af<c+ z{M*ZI(BZZ)K0Q93`*Pe%(Ps7yHLyvz%f3MuY!UUugG6~l*g!`49e{Tn%GiBP`agg= zK<_{L#nbO(e;IavaOUF0(T{)q^!d~K_x}K6bkN)V4y0kQtP^jYiiZWadyMkUGm{Lv z?+AHALqk8-Jks6f4bv`e3n(3Il<Obj6(mL`PR5zW9fW{-MEdC(k5xmrr}3OM?}BH? zyMTNV)(x?ZLckeS(Iv{5OnU*@IuQ_65SF!YatI3a1f;wff?tpt8WTrY3MvCU#mOW% zBIOij!h}Yd-w2ek*ak5I=A$?h4kp1MRI$Oht1A}kiUq}L0nWnoE#}cm$n;Nvx=_3v z9xFm)hw)9~zw#&bHsOK$%zePg$>Js{y*_?ZpgMTk&p8ObWO8(7suOrg%|jV!1T8%$ zdI=HAOXDI=rabQ|L$6XL!lUb=SuRz|3rR(J#94i%(sX#*oAu^;^lVDc&Rj0e)mruD zc0~b?!M9BCsuS`EcZ<ztt6IRCTtKfUZ8l-KKr}aJOL@_Y4(lK}LS9Xh+)AZhH%kk$ z&}G%`^P!hOKjH3)csG8+k%5>aJ`o_!TU*=Qd@L&=2zgI-+MIW5X-9%iAa8@RJVqXc zr;jqZ!JJ=^C!Cj(R4=9Sxt{sPCOZy2c<`6gr$7C$19|yM@+@(lUy#Q!=G!*zqsuC? zoIeijAXeQTKPorePbU^socH(7t@G~-Kl^C3Pp8*0-GA8aHLf$a?JO->@#HJOb^v<U z`8Dvi5Z(($-dkN_Xu?TdjM)usaF)yRE(r0}in2<UBTq3>z`O~srsg&q%(`TGCK?aW z=pp!2^oTl3RPFd<zde2)H|V%e&gD@}nF4_**)bjYo;+wZ6J%CJQ-WEPFCnZAok&RQ zJ;7SqV@kaMM-%=RpPdLrUA?GfI#Awp(KUvi0<mDw)f;ocAS>t$q0J5QL0J;=I1F!Q zSiytdL2|opBCP@H_U86xDhH9rC#fhfnf^YwtOwN-4<fG}bSAA&PTTQIa0O&;1-1n- znCH>2Aav!13OC;aXSJHG?dBIHvoxPH+Q@Uy<)`Ij4gYU096mgDsjy4Tw%9DUaYxr` ztJX5Xd9|(9)>d=QpXE%CNYAV{DmC-b`exad(!*X|_cG_zz>SDD7ZH1!C1rrQYNrG= z5(!4&yAqFKT@3MF#5V!XTYJ1`uB~iH%V49quZX?1!vma4ON2ah^RN$sDDU3JqhxN> zpITj>Pft&W8F_}WA8Zo5bgy1k(1ShJ<ZI(b)}lsYM0#(0+#5bCvF1s{0dzfy@=9)S zFg6i^hY(r`xHtv|q~c;tOf%@1^R@~_wF*j>V~lg^_LKh$Z!bg7?bdI8*N!%a9B{65 z%Ge3Z##Mzy##i_u4g|TSuE`Ua<WSZG-BHj;&xk_Gsw`vKjRfsH_TXZt5`>@uUZSMQ z@HEpTz6kp{1HB<x-DlS{g))vU?d=svTx!wO>?Y5B9z!=T!Ja`p9Zg{-7T>adh>e6$ zWwBI4QD5BW>4guS4=xI5Blw(n$Jy&3rl<5t3(=pt)HyPlG~W&v(IC%rc{81!t;5Q@ zGDD!7shBfn=7*7|5SBj3a-DpaZiCDEm;kS+?xocQ`aG9RD{v}~-G5PMJgSAjc{jj& zSF3loYSsGgZoM&UF3%fQn&)*-Tfn0~UE}=uOV}$`-raimu(dEx7c1Um<Ta{WXv8lP zqWm^RdfsBAvPnT`wQefph4pfyQmxe``&(?%%TUWKTb!rS>jGudn3RskF-Yc&#~hAW zEMN!n%)K`9?zK9U=u6*9u*t}~x3RV%O1`yvw*SbHR6nPAZasOh!~*E`OfPRfC+Nur z=T9#ghN^9j>)9+(Bj$L{8b7t<uqVaaB$u-d<~$QJvgsH&+I^ILO|XirYe3CyD!x1Q z`KcFwOy#k0jQ6Tw8N}@Wg51(8p_ln^@<m6U_f{8Cn_UwxbS4=Qi+hyQLX<;Fw(7#5 z7>Xp(0GDA{vIl*GjDayZVzUYgFmPM;gfx+vYrJwr6Q`1Z6fBwOc;`x#V^X^qb%_sp zLTV?PWm$s6P7tYzoygx{VsZ?qVg+7E>YF3>5m`pYnmvZ$AkUC#yiz*e8zZ1Of)N*L z-a(iEI6WwL`h3071pUbu05zz=Wp1pHIh5z&%{&_8v$Kua3NCzRGC$0C7H|};rIT%( zr8}uF{XJMJux2{$voXDkLe3bb^qjG{CqVb&^wRa7z>dz>yUmulyS-g4l`B*8hT=TE z2MeXG<9+jkQEZ9!Pt9ySe9|n<??dl;l?bd}A-a2jXtP<L>h}ut&ZbM1dS&r$wO;8@ zWy9VcVi|BAg{ANxYHc-5;#=mt-*cWvphHbF7I9);+Jkxvg~%~21S{9d9%XwnqVjNk zA9?rhuv|eQkMcp*&~Ds&ysq1h_;bei0{VF`A<yEqtUlehOu63HHD1PWdpKu9Q5GM` zrM~=|tv?qI_nlQgkhfVbY~z-K|41qj@9v5q(i|9IKd<9FHhuKJoLyarTWJ}dP3FX$ z{A^BsI+JE5ora_mwYJ4=s96Y@i-{|;LBh(S<{~n}qG-{UmC|lfg-q?}Me#6XN&`78 zbcsD7*vuqlO4He5TcH*gcY7g~qN96b1rf0~yH~!?`+k{8e|8FcGR=Rc>2#hv@89#h ziu1m;1-#22|5)6hMt^p@Pdx{C4?pRFa|d60>tAD>=X7eQB61alJt06ibk&9258Z?q zk9+|)4%x(vP?JZ@M2+rXWo=0JO0(NgGbr3zP#!4`QO0smDD$7pWDb%4u+sydl)0ap zyyPU&EAwEyB8XpvoGrvy@?v=q<~He8D$OEUX|k(fO<0aG_a#Gn(q8Okb_EhXms5AT z=pU^Ikuu3Tq4+d?Kzq}Ku{v@+3Oe(kx?;6noUHJmCPp`x8x81R`REY{vBDHzql>Xx zOE#-eIKtcL?y>9nCxcCSyqFz>Xb9Dmcr30beAvnq$0r^Auf&bf3=1Le#{GV`+g~}e zYA!bF`B5G3G2~^wKRE;AO@C&lPJnsuVpBm6Z3RZ2-EMb@_Bw+;5<NlQRM<pH+v&9| zf3DyL@;p}0vJh<!Fs6N%&Ii`2a;v@?f+Ww0aW^d*k3@Byn|m(Zn_}d(hP*JAkay|T zapc|m4aPU$e*08w_*?jG68wh0zH)0Lm+=F6AieOjkhj3QI?auZci4;J$k*AtDOZBY z=IswYC@;+9+~M6*g~N1`W&*4Akv--L+R;S7841ieImDcEV#Pu*G8c)!Z}ab$w}Z_O zGwwoZggX{4p8Is1N5_ULurTr{%M8d!G?<Q&rLpZTdmpLwce<_&8)R~f7?5*2p7+w& z<pFUfZ(G&{q%v5|I`^1(N9ep2h$B&l%v&mWI>f(-s4m76Wn7?PMQmtnXI^NO<|Wgh z!ld-{lFV(6w1X!!QC&fnml8R88Yc(q6;kPRh#>}}O;|v<z;^__U=;iFu+1_N_a=GB znfR_Qlh74HUVT#aw5z5<9i8_Y=$bd4B)p<Bby(u(S0!D0f)U5gA1k%U{?lz}s=HI( zn9FC-o0G8+BhKj){g9J{ywg(NykHXmI{np)^v)_<74(c}jPe!^Oz>WWOxVBN>E9>H z1N4;j-_1TDsNJ{CmTg+ZddoApj4U%LRfyr*1IxCmxg3y}@mN;N9@sr=Feuu@kAr@v zXDa0R@#!6PQL3j!F|ipX_{FibSxeoza%E$LJh+bC8<kfGc}VmgZW8h?bg!ViLX<b8 zV3UwX*=aeKM?Wv@DLoCme5n?8PrYHa#RcWaS7zWB!{$$=DNms=u>jxDDfJT})O|^S z2Mg;QSUEWBg!Nctjsnhoyk=o;4*I<Rj8I3M_fhqQj2oWzV&aFev-uq4J^W-$J~;6^ z1-y?DZE`;kT?F3Q?3L+f*5+Wl5SJ-gBxJ}anM{~*|BWp;S(e8>5|}YFSPldzvf&Dg z^mGX#)glFUbciuQ@|tvmWwK)A=TI=@(Uz1NW??mKQuf4(=aD##p`ytObmrr9Qpzbw zZk;DVfXs}HLB}B|W3`|&LEzIgC+uw_@gT7vMWC>-Bq;ifR5t7PgL10b3J-+Ak!5me zd2*?4;<N<qD**UUfUno!khI881XeKYJQh0^Slsti5;zXV?1&ae$jgq$s(9>>5ks7b zj0xG3?n99!0ny|(=bgIIMwx$gwZ3dNK~{pi@EG!P*tzVV344l5gF*j}Ag`&6rtSW< zJ|VA%X_3zTyLY=Y7+AqVlajk-_qxP+_A-!{p<m<%kT>XNYZvn-(mhHsP32a76&Yv* zo|_sgV<T)rmN**M4iWNh_Bh%^ar0VxG^=?YKAY$N_;3@Jw}0qdd3VSYp2NG87v9X} zO677c!<+}?6`oA=GM=zIvwrM^0Pn=N%S318vOv${nO~sG`KhU?!*qE#C!1p_*4*<M z6gc$=ba~MTItg<D=iYt1#A|jAU4?DJyZq9JUwz^888`Pu74&x3cHZaw#myZa`@JH) zM_&W-e9}Zfk_JgS>kEJ&&85_OKokX^?DD4sw1(t?*xQV0OpR-nG2ts<i(jY9n3-2d z(=l38;@}KYR0u3fcPMLHhNgpSqLAH6ZAFHt9Z4f3@g|T*i5+Vck`M^NWQFdeywC6w zwSnf+Pz-q~!Amkxrtl=_^8(I*FW_<p>57ZM7MOPGxb$J+qEFLP*&?PXVR%%n)VZp; zw7dx8O#rWMj#!UjM_<J}hF1<&tI*kHm&T$<)n&+j_nAeQXVKtxJo?zfDP2pzuh8k! z@isM|!H&1OF45*`=DgNxsQsU*n5{;Q=TAmzgRLV^zij>jWlOcX-R|GD#({TX!?rEE z+qKMMt=Z|@z4j{;SYbkGR4HtA2Da7f_g4xz_Y^iQG<tT=?hLG2v({YgcUs+U*HlLF zRo$1EjYN+|z$byI>uA&$ApVPk^M-`Ho1io%y$9z<z$4_XoqzStCS6-Q*S`Xb>30cr zM0><}6NOTFqSRbydct8D$V5Y7MunP?AcQ^sU%=xT$b0#fG9TE8UMkFc=5rIDotm28 zHNOkpP2Ly5{e)y0446nnvBnF2V{`i=`_R$bi<^=7=Pr*OA7y`Dn3?p9aUMbN?5E4~ z`1rTtyhjsz=e`_(Ypo`FbRN((czR5i%BGmFp!UhjBsHFUmhh5$b}_Di@-B5?HzvE4 z4bdy0Db7kCag}D5BSUSZWD7sW7w^kM(Z!Hy79DgZZtsR8CCusIo;%bCk{lxbRKD&> zCFo1Bp#&RCOU$_^q{gR{gxr|ZiNVc4VA>a;+%^~t1kuF{PRFoPA@1{m^C-Mj6jW(6 zFp0T{)1tMwxU$HO(<|#Xo!RT_Hl3<@_Qb3(<yE$zBQ12fRexsZA@kh(Mz`Slr)$wf z0wPn;9@3_GoPN@Tyw{oZes;<lw7cE+FIG&ek>>#vP+rDe8#^e}q<ke`t5sSM7mPTM z`vEu6ox9O$y<ctC%wDs(TA3(JVU-ZUw+`K3r_-@H+9Zy#%tp0lc1?WKDi89QrrObP z)qs{M5{S4km_?j78^sVyR7)MYH5_jAu49G_&ALn5*3xT)xV5wG@6g5B)gk*u5am&t zHyqMmncI~s7xD{)uyB5B7J56&3ww6m{=xUy`x3z>Va|V&vB#f1^ryrFEG3M9qn$34 z=Vwj2Hp@0Fkm$i$8rFYv`@TRRjQ@EIcrX3W^I}GMAS&z~oY}o|qIYj|$A|y>Xlr^b z;N&Wb#>~g!I~6K=8DHGuHrVe7P;&`^;U(-BrWs0i$2(#TZrky?1h&=`+-VYiidsQb z2U6>lH6}dwBIQlSp;(QvkU^RYQq<%lB?1Rt#2iW;VhNvEuwZ>cNT$ae9B8r&Qkof( zk?QlIHAeW;gD%&8fnCry9p@qo#_GMHVx_)}jv57<_4SqI#g%oqq0n*vy}^Ax`fnb) zf9#iU%G#g$IBiw7YABD@QI;Mnz>Ei-Pt{kl<F8Xk+KZ|t3|KT*kk@(fOoP`r^bG*- zb<o}^%kH%7GZ*Q@!pxVRjl68B29}~LtwCqd5a3}y0wHgs(-{mdtX8B4LC;#?`DlEn zOtI5%w+F3`m78$$l9N2|;A=MdyERuS!L&xJpRal`qnU^tMbke{8FT>in?6dQiSvfn zd)HAr0qIeiw?%qu4<Bs)>CUxFn`;+Lf*gQJ1PQyOn+1YMDObohGaiq-RN88kOTbC* zuU7uY?E^3W>McmdkG%6nnah?ZfjqW+n3yQcWBJ&wc?_*!X9OYdq@Npmx%kmp%JJZN zM9dcnNR|ibLgFvuocGrszWB|OAL*U@fLg3n3Y$AZ>-750!RX&cwavZG{o=AIT|CI` zAkJe@h{Qm5h#$LwRm;%i8IGSG*H{#E{5VLD`{1Gkn*Pa;LLv!5h&aNV>ZXGjy`dOO zUmfD*&X`0kH6>~UWzT|MxmRrrlIa!E<cS7B1n0?AN;(O2!ju?_nQ0C;S+o#BtAQO@ zxUoPa>ccvapmV=(S|hx<@a2PCFGg3O9&#j$#rh(KH0w)Ci|fR1|EKKgf15h2sIhsj zU!Ie^#9m^Ym|)_l-bmYk<S`Gd#YHiwq*i1>tI>#>U<pbX8&pLpA>kt=0!=i4kV2Eq z(Nsq)cC3jsu97x%L`e&%DgmlZiaKqm(xm<Y`=!5ZyXW3#CxMV@&mY*1u^@WK=YE`f z?qnW$4+MS-3)>bZP6z<sJ24r3Hf#*TJCg_7jhCw~Jr!LBm$Vo1rObkCB@%r~-coB; zJXQu9#vzduz{(5Xhk4GUaPwArBAra7;t!I&5g7m_wyIc$JRpkihlX>R%=ofAFPXWS z$qx3Xh6-=0l5i6rlZ0VXE}M>;Yz{|};ecB>;@M1AlxXxpQ{|LFV{dF3_QZM+W<q63 zd7fX8hw=%KcmGDg0^-KkqgQ4|Mn*gCUhE&9o||TmvN=>Y=hB8TZ7dw9aM+4s`C)}Z zPa*QfcaI-`@%Y>3-*uec+Ht;$Aa|;Di@5R<`Y@vyX#(BFny~Xd7Gch74G}f6-=@>) zLRHhr24tnxr4~rZoE}2nFZ00rSJ%<v2>#O;n<C`dA|Su#CwfG8-^ABG`5$?pAkSji zU<Y3*vcpRg7g}@{WKb5s5Psr50@p58eRrY_70Wjg?HoJ0rI><@@MJqLK6i`dgLt$X zRTh;y>QWDZfJM4=vNAy!PG-x^(i>n3tkrzwng~(+0GXLx#eCSDz_WNzMf)+Fz+(v_ zEA#saXy`P+eg)pQ>*?y(usudW-_EMqJ!KRa(f2ZCeDu_7v3n}5O1Y0XZvckw6k-l6 zI|PGtTLj|5g9~geR&1EF$C=oIlp%@}gu#K~HPK~MxBSTp&GrHz@?EWn@T_bktW!P; z8JUi7)8IU!yutb0L~=YebYVDoeGz%!JcF7F*aNn1rE{6+kUSn@#LQ=I=5n2b{e6N* zdfn6-2?*(ht|uw=%MB0533)cUE`Ag~H<g{prLW~V&j%lD;y5g}#bBPSHnAvr?er(p zvwxpMHxH{79<ow8kG%W2k<r<iyPf?5({sS)G^KffA4QucC@p^!2vDBoAkqsi$~I#M z!-2@-$Jmia;QP()%k3|tve~+YSj}WCPYAV!wm0Dsh0f?UL_mtXRAJW(A^J{$fCa3F z?Ftq`p9M=6oXS$p`_E6d#i}APV9sWX1@<`_*COhCUPtenD__3!Xy4@#$@Jb@mGw+N zvuvp30R*mw5Wl$rG~VpW77)@O0Dw3xQ^ef;qgVIi$33sMYvwvYs*aegZd0AAdTYuR z)w5}{*UY<0prhu|bG2OdGV78dn)w-!!j#CWX(Nv0a;PDW=Ae<IPBvbtg^n7Clg<M3 zAJ4tk`hD;}swMXG*Rs#w`t@Ksf@%Xd+1J;q7OPUviz~}0ZmXp8!wdOJnO9XyEkt^X zYWBsWmkeYbKD>?i?J!-oEu6>Y#Ccw*3`b1(Vp6>M-r;aGUPZ7g=8FNUL(!l(w?qxZ z1+T9xbjgd%7V(x3I>SqZoMs5{6t~BXj=vSyQ#@|f<<ZP7uM+@bK%Kwrz<Fl}XEV7Z zF;<Y!9?K)IqNsbwK+@1s>a)cOdEq=3InkSkO>=)=YVm!MDpLhk>DAr)=(XWodidIK z_5zScQQs2aVQel<Dd4p{=h5k5!BmCfvbq#bO%Z%T90bby91<23Pz=96LEf1sfBk%9 zwB_r!TKdv++{}X^E;ujCjc*DVu`=4x9f<MRYlN#TcsTUEc-j*0MPgNJi(608#RPSj z39M)0B4-n^Unquq6Csa&A~Qm-?D8J7S6B1qJc6CG1_pqTk2$@brO5l?+#v$pJCR-V zrNiixrh4CVYAd}Rr=P^nZ)^XQpFLWQ_0Uz=P|uD=JR2)h=i-1Q+YsC=qh^UEx9c?C zF}bHXaonx#Nc^hZY)-fcPYJDjH+H3KdlR~b%|ZKhUD|+d)vymMm`JNe9w&a9sBB8F zPnXIGi#OrVjy^oko@+9JCoOik`uQPf@yQAko?P(J3k^OWMVWBeq%f3t5cam>wu#`A z71I{GXu_>_01l2w6l7L<u}H~kx9YXTSSY0Qj`c1cV*_J!HJFdCV+H=3gcA!>UOe7a z95h;b=m`=LM)QeZcvpPMJVG$~%u$6UCLql!Mlf(&Wn7Bm^nHWb5LiKIni~R67{gKA zQQPvSk>zy`CMPo46r-$wyZ|AO@E{y!9P7FfC&m{jKn(K3As}yX@D3qwmXMc!%ewA> zsfs?}g_G~U|G~Ql(XO^RVpT+W6m1IT3~uZmN>60c;|B6}(P;#yF_mZ1T^<+~Dkusm z4V1Ob-=3Dr=AS<M@r^$$wiQ0U_;6-sbY^CuFFOa%F`~z5=DaNEDHIDdH8mB{iC+;r z7+V~^qwDZo?)z$Xl>ROhD{A770&!l5RVp(6O5Z@7)Kx^d>;f!GccJx=?r}2R!7;|- zqDYfq=(3bn+m|8l-vNisBy!EdcBPmjG`=#R9-X6v^XQs4etQ+b8=p%4aTV6%Sq1dV zxkRZLGYYazPvxas3Z`0hUDlUt3QNV5p0=O=LRDYuX>M25gp)`wq0}UHXm#JJguLqZ zX0Lq*Hx4)i<-pa<iJoe(Cl_AKY)j2%(%d%}N;J#3EP_zo7z{%Dz{l(Hj8P$$aRQkQ zU`ihoU;}sA{bIK1mkiIJ*RW`2pK7nCU$DKDSgum3w?Zq8Rk7&um06UsO2w`;1YzQi zD(2DN-XqH~IEKq4K@iBp?cC&K32epym#$*8?odVPV(%4XdeLB9iYvjj;ewbfyi%z% z7z{o&YqWT1y4_B}n~sICTx0RjSBA&#)wGs30lbT6&UF4dotY5irNRdAfV`np>KWLf z)-s&Uro#ow8yxJsgUtw>=J9**&KR9>>jL*aXgl)G+ueM=1sHinwmjV#*h^<}>2V`r zoYHuef|Gv3UXRO4tl}#59CNx9y<vK8c$RWK?vsCZ|Dv(2Qn1%~^YWGZBO}RFmc?UY zh)W@7l1m{JJ`?gB4s`Tl1-A$KV}9<-Pw!72VBU*F9NP(Kr;4|L)F|L=-5x@%C9<72 zDVUll+5{NI;GH$o3j1r;$dp2L4ZGf=ui#pSykQ$4$6Oa#8{+zAQFG|<%PS^&EhW3R zZrpfz@5tVce-Q9YQ^#+v0zDwl4!sId0UZC_JQ1X@<rp+xm?)P;L(F%wv_w&NxBWCx zqa=1Vw`*FWln|NF^h6Ij4to<C{YW$Cx54Ui6QdR`XR77m1W_&?5jxM7bMeG1K1vug zQp>q2!+V5$n7(6+_XfQ|mIbk#%+Q45?}F)&0*YP?@g~{|*l5B^GM(_J)K`{Tu(%R+ z7KMUNyHZJ6pB?LuEiQV+tNREoy}cz%_zrh}L0>_RBSL{=jdUq#Y#g}61SdQ11UFq_ z=w2{P8xQ75ud8d-#=)xHg>tB4J<_-FsJvbQkG)DcbKV)S-kt0M5f39T4?IfKiVAeM z&VZfNB;&Wz6WJ(UPo;pnvz=!%UuBYg2JrZ5e7nEWc%bp#y%)KMRb(m>&STUG^yo&> zW^!C=HT_d=#p$wR4Bh4NP_jq=$}(`DqWk7<-?~kR;u6c%hZjG-k&ibCfSt2fKAa!D zGM>tQLP;Kw_vb>M2MfZc3RHG%wm>Xw0FP3>@U6^UIIw*6`+rihS5XuL<(*o;g$tV~ zqlEB6C}!f^4i%QxkV%lob(Ug_^H@z?H8z^mRYR`{!L)?}&SOB{4}}RK2jnYURtl9I zh#4Xln{9BVByZ~NeU~?GJ>9W$&(^Ciy*_1nairsK&#!QzlU~m&ORO@UuxbBExIR?B z`Yt47-kvsT7O3K<$s3pnpnKXpiN?+CT5~%En$>hxP>i{$C$WDsah`TOArlB3WTMu> zojQ(Uq2+X&*@0T*nmi69p6$lif-ascW<hE>d|psr;bJLoO2<%w;qr&14+9HaPT@sD zT-Wr;Rw3+j_VLgH<$8V<4r8z!vs=r`%Irw^)JiDGtd(#e^IEN1ZCA8wDbF2Q`bSA` z$v}z0dB(AG^3vk?fq*6+j(4r$b<gqe1wm0D+!g-6kHy+1;$u3Ip)vh0U)LAYRGx*Q zQ0S!vZc7WLSOh^rcAU|1s0=I}1wtW?66UUdvMhEOARz(^7_wxPzb@d)7#AUA>Xb=+ zum*?9W(O$Y-?)oXcQ;1OU^0oT4;$Y$ne}DoX&+|xeCKyBXvUdhxwroiO}~EUeCM3+ zIFRj$xJ1$s=K*;G7keIsrUTc4z(J7RT=90L)JR2Mx`rr~^QNxNPS4^72#;{rQ&U68 z!|O!^id;~|o}sqkIt84H*k4)q-qUZp_Nvl~z+L}TfRI<ODmCbsrjM~~Q+Ax)j!_}{ zWzFy(BjnwEw86-u%NO6wU!31wAw-;aV?7MyeTD9oMN087D+J_mbm*}qq)?uhE;2o} zuAoeO1<SwjJLC8NM9A|bB-l!TymRNy)ww-Ub(sV)f?k1A2eC8C=60(;3=N!&JXm3~ z`-2tcE8I8+Wz%j|Igi2j-S-J^#TsH^sgYjV)_fYA=dLwW8G=8~@gCPK{l4}_Z*TAA z_b+{X=gql{=Ff{Sum7~d$$6fG*W&RsLV2;*+fDcz@_M`U4m%wh94vieP=Vu4heM~A zhZ=N8TFVX+@(6Tq%X()M#>&fwnh1H80~CL9*r?+mlPA!HGXy(6Fq=tYje>>s7o#wg z7TdavvRD<%MLst7<H_@VI<XAhBBt$RVSmIo@+~=HFvut@S8{R)ikOVWL%j5a=rGf0 zjxp=g(%9b}p6;CPC1=N^IUME~r``;2li2F|NuN)E@0P}TJ~iDF-zd~1@EzJh-z|E4 za%4+I87=LDi_36ybal}d;EMV<Yr{%dnBOM$X_u-#c1mKmiDB(TT^oxBMn@^lGwFFf zGdDRnvk8MnN48T&p2ws&K*+m4Gl9_WLZjNWsR-n41)BXY6$1MEW@df;0(fxl8R)rt ze|36B01prfZd2vyp|c0OyF0~j+Rmqy2M?aoI8Uuhj8L8@rXC1+GA6I$OjffM9@Bb? z-{b7`Ue@R4Y&^QXg}l!mU*$<|ZAE&|^y)uCSFX%8ZV>3`DT^D6cMxsPxVb>!v8AGp z$a$U?YbtX9-s<X|@$uCsk<HD`3d#l(Qd0}^_A~SZ^JUg~K!u6>Q5EDc(_Mg&lQ5W= zXr>Q`WOjo{#==TWEm*k$pdHBjwOU#Dufe4i(p{a)wSx0fQqrex{+RKWKWy%7y>a>S z=a)Vy{`gsj@=4RF%f0{kY2;;P#l)ahlXq`1@XEa1$wN4F8Ts%_BQMu;aE`{4c9QN` zgZzu8rgE7$&)C`^OYbwy$(2x8EW4WyGkCa7Mf9_%E)G0@XA!;BOn5r6q(mnRXtKN_ z3h5S$Rz+tGRGs|E<w*pDpT-<f+EaU2;AjiSBQ}13rUKgI;1d!j8aRz`)HJ1;O;~7x z=1tVk35;<LM;f+Q#!1F}-*A2OlFyf<g3iZO=i?9)3d=1Y!EVX7O?s5<q0F#!-iPin z@EfIfY&JI9r`5#4dl~iWB}0WEA2S$=iEL^MZH4}5!b&3FT{S#xVXeyqyD>QHqg$Hg zX4z76^yC0@-oS%UXf_BpK7YptbM<afQ%DiWd%5_gb&>^Uza;z!+#y~KOiwS&2;311 z`u$@Uf+9sscVF*%E2AQ@l;f?v@uyE6sD<Mua3>t9=Vli|VWDk`O1hphJSTw<J8m(p zXSZfM33&)Mk-!n~R;JM@Hh)zMIIqrMeDLh<mG!y$H2@Esw}$IlI8it`*(y?z=eZPR zs!^E|19*4W?yan>j<1f7uS^ebZn`Vnb)Jff)QVJFUO|CJA<TmG>O7t(wWEc8jLpON zE8#>h(W$pvckIZrCbPl`&a+zW$=GrGQl9tD_Xce7WaKH)&9Rj8B_zDQqIYw7c{#d; zJvMt=dkZhsD!+?uDlGgt<h`3^V*dtSLvq;bZS{J+C+IsJE4^j7^#%upybFk}HVLE0 z8g#m1iZqY3>MXx)YHclRl6KRf=?|3WSuEXj>eW1H!G2<E7Yi;%E~E>mBa{e*oGA<U zK%ELh88$}rm*uj3Cy({z@T?G_O2_$}R^rRi<r2=gK~rbhC*&6bVP+;6FEbOF9|ffB zj70wevsp4@sxVCio2u=Yg#0Pn>Cj~^O;!&-^o;;wK0wUJnhK!C=TKDuw}<B+9zTyg zTXb@sPUt>tl@;_>T7*?Zeb^?XC2i5_HfGg~rMjp{tDFm;mRCa7my3MW)fSze2R_&X zRYrMQFZvRIJi&Q`w-*+k)b|I+h`#)Oe|zTsf{F?tPo+B1uCgt*)X#<|`ui^ccmo`* z-X-+RG7I7^Zo>9+ks&?h@A2^;rg~fk$P6dCx(-)1)4NarkH-@}2+Rfob3$P8FVn|_ z-NdWh^-Ru^WVb^_&dm={u(`M<g3V_@-c@ed#Mjlw7oT03UcWIh!GR{kO_o_UHiiMb z5*2v{)ECt>uPCq~Ol}E!E1~M=QLc&zy2R={HkSu@1LE9yZlQC!5rNwj#U_{!W9d<K z@y>Q@ve_OJvokAehdJAdN**zueP{bC3d;{E8HUbUru^!W=C&$BI=65t34^aeUUSl^ z!mXX@Ct?pBD%@2#{&UghyU9==9o)sDKSD@5W|h0?Q2d5eNr$p>y^ej|S?Q$zT!@r< z9tP5hEwAz!CsyLgXAa0>-av9ZJ-~nyf~G9Wc3MdtzDV4d$zGZkwp!uZfiQotY`Jb~ zphQ^@z~aVdeu8jYfri3<WyEN@eYs+D7fUOdoa0%bbi!deAC@d~oRp@IaY9*%%Z43< zWXj&7PcuWc*khu^&m`rH#8wZ3<B}k5Ze1oh)k{L$=_4ZKTo1rh%MG_E`<p~PLBOV3 zh?OrXm3x<#=v7HR`XTfkuTS!!1@zX4&~9Sc6>zdebq0j@=0~H$JZdzY%SKZytw@yR zIVHUloqZ-5+NPT6Jqka$HZ?Vd=II)LhqAAH&x;p(O0<%lIt;X}b54ZrUjya!3=W8< z>u@L>4!Qb4cr}E&LHg?OGxE}jJfkSQav79h@Q-KDUcY|05kx8)J_)8ButEAd$RcUY zGS+Ium|!VF#OD;|e<&;DR!!VqV?Yu1KKl*NCx|u{T<87I)^DtTQ6E?o!6s89<#}t9 zLK9)+(eI!%PO0r<pN9UXQr^nyy-!P{6qgbK+#(puizv28B;wAi@F2TG-&md}Pq7j7 zJS9qr;5^FuWK5z{j%P(#0rdqqZ_<5M>7SJ2sS?XOKe&kCIL%9s@-27PYs0bqbFbsP zwifh{0(rX%TiXtur(5f9egikf>3jeB_v`XJ^nQViu)M3wJG7gCb=+J0wnJwj=#@iN z;q^e0uq6`Wi9<AbVRlv0j5axSV}DL=ismd%v_WgqCbSa^&(s3AoVTg=(qasq4Rdv3 z2{USSc%1ja%D71(X1;i)Y9?(|p$k(8)>ks&uZi+{zF3}zcvI~vLtB6ey&w`+crgLS zVKNVM=`m?(PRS`*Mked~MjvvQH2PQwa4m!l^>mVz79RtU&_jn7JVtnljvf_70oSWT zc!KfzVkgz$m2r27uBv|8(lXh}FOQBLjUE+#w>%5Dw@=svR`uoZ))<qMVq&9HxO`($ z!71m~oIFaLhlq1#VKp!}HaIXa*yHaRbH&HI3?(nVb!{bXm?I$QiQ?YW)WpKVm!-im zjy4Agxit%++u=|VVX=l{%?>f=&dp@>9`n#gyr;^OqV$a&FE4-ZP?sC|AB!^sCx3Nx zFdPbmeFQvz&EVj2uB>n8-e0G+op2}F>GO?krgOjE5Wrjf%l+wj!Flr<=gs%@JoszJ zTrkXO-r^!x^-xcr;jy~B3JN0=;J>8S6hxAzB5!53k=V`^sf%pV)xG)r`KG(>`DP>n z>T@&w3D_x00iC)v6S6278*Sk&ZH=Lf56hbA7KNN<X`A!D`}6-k(k9W<-Akw2It^;$ zbo$)Q*C6jq8$oWDxRk{vRnqyLn-l-1>-u8ay3eR{$-TpWFxMACjKNMlv(_w8VXfTE zYmt^rI8!<dI9-r37J;Zllp!b8w5Sq)j8w?HO;tLCn+c+zNkr+AMOzF+fsm$?aHVP5 zvJhzx&7@9De(1v<rl3mWq1|`B?{|$u(hG%@kOW1XobS*1&Kabqf8xPMAM8XPa?%ln zZt^{>9yq#>1xx4l^CJDow>Uf&^-h2%n}GnAkkoXTJg}7eSUw42k+fPr$Vz}+ki-g; zwPYwJ#U=?Sdrr1-=NeWyj#)fjksx%r(^EyLrTqUQ;)v7~k&_{muyU!ux=zV2LB|K= zwesi%Q_m3EK7yT2)g{5rs4(FE=hK6}y&k6rhYRQc4eIlNyvb8Ua9)8J@Ztqi2}{v? zklbx1EW#rAiS0O(U%4v4`NKs21k5*2a05uMFRJ5N$q$n32FWmK;1*CV*zrX8TEv5; zhi;gd76zaWG29VCo{--7jm0~EyFbh=-|+B!$^m=Zx`a$BWsX9<8)FaPi{HF{eQuOK z-c88MW_x<>FD@=!zX6AK0xrGIbP?%w&G2S@Ea9qmwe&aCyGG+FS8J-K&BbF;0p78m zGdGr~-kd+*jX!>n`n+_|57}5PT*!jBkcEsTXwC`p?%n#souvg;Z1Qa$u(z<Vki9V5 zx2WpOyDW8CTV1`*C`s*M<hf!oTQL3MDg$rj*LPM{7W)W_i5O8`Z*O6vP~i362BOjn zn7j}KUG015Nl}-VdS3Q<2v=}8)3q$qgm#76JGhP^$8uk7@QY1))O2(6cD?O>l<=PL zPL|wQS{^=&^S;Z)Cez-fAx7Sx9#R#$%+L7KeV&h~j?=bGzKUfjv-zDLvgs}TW%3q4 z=c5FPwd0W`@0FB4Acvute4p-?%XD1*P?gE6JDopZatedV02PN@l(6>7j<57IiGJnm zJ5Btgr6trPypp>?%ig9#C@sFYVlxI9wqlp(=Bl%)2^)0)FBA%4v8Pkl@1efVUtPiD zO&>PXM0R@*7%<?}_d0cJauOb66DR@&YC>>$gPj6C0^ah1>vr#wS!7k8oCI<6_VivZ zp0s5y9F%~!qj*dBYEbx!Z+qUxcUlEnPA8%Y!hXMjGlig!IWHJ?T0kBez0CN{%a`wW zp=G0IJf1oMU2|%%v??c15Rd>q8J&z?yqp)=*vxP?lk2#TwC1^~3;6Z8IU44g6N46d z;)%-2lp`6hY|F=LQuwYL<4}_s0Pk4O&85X_i`S+=xS7nd?!lKDroZ7@YMgxjFgz`h zZPN5%iSzFKW5EWVB0Z+P^RrX8WWWOC-NV7c>LLb_&}|}wt1dPx5|;S2zjLigFDolo zr)1W-4iOo>>D>@L8NDg2Z_vy7daOMK(o699lx>FO=nWfbnP}ob_8a`LavHY^n_F9( zvRT;lmN+kQ@r9w=_KBXWf94s;1J-QLd-p6?n{Pi@KK<sKm)^T{<;w4NBCq<nYF#`W zpz{hCd=uOF&dHPK<UGNYpJK|gIC4b!tZ@1eR^P}JV&$2MJv>Y^IYAa?wwS88m12_z zm?}tC!Wm@Jq5@20TPGDKyj3DfFD613)`)3MtsIE%Hd{5u6-UN4(NDB0TL^Zw<<vaB zM#p%CI=v`1>n7qUtNjLAx(a%&sP=h0o@&CL)A0Ba*X)e^LL%*?uC&*APj-A<VD46a z53H3glZM52@?Jc?Q!dt*Y$%Oek|l^G%7xP<za;wgCT9qRq56kMHbE~aVQVJ!dASav zy^d^$EYvd?n4F>SRty1BDHj8ez(vGJpO?)J&oK0!IL(85S=Y^rmoHA`XRxGDdNl6! z#u<HWvAW8(cr4K{;F8O101tb>Os1zJ^WYk)&8coC+zAt5d5~*TA(w{prazqaSEqw! z<gRM-ZvExzL!!7Rp$Fv6&%Q6CO=|F<tX^GRyR|49miG1($KS<Zc@#S|w<f@&9&hF2 zX|>+lC{me;QnLWU+bH6Op{h_U6bXEF7_KntUb9We9FE>JE@L^l%YL^H7SoNjxDwhF z<l#!l23~#J<b?NC`#Sc}bp9)lr#SEHBR?7X8NDAFT=wz-;mE;}Pu0EpXBc??i`8Qs zFp1kbHnSxdh2J@O7<)bVL?h*n6PY0`VSNd%&^hvslhmcnqmQ6v13;Bm16V8|{thgX zmUDGZrsPHuEM_vlDW6SA?2@wuc3p|^nXBoRP%btT69adqMNy|Hr?QBw7SPUVAiyTI zPr!<ue`G=QZ+JY0;n6v;d9UGdIz0w3NME#pge)^6YOm4hNtv)<rRV*9nW|-)`#O}E z6HHuHedR{dGMp@PM0&PPQ(-Py<}<c!!nyP4$bvzD#}f`XMbn4rMHuXl*(RPGfORa> z!*rF&<WmhXj3Ql?DJ}{L9=Tkuxw$jfljVu!yfk|XdE?nE{d7kTyTKj+ug6x#WC_Vc zl^6OFHI?5SY-u<&Cep>q`my<$VIsWDF#5-QK0lQ|&y<&0ZVKqWuqWt&uRFGRn6Y?> z`GV0kd%$w%pTJ#twTWk8W`6b}K805gt5A^<NiLx@d_Gmj$g7*h7Cm)nYRyhDA;z1t zFNO$dZB$vVZ=l3Pn@8M-9~X)J+NoaU_%6ZSYi(@DqNmZ~@nnT+PGUb6an|~w9{V4W z-WFAy^!ivd(%?Mm^Ilaavh|~%B%f7nZgU=$o8C9*$0H|}y>GwE(@r4oqn3Pr{^(Wu z{4<V<=e~V_lhDP!oi7yhb674MJ{b;Z0dWCzOH5q=f#;wnT|A%NLRG|e0v-6b%aBAO z5iD5=Xo4tlW>GyI?t{c<MdI^J+?#8-Rluk4^hEv-UJjP+D$P3sA~|R>#n+t;H{E=g zhYw+o02jb$h)@>_5$r5(^qL|tB6RNc7)}GIGdQt@zB7pIfI4V&v?yS=iw7!%HreNK zwQ29wPjBOnE5^Rksv!B)RqNAqS6VD2ZAa<SuPL_zd{RBeW~VwQ%5d#L|6rh%)}jh| zf;~b^CWH2Dpn<xcdKcDT*fVtGI&+=P%_ZbvS)fRdr;`LY24-_k0GP{m;P+$TK@vJV zGw(>m&bB0Cv$OSW4%Aspd6{Dws$aW_G&A&vjuY_dWjR9sMtg8J4;_onn-Jab`*qVQ z6`Ozl>%wmo=l!<Cc?&?^Z9(4MRi14U<*i;zP)i2cW}U0D#udXlkEbi#<x#Eq@nwdc zV_+cGyWX3i;<7;CE3_7>Hj1BbfB_kK$P!X%3KEgdvT1j^vC;1dW1UX_!FkgU0e~;8 zKSs65(ED<8^KrtVkmtC4V(6EO^A0`!<0l_HX*TvyA<yQ#gYOL;R>*sOH-?=DM?QPl z(dGKu(9nxZ|2dN%a8y*oV_IBnCGsGkIjx^!ov`06rYtHrHo#YP^xlFyJ9lEp)niIy zj~3WabKa|)2cK%BDV>~J<C#)gO0{WPqK>wBoQa{QB}!_va;(eby0g_1@wC7$f;c^> zH2F#>%J;D_^}|pz6y>2NrkolIOdf19@L)&g4DewdF^6IJL4K$<J?QUnnC^5MT6A>x z^jT#9F|7(tTS~^g-TN>@8XavJt-{h<b!loxR|X{DN3mUl{hBOe$7C{*+%|OIc44up zugn68yI~Ckf(8#NGRWJ5PLq&_hp-~}1NMf;&rofM>&=?Vs@QyY55cap6QIg9=Q<SW z*~R90UJD2#HvfpB#}ECEITVjsY61z%7y7^7Qk95}&5yZSQbYi*7>1zS40a7?fa%U- z^kop`0eO&%;Y+1@lc*2Zd1<PSwWc+J)vbGrWyPj~9*}oIkVh}~nH{OvTwR-z!6XqL zB%`qy)taMsSJhmTfHzk%WogGUp~$Ct>+8L}h2rPMs)pWTv9PgT+~}>_gUfW8YQ8k^ zl7s!Gb$_Ejo%S_W0CVB+J{h;{Ype)<v8A5PFSoY-U9y)>O%LvRT|{-2m5*P3`M*yi z@AMHt9pE?e#t`(=BQGp_f8IYba^+VC4}RM1a@DwoP8~UNsv(wgR5Rxx8;|8BlE<ZK zKR9{#doqB;Alq`X8JULhW`JWZADuh;7JF@q3T6Mf<Mcdw<rVGG@#Am(m{ns`tXknC zpf{ebXfm>NOOlW#IkA?+23g|3!n2bmhNVa{(b`3$;^!_MVMHu#p`k`U7m~FeQ(K5P zco4W)R!D1=^Pmu*8p46B8)`Abr}N(2I6$=~6`nW`BI@%&M;$Pu|7YuZW17mdXnEza zeSJk9v|y#w+O$S+CW@K|i*6GbVlnV2+5*iGj5Uy;U=SplCL$o|DoTtKBF-NtV>Z!@ z8M6s8vy)+0+)0GpY$jQEFxg~6G9S7j+5NcL#ANrwxcA)Od$j00EcDN7jndO|?>+aP z3q|dYkk@{FM{u8sL)<PXFw?s$Rzph4;;=2d5G;W_CY%FPZ&RM7rRNt_EPKwThCEY= zrjUksz7ngukPM(o1&eRLQa06&;%2)AI}p|6%;M4B{S|OwckfT#Zcoe;<;^GB=fxF* zo~Uq|$~P#FNU;OJBi5@CxTDkQ#hCG+sUQEoXMZG4DI=CYVqBr&9`;n8hxV7OsWG94 zXCw!tN@Sz52#LMW9?d0QA=c3eQ{Vj^h0Q$ZZ6a^t3yw3NKF6p6M7`z54HP5B%NcoY zCm}xGM2yFjhvLdtcXRXUP5|!J2Gl&TUNw+M_~Tkjw%1wC?V6ie9`hdDAc*aD(RaJu zi<#I!iPuxLD<~84UITbY_g>%Fv~`aTE){lKwax!7EWH0V@(R14=TS<BAN|aE>7J!? zZF}p-Kkl!uPdCypMn8Av!o}(0XdHQ-9kb-xroA-l3(8ot#6Fp*nMi11;+iL`?L>?% zM%{Y1Aqk@h!cs}yx=~lx+}*8>wyf8UT_RxB8FiXeWx#5TcLcF=hd5HRdd0*}E_N1E zHDR_AvMk+sOQkAkPGtj4QS%Ii1k}W`gb>y+qa4F+Dm+Dt1~bg>N#U@$LpDt4rHGaO zB`&!LJK@o};;|C}+9~g&;H~ssFPb>FD<Ov6U9s#ASR)ATMP|2`qs#&hGmAyDS3Z>9 zbX2jjJKq+-ZJE!rPHSlRx!nu75q0<n6V8aM;VzARo0JatgMKMAMNGpL7RDb}IVY$3 ze75LOr^D&ieW}ahaU^;PkRMo&3zouh42(yQaV%QH$P>JWSDP0=Mv>+6iL<^q295~N zI@k7z^UgE$06cnnM}m=;M4neF^U7GSA8XR-r)QY5JVmV)ocHwWztntW_KxMShY`Ko z_a^SIfasnrTV<A&&rpvnM~-*Y>8x<;`n~&Bs7YUs=km;uoU4p6)KxYZf7uO=HnWH} zS1ZbeHw~|9My!cMPZ832l{Ww{mOvG+6N2-mY;hjiHm^9$u1(^+ZA*n0cbIwJKNb!x zh<45Pmycdf{p;n+<Al7CGXP%tQ%2sA5kg-5G~InTT|a*7A!T|k^k1kqUTnL5vp60{ zZPSjOK|(2KlQFh@HYe+N4FY;PRkW>WvM5iM7!VtbM&(j-YwJ4iDv=DoB6W9Hj*d!Y z^4Op%jWxFdc^t`#J{8H_*`=CMCG-h%2PI2>81_N`O07Bkqp@umx2y;!+pt+!ku2do z4E-FQM<6@|oYi7BHWaSqfRlTttKse*4pCUCD5VP4coEk@Q|FIonA|FGLQ-V4`bKVZ zG9j?Aps=ujx9Qzsi5m;gGh$1+pfjHZD02gzRW-5pcIDwL$Bi+|cx7`<-kXLH`Cjnh zFcz@#=p_9XT<iizhhJ6&=j9Fv=_iVP<>=XT>bA&j6kG^f1iTL7B}U#PQav0e(7}=v zgjX{!E&vfjZ^kUO5Qn0^d949$FcWTkU^nS{>;Y5WCsPT2)eaMQlgVU8qU4#d=aGk9 zSQ;Z2(N!3-AkSk)`}&738EbEH-sNle98Z9}l_x7=T!DhkyGJ1glvfb)prp?&&Itvb zf%m%<L#|l3AvxEwXkS@dg{nZf0|HspTYHDlw+bI5sCXjN;{uCK8}?M~_SlK$pz8$y z!V-H)AW*9OgbWYC=6^oSSU!K~9y^yAY%83eKHW$G=#PgEEud8SXbwtU-#}mAQVw}T z<4Efs-WnpXwbI@1)z{w|>QC3F2Z6lqw!@vB#c|yh*tP3jnHR<4(^QtZ!mkL;fQ2?? zbM*-9#d)+qS~oDKvVKV!8&jGMVZLbuRh5xPFLkL)eaEOY4rl>G^h;xIL8=sSrey6| zX8U*5Tzqa;Y|5(Duw;6|3!vg#SmTu?Vnh}Ox7;F)*pmw^2qx)!ZI~4Wb|vFUqUxQs z-0ebW468Ec(d|Vg(9-=-@L(8H%JX?eb~{o&Erborh$scn%p=2hptB@X%<aq^Wv24h z;>EVE>WXbfo4HUl7iZ?DhOzt#=g%HtY=cyI;fex95A*X1b_#`$ThV5FGQk*}nVf3a z7j?Sb6$HLW3T6L9f{;<emzsG5g=llZde<p>Fqr`GI=Jvz!(aFb7|jrl&>e%Alb(Qm zL)S2zhha6R?;7K7GQprT`HqhPl#jhZ541;cUXd57f|$<(^qxNb?m2g^{AN?p69*x0 z!f}_twzB+U8Kg(2uPooi7NB?q8lj2w7N39r-0WTX!|(s}MUL-m$n!SVqQq~%=*?yk zXcFD6LR)~Gw>F&3I!%-5i0xN&>9Zl(lL>IUDZUiLvBG%_d7dZu)BhG;|M9EGfBoje zeZ@Yfj_sc<#g2VPx^B&O7N6bAld=Ve78d^fXfc&qD)vQt3JZGNQG(bhM&83A=Dhm) z_bBW<LU&(yIR5F-(Cm2sNeUX=Ez_NC*KPFK_{-fu9+C+#AD8`wEDrmAP37x6r@+Gq zLWfh=4NS{6cWGk*O)=O_Q#FVWyStUqQNmM8tJ-quWOt*s+h7=Tu?3}=N-oIo6gqEN z7i*bKjG0@S(fcVXFNDBaHH^Au2zHuf9F6is5wFavEfZFo;aWCq!O4Q@s(HT<&+I`+ zuZEBwQtb3;;qrS?SV7MU8p*cP4RlUJZJ@WbijER<>8m(ySo_K|nE}r4VyRRrwN)K> zo4aCLplIF5tATEc=Wi57-$q`U#-2w(#k4?z9Sg(-t&F2h1e;K_0f9tvQoquG=3<Ag zA6raxn3RM-lQ}QJg%CcVL?8s62P8#`*TK-EgI<XFj?u?hC5}81(f8OKjvaa=diyv9 znoM<xc8hl>5!Gg}^C%efxIBKBrwF03Uk(m?g0dP~5zzbm+dLIL7i@m{$%6^U9FT{F zcq<@1dO{}3V%|}`JWAl3d-mcPBaeXh`Tf3Vz5`&Sd}B32I9ttTZL1rv)_T{nYr|`= zvQYW{N$_*WBL_iv2P2WbgBItxyaYWjoBm-uJzzQ^5%OODICyn%+mV5|<8-0hVe{>9 zkBpot>}oqVc%id(M8|-7Y+>Qh`;VI3`chwCeB@+7Pt->c>k*vSKR!D<K7Q+ip>#S8 z&TC5(^7?1TXGf5LZ##1H=JklKqld-LEAn_9VkP_9icvbq0FdBtFPn=&9fwd*DG|>R zN?W?6F?tUe+y|x@be`b6GO4RYF<M(&4gYS#?A(;hn3Cv-=ZDPQc%o4{B#C>70INC5 z6q5*W_p23hUM&Tl%y0y^T6zhd6%t5fIgf20cEZ&bDIkJWiQ8AIrLvuH9-~LqA{V7{ zE_><rpn^EF)Ft~_-a}1^f+X|+WUiPKa{DnOmxn>KyUUld=q_f$YYXO@^7r87S+7{7 zl-zae=?!lMoo}G8T9f^-`}1oGyTx$#0*?@X%Sl`k@BMZLUZUfL^K`tz;U@4!ZHx0j z2H;_0FEO96;zFE1Zvu1P`~%2Ag1|{!Vwq(0%^>0=@SRv1*tgGy)w2)IA1A`2zYS+{ z9%){Z*y80<uudT;2TK7$f3Otpypn~yA7(^-Weere&D#$qCZ2%j7N5gx6QaV(atw+> zc^ot86mrI%efHwn%AWzezh#=Nu?0bS(db5RgwwiJTW|K&MlVO6$oy6berv-OajUQ* zw&;QVG@?5%)I2W+gaXL$DBCNk^2)#c=GaKv$7c$C`i`EFxXl<q%XnvZy8r6c&icdG z2axj}Lu=V1!v9jA&$r}@M!7%i>@=t@J@mn;Q=JzE2KVgQGl0&q&T(+w!|^nb=WM)q z^Jbfmk!N>l61JGAFi@pTPU77`%zvub+$wQGCW$d}c=9M?qmt?}4ya><PJ<pLv>A3) zA}kW;X?2FY-bzqvJy2z^sV1SWl8sXszAWLvmz{}BwYpaDhWbBU*B8@No`pMw*8YXd zEi$E-Tc&AeB$Lg+>Q+Y(gHEKIkyhuzNWwzwrY3+fmBE;p!CC&qg$>3GYqFD#7<`dT zGRAEDlZlPAV**Y#`{ImGn>FD9@pT_3*|$C4Ilo(5MsK0eYg<U=>v#Tq=R0wGC9G52 zH6a({YKpT>NmF!GPIzxuf<sNhS(H0_tlDI4bX&BI`wMLZI+Qn~l;*WXo$dw-*CJ*O z{(NiRwbMK=CAa~!pc=f+IDFc(<%7XyODdV~RDze;xo|S`2GEp|Rc(D_WZru0<U*W? z>k$*dL4e)@>5YS}yZsTY+<l@7EJS#N_@KZ3pFO^&5alJl-rnr_Y0<6_ClWu&1%RWx zkIC)?PXCS3*w4JlSfpzpG!1+LdV|w~ypvO3FXxP4_TcjTXE#nFd#oTlInwEZ-*jVm zKI}EU^fJSFlgH=1PJN@unciKtl;-2_W#Kebo41z<c^k!*Olbq^PE=!xgsu<J%{vzI zP{f%jtv_2St^N4;@lRRCofwhr<vb5s6@->VeGXQRJtYvLzA{V<xRpQFBn<`0^BjAz z(#vdw`8+XQxTd8wT;D+7))4$^0<PU2W8}=WGqnZFQ#aOQ3<XCE!SOR=moI<5aPh#^ z*-76nk7x8h`}XboL#~^UmxBXvlEs<h$01(1bhNWjJ7?rl7?aFNw0UOW=(VE*ANsh$ zGBB{n(dNgk^+@p$Q~FhbQ}ZetT3C+pY6O;XvFe0f!@R8*`uh5MocaX<&IRrbc>4mV zusD0@A1=JFU3fvS_x`?Cy4B}bJAruU)v1<sfx<Yb>=5MXEPj?GE-rZ>iY}V2tW@Go zrB%@q3EmH@%L)_3lsXS8Nc)Z_^Dw0V*S{$4fGIun8IT}h<iZtkLz0D2Z)jJbK_>o- z1OomxL6;%I<tz)mnB<IdVpr7zICAh{wX4y=iX}ni1$uAT9b0}LI}AOzBjJ;_1O3FP zE)oY>r0rsR91WR4{7IT|C7%-VT?tud$CExvkFqDHrzE75BYgtjQoxDN6KP;kP6;g% z&8fT6SH)o*YT|&9Z06+Dc?e+U&x7%*Dm#N^<}D<6*#<jeL!=OMg|UeR&Br1kZ)5FS zX`?gjDu6dN_4WMnpH>KY*Y7j(xEk}_ZuXbQsA03uN@i9zOV8+8ek^`tRoT1`=ZqYv zE&qIr@P_Q}=`eQ}AfJvtr!$}IZc^$M`Xu<}uvEy~7|z3WtRa@i_J{WncftlKU?zRR ziKWY{BZR!vSQlv3Sft?b^5xlu$pe>W#|%pRk}v=Fa`PoUQ=vE4?4bl$MA4sLU0S-< znL2J6hGl$&x(txFcxm+=M5E)iA)m*WI^NkiK=~u0&EN3mJl=!OaV4||?AIr1OSW3| zW9gm7`cAgR)XY|vcoEz21_j<o!X}y#7`*$rjbI}V1stWm^ed^R#vo^YBiuM8lVhPK zdInNAu}9A7F>xuJ@Q_dfyGs)B4%xE6_i;-5oM|zN-g<(E((!FVj|wE&w%6-!2q4xB z5Y1s`(_LfY7R*K6K;Bo1?AW$}r^F#~&dLpy;Jp<_l>y_C>b$R_ajwWLQxSk>-tuJh zByA{q5lfqt1(>E8;jsnGjWF`mVOKW`?R!3)*i$fapUrSCH^}j(1cv>LHR3v4^A%%G z?vXxWM~`VCL6y95jfJr{brPNP^XQ)Q<G`gAz<Yu#LLR-ZnR(Njr#LeJ&I=O*5)CFO zd!u;s+b0iRGag@X{Cn!bzvh>h?`{;=Gxyd@Yd?VT*4A!W7<R>=0?SadlmV7X#nSpp zrV@9=IR!`4@GIiD;jOKwm{Wj+W$P)E;4gH3>%aTEeQZvHB+r2l&hy;)7NWfd)L1Cu z#AJFSDl7rh=qgMsU0o&4Yd%+t7N&7_th1Anwb_Na16NaXo?ef~x4D@N6&w_8S~++k z5%Ss#g<P<6Vew*J@3`eag_+f!D0%iw5Ylo(sao_X>gE<NE_8cBJd@7Ngb3HGd8d%< zCSm6lsb;&ljVH=z+jctQce3<Fhm;d^7EznOWUq*B+lm2U5x=Tl>RiqQ_OQT<DKxH3 z{G7U1?dY<H71&l9opX)dZ9BM7$&={}OW64({K}0pA!F)_8WX(HgqP__+kxmW@~+#< z13{YEzzz$h8Rp(P*3pT6tOE&MIk6+GUEwHG#hk&fB+XMza^}ZurW!0eD=k&Rl`7qI z_D#WN)h)i+K`2W==oZ1ah{=LC6Z2cTaGubO<a+7zkWt>B2kw{&8CQzl(twvBPT|gm z9j;WtL<OkjMg@}|H};742zoQ<MaV-21$fix>9qYGFiJ@ahTU8mntEPu11zU0&&#`X z0Ix`C-h&5~*rVgd6mi~z8}rMz?`#xrEw4X&w$7U?*Ve8m1<NrAz>|c$QgQ9h-IbMF zGNoq(3x(0qj?wnv)~L@xRM)+`7lT1hcX2aM`U<ap**d(P+V5yWQ{j+Z;N%UKSe*#l z6}bL|W9$Wi<w7l{d3L~<xOr)5C`fr8i#Cl%J?H8k5$7#VUR|yG)Og3|@oc_q8tQUb zxk3`i^Z3Ac?N+dJU~b`4E7%=`$G6RS6s=lV^ltSwhw7SpE-sAi@`Z@=Si{0Le^7v- zs~5p)O4vT|QcBpYvS*PfD9~-^sUb)`H3o}~NRg0f&`kTeL@MKVXeh{Hb8!{(vIr9j zGdPgJSWx$}ge9VvmnzsZ=@N!&aE}&Yi!K_LHossmPF$H_ji;<qh>N0{i<!WmQw_;d zI;h16d8{gQ*VM-X4GlG63=P4CtO3i&Df~>73n+*-CCIEu&axF{%uKmv`TFy<BvWAb zYj81&l`pl#vsvE1ry3Pm`LPo5%I}~<Lj<E{6DtZ_-k3Xp<&}Pane!y#>=y)1&&;4t zha8O0NInM0^_Rg`2|Go3{l8AzxL!FuD5FQyGcvp|V<(Rapwp7zsXXrrJf@L7y8?|Z z;aC{^gks@5Ax|UDD;6J?B*v^dxT$bs{`UPl#nSa7>pvIQOE9ATe$8MfCk&)};O+iR zsaP!DdH9eU3f;r)<EMv)PLH&<n(sGuhlaPFZ~gAj-o0NsTWVS;&+8!YX<M%jw|qCU zz5i5?<Cxkl1o2q6SijS2ilKDa{xvq%^S}@$7U~;K3TA7UR+okfKpq<B*;LQD)a;p~ zr$#1^59I35TDR_P`p&KzRsoy`Pef2&!TSBe<lJ1373{@c3U0wWfV}pgMY%U?@6I*% zj4gD*#SqA=#~LA}%4N)<z5<=5<`<zQ&muTkje=nzi7utTz<YzdPBr?2L{az3wi0=; z=2tUxT&78Ayfaosp}eh&b3VqW9?`|}2y6z(ipWg2V^W=iPSBo{S+OJGlx1CQLXB-K zm)5zb9_7MjGz#xOH6H84d~}VQ0=60#tp4y9;^wt^*wGW9zi3TYXt1?m%8bZR(7*|s zvUXNZD&;8^^06}E89W|@p}Z`2;IsB6`x?@?Qw0|J3lD?D@GFAwpxtzP{eehCOFRKb zDd6=3X#MJzATceumwl9>CP8L@CG0rJtk9ypu2(A3oB7L(;=93WbTZ*h+drm21RV>z zU78sVgx!Gvz1Z056?6HuB0|N7Y1KowF$cQic#}Afkhh-kTz^LQyz`I0{_y=n1Hk)$ zf=xIOd90OE@h1%CJ^nL{YIntcd%CfH<dgSenl?<xd;Wa*Q19L^qu!4XZ+~)l`^AfG zT(-A2Cr<q{l^V8qy^>vE$+3ndpAY97xt<x0p{>x^!h4&;rq!FPy|#LDC>QelQF!Z7 zs;*~tU?EjI*EQLDD(MLso_p5|V>cZXWF{GTAp%&iknASBSzlO2uP>S8T30iQo*(VW zS<s!*&CnOkbzKX6K3^!Lri8@SPe#g7JmddxZmJ_=^G71Qzb3*S?b1wldPM+@5+t|g z*pY?DYXOu9mq#=eKsrUVqUxL)=YSZR<qD?Xo;v4g2d-@Ds_lSqGR^^HoPQASDUn6! zIKlgv*%yf?6!<IaqotuIhGYO@f=)YYOc#35N;nM#ClAVor8gZgUAiuwd|Bnqm(5DB z$=RP+gq1ldyCZmf(;=KGkC6;gJ-0HZHrW5~|IA(QZxi<&HV$X!e7^YXIPvA2i+!>o z7NGcoh!xf*%7id^L$rBPBC<qDlub!GWVw}AO(5ukK%?(gG%?mq;nma$6jf;oY6uCH z!Vi@fOQ0{x<PB*huRHBO*ys6t&LJDDTcN7B;NKVH*naNw{rq^IXX}6T{^_#1m8;_! ztfx^H3KQ}SOhnRRli%ZQdEPhL1ZR99XIqi8cFn`=J6K9?bpX9K;Ly<aorV~8HH4pK zy$!IW=~X&q+eDRxt~f>(8QSXnqE}YAR0H1P$@9GEeE;{SKbn7hp}ytd0_AxtH{bj4 z`c?RD?dF~Wh&rXqYe3$O<r_Out9G4TV|yc=y%9S*a-yfX=i$Sq-3Lb6Vu?g=?`AJU zkGAUOxoY9<w+n<}AP++<`)dnMJ8VYlQkYzco8>a*$66u2*=pL&2PgOZ;n#2NnCWO~ z=jj#wlfFs=kT-T_`b?<-)+V8%KJmw&6@k2>#5`<WJ@iULdy=JOLsw%LBM*6=UW7t^ zsf1bUH(HKQpP9vcpRX>R4y%^og)FFJV$?(tUlUF2%-NX)OHtOX#XeYX8nGJk{Gyp@ zXdWtgJj|bAiKLjg2nkb2h<gxy@ro^);F2CglR?V?(rmni%#I$<^0*30C>ncm#cCx@ zQG5`;ARf*{A=5)(8|$<%Ml<|N;K$~Sx`fO~qm$rZ0+PNZ0VV7yPAdT`6XS9U5<LFy zC-re5;hoY28agi(W!cC<Y|9uyD6iX4D0NY<Mmnw!cshQ<O4k|IHH6`*ljF%#A`*{X z^s}-D-C*|!I`r9+Z>u81LWf6LZ4MoM+3iP9p*HlN&*wpE=$X5pzfIx2h1HQtZ>fn! zx)Tjxl}yN6x&3&4eQ|rpTf{)NVDbKB*XfH_F3|Gq`|GRMZ{50m<HPIo2zi|5fnwh{ zd3pWn#=VUj%O6Yy?Y&Oc9`5WsG<qoF21iDE4&QnB<>98?`%nDT0`fK~?p5iGw!-G- zSA|VpYS!%1_sjg4YMNz&ni(PFfkhvo;D=^<SqbTrJAU`8%4^f#>&o+(ratS%ypA)| zua%Ay-UcY8oB730N+EqI#5%x@`jVcUDouh$)n8<OWQgNssH88o=O?=;Rb_VL@%rPl z(}Qqj@}(nn2|v3e^HLLsQ?8tFQ6F_l#gf5hc40=GvSc;MT4bz7#&Qv0?+K-xS+L$r zN{rj+GRDG8APv+a)_%}DTB|T!S#(TRqEHgU$<tF2ofTI@PmX6+q-Q6AEt_LWchpgY zkjIS#92I$5x{WD&@D)NQJ&{nNl=g$-1~nE{4Z|K+MNa|sdMlQBDvP<jueWWhQG*7a z33)YX2POrL^TJX0o(kZrA-5LZP6^O-f#SFq_$0J40>|Yt>t}lzZiLY1<L7xkJ78#; zPmg}<+e_kj$xrViW~NmZU$MQ}8^thO6eX|x@cqTDB=6)FLH5!8CB3Jsap2+r1&o7p ztE_c<>*gGiJoZ!o^y*J7%&n~4+qk>@m;Ow9XDUAYal>e}I-1H7@_eN`Up|D`=Iemo zJ_>pQJ6UoL9x3=RE!|W^k>z#Yq*PecvI(tQ$X38PFAW#VRx{EXFhcp#jwAZcKhI7N zb3AKF&JOkw@_s(s@D?Gjp)xg*+*9)P56+Y(OT|#JrK`Cmsl#xveRzx6ux;zorzS%! zp)MBcth6*x%&Q@<j^)D8%|n3`c^(%tA#014o<$j#!ftq~BBomgOVt`omo+@q6-_wi zOgfk86yDR|20HVJfJ%cO@!AdIK*>oUox4H?;veDX#XQzI#xUU>#H~8EhRuqCdxo_k zfI?Rwh~^#l@d(Rp8P@+3$xX`nH24NlluOuA6I@sn-ze&Z!x$$^0Enu#@b_acvVB3B zN76fe)6Ms_clGD8w8TU;lhbQ<J;DT;V)%b>^i|uYG^WEs>=r&1;J3ufSa>SN>gtoV zxs$cUB?C`J#~wYH%8Vp?N{y%IF3_rSe02r3vbV3_oKH&3YYsIxHny}3EUaAn>t`GH z-n$%}8XnslPo1k&E7j`QM79mK=!fr&G=_GMoH&t4cT?0$N4o!3!`|j#6)~^aBtehc z3X>x}wh}clE*<4uZx>{c;^?JE?9vzfq5kvOi*5h&<Mzq-#MhnPw-5R$T%J@Ape&U& z#Z-2S<su1g5jHHpC_1pqE38LiEY;4b84rAVi5v$<jYq}&LOPFmVu2!MYe+*6GtU?j z6H<DnHbBPa2$%tbJbTQaWla^C+XNAot|9bcJQE6>Vh@XvXvyt_la36~llzm|7J{B( zqnHv_c|wyGmk#B43M3&Y_Q6Of5U`9F10EyqnYZ_OnED!!`JQ`s(lwYQf&wy3LM%4Z zwh%`yymH9PqvBnLkqMT?ii2hu@@G0Sudc2=UO2zFy^W4l=c5Np{dzFiKT-_UU%4Er zKfS(s8#2^TAiG!u^jLNbA!6a`+Q#zS#`3#u?ZbPA<EgP~rBWFkvyGhYE7GELcOyZs zEoSZOMxqy~rhB=>QrPV4D-iMy^fWag<n?$y&Ld7a8ZlcVrkRRF!4m=uQQkD8PmaCR z_J1F8(~)!<NgMox{Hkzaae(!MgASu}wn2vo1iXd(kcCEMW2swio{P2-FsT@xaTj~- zF}XqXp*?B>o;fB0Vwxf2p=^l9mC}s#*khh$o=7K&b0xHFHONQM1364(63X06rWXCU zdWj;66jy|pp3`zNOU5M@#J_Mf5wPo`l!*iqELj<d);V=iM8YtLr)aK!3&`_5bKUpf z0-W!8LC^Q}0;d4vj#LoQ5&NLWi`O0i@#@o840sQW0JLq{r8$g_zY~tf%{Uw^jfvIA zbL*Ebd4&}om0mo5|D&aRn;y*Pr-H@i`YTrsHjb}~*d_>i^F^<z5CE@0P`_e%^@aJh zyPu6S^5T0_ai?=^bkFEmr$adi2CE@MefYrsoB*$vBOYyskmw!qvEuz<FVox4W1F^# zqDmx^+7%J`KZ<#+XfCvVSIFy*q`L!1+_1Lfo`NDFOJ(X1Hxt;=g!6k8JQYR8$ixN@ zO01&X&J96XO^Un&cLThb2++a~UEqZYPN0)Hc3HNljEV4yS8wsl!j#o)y<tvC_}U10 zP+1WplN@vN{9dsI_hn<;OvrJYT`Wy9*gvCDuFoPYv{pln!VWlfPJj{;h)r8IPY`Gq z|M7yz^KJcj;m)@mSiYx7sy*b}jyvDK|BmnJ-Wk_`dl&4{STS9-DdkfvrZ2}Xyz>g- z?w3=VVYBT+0PbCiF!fBE2gv9TxIDl1C)z&$@#l0#SB|b<>=><#5`6Yh?CQw(%wOBt zf5ihHCO3aOJkj1hmCyGFgF#=i`0j76-TmO~$IItNE0s42h02?KZ_-wvXBg`kru{O( zV7`-5ze1tVS145Jhc5dHM~)1BRp^*$PxiOx+b1T5X`7juX?M!D6GtBp&Gd)~<i*WY zJhdwoZ!JIhj*!>gok~X(I{|eBp4msv0}XV=4nQhFg@2o6Sqe*15*!0IooLC1=0gAl z?*#Tym|2Shw1zc4eZ|qJprw%w2^WiXSip4QOc5GpTuwDC_=hQekucL(a6<DGuW1(~ znVKh5&Gzc(0$Spe!X;HiWOl-oNGmkk3~Ni&Jf5XHVTZ%)LPskhkc5!$p-``auRwVe zn(7Ys{@G@Q$6>gG=urY0$sYJ)hL9;-zo!fXbx*98w?vwF{4^(8*KIl44`PH_vHjz< zHZPT3(a1*UF~g>t-oZjhhgpA?4_uVu1w8LA7W;z;pv9hEs*!Oy+6!9>T@)U}V<no5 zyx<(q@EArGH(mL|M5dILHn0|PW8$*wB5Ov6CT1`-E9MDw_>HXJ&EjN$XW}v&neN2f z<I=rumhPr~R6e39;53zaWXuWM^!-+C$8_+v)5o5$3^xl7j0=IEm`lIRUk1O1{}E-n zEZyT`PR^j`bQLKX7+KeKnL}eJE<LK@Ol1KR7q6ARa5mOZHa&wKu;>Q3R7yCJF!(Ub zRVfD)Q{2RGq=I0~B^9Q|#@V_OcTgCNf=Ew)LYYSwgz98E@MlqBYf%nES;odE!fw>` z1#+Nrh<w(Gm;c4o8T80*0zo)hWF%{mFp?!B%gBS0IgJlF?yvIyKc>FItCvaM?%H7N znW3m^Xu9usr{+A>YURHB+HceTtrvf%wU@>^;!Sk-*A-s8!Yg0=;wW?Ca#42C6@2QI zgAeuZx^kxUJcCc>kh7`>UlM$Uj`gCVs)q4**>c|0a=xxm0?8!9wW*4J<gIKRt6HJ~ zoqbWdZ7JB<L_<R)go8fTP-LBLPI?}7WOtM_Cu&5-4vi8MTg`>Bq9JA58jie#nWiUb zWT{NJ#67Z6p^%W3-DUIsETk-epBF%!c4lmc?YivFCSfsbzd0Z8TrxTKC=*U!BUtuG z=01;D^>#LYrgulkQq}p}5wl0GK^wn|vkqF&(<SY-r>_yWA_v-Z9_??moSyI>9`zqP zHE`v>zxmI;Sn+wfEsrrA-k&jw$lznM<wK>|VZ+E+Y+bNX47Z2rS!%LbZ$Bjr1TW(* zPYa7f9P8IIeUF@)4RiFa=*{Bz(i+#G>h6ahdp~{S>B+%~%M=TMi!8zs0#2yu1lFF? z?0CwHEl2t|VMnKa_mPFBOU2A~{Y$vl=^hRS%+jZDSMC&n08_2@{~?uBYz|M+@3kJd z*vJwkeGs8GS41c9TV?i@M8MEkYrAWqeoev-KGp(F1z?9jC8X*cxf#@kN;p35yQ*yx zHLTwHHxw-Qav<IN^k4a?f4v6k472eH;O8>50FM7)7hf2#GZZi3O1L-&81?VWTti#B z>XpVOZ$axy<x){#3RMjQK*3T-<GPDmsn#ZN=~e=2rn*XsE=-%wltf!3-r5{BCB+ag zf`-XLV_LFMN)VMP6t8yaGe=Br)ys6^Y5Ky*r?BhWDupoVt(WdWjG*aa=4L+uJXaTZ zmhaJtJSV&C%+X0FqI-_J?Dw;WV;PA&RYV9<VUVDSyRnCp`Oc0ie0(UK4CS%k*chP4 zvs`C`m#%HlJ9IGf!wZO<8C#pfj!jPE#ZEolB7WKGR*io>3heW5xZ!#D*?xU5j|;9- z_uA8zr{jU02-Dv0f@gc84-l?@a&#q`9K3G=klK+KXKm-a_mg|av>~f2y+?N%m8^$m zI(s87uX#e8K^Q=lb@1%)$joyaM=Yeagt8KAcvI~yoVGS5ZzrJi+Zf&5Fk<6v14xsG zPG+S|t$h+i1P{?qAz`0W)(UIu4NHL>0$tZt#Udg7Z@AQOm%EZKc9q5iC9LO(2#?C# zP+L1}7D~MnC|y}-H=d}X%f&f_ZXuq_NJO+UL*rtCR<qkyNPeFV98adOH@^>W!#&<7 z-ebbe>zC_(WcLA-0MxDrmZGsA6I~E=UQiN@#t9vsfh%>o6hZ7XB(IB4WfNoNlFgZy zzyv5ktA1=^wd(~Eg-bP%jXRSgbxAF`3Aw~xSJ{PE<(9HeM4>d`n1t_hR4u|fi1<<@ z5AzQ7Nmoh^2Zp#b|E4!aNsAJ@1Ek~cAJcAcmN0hS016?nvu6l=VoU7_tv!{rJDc?~ zd(xcg4XZyEw}nT2$rJktj4Q(AtH8h%Z1&-D;O-fbJ!+Ir|HYI^f|Mw<i8-hF*&#Xj z1c*$Y#1uF@rVs;1_v!N&Ap|_>%(mJ23(2gvtZSPIXn48!O8enD7#NuuSe!6(AkQdw z^X!yD=tDdB={hGZph2E@MlwiAC3W%%K|$|Dx0xccaIEhemtvdy*3E8<dXbI8-L8xs z(}?CHbj7%IcBQh|H&qrNO0I*xVp=tv_7p&eh{^G)Rd;1BEZ+Lk3WG1s&3w6clgN{u zkc1OeqkihSi*R~Lxv$|M>|m~*JyDZ~T3s^@*ILC{A+1Mn!b$>=Ve}DsoISEtha$YX zh6<M0JPRwHl_U%~pPx4y*oh%wG!dQp?SF4`+y}TBa^CRng7XPwP3#F*bp#~%=M*CH zFPdIP-x-WSG~fTFCfpXxkzi4{07NjDX;X^vI=BqwdR$1*?9yVMH2OfIRCv+hD}lI7 z;B{+Kq$>O-*{R>b6i1R}h%q_K@+I|Hwh~Qt>@)YG98|Uy?9_yRSQ6AWeI?Uex)f+5 zob=q-l834kMf7e(N<>yc2H~knTPo}<Gkh^^S#sFC?2uURBm_4bb(#aQv2`bsWdzm) zT+!qH_w+qDPl&dza+Gd@^|k3w{t8-{475fDr?26h&OXVVH4ku1D2@pkX02$~m2ZwC z3p_m8w-xAO^RFfIP@A7n`+7{1Gk-1ZS%!z>iAK|#`3(uE!C{Gub7}DO^VkJw1=v_d z+^r%;96zB|jbX>lSYnJYk)cc<W!ov3mt?%Q5h|umG~sN`g4iIyYMYNt$pOtM+)TK5 zHqw1fejm)rtie<#Wr&y)T2`4`Vm$$^ufP)rnJBGzC$*$X;yo+DjE%Jt*1BhbdrdmC z+Ht$lj*UB1VHUPjyA}vaunf956A+>v85hpJ8e(i!e+!(eovF{mp#j-Sq*_2JJMZOt zq?|pEfh$AMM^DW7Cv5z2d<N|N^MvzGtgnD_{CVJIFrMciLvh-pHO*~d5aiEkUF!N4 zqq^!x*u7qPFyo1sd~k}YEV=<O3??~2EMfb-f^Ef%|B9@+m(9M6{ig!4TY=TcJ0cE* z@x*!QqHjom7ML-L`&gqZ)Qbdr5cmYqSwJlI5F^$~NiLkIjVdh_*D?HA)X@^(dFh2A zS(O1CS>vaQ1xXJTUkRr>LI|S)vzwkN1T*+2=X8mZu#Q6OJ*=ok2-ERxhDvi*7y)25 z0(WP3?6%&ZHqvxi#Q_mdP(c}<D=?<|&};^Uu)@_%T^$o<TH5dwal}2?sF}8QKXCB_ zPeZisFz;Az^UQ#!#Z2ML*qF)4fOqTA$Gln3nOMO_5n5-zosB0!Xf}Pek){%D=ll<7 zJ~cmLLR4F34NhY&(I(T{r?q)<;wGrG>@g|GTGkq)Xy{&BW-S6z5;!BU$<~PIJl(}P zQ&a>wR&Lw^WQWW9y=nlLp(R7jA(*h-D&T_FoG0(Fc^4eg{a_;V^pXPFQPcyVq#DD> zF9h7M0r~lU;a!#urPI|0ng;4VgYgEw-k<aQ42XR`AIDcRBc6jC2jhLLHcuhSWcKs= z^E!n*p!N$!E5ac@(VCtSwa5furoZdap%$e~yZAD_2SAw3e9$9Yc!n&-OXE5uso*8B zZRpkl2w#^V0;B~vl<2jo%2oukke?*yQQVplq`8rQk_^nk76LT!dycsG7xH!y)3z|X zqi#~CV7JF^<Io~Vv?$EQpl*gasQyx_CqJX$3y{2(77IyLA9Gz$ik=nFO~(Ff^duf8 zY<efv){++6RKsT3pKVrks8!Gfi%8rpbo;nFtPv)Zg{;Vm{v}`_?IzFLO~cB>%V>v! z)yvJYf+LkpOFcPClBlLn``BICaOEn|kmiBAg`_?RwKCm<o+KB*<A86%*D{)}$;Jhn zrZECYINpHTwinbkP}wI3M`QXyn2Jp60n^Hd=18}?bj02izA)0jRu(PA`<CWp(krCQ zC`XQU<e<!{RR)~6@1APzw+*wyx{>Wt-E~Sm8punwz3yZiuVz!38Ytl)IoDAMFD7V( zBh>8a5L;!YIIOP~j$@xt76#Q6Gc9X=y@|^51_X#p!waIru=5EZWb~TyK0*?hBMaaA zGkDLS)4^x#J_3v%v!Y5qMxFp`gYU#%6yiQ_K@j{3T@c^t8I)6}z~cFn4N4(j#Rs7z zRCrKJV0;<+Kcg){?Qjcj<m7VQhxktT>V$AOns&BaCRKIdogE{0r#=z9dUEbZ=JUk2 zu4({fA_`@W5DyaWL8kDTQ*o|cNpu;28b;MKG=d%ojS|)v2$=67uwq|eIaK~;sN~zh zZAfhuI7oL{ZGiX6jTwB~GifZjgYs{6Sm+Wkh@nbwEzA;3dFBAt=G;Gw_I9LN`CpxN zg?h#hMgU9>r<zOm=$*7d%pjdB(oX$(t<TOpn><WP+t^?IB+wpYz%$%_4j%Zat~R+w z$B)s(L^pM*B<d(_JS7jvTe+QXOGgK?Ohrc-&A0pD@x3TcUHt`Jim(1-?|fe4MzT1b zfT2PlJ$uMuMFL?CgFprqIXH)HcAv;$CCYUgEFBtzP!UEgZC7X^MtA2DJWU`l!Kc~G zT>9VG|6*@@*gqh-?{VKNb=&Qv)$aI5LgIRfWvf+Hs(MwQ`o1cw+mB32iVnZ;YDJsn zChwo`pS<vBvBO95(q+1D{#NV5=Zl>R+8`w1`TqIyhxfaS-A2Fp{>VJs_0Z&dzPMtx zJGwWKn<u|$%y;iJFd9amqe<_(>vl7Y@X^-DBa));%qr{tLVX@BqQ8e-K-jI;c8yl; z8hl9b2$>&@O6~5NKlWviqVq0t#Gfen54&BeznR=<kGpd`J~p{_7ug@<75ab6U)W>+ zrdYu*VWn@)+Ev&scH?Z_^W<CGUzs&)S7DYsOP)1Lo+ZzkCC`#)$+Pz5$P>e*O-^1* zEqT_gT{C&Z<qtfx<XQ5pT`_q{d}4j%6&uLoE*UE>Q4hCtH(cD9m6xOFg5>Sd$JgB5 z+d$f#AA8B8R`b<@i~O>^;hKh=E%j4#uU3fh4~vT2Eea~iQO}iV+deM%YR8>cqp--G zA#aR6HUCdZ`xMQafJS3_!+j#Lv7aPJh<h)?rXlTtRN!8Wyq{-yvVX8R`^y^gs(CMY zA!vYPrHLRf+Zzzzp@RBCnSGdi@QQM)<cym`wxiE4XaZ8}^@wDO1zXil2c|uXehFK{ zVZw50ky|A%8h=b0*(gbdNm87vd6TB|_9kJ1O|@v+h!r}!5P9$fSEKPo$$Pp&-s}^} z!^xyvX;uoC?hPOpHWwsMHTom+_!)p)$)YWE89c^huzmt{S)6Q7-tuN0d8M@Et<k(C zA*&b1W^1KBU-Opaxd7ltT7wpV<0k;nQLgYsPG2Yyq6f>O3rQq^VpB{9ID-Q!zyOaq zk%!-Rdd3M+7qJ>slo3v{*uS964MUU<=qeTTkoRIXA@YW^*{eIV+3dw{PKEr<_q_RR z?m4gaXW`rlW_xSNOQ<oxGAw>Xx1_q`Q8F)v2LHi;?mofSCsciiSc}Jk>9f^2gNpW9 z0kWo)4QtUIl!Zm6*jiy=z*x{X!2tu#YI0r?ksMDt%`+vC@0$|qgPKP^%@~#iRZl_K z)lp=6k9A$5GE=;OOeU!FSPK`n)4YgU?uMGmqQ0b4Q>f+zQrHCKzRL98&DFf{_J<LM znV@dh=W8DMGe+{%4hDY__za`4TDdq9k|f6?Oi}Yv9dQ|L62ytZ!52>POyxLDx`L3b zvCDH6;)v{7-Qchcd6#lYUdUw2Mw(8OI8^jn4|%ueclQq-AZ;&)q<M4a#jB}1cV;_I zId@(?L(NNG|Jb8>svan;T*gvGw?xegsR6Y|13O@`!T^*tKC5B|CDzDCPsD)`_;Sxm zP6aWWw6acd$g8SVj9jSPTGFK&i`640{q=c6$znm?Vu_4k%0|G6yaG#*?WComQ1f=Q zi}P58)y9djM}RW)Xuzpcnzo`Ac?<FyiZ)U6nwBN)cI4?0Z|sIRdq6>&X9h!!%@b`$ zUK=y7p*f?8Z>;8_yp6+Y(L>%w&68%c0cSO(6h!D(?D<qp@l<OHFm#Rm$R#w@hEOz} zQizi_M4sF!HMAN1NL`+rg8LS8ypqZ@DVO9eB419~RIVXT`^a++UhW?Z=+B<b4SChG z;AtqFR}_5S!(%m@9rQ(;DhLL=Fjb=#AbAbmCr~(&2(^H|u`-mX^mw^#Dia!Ljp=*T zM&b0LQ&|V(xwaKl0BdqNU~JmZcnzfsJ=;lI#VCn&Lkqshcq1e7I=uKm=mmL1HKLEj zjCw;qK2c3=dM`G;zaY<FkeA~e>uyIL)fUNXscnmBQ`bpAtJ$UI>DJHaUh>9j-XVpS z;}wtI+gkIM(I$-Ye0oA&3VH6Qr{uZ$6xOcgXo|*O7zn(_M0Di2yc_^6ogyMnXIOAw zkVS}PCMA)Vb>v}>w_NA>D0TU$UKN?M<n7J>aZt@4JaBi2yl@|t?l;$=)!l55$eZ7t zdHw4=x^<b4rmQ26#%b7i@hN!`RIX>pOB&J-FVHnMrBCyi^fZ%o73X<Yo{-nzNUh^q zQEMk*k5ECDrFue%DD2?qjgrWFf-h8I5|5UeN1iIoR8jVfb#1n5JnB7<APG{8WiSH< z)g5_Q3$^7A3)0$=7p;&-AP#gvavJ1O8A74*yi9Mb=6ML-pf}pwta&LK_L$HtIn_LL zKS$RZXGf5yfDz34P^pF|Q44$onG01%UMM3U1wcd+L%BTByzYrMK^08NWy+9t7%^oG zSRkG1Hl#&kFL}-(irV~e@AaWGE1kXBzB5DM<_FH}XO1BcW$#Y^IuF611=)hUDYzMo zR>{LTA;KulXdZ`Z1XE8JUf-Gq7rD?Pc`l?bOi#$W4So)uAy4&qunYfMRYT2nfVYf< z>ehKM@nI6TOh8d67uR{Zjg+ZTA9)}#e!&z$p~DnLQ$$!rk|sbRuN52xYjPfWEslsB z+!kY=6V1bk&<utWvK-O^{1gHVsVVjiIJ7rb^YY<Pj8}urtu@aRWUQs(6&Dc>Jh8+4 zmho8P`V8mDcuM0mXqqQI)u@Dw@z$vj70YnIC4Q7hfdUyfm|eJ-SM>cVD3Ovn&7|}j zktK|fXek3$pe40wdZNuF#KSMb+1r0QcAWA4p0n>e!$Zfp^YZC0xb}0L5q|xgtR=4w zmiLc2-O?A-4&kvZFjcP5V}ezU@S7Z6G6-2IngK-!qU>o3Ru;!~GR3l*nhmHN6w!hl zJY`dAW!Wb-1LGc1H=+qq?*bV|DEev5a=IxV>UO~5wluwxn1bD&UCOAHk~UeWB&>hq zVd`cos7+<UxTsM8&-;~QOe3PkE(k;bysjw%iDF>}1A0i%x}%nHP~o(N?kGf)u$!oP z@nC>MVwkYQF~5N3U8_Y`o$_mbh9y^n%?WDJh40r|i!u~j|EeQl6V0skk;h6OgO~&t z2WNg;Gp2`H#QB={b=lWUo^H-bFl|rg%xkkoZ~c@FZ$OPKX8q)?x6{X^(E>}JeQwj* z=OORgG)tZ}OP(dqnkCPYXUVf>$+P5H`?kq*Z=Buw`z4IK)~sF0FtjePX6;LmXJy}- zHM`EUX3dgk&6>6ACyy6J!6WMsYt}v|c|1QlK0ZDg72D*w_|s$8`P^CLf3uzB*>U=< zl2;rZzj^!i?eE7&YtVDc5x)RGJTHrW@_4?m>maYV^1?rxaZl1mYlQhG@}i#Dq%6zg z3)K0azupx4_f?Zu9KHG1d$Rw$`3Sw+=3|gTzLuYR@4|QQmR}#>N!gO9hrHr&@f`Me z@!p6GZQD^(tbO>MpOELq%ff?`!l`oEYHb!Dj+t#hdF?fNQwMX;GM%k`bbsXX>{Gj= zqE9MnTLlpFe)0|v*XRD|t<9gs?)~(~PdCH<`1Oj(i$=#Cc<<l;_s!ASQB)0w!Omnn zl<PI`e=GK<)qFd{;Q#EM&x_kg7RM*hP^aim=&L~o>o$irtVC##>FBr?!k`$5AlZrq zR?HZ3?3sljG4507Q`iv<tCP@G%w;e0XY3sIG^b3iY1qrY_o^gIw$wk8bm9<Ien^(8 zN@e?f^nF#OdUpKD;H-r_`Nzkv=+9#j_r?uF3>J1f^ITo8dD0J}@>jg_p$e57KC8u$ z6p<*eSv%GoUdzQeX?mrlBb$ZwKotrG7+EmGwC}nyEmA|92fH=Z%1WFa^0YR<z6^QH zOQdfjd7qj*ki5T&^!sH^c^vpM$Mj_zP2?S4y=TXi*t<G;18&%ZpoP5Wk2xC!94;8| zEc_VqwwkBC5|s<AhZMzfSzkH({Rfk`tdnQRd*oppn1C5Ktg@bwF4yG?ij0?G2>evT zlGMptU@`fSG_ND?1Ihcx<sT(^|9xF^<@CXW!2n|yoDF78n)jcpw>vw+_(b*{>#LHt zqj_Mwy|AZ-?nE`z1yc<-WPRA3Gj$olSzl#lXiyXaAa4Y_eYOgXP~F!&jjFz=ljo?z z(AS`tj1kgQ7Qm%c2gqB%MJ8N!T~(REg_m?Jg2ouC%?#JA;_0q{Gazq8Er1V34doEp zv1G0m+M(;ZimSQ?93{=e-H7QJ2Yc_cHxZ#7M^(Z2mLUI&)_z`}d(wLWCFa7#HagAw zYRDU3{<Tf7Usk1II$(gFgEv~KiM-=?SMT3q0`aSp$9qC&=k1zz@e2NynzuAp>Zqp% zES!M&`4}k^aqOuI#_ptWcHxk%Rz#iyu9)P`)FIgPp5{H&UhR0BAqkNa`i92rsJBF^ z3!pX~>O>!Off+C?(MSs-)H?M6vyGlQW2P>L^?=K+2^n?Wp{TNj=IKlcF$|Nr#6WhX z<{^19la{`Uabx%Ut7RDBN-{KHabnnQ<oSl^!|wHpHGV?rH18|YyjJq?4tj*>IRm|M zZ1cCbgx=Mk^|6$p_|dO{c3aKUY<mJmKUDBH8r0rObyq{$o$;8P#ze-K29c*x06dDK z*P?kByWS=s9Qu8bF_20S73$~NDhnOD2xM51SomkIs!}9D@;2viKY-J2l{~gIbe*VE z3-SVF*;Uwbg7G$M<bmHv5kzMVzN<8tHjGmCbc_?VQd|3Z$XC<o=6RzQcA9s%<T+Ju z^Rnh`PVsjZQ1yal%>(q_U%h?%=hfa=0d)_j19k&>)qWl~cKi_qS($)}EYO{k$-Z4v zWkW!NMhk<L3@9ieQWxD;^E3n0ZK5zO)I-ud14j}uM(B_Y(X=sY`f3I8<`a2Jh>iK) zM99ap8hPLf>o|C#gq40CkcW|^Fc{z-dHq^Ls|+=D*G8)9U<CGUyz>U~8o$ixU=SQs zKQGO)wB=NGTU@j3<IY1H%9P%|*k>V6X&+&c$Tk2yW8k;U=QWduotWvsm|mxO7h5>k zmOS0HSB9bna_C5*Y`R3AgFo66f}^MLexACL;fOnm)Z6s)R7o<xi4Fa;k!>2#9b2h( zplUMuwru3eXB1aR)gskdu59T38LsRux#q#)pc>=SC9Tw1IFdse=~<e+k~~`tpbkZi zhVIDOk_V3HJZvJbdGdecfRxYBd%Yuh{y=B!kTfr`tfYk%&$`jjQzFIku7}RE(ratU zt!=6_#)=PsyrFaXy8!Qxy0giYDWSI*49u39bZ|Et$zw;777XWgce6UHP#b<^5y^^z z!a6r4h1t5kz@dNW^^n*~V?1lpEqx}#t`56OBt`E2*rv22s4UW?0Nz%lDAEcl)XZS6 z^%s%}SAc$2WJY`>U(=7k)zc^15gwz)^kwF2de!ph_(HPTP|~?WJ(Fh97%Re;6HS9= z1d`%Nv$^d=*mxg9O9H-kn_gHbuG>Q198z<!FB0YJ8qM>pCT{51Ey&9(BCB0dsiMS7 zZ`M4|%6Bv`J_PdEZ!a(ZN#Ol^Zzg>P(lt7R|5~46c@G`ECi03QaI>kTay~tq(%+A` zOAl4sccXpHQ%1b%=~=`MBZYzD-sz3vjCvS0k#|)5#OSVGnk~OQ`UN#Fweomhk<#0e zmsmG=gxAR7URAqoJP6I>PmjI+<(JnDPmc}H2fIUXb<O)5&Z56-x1p*B^ogI_oVlUa zFrRmLspp1wy~CK{ux*6pz*4*B<yKahyy#ZJCe17l#0SVrlRObzrb&{O9%ja0WH|^G zY*L;f7dh}W6%!SuqUPc}UP9!kwnVhCtcGhIcW8?%wiLck^4PHV^0NQ(<+yD~`e7@1 z?3f)NUl-pw@b8Vh`Yob+V)_fER`S5QQ=u(fo>1-*-r@4BEVkeeT6_v#so2e|#Dje+ zCs);qQ(h7Z#W5blyfNR+i;92~tV`4o$MAwm?rUBp8?_7AO+}UbD7DJs`=5tAFkIz> z7YRLNUHXPotL9~#pR7(^3jd|3d2y1a2^|M<OH(j;R5&XJA<NK7g_9^gm;;WcDFBj? zdeJTy&y<g_q<|aNfVjm}abEXCIeFD=NFJ{MYDkKsUQ^+FCa+6f`ox+?YLt*tRmdwx zSm?MH3qr*v<6=dm@DUcw&BrgPwCC}>$+n`jlr*d%E+E_YHgkR#pe6x%0=(+wy{5t) zd0qOdG><!)!ipQnOC>STB7mT-SBXJVjIdyCUOL*&!4Ya{S&^uWt|i8FVryUX#4&0Z zh@0?8g(_3wN~=2Zy7ZN59$0pgCwW}*BUnjy$@46}2*<JtG2@$3^HPqZ@L_WgdSx~8 zN{vFa1YX`gd1W?E9`xr#6SkN4nhM_&dHpVR>7&vtPFkGJn9pB(&6+1w$jf<ZAup?t zmqSM|&$2s`mv8eI<XIl?WI}=M<!>VI6Mk&pDP8K)$E9Y?E9^Wa_s<gDvnKNL%A8-7 zykx6+UNPoh_RVVEX5mJ1Z&PaVHVZ(hoD~<ny6QtP@eSmC!cVR9HoJ5`{k(DtjdqHG zlP2=S_(<xtX<jk;MspHLV?QsejIgwMn?)Be;SHh=U%I_~oPS<#v$LGLrrtyrsjqaO zMr%K>6rGHZPG&Tn#>q=-HlEUeewy=Hg(`W)049w_QU>mLW_)h1oK+C>azs|6=JDG= zH5(28(49bBo?7@h$vd=k@OE}2S5o(LsBM~8>6^vG22Ox;&7)cCs*U3$p2uOTl9!e< z={VOdGSD85OXg)oDewJxadiN*N%M+qS@{f0Ifp0;cjO&zvgKOx@z|u(yoOak>2^1x zA;~<G=pn5%hdr@Mh;Pz7jy*oMpHwzko~Kg6-AfOP^Q;~m&G4dB5kH>+jywZ@U2LjN zD6*y7^C@k%mv1cm4U#u3qW9h5;hLg|e?L~H$UCVcuUnJ8XMD<6PTufbL_RP?Oo_?O zCN51yIFb<$M}bRpn6h92!Ryo?933}2>Nyq#<RA#(a^sz6CTE1(IsB6(+EmDM@Y~s4 zn!4zThG}>vvSn-n6pJJ&+PQoLZ&@GJ*H;816TilYZ?utKIp?=8#pp};e#cV91OlhO zySB)0YH;PVl%lqXr3+{}R);I8wD?;hZ$e*M^M|Gv#&^!|`vJG1N$q<c+gtL+3rJ4C zH<S;HJY`y}vzu}Ya^1!^EdR9K9~JA-f8eVaq9<sFFW3v}k(n2@f~Ht|YF8>)onl|^ z1^e~%$&=Hc*y>6BS`QGsll4@VFP_WmI(eh@X0v%DO!KiQ@JN{ZX0TS6y*_%38Qz>Q z%)9=nR`*(QHg6u)4nA5x+iZMxvOd{tdc&uill7YlOY2r>25W5Cv-N}Rp^Z7%?Boit z5%o9twDR%8+4Y;|o1J>X*b{g|`kKAj{O?;LZ%M1DPa8j#QL*UsIVbZJZOCO8HM3p) zx+PD?h*@((v%~MS`5}>K6yzD#lD9amzWD;ZI(gh*Z6QxSZ6FWV6`tCS<gI^vD$76b zlUFg@;8C4C=^6Xi3ETY4O7dVcU+<8o0ayL?Hul8X8ruE$H641R^&tEI**k;WMwKlL zJ5oz$WHyimAbAjG86*Rvs3Z_(7*G^FV;NZ?#<paPg2d2fU@4_yk||HRl9g<sS8$im zd$@Z@2JaleF?JHYPOR?E?WWvq8M~^eD$d7$PC*KttKUZ+5z4p8d+`S)e)giEsFH_o z=h>_Es~lS*E@9Rgia%=|mV!L}4f0CkyD7<wP~zCz<o!p}$mBh}JJD@bX~0l!G~~nn z;in)krLGj3*K}Q-#Ve+TF+e;F*osY$7>i@}EECP5^J#@VUDtEXlj9_2DY$XM$N{`` zlGrhU;pPx4&{tUTaECmP=>>Ty{@8yeFX90YUL_Cr1+vIQXDavr?lZyR3^zw8KPt#P zL%Z&rVWyJ2)-HKtE^YaDB6ltonV-@wJih(suu~2^8}J+2&6p23-+0Du2dg#&Kaj-$ zahK><)I3zp0Y9pcM-5hZmfeGziHv($MN@O~dR$hq@GVtwKigbc;lp9pnSqcLZvQ#n z=F<wv(~}f6Z;IBZ0!xz3S-Y8Q9@*ZSJWE%C7|BEHLNh}%N?0Gsn<Pr;<eH})9v(JG z^QNvD=<R3{H72GDpGEW1&a=0vGarlzo=192XI*H;N7(%x%`282yDiCMl!!b7&oyZZ zjsp1~d%F|R6O-0SVLjBmVXA|pR>_NTP~FnoWExoNGkJqfYcP9_JdUZg?0_PMsCgZf zz)U(z(0V;Z<U)i--=Rz#$r}tZZtai<r-F;ky4*T1T~#ULeCfeF<6@y#HIL8WMqoY= zb2zAwce)%HFc|ZL&JsL<$RbBb-oZ!*u2m|)q>`*<=jy!zLVclmIts3hpdDlyOe^}A z`Q}pNecngDAOD=y-B}QZu}j`&JcTX;c0^0gy{UPWG$c=TbTC)lSb=sJtx~i#rsSGO z>s&PpZ!>62jvI}(KG8mfw^??jqIqa9ZHT2P1azVucEq;4O?|%YZR&yJd0v;uTLt88 z22_e9GFEeM(@h-KC2upt56|RbfmPUQg{&kGOQp)1yfJEo;IC?)EXy#s$M8r+@<hIx z!&!h@C7&)yvILrL$H7dbc^G{UvR(4f+0^)EmD}94?4Rc|McIfx2mEwP^TuEbD#@`8 zRn1$D#TWecAfwid$!X2wycxE<LSB|P82Miabwm#B3-XSTE^0``x998HXZI5DZr*|a z-aS2Tp8D~0^>laj`1JMe2~+-l_4NtA{(ATDRLMmz%vR*0U!ERmt0<O#{kT(YQS2fA zhd<@{uBurmT|KVT)p|#Fck62J==}k=AF$Lz-UQruyvn~TetW#Qz&+<*KNJPaIv%ML z-(oXl%pme|>r-47PpZb3duZu1d6wt3SSxiylWeG1>^Nd<0>`Y>JbGV~m#;U6j_2oy z^GLudab8KDoj9#L$_;kND^5FUMf09#SX^|_jZ{JEJTmPS8sNmV(QkE#JRi?W1S1X* z5Qb%(SCV%OkR)sJW`aV!@mq1;iArlNA$f=w2m|9hB#*3DAa0ATIInwO3CxHehp-xL zR*62R8kgJ`dCX@Jd**0M^Gfo72hiWrJlq%lKXCATgB~GT0%@Lfua_QdCC+n@?33&b z@(cmo!@>c+d!icX;jdyegATQ))2XPT=%DY*sU(Q0>cN7OSB-kwb*goDGOlz6DiS?X zyVy^DZ49V!7(wb<_Xq;s%NCnzM^sqi9>QMaKF59p9=Bgia+Im`Ct`BnnHr+U!}<XQ z4&|I&%fZ9zbn(cxP?x~zIbJ(~+lwn@+^4T&I;sg8O*~~du+EenQ{)z!eb%Fr9!*C3 zpfKx&=5;D@9<U&FwG=>eY;1$+Mv1}#J+8!g?ppKwMk8o`7V?TnZ&&j$Ji{?u`AJIT zb(y;DY9o8QGc57tl&KoVd5#<81L8B)W~S!&F4M3A99M(oex8%~HXe$Cyk5kjD6$>b zPugqpM1;VN#9QR4Tr;`c%CsJjW?aw73(yMfd@AsuN*?fvercF_%4fl%GA+^*18Ko~ zUN(?4?kfC5npb96Dw+rGy(YFa56<y7exPynlq*Z2o)CEfR~Hr0EXeb@W$??AJU*|` zVVao;;4G6+oI6|{45|W+WpBBJojVV#N~7=$aS3qG(f1CP+!_sn8}TZ6fG&4uAaT{? zX2H^RPF^;WvXi-xEQ~rw8~Inn2zz2cSJ*{viN^WzC3&~6lNbAK7Q}5oUFB11rjJ&D zCsyX0j%Pc;Bu17L$NqNlSHzTv9h<C|pNA!vLCD6FSh1XdK8Ik&I(_F)5)4Cp7QBe_ zo;9x>MXOjz-JxRzn2&`vJH|LqV@f>P(Y(O)`)xIvG(H7+yH^#CkLi&gLvkC(bnVNu z!K0DaHp4$J&pMr1VGKPw!+RQN3iw78s92y}tKAPH-$#d2Q!T0hKTLD-lxSk&*-a%g zwvSsjB{_2K_1vbv@DVs|VcRWto4jdZwbEkI0>!Xkyg2QGc7&goJ`{nXp{mrNNP~P| z#%8ud>)do{HN>+;^_rt>oYS^voG-E5rFn8wxrR41z!-v$CT7qRFtp0t$yma@;`cJB z3-=2S%hE8qV+)L>6>NlLSUeiWrw62b!45`Wz^X)<hGE!bx7O0o^Y`lA3Dg~rG7nEr zZmJgwdj=jX+Xnsm)>co!xHaWI=CgXx*D7^m<9tx(h>GRU<T-8nHa(b0H<ku9crnEe zRx0+abCa$hT1Jr@0vE^G*jd_VzC^>nMH5(-r;z;lb9T>*%s{i1$c-pY?yI(|=Fg8& z!w9=5nUM^(0$n1Hs#MV|@(Zy+NEe1x)5a|+v^_wZQEak0&5Up>tgih3ta*!qJTe{4 z1N9h=qVSl;I}D&jJMJkq8M~54d$Q8(HxBz=Lunl}8^35~bNe2ad9gC!wK4zh8!7^$ zT=38OF?TZ$f5|;8|NkDIQKH{w^*y9;U|mx(uC0&VQu_~jn;$+(Dj6S{-~2o3sPEf+ z=jeXYyT_C>F{+<(zkk|?Jb2dusL6Y0>TQFk)c0-vPD$B|JgCY0q5e!2Jh?X3TJt_g zUOm|FJ}<7>>ke!G?l((%P2OiuO}$xTS8Lur<jHmVNb1)^@LQ&D7k^#;oIN!Z@1w8b z$BW|Y=wDqL(+7+Hd;2Z-_bD#R`;_kQ)9`m#s`AgpU%L(cL3X~!T!^>VOp3f$>3&`M zr;mA4-*4t@pVG=+mzUpRsYqV)6Ip6aUQOPwB~P!(tI4a$`;9g4@b8+unw^@wTJvi1 zYVvB$`w2%(W+~IVPMS1~Bry-;l=b^8jho-wpQzpN<5kjdSFzP}Qsy0D>BH~qPZRgu z(31bLb2h84Dp?#~4GoTJzd${Jkb%w|bPse;pomjt6OxiRkw_Orya+Y8gQo7-m#Amz zalcBhr8{3|Ym#&KJ?B6poG(sXsei5d|7xw$?AQT9t7GS)<hA+iQ7ehAzz(|c#UR<J z<axAfJ!thnqD>BRkfo1*OiG?c^8+R)HCDke=m>CFztk8#DtQ{sj)MLY0S>D-4km0; zqO9p(h~8p!Y)nVPx;SOQdt*aNK=cB6NuvQ!t4EPeBL@rCnrRNt$*a!(a4FT1#$;)$ zH?)Y!bMkP7d!PJqB!3hd^LJ75yylImhR8zs;neD?<f&74W{?fXf&9~*Q;+|6e|Mf{ zjn>F@X`v!xEywpdjZQ6Ja_Ts&r|0~eo}dd%4c5U$6=emb>Kdq8fby-1Bh~O;Ma$%E zaovRv+L5@XQ3`Dy9w00MnxKkewQ*9_E|M3vfXkkMa5W?*FQ8~ODZv~!RZyrh>F5Ut z7sx|dk_!g1)KCsMOjeQ-+6{tg(^p$RtM;?eN_(J>II`f0K4}O-)4<@65_~mpt1{1O z*3C!P3dzG^1tx5(+X0G7?=b<SgrcMBm}X9rRo-0mM$r&q82AFW4%I{0OiFeMDbM4| z>pCc_%$bSaH54s@^|gh-^aX?kG9&Q4j$?FD?X#4k>)D*AN(0xBhfx7}KGa}J0luh1 zc(atYG;LH2txBCa@^E&-Q{aVZ0NI=2pnZ)S_ol-P;LAmq2e>4W>iG<LjF^9mq3G2S z)LvjT8(?dq7;@Zl{5b1dT*6otb2V>k0I#l%1>?ei$wH^15|uWPp}o9_oEktuU#{@k zshfdJ9Yau)KNvZ+?I1|if8O8!hE8qCsi(>3pR?BY5VctjhLb-^3x0@+FCt<ldFs@t zgUr*j-}C2irfJzKT6u9QfDf3P07bO+D7q41q>XloJb4VsuGYt;6LAAxWjXX{*?icF zqSS9WMK6$to1PsPv>brR&P8rX2`-xok0RO+dF07O@@i=&(XE17W3}pI9E$cKQ+eXl zR;no%qBD;~>z1O63~h_oRRJlXdX$!8-}giBiTUV|fe(${<4~f@5g<xHpg*FEz1U}w ziOPj&9Hs5LprL5o0n+ZGgreKMEW?v1>E*d-fsKL`{hOlQG=R1mqs>S3snwp@>(f4* z&pD;5vcm6La66Mg))2{22AnnxTxxTawb<s-9C<#(dXJP0%7Z4xfbdA;q78S{Drj%8 zo^<54+RW9w1k!;q(3^olu^BCcyy`4~LkDogffeT4YzKFy=5YtA40K{?W6cnFkejoT zt5dhb0XOc?PQ_?dgo88*4V#ctqX3ST{p0-|o!X;Q`%*XRfV<e|tTE0FHYZr4$sf4S zFw<?3+mRXkJvp_HkMmyRxKWFF18+nF7xFf@<h6hk!R=V6Me;&_yF?zA72IK5A-YBK zWDDvvPaeL=*x(7#FOp{pE*Hone;?IG$mj*~D)8>fqhC$86(U+B4??lqQ*@WY#@vyI z?+Y>FCxa#Ous=AHSAI(#+6lU-7t&oKkL)9&kjTT9;hsD=WDo`zT`rQxvDGto<cX-7 z$ir&bfH_!U{MmD!HM@zt@`JqXNL~*-q^tmPpc5?&n<I}Kyx7B(p2;&4dF@1AiUXqn zE$r+$4|_}K_RbP{Z)h~^L$nxXoyuedVGMmVl4s834S$R^uP;ZZI+A?u&Yj0lbjJ;w zCy#@4b`PA&vtpjSfcgwmf^meyL>WR*r4cUQg}nU<&_oO5bt=?>IARSK%+YNHaj!No zcoTUE=)l7yEs<xDyp6z|)snlm?;veS3A>ON)m(T><YDW8-IBkPxZ7;Pst0ux+p**O zAg|~2txpT&VTUMCw6FIP{cAC~oRnP2OC5%1hz0U+9kKX8X%L`1GXZGqMRxK^UdNop zn&&EI1{cRLRSLuYLrJZ#<aMx>OXQ7Z&o_AJDN?ZUXgN}HC9mV;%?0wD5PaR{Q1zj= z(^zJ<GQo~{xRTe=d1{6{I%#<WG^&q4wWj9OZI%)bC|yP^{6t=k-OdboT%Pd!LQ7kn zV8CU=<XYUc-g;Dm<mD52F;r@%<}rzm>Xnj_MSmnBVZuYFDlE=;Vj0Opr`9dlbjGO; zonkX=Yoj}-=Bl|RuiSu%XR<aP(lE=DQ$2(2_Qk2rg}f!FVyTWo)6SljwAQDi&<bKH zi`}3_U29`^7xHRp(SeJ1Sg_{ph0Y+CBI4F){~$DNfgj|R(rUg$o}<kGfs`p^S~N@> z<BUo!<TVn{v`gfj1V%?v6gUT2I#LgORB|CNq6?PD!=jWyFGUN3mIsUuCnXp10=X0& zGGAzIpp)VRR%_=VQS_+fLS7_IxY%vtjunt-^ntcFO3viHWm<QO<P}oK5NequxOC78 znL{SU=0aZ6X|vF0IOrl=;ZtIarerCaLqi#06L}{DU@*F!BM;}SIr+m!fAEG<U1{Ml zJ4GXTI3IjxIoEAc#%w3Gj$K+PRGnf5ggYv^l4mR?<uiFGm281E@8VQ`b}C*ROyni> zMX57RjWD`HcUh+-(f!$}u6}=K6M5)VS6f-nWGzF{O)2n<*+|)u=<?R7L>}7>rv<0t zr8tm$bRU@ZCI0abNWN*&pWLhEZ0v{6fp=-=$)kI<&LtX_qnGa0@_W&j_qyJZa2`dE z!|s-&x%2EkF}sY-&PvWBzY@K>OTg|nnz0AbyU$Z*cV-=<ALjg;>gybCj{XmxDqN%4 za`fY;3gb6%v3sxWZoKyRdET5;cdt0r`Q+4Zo+`ZNRA<(yyG5sd^`~Oj=XvY%y#Kf7 zdAr}&C+RCYD|ru}=lvL`uAd%T*;&c^1vPIaZ)ImC@0Zj(wvxB9vy%7oYaaiJ<o)*F zmAsX_wdVc&nzxd-lDF2pmAsXmmAqeE^WInTR(4kMenHLqndCA0hy$NK<}hVx{ImtT z$<_3M2<Ptcd;RfW@Zh05d&LEuy|#8YBYlSh*`M<-=U;LE@|3<qx$~Ei$Np;a*pDI4 z`H?m6CC&T`<jpSnL-J5qQZqQ5w+4Pl{*5!;{_|$$&d0m_>znzwV@kZmIkOkYOZ=DS z_4k{J9KJX0-|gQd`3gIZ|8?@X`#<*1XSH!9i^FQTP@%!z+?5DuEAYaC!1SWKO^J(% zgj(E1h)gi$HWpE9>}w5nyIW1N>?{J;beIRoz=g)oFi+qYFwAPu#&qzk`V9heN={<g zmg6M;7u)AR6sxRKmCE(`cTQDFo*Q}nPic<il@>!@X_1;&S~PjYMe>lmkv3R&^7PFl zPhcHxjx_b$0gLa_L+J~OIRcE-FwR^2h{SS7SXhtSbn+OIhvcn<JbgpS6S|#Fx5K96 zGelToCh`(9kvH3Y7MS}<HdF84-CbGHkLqjV<Ruo=<^#>!>x<r1&-pTo{a8%y>)?85 zKM3Lux}K@<pDVoZ0CO+B&EvYu(b19$56Ro>^{#q7DI{;7llN%``|)X}+>^@w5?l}M z2SLn1KWC{qd=fL|{yEcy2V0u^$CuURj_WQ!-a|j}*?M~4+hn0hq0a~}oW4oUQ|#24 z#r7t>!5lWUFR|F%(hOxYHcQP<XS?uKnzX{)rz^}I*IkZ|{;`}!kCJzNLmvFK!TX#R zye)YR%MwOd*i5-`gk>|vHrvY_Vd?j~>p{=!fdBc-$a8RX62~?-l)Q+lWZu5bu%PV> zb@xnX;;cfu6O5?Ryn6w|Sq0R*Eg+BYwuA04dBSA!x>t)P59jkx^Oiy0Un?L_7@kRI zT=SwyEYoK3*TbB4I~dK6<RN)$sCj>_MDwnCy&iWP0VUY*QI`Jh;D`yD$4(t#(V90@ z6C@8cZzIW*I7kjBuRDa(B=Q9Ama>JCmqGGS^EQz@)^0P2?d_eOa=4fjx|@4@?Cnsb z=M0g@?%Yc$eCaH-7qDp1`Gg+G93&4l@7a;ZI=vpBotB(PXg4;ikQvszL0?|{ifNX) zx(a6Mff3C_@=)`hjplWFS7YRjo3k?V1OdrI&D${Y0Jm<p)9EngbR@>4JDyS%a6pHk z;_J)q=v(ScI?L?uXQJ2RJQns0#(AiD&yKwQ{dp|t1x|!K?ae58!OF-B7r4zt9*(e} z<~=uWld*Q&>2v_PHj8#}U4c+9N?sV}F<~X-jb0CuhnlzU<Uwo~08$wN{yP#^xqd{% z0*UVpA70tL3j}YjCy^Lg`w}dLyhmFkfJO39^PUZPyjuoi<T<C(RPxw*ke5O7Q1c!{ z-v5>t=kYu9`m=a^fQ3nd6b_}phTp3<()<z|A#Znd9#49f<Oz{WLGn=Zo&$Mz8pndr z--HgD2n9l6&X~9P!Wr{6AGda8RphbmU{(UjL(O|m<O!TSCnT@$QtC0}mDiO#VJ_rd zb3^h_^X5Wc`?g1N(4_F05Zo~X2~5{&$_Q5cnF%9t9!Jq}o;i6L7MTuwa{p!5*I$r4 z)Vw*7*BOw<2Us{nZ9aX_4%9bq(j(-xojb_ZioE_)F6N+lKwbvPL(QA7<}rtlwXpu} zK(M!)NbHVjo+OQv$JT(ndE^Go`-Gae$(om0CV7BU!r_3m`Qsm)!4P0voEMR|ZTuCl zkUZ2p)V%qS$NJ>42a%WAX7W(;Q1j-idHq{q*(r;z9_zo3&d!A^wpiS{O=mmE>yK^z zj^v@{&DGl!hHuGhkFH-Cxfv+>G>Bk3$YVIGu;H2~d{{1dOo~B=u?LeUYzcY7^^fZx zKao7tyhV~1y;JYT2kvw`&H%@oJ7afQx7*$l@-msXj)QAhHaX7wup)1B2)(hyZZDR+ zktdXGvgYxJLm_#nd2<|Lc?fx#w;+Q9^5i~w{O&%+kUS(0HSbB9_mH{pwiA0jz}@y} z9<G>1&09Wsj<f9}EJz+|-aN_UOT`{EG2l#k(k(;ski3o1yycP?beZEkguIE*m==&c zBo8(3@!n>@oc2tbhvXr7sCiF`^E&rG;TAOy$wSRs6nPI>dWo8c<e}!xkvtZ&VCC6q z9z%9e^EOTM80$FFLcdAo&<pUFD^c?{PxID*Jp7$>)V$5pJb^u7`4@VdNFHk544>G4 zQ)p;txAx)aU&|>-*!Gq#lQ<KfY6NY)?ZeT3mQ#?h<qeJGp+zl$<RN)zsCh^pl82gy z<RN)zsCh^plDAo!_irQ*$wNcU+g|d{4`B0ol&_b6P9?A4`@UL=o>MK1mZGM|OU^;Q zsxp#TEl#@*$mQ4Fr?-Qm-Mr9B1ZwTy?3MKUGHJY2znF`pD5!Z4Chye+v{ssKJ$V(G z5Vtx?UUL^Vtx>)*&8g(o?Rwp!(T-~;M+-M=;}xP-J!zXGiS?=EQLSD#yr;K=dz;rU z6L@Lep7!2?t98Sy*NcAS3&36X4zWbd)3VUgg_Er(FRjY%od}JQCm()%DT-fTpNrzJ zpAV}*o_1)7zn<&wAn{EMdDRANJVn<UKB)lEwIq<|S{9U7G#V+OsiDP^r-A@c;+HHq zg-TMOMK$$Rn#h)~D853pBFU>U*+5Wbs*nogA+?58B7V`b_;;#d$s}D>8&H<d-&A}n zA4{Gl`v#o9<Wrw(UasNm8a2|SV&rsEFKelo=2PLovPN=6Lvt;jTdAjf1HQv5hN`0G zO(E|jTjAs>XW8#0|J}%%wf843QNF*|w#(Zrs{`+EKwf@-f4?QBTgi7V@$&MQ<72V) zy4q@rhnKZ~9v?JYhwuK7zx_Q%^BNol-874ykphpxOxsDBYATiUv|gbkM=J)6Cr>YU zgi=eR1+zgQE3Nr8ovIooc3GzeF|;`HbR|iN>J_|3krv=sN~=EA3$(6Lr4|<4fVw1g zP)91qk!RCNgA%Wp^pa4j0TtG&G?&lO8YCOkPEQ~&1+}#cl-5j-cyfa#Euc8ew2rn+ z^3K$(4&-Ic)R|q(+O_Oi?Exkx+1bJ)?;Ed9)U6`VRaJSMyx$HF51Zm|M!Ed$7xln> z*K)s!qT3Xk>2kSs&^!>&k6#G8F`7rgd{Ql?tp@R2fY46*21tqLrt&E&dr+1gM;@40 zC)6cgtx%wfSJ6QMYq>_D;AxsAo4}MDlg;xynj*9Ud5W}BPKV-YYepShN2>;312omJ z3;9yTEEF2KSn|Ld=Hzj2lY;YI%vs#q^dRi>YKA`{((99_5Hm;gkh~nvZSzd1dDF-v z7aoxJs+c?bUd-wQfGb~Avc6BV+eDtLzDVDpH|lL(9>0G5y7akqe%_Lg!#J-A35N&G z9dSoHZoY}vJRbOXzSba`S<gYwwg7`V&3g?HAa7Ef*Z;cXQfGiE6-zaNJky4qWC;|^ zbZrvvZPw{co|I2*g{N3K6FkeDUGq74deWp?4o<}D5kp=vN*+|aPac;pTQzF2&3CJL za4i~V4aif&vw)v#qvlN|PtK|*<mAMsKpr6{Ns_-%vo_c^k(W&KSZ@M(AAzmoQfo*2 z+Df$kCZ>SAviS0tllO-#%B=};9^q<`YY?4!X&_I7K5ZC2R|VNrxs=>T9=Lb1t-I7z zfINOWvrarO5AoLo@=8?a{;OHFKz`Dc(^mIQNKpIa!6_;<4IiqZP9@I;VO2x&LMbdw zAWxe>9$Z~{ExpYpYaX$(;BD&q#eh6F>k{+*Hj$U$o81ZI9eisxkHyPo^Rk)vv)O_; z?*(kWa`LohtNC%F=6RIb+-0-Fu}vF1NhQS{N~6rT_mT&p6NT=~<0ZewPsGO@JxJCk zkf%`P1$S{>eyl=y(SRVl)>9#QIY`pNI_US3M=AdghtZM;jw_tfB#+d*JPoUhns*<0 zDv$?)M^3U?noZx5M~rOtMBb`6FKXk{1(|)==r2WA6n7F~in7yxXD9#io|*KrLh@X8 z`g;m*QYB9mmyrC_%9W$DV@l~k7gXj{<x8B!|Fd`gE|Mc>7<NHHJCOpXmtTVn-EbHO zJ3dPcA6BDLWL9Ds=z<o4-quKmG-3tiY*)d;1(j@kk>D~rGaLEuaBw(tws469AD5ip zl3G38)3fX@H=dc>t#_uS>MDIzHI1Hrzf%90RUf{->SQsS55vD_N81t47a#nvE~oQ_ zS?9fjy#0sz;PTaGvM}V`&U;vbd&s=p<vl*El^ch(@x1pW?~~Nskhi*rw{}eL^?7r; z`ei0e=6#zV7kNg%AkX{8kY~s<x(ClQ<QejejOQ8h40)e~J~QMQ@{Ek<eaz$;8SU%! zlfRko+q@I~yl-tb`q=d9$v1a264P?tX#In;L6OJaM_IQmD59~*crE)KIc3Cx?jRsW zQzJx(k`Ogxwh%UBGT$AL({>7-ueY|pt;c~73i^f~Q11!xe6Q;;*%mq?idm4{G-2r< zRT=V(4*svg>pLg!$2V{OGm_U8A4Fa*IinpudAudhRxD@_&T_!xkX=!kk%wPKbwmf` z@o1bu-$^shgL|IWx;zj#+@s7Rhqa9-_WJg!E!@=KZ2Ne+aSJ3FKlowJk{cOa>GhLW zcQeoxc|YzvFC<C|TLw7MJ16Tp7+NJsR;-bv&@4p4v8AwMo+Ow10b}H~IV%*aTF|Cz z$rIED5~ba#-+`43WQZ&VvnpiLEl`jJ!Nkf=4<@+Y%d#s31-`hlQr5Jv(;CqVG`B8O zZlXIWglJmKs;)~+wB@yS&6-DH1(TG+{Kg(?ijO_dkY{wy<o$C;UfH^(A}=Sql-T0e zSBX<A4yTfCOnELETU0r9TzI9@#^g!{h=`E&h0>w8OsI^zEFc_J2Koa>A&Ux~EV@!E zo*<?!U|+2R@^GABGAzRu*`_SYhO$m%4e{E|Y8{Kj)S=$gKwg2ARkqA0SpvZ}i^$H1 zhe=6(Mv(*F3(kUq=Xu*X!Y@@A4dWv^zGivckZ1IO$kW+o&r{R_J6H?_H3=-9`W2i) zMi|KsR_1j+wXGz^1JY}>OiI8RN)PwSUA8H_SbtnI;zBReY-)V+d-B|de9DQzOe<pO zsl`1`ON^Iwk){mUW}{;pj5xR-=^K&2$Q8xJTi7jTMJ33?zSVq1g0i5{-mKAXrSSXl z2l9;P89gxae){Q<JRdkDcDE(Z;bANEwUgXFBrl2rI8ssT^V&;XnAb6Rm8a!`7?KHU z64~_GCh&?#>UEwbFN&gClUMfS#ar@h9g0O8MI(7mR`Ry!8Z75pwojhULPJ-xCtQ#h z3kT$3e!(#QjyyixjOQ6W4DxnYSUBs{66C>BD)I;Nx*F+SiEL9O4V9&gkZn2w*=EdL z91t~{R}p(cF`aEjydbA)oq@bQV@w!E6C9bO(}o#&uq>r>M!^U2M92fFvrX4YcH}81 z+-8d8jO5vr+r$gSJ(B#0ynsCP)&vEHa2({lI5HT<AINJWtQT_@2gdV^j>YbtJm~ME z=lN8CJV%m9Xdo{a`dWQVq!>?#60D>MJmMrL2_{;lmxsg|*$mET<2b@;F9-65tB7oP zQ2@~{XEpj@B|5cbH;`9K!UB@G)9P6Lssf=}j<GcEV6b{BIE*|cugE(Y$kX#8Y!m(J zf@W0DZyaBfr#i;TXKriAGkOr72mN(-t^Mud`vrd7Fm`a<&Gj07t(y@}P(^PUmERD@ zul3K520N<Zd#^1Vkr$_Fdhw12E&bY@p~mxWg}mi*=`0<Gvx77IilMz1z^>ptY`lJM z-w?@;?jKUq*ZG1(bR4?R)m1dV_8f4~d_1!oo>#7u=cnnj$L~VVkY_ya7RWmwfgf52 zyTQ3`&-1QR$=+(WH+dev#@&Z_-t|`%oc<pKG!EydY0mlCBkr7~7f<==DJabO(~I=X z$uFLzPfuWoks;4`-fel_kbtp=;Cbxk(EqdNCHkAdB5h|WcP=k4`C00{Ozkwie3?Fr z)0fZFM|qk)3evM2hG@t$o_9Os9dh?6X}8YP-%`g1@-nRSu)nxSU!VZYUg&a~ry=M0 zvkTp5$TObzv&pkQZH?qruIuRiqtrvT3Aip!PA;F1<ei+nxXja-SLx%YhCJhWhP>M& zj|XwTLxOqs2ylI!zId7X19^UWc9NcI^1Sp#WXLm~XUMxn@<!!ICw(mT9;fLEzv#*1 z@V-+=ljorEG%XEzAFsZB@~t87UdS{0)IIM`$(s&Z81jrhalN`*@|K@{`KvF_r}Gax zYZukFunvOBu9gk8p2m2VA4X)lj_J~7*55C&sjh~dd)q=ay>Y}z*2ix2w#@chmV7Kl zp^r&8H-)pgA<yVtS6J?ryx;!$*Pnm2BTt3zMc#S0<%L`+cD0f0siZY`t++b~P-tq2 z#KMw9Ls?mtWV-`qG#=UG>y7hR>NjDcjp=sL$LjZg?sXm1+h+rk1)Ad<{{pHEc}5S) z^PE3@^~c|TKHriz?TXcEF`F(JJGT~_bGFh>HS7HfUNmRgJJ7i4hMF7*P=@x^%393U z8(q7iX{Bay*GFvSbrK8#xETYeBDN^6a9481V43H7Fx?3|pG{Q7*kax!+TDg6crK@l zp1u&+NpIW9`I<3ngE6Ml$p(>DquC^DJzdP8?TiP%RAk6AdSF*rmcRMV{qA>@EqSq! zja!q~wgs`7Xces+k${v=Dq2pZQsUeaof4guz+q<Vb8AW~<y)PwvJReCh=Ryzg&Pxs z$CG?2*3z2jPpPk)0tAJyM;QYnSY~1Qi1FZg9wBz6ge#@fqJC5n^{!=EE_iR16_aQz zjOdECbqSs~71E_yMX`R0h{KIilKS~^<9S98cAfW^?|=CBA0~U*rYo$qJF#RolM9Rd zLRmB4L7EsO0TRTds5{NT1|&4_pgFLN#GHhs;z%-DTN$mF$Tra?I3R+o&bDy3BWf3* z&WaODQEPeHz)G@cV{HV;108FS=VGg~%}$55IuD(1$;)Y(QD?a%C!W=X)>=#~nriaq zmTatCf3~U5HmAa2i1Jl2jBm&@dT^fS{Oi9zeE-D(c`zfG50XeAM)6vZu<LeQg84!w zIxF?I>#tDh^O`9&r*$MV(XaEC!#YotlLa*K)oLZCK20VntPvd~g;<C}=ye_kaax)@ z-P1}B(vvsD?v|dqwIQM0|FL)WDzYP29Iu83Mb$4*573}M0tXZNC^(=(D3w^6>1tYm z<rX7oArMs1fhn9SxyG5{f^w((1Pl8D`vwjiId!lOd`hkUo}QVzYv#`N>M*0vs!~ns z{PaJkO7ujAqe0$LH>p=Wd9?1VFghMKmOLF2|JDv|jO2~>2F?5aT{Z6?-M|0!JLw-X zA|mgJSLpC=ATP*yh%;>&i!C*6My%DH9r2iu^EY-3Q$<Y#hC;|GDb4hZyk7H60svSN zF+A?Jv@}f@P?Xvp$jiA*EqMj^&&X?SUE77?KweSXJdf(;Sl*In`^9xe<N-yhQ<U5b zvOzbWC2#z`&C$;7Z{K}-rz;U?MBeXz{4rP`$m5_ZBCo(S!+6q@7wfbnm7(l!JHaTz z3CAp<n9p>LP1QO(%$VRZ$J&l<wq2?)_jI!-Z*2!V*4&}sl~1sa(Dkv*aFJjN9Tt1? zGLsr0@)8x{fxMY+hPr&n7SWER#u?Icpec?0)`%<eCJ5B)O&T}U%_#3$>fhY9u^GsN zmh`ybr5VW^?JJXKHSh5+fBtKJj5htPH_bWUChjJbOWIgCMN;|Pe@dsEFRFmtcs{G< z_EckM&fI<!V@p3i-?&_E)9Kc6w(i1~$WIDGB{o6mQSHFCu}!wpbzN$hPPk3cub0&n zo#osX_P6d?&BMwI?F`_O>Q3njRFMu#&y%!vJ!&}))_mbDw`9Jgzv1li)arEKrNe~Z z`;f=|(LS_^<9AHIGkL@R7_j8+r^KDtXY*bx==|cBN=z$F_v_wEalW9;`;g~PM*Gml zzmDeJyfh|X*!wb1mlvDz^+p_7m)UI_@@nf1FW9_P)OqJTZzS(qA@994@4{P8UVijl zd2(fWaa3Ny@mx81UFYKWimM|P^0|uFD9U>c-o2c>M)Dqc{kP)=uYGu8HMgrIau|yu z)_<e!1LIM6QK}iq`!>j1?lteRaK*hlzC4}bt1kj=`Ec0UR!(34+O>C=dL>^~l---d zz}<aKl>FtZT_bg;tmJQ$#RH0W$a{>SECJG2K1~UYU6mji1E3#UY2`qDQA&;EeRPZL zee(YE-NF8Fx_kECo`M&B+OA`IsHSfwFN_ZjYOUm;c_)r`&k(XZ9NAqv_3oAmc`ASX z%Wq0v5VX65`uwUF{n}mEmCwbYeP4IamDs&$Rv`kxa)OE1Kmz8(<vd>5&#q2r2S^MH zfI!4hCKu!hwt{9LFFZ)5S~a6@e{Ab43Oe|FATNm?8LP?_<Ed%VIk`dI>y)A=Ef4oT zgFXwPOiB4dCk~jO#nec;DL3>)&N81K-yx8SuF9(CE+y|N%H`f8*5p*;w{7>xt6}AZ z5OT;8(lsa>fT987tCSEY5atjyP&JSR7v!zH6gC5SWjVBkWjOlw2PZElM38+N!27w; zH7iZ3mjihi*GP9Vw+kPuKE-I+V@hEWv4lDT)-??Zfn|)GVV%;=H)YterA|%BvM$A# z#a*auA`%&a?nvG}&9g=dmIftkpdyVM$SWWW02WY&g>w^a+AmTP19_fzAa9H|Kf1M) zueTNZVGzB)GZ&b4SYqff-P<J*rzyj0ZG^*v-e**9@#~{aw0g+XM7hFZw_unKl?cCt zNzJrmQA|K4S;yF#_Tp$H@1EvKr-H<VxUTChxD<L0<OTg9v91A{fxH-UCVKK5CxGRc z=Y4zR<;+7u>-)Xrg=_<K+gPaf<W&Swx86(MV5zdh0RwscqS@#NL5-*l+jQ9WmFVV& z)&Z1b^E}*aHso(j#@HN2^6uw(0?Gvhl-3D|Xj!B%-9ov6C#NL-a*9M9$ZUd8LAGfi z>GQk=gbwLp7_N`e=1AVhk2W1v+Bon}J$ZlZ$<qZrQt4T{vH_+LL|WWGQTNfN_V+{J zNAeWo>Oh`Dg@{v!HXvgUnwb@AiM)c*5$2H3IM|ant@jp<<efB6*eH@wU`bgq#q%{3 zYk&+&yHk2}Q=pvF(vDaO`%WsQ;Fdf}1D!tVbPwb`j^urK3kVfyHOvlgevW$b3RDyp zvH<acm53!3@sH#^^n;v_YmN0lo>A&Z9%>{c6V!@1S`ly$)K<)vsxMw=J*d|G0%z}r z;ki%dt!RA_D_sfk^pf*to)Br9IX5S^`OTqtXldD=AN4bF++TE)iyF;Lz_7VrpK1bJ zTqG-Q`xdkr7j7r%Z1zRuoed=0861btp<p84&*JqrK=w<%pWoqgKF*|n)AM;*Kj@!y zl<EDGJ?`)GnQz#;-NdJT62xm;Kc41!*Zow)<HCB!+AapySvzNw!S~3Uqfqle`2{*$ zzW`o}TOn}Wr8j4~TVR6$t95e)xjJl@cmbs-mf~=AeYWg7h@9{Xj+dL=Tu$Or#}p`l zSYZAO$s5d)H@?I2|2>mVNk;eSd@k>5lJ|f64$E`o%{8{XC$FxAk8^{jC5qb0G|H?A zHr2`_HOg4>@|Fl7VWwq-W+UpV?NA@k+h`StNttNUyh58OnRdbiB<8}?2;3*~e8Yur z9Dy#1IjucIOjC1BK&<5kNw;*2tz*eck<?g38Pp<CIth*7bjr-cQX5aK4VGL?w3-Qy zo~cPw@ku4(*O52AJ@#85kFg&<|MX68k3C18ZoDq+$+H1sCn{Y<n%r1m=O*aaW*MRL zWK9aQ?TEaVP!((37MN$+ZIA=jm5%0pp^1lKp+grTY=fz)0?Y~}5T*u%3Ma<3<Ozyu zD-cgcbfM6$XyQT@6^fengh@O|1ZGp{XfN%i)E$9aI_-7!WCkMZmI=-#>M203qm5}i z3@Wt{@m@g#G~#QLC*)`!+D`9;iJ!z*ByTz;bsETPj1)H7M4sCDKf<z5Srp--{};&f zC=*0pf@POx5+Pl4O>)$w5ckn$Unt0o)k&9v!!~G3AxuwRZnM3qo9J0jUSNc(goX-G zG@VdxJ_+K1yvd|7nT<#}N-b1L*LSB_Rn(t-wApuT)|x0%HJE53%Z~nxb)&!(BziMT zUXx|jS0Zn;(cY$cI?N8_A!SdNJQH;rfu7|_#biUciCUuyh$2mqp%W_H+KjEOEfB{% zuLL2UluNC&!GGC1pB2Y(Ee<PC;Fa?NdH{nL)~>ep;((1Yv$JVJEE6rp#IzvBVDMUd zZ|=I`f?!@@o}}O5zQf$bJx6xZRn@7Py8S29GZUq|h;7BvNzSL=kuAxVkaXm6zL`B~ z619+rP)Y2VNhu-7P`P-D8n=>%6&e-AnLY#)swI}cGnf?>Z6y!;k7jEP9_abTLZP+W z{lF#G3!_aad0$oGoxHz7`uOkfkv{zEX0Hz)+Aksx{oS)?@}ic=!#>zVV`EATDIZXN zTG&}iG}GI5<l$RLHkfUyY>Y<(N8XmZOl1nfpXY_Va>`n`kcaVNHYJWcu22pYT|b#( zZc#IFb0v=!T8cG?j)xeP@;K)KZ1D34q8F#U-C(<b72A%+_oglCUuQ<}vZ=#nqlS@B zns*R5+cpQDVe=8~?&Q5a9dF#>`uOg9q|HO~rq^5Zz5aUGG@CEfJb)NlBoC<ry2&T$ zPGX5025{SRe?MKqJfS?n)I&c5m^Q#q4^E15IA3>Efa<i6$2CZEAumJ4jA0>fgVCrw zV(ti#;|%|UmDXvV1<+U>Jo9_H-h!JLRyt9uN>C&411+7q#dAZ9m66adZxaByg<Ser zvRyP<@e`J8<~w;mEO|eDeE0KzzJ0pwHJdLZkGJmMv*g18{r1@U?gpIyGHP40XX5%% z?q9Bj_5%uI^5o_P=3m}z;pK+}_x;Q1#gdu7Qo>RJkIM0b%Uj-l;hpq*`cpOU*Y9A( zk4WBO9m7(-?x7vfZEHAw{iqRCB)GPJhTRV|hUK3AH1hU8{d35>kK6oPUOM~RY2MeF zbSLkxL0+wTHwlXdqwiCNUsS5_hwo<{F_zl-#6&`l(8V@qEYX^VX?DVm$a|5(*$sl( z?%m*OJ2Eyd*%KPT=MSb}L1Ab{<!B2mXfOkJXT%({brW;rp82JviI#0Xu(jxZrlM0i zSEhV+Q0qV^tqZKXgyh=HXuTA@OkX;_IJ$E)&(fLdsCCuep1kcm*GS%PBWuy5Xf;Wk zO?tdyQuWNF!w*89?eFA$5qSyF*w)-OQ;6RYAWhN$x&k!4#E7|h1U}_7YBuf~saP)S z8nMvLtK|8RTgo2RP%(5b%x(+~wVhPcv#x5!i6tgd6U)sp&RL=8gmWE2&1}(tFN!9G zOwcG?E=wx<v2LJXYNB(^rJIkkjOYy$8q}+=kr&h{)b%UmwQ`_3CQSn)gL+&>2;Y>v zIcysC%e$Y+_L0fegn&%y(4=eR9qQ_dNxL6}yyg!F8~)Ru8T)D*Inf~Wz5(=c6A?`r zl9%8XG>ra=iLcYO&|Pzf8!aWDGHDUi45<Cp028p#03^rBM`S3M9@xA#(R2d2#!vzH zMj_<PM(hNv7}n5g?y;;9+yoT}P!}Z&ru|y9(o7i#4V30QR1G{9mw1faHU@-nQY^hp zEeq*gPh;<qJReo00OTyNSoM15YaLOBF`F(Rq*5Pl=ddAu8~a~ev>8BY&+P@7RITLA zfDq#MQC*t24wkl35qUlyRrEWIn6Y8&psbsd_s4<poxI;8Pnc3-$S2O^bu{e?6-MGO zUz%AN^lpwVa}MrzUo<aaQ@fIv#Fg$sk}9rDG24y=^hC}>(@4m>1DKrju_0zErs<SA zMK9t7Dxz>m9T;SCrnoDidC^E78;sVbXC**OUIw&44AyROGXW@++ePydizo201p&Ss zT*%`Pa2Yb_kgStr9t45(!wD%?vu*H{l2hGEqXy9kc}vZkF-Ruz@OLRLCI!%(DAFYI zs+sN38h8YDHi^jdA@gNJCe`ebT0Suv>@2i~QXl&vzb$z%+{ybI^2%W=h0HGGF>9u& z7SN}Xr$)sir)lbJ)x1lzIR`6wQIV=DwCL(lH7QM<MuW&b(YymT=QQOcp}AmSB(NIn z1k@*-DN3C%hJ^T$$ctQbh~#lR7tMwbPFTrB^O(g}zH$$65nyHtJW2Cn+HqtJlGwU~ zts^f2cNhRgWps~{39u~bkFuaT?mAgf-9{6{IYjz~<fW`O-hbcycBD`PAuOqOGFVL_ z@~G9q)+j_017}j^$ZNnIb|z6f2*Eg@lAnLf1pM2Q=gB*HUqjyH7n6Hntz5}t2LVT# zsti%*4MR~eO?-Sto=4>E^wE)L*dBt~*9k_B4!Wn&CjK`mY8?rjf1uBKyVJBxS;1O3 zX^fd15FNL`Ba*j2`NgQn6@^*JOC}-tS@V`jV5E6^>E~<m$0wS1K+zyKJ(-bJv5V(o zA}{1NiI46g3)L&mJ!y;{Z%E#Wi77$yus552GATHlM7p<hpkisCY2K0Qdtwky6)T-d zNM36LNr{1;liQNFhc}UT9<qHW?{eYkIH?`WjVH<7N%KSvjbMqV4N6AqdP_w<l*1H7 zyEA$D?D2&>4t;nb4<a{(Iqv5~n<xra^28C2f<cNsyc+5#;;hR|%#KHajlIpVpTn$; zBEhU`0Yk!`vg`&)XsAk67WrQLc^-wp>Qg_@!Ds~fq{tLQkZt~~pEvaZMA*;sKm-tY zxp3r>BKL7*g}~4mjv8A7un8P)NM4*-jhgrCWCT`l9zON+++|FYVH=fYnspPcE%daX zC%YZ3J+#9(^8l?kc#ga^hmitqOI~i?LSB+4E|phY^Ki@_d_Q_$FPjffj|GS4c{lG* zFSERwg3Vju2qJnqw10SU-c5UT1>2o_B+JJ8O7dEoWPxnWZiyogJ5m+yNZBwKsC-qd z>C(f#82Es@2bL_;mHk0=4BwW5J<f#^Rhx8acPzCI+*#<7rBc<pWL1yvd*<o5XCW1r zp?;#P9o!1L#Z2*J;j;KD#?Xqg2)6uXelf5-p0TWyyt5i<k;mmyB;8?HuKeJRK8|yy z0>;(l<{Z5Xs8FU_`gE<)CP9U{I+obuq-rQdD`$@<rfzv{v!eFn!@J*lMT^J^wJb9$ zo|=@zaY-im7n7RRq(^5`m6J&W?-Q1t+ndLfsoRpLyf=|2e2-q~71vby0sIbP7~Q6P zdMtmAY78@&)`z!ve2)S7mA%E4ti?RjlNRC^`KN2O#h%VY&yEK3`LUDzzoO0GP5U?J z!`C;S%lv)Q{yuu_Mt9Oz@?1)<tc~u-lZk(tJ||CzXW$v!G{f7-Q@Vx2XM2<RDtU=} zkgRwig;!!@0T13h&?9W+HQ2u$dH2y{ck;dgdEQFiMe`)k8Vx&`WW12~UigXeN8Amx z8^#d5SX<OQBPC@2YwrwJ9OscZ?m)mN<puHp1|RI(-j?z~U}1cf4`HJaU5t$dHUfhW zbIRS9{jMJ@<e9#A*vHr^C7JH&B-7n9`!#7=MURt~6e&sTH~%WzQth!wGQK#0%U#1P z#Frnieo|*d8oIbuv7TPfR$QYj(e_R}VHg8bsZ11CVp3`nRKywft7hVe*Z2YkSQzS@ z7ue?!HBaE+Q_3cM>Dlv4EfWXH1TPh3b;gQ)Jx!{i&(o`0Lg>l!_ia9k<`H?8p(2s@ zuUbbQF%mOmq~mO^kcb+8ozg-MIK$^+9?`*zE|P*x5>~-#N<*M_rZsd;<=F6^#XRMx zp9d5mB^InzDYFPxMXH+c5H(MtPk1OK_In)A%M@xr@&K4Anu%&O7d@{9?5BK0l2GCJ z2H)`LuG`>8;i{qZ=$mCYQUdp><~id93u*5NuX&$E^ZxVi|G)k9f%Zr9e$5kSm+~MH z6sF~wyeVexQ8Bk_Jl3$~80Q%mJGmm-ql~d+MDkignt9;Iky$>KB5_}8!?ADGxcT4m z<Y=fN&V5e)sT-q1@+OQY+atIfdb~q+ERxqDu#1uwp@S}%0FJ^o<?{;vvzQnHc`Wy* zzZ<@PJ14w1Gp|Q<T@g}#a#W|$llOTv@3Y%mH2bFJVFWg13g`X2x{yafloK@7)%7Z6 zs;H2>63fd{4Rt-F%DDKAal!j^fc>Jzc^`|tD)da&@Cg0DJ@Ge>fNG{#OCF~p(jC<i zk~bIVCmK4PVk(7b%{h{X3{DsX*7Y*h8LJm*!iOo>)bw~FuX00du)jn}jy@;)yow~S z#%dH^#&b{JuP=M}FmvPm_s`F6e+BQ?JV%~dTF!F582SE0-iBuF;gHO(SgH_X!3N0_ zJkR(t!<I@k+$=0#qQdZQ$&V|wj8Sp&M2!nd1-->+D}jj}j*Dp?c%O0Fs!T30=p&aE z>lDkTe!+*HcSu%+&L`hiydm<AbZV7XG0%~_n6^J^r@ZBDM_w<H*PPN#Q>>^Ho^_nd zk;|nTi9D^AS~-V#(iAYVqxR%Ivi<YZ+b?LI^ENwEM)<3-3Cr@mWh}B(Z%t*XxJ=NG zL&51fmXvz96g76H2g_E*ZcSYotctZ6+2ssN1vX`2VX%|Tl-tg>fL$_H&=m?}1*@%P ztuC?0UTbuAGhHs&3R~0`-%nGToMl@oHW`yKYfFu~EK&Kg%NQjM*Xc6e+hV59Q|i1j zw#GLmnatQ0M;~)f-h<2R-|+Kb=E%!_yppcoa~H^4uUR8`S4}C-d*1-ztD}aO!#Mxe z-DBRo{q5wj^lazpcziQ+;m-*SpI1cFRdrwf#*JU$-Tcv~noN80ygf2`;@$+ll@3{4 zCnJAeByQ$ozL8#;{l-0_;wtO&E7{XMdEOpW^KQ*;@sn9B7`v66{Cf7^=|tS<<&FQu zJ-)u(f&SOX%Ou+C3;GkcVL~P8=3ObXbMZb2A{qVIG?&j$)Bht4f*snL4m;+j;TI)O zJo|Ao_%+pgKHHy)zg?-@Q#0|SB>tj8-Dd5o*Kh32OyAF+XAD68%9nS}8LKIA-i~hM zJ(-3ef#hX}PtOfMa^bFmZj{1@t)GVeT8-a_<z$pIHUgxjpk;3B(xi5m(atPmz$~qL z>x~)KC7AI<UKQkyJd4fonN1)zbc20mXazuPMholwyfsHl3&aC<UPi)eKM6f~p1dcC zYW5lA42(rx11R8<Cp`phAxptZ=nBx4BhNr!G|08V=CU#%6EG#%z(8SuwNP3B2ItI& zr?seT%CgLp=gITrz0f=|bRo0Bzy^k(y^z;p5kLbv>%;HfW(7Ogg6v>5XgGPBTWq_= z`WiCwG&QWZX9u*j!F+7kR8^HH&y(lLd!c!0n!(sp+M=?D7y&wym${;Kf+|*hCoe?R z3qh`2-6hU5CIwVA7-{#2;wjEU&1<F|dYk|9-sTs!_>0?5;=DDO28K08Xi#8C*H(~h z!6eY5Q<;GXKntMVZ%NN+={Lw7<m-Yok2&%Ho2)B{bJ(QMyv;4fd54{k^S-!+U)%0$ z9wLS4<mhw8fdoME8UT#wf)T*%=&Xv_<FP!EH$Y39Tvph8NBb3=G%x6Z&bx$~UiqE8 zz;ZQh7;UWN$@AoS^6q%!_1b+)5u&w@&P8-g-I2Y#AFw7Da{Y9LE_E(t`l4CmC!QzI zllLYg^1ONT<b5=G-n>07dC|vGlL}9sH%}f-<Buh8A9?b;dGb7Y-n_k^ygG^^5vJR1 z8ir!u)^Bt7?vvLv*iUor=lheqcgHTw@;vXIvnbL#eUHQKiZ;F`uZ|bk8GeLQNz^v( zameY|=iv^A8){FUx5pz-%W-T3NC}}Rt%Ntp3EU$u-I*>7%d!Gjq>B+83!teL*wDzl z(xszA-tK!W?kK3OuE^WKSeh_}aUAK_EmWm-<GSHBgq_ZF3Br@-?P2VH{8h<r;x?|P P00000NkvXXu0mjf@K|uR literal 0 HcmV?d00001 diff --git a/service.plexskipintro/resources/settings.xml b/service.plexskipintro/resources/settings.xml new file mode 100644 index 0000000000..3615cf7cf0 --- /dev/null +++ b/service.plexskipintro/resources/settings.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<settings> + <category label="32001"> + <setting label="Plex Base Url" type="text" id="plex_base_url" default="http://192.168.0.100:32400"/> + <setting label="Authentication Token" type="text" id="auth_token" default="" /> + <setting label="Timeout" type="number" id="default_timeout" default="10"/> + </category> +</settings> \ No newline at end of file diff --git a/service.plexskipintro/resources/skins/Default/720p/script-dialog.xml b/service.plexskipintro/resources/skins/Default/720p/script-dialog.xml new file mode 100644 index 0000000000..fd99d02a25 --- /dev/null +++ b/service.plexskipintro/resources/skins/Default/720p/script-dialog.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<window id="9999"> + <defaultcontrol always="true">9001</defaultcontrol> + <animation effect="fade" start="0" end="100" time="300">WindowOpen</animation> + <animation effect="fade" start="100" end="0" time="300">WindowClose</animation> + <controls> + <control type="grouplist" id="9001"> + <posx>25</posx> + <posy>293</posy> + <width>800</width> + <height>150</height> + <align>left</align> + <itemgap>15</itemgap> + <orientation>vertical</orientation> + <control type="button" id="201"> + <description>Later Button</description> + <width>200</width> + <height>40</height> + <align>left</align> + <aligny>center</aligny> + <label>Skip Intro</label> + <font>font12_title</font> + <textcolor>FFFFFFFF</textcolor> + <texturenofocus>button-nofo.png</texturenofocus> + <texturefocus>button-fo.png</texturefocus> + <textoffsetx>10</textoffsetx> + </control> + </control> + </controls> +</window> diff --git a/service.plexskipintro/resources/skins/Default/media/bg-fade.png b/service.plexskipintro/resources/skins/Default/media/bg-fade.png new file mode 100644 index 0000000000000000000000000000000000000000..636678df8446476c1749b592a66b29b3e0cae1d6 GIT binary patch literal 26331 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 Pe_9ypTj*6FoFe`MObeJM literal 0 HcmV?d00001 diff --git a/service.plexskipintro/resources/skins/Default/media/button-fo.png b/service.plexskipintro/resources/skins/Default/media/button-fo.png new file mode 100644 index 0000000000000000000000000000000000000000..f0cfa3d5f0d1d403b2fbf50f056bda01bd88f729 GIT binary patch literal 3141 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 U>Y1*kKX(GUnnoH`F#E9o07qZGVgLXD literal 0 HcmV?d00001 diff --git a/service.plexskipintro/resources/skins/Default/media/button-nofo.png b/service.plexskipintro/resources/skins/Default/media/button-nofo.png new file mode 100644 index 0000000000000000000000000000000000000000..04853195c345d0e131600950107948f165b30046 GIT binary patch literal 3138 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 Sd(yiuATZQ5)2T%`NB$QU6Sryr literal 0 HcmV?d00001 diff --git a/service.plexskipintro/service.py b/service.plexskipintro/service.py new file mode 100644 index 0000000000..e78d91ed54 --- /dev/null +++ b/service.plexskipintro/service.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +from lib.addon import * +class Service(xbmc.Monitor): + + def __init__(self, *args): + addonName = 'Plex TV Skip' + + + def onNotification(self, sender, method, data): + if method in ["Player.OnSeek"]: + onSeek() + if method in ["Player.OnPlay"]: + onPlay() + def ServiceEntryPoint(self): + monitor() + +Service().ServiceEntryPoint() \ No newline at end of file diff --git a/service.plexskipintro/targets.cfg b/service.plexskipintro/targets.cfg new file mode 100644 index 0000000000..c2b8ae4f84 --- /dev/null +++ b/service.plexskipintro/targets.cfg @@ -0,0 +1,95 @@ +; This is the config file used by server to generate add-on repositories. +; +; Each section contains the name of the target repository, a list of branches +; to fetch from, and list of dependency requirements. Add-ons not meeting +; these requirements will be skipped. +; +; Changes to this file will be synced server-side. E.g. removing a target here +; will delete that target from the server. + +; Dharma legacy repo +[dharma] +branches=dharma + +; Eden legacy repo +[eden] +branches=eden + +; Frodo legacy repo +[frodo] +branches=frodo + +; Gotham legacy repo +[gotham] +branches=gotham +minversions = + xbmc.gui:5.0.0, + xbmc.python:2.1.0, + xbmc.json:6.0.0, + xbmc.metadata:1.0, + xbmc.addon:12.0.0 + +; Helix legacy repo +[helix] +branches=gotham,helix +minversions = + xbmc.gui:5.3.0, + xbmc.python:2.1.0, + xbmc.json:6.0.0, + xbmc.metadata:1.0, + xbmc.addon:12.0.0 + +; Isengard legacy repo +[isengard] +branches=gotham,helix,isengard +minversions = + xbmc.gui:5.3.0, + xbmc.python:2.1.0, + xbmc.json:6.0.0, + xbmc.metadata:1.0, + xbmc.addon:12.0.0 + +[jarvis] +branches = gotham,helix,isengard,jarvis +minversions = + xbmc.gui:5.10.0, + xbmc.python:2.1.0, + xbmc.json:6.0.0, + xbmc.metadata:1.0, + xbmc.addon:12.0.0 + +[krypton] +branches = gotham,helix,isengard,jarvis,krypton +minversions = + xbmc.gui:5.12.0, + xbmc.python:2.1.0, + xbmc.json:6.0.0, + xbmc.metadata:1.0, + xbmc.addon:12.0.0 + +[leia] +branches = gotham,helix,isengard,jarvis,krypton,leia +minversions = + xbmc.gui:5.14.0, + xbmc.python:2.1.0, + xbmc.json:6.0.0, + xbmc.metadata:1.0, + xbmc.addon:12.0.0 + +[matrix] +branches = gotham,helix,isengard,jarvis,krypton,leia,matrix +minversions = + xbmc.gui:5.15.0, + xbmc.python:3.0.0, + xbmc.json:6.0.0, + xbmc.metadata:1.0, + xbmc.addon:12.0.0 + +[nexus] +branches = gotham,helix,isengard,jarvis,krypton,leia,matrix,nexus +minversions = + xbmc.gui:5.15.0, + xbmc.python:3.0.0, + xbmc.json:6.0.0, + xbmc.metadata:1.0, + xbmc.addon:12.0.0 From 732c30d90f6563e9512e7321317c56a037318997 Mon Sep 17 00:00:00 2001 From: Darkmadda <dylan.thurston@gmail.com> Date: Wed, 13 Jul 2022 17:16:29 -0600 Subject: [PATCH 2/5] Delete PULL_REQUEST_TEMPLATE.md Requested as in review suggestion --- service.plexskipintro/PULL_REQUEST_TEMPLATE.md | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 service.plexskipintro/PULL_REQUEST_TEMPLATE.md diff --git a/service.plexskipintro/PULL_REQUEST_TEMPLATE.md b/service.plexskipintro/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index edc2381b83..0000000000 --- a/service.plexskipintro/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,18 +0,0 @@ -### Description -<!--- Provide a short summary of submitted add-on in case it's a new addition. --> -<!--- If it's plugin update only highlight biggest changes if needed. --> -<!--- Make sure you follow the checklist below before finalising your pull-request. --> -### Checklist: -<!--- Go over all the following points, and put an `x` in all the boxes that apply like this: [X] --> -<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> -- [ ] My code follows the [add-on rules](http://kodi.wiki/view/Add-on_rules) and [piracy stance](http://kodi.wiki/view/Official:Forum_rules#Piracy_Policy) of this project. -- [ ] I have read the [CONTRIBUTING](https://github.com/xbmc/repo-scripts/blob/master/CONTRIBUTING.md) document -- [ ] Each add-on submission should be a single commit with using the following style: [script.foo.bar] 1.0.0 - -Additional information : -- Submitting your add-on to this specific branch makes it available to any Kodi version equal or higher than the branch name with the applicable Kodi dependencies limits. -- [add-on development](http://kodi.wiki/view/Add-on_development) wiki page. -- Kodi [pydocs](http://kodi.wiki/view/PyDocs) provide information about the Python API -- [PEP8](https://www.python.org/dev/peps/pep-0008/) codingstyle which is considered best practise but not mandatory. -- This add-on repository has automated code guideline check which could help you improve your coding. You can find the results of these check at [Codacy](https://www.codacy.com/app/Kodi/repo-scripts/dashboard). You can create your own account as well to continuously monitor your python coding before submitting to repo. -- Development questions can be asked in the [add-on development](http://forum.kodi.tv/forumdisplay.php?fid=26) section on the Kodi forum. From 1f1a9c4e1aa3f6ff9b541e9237a095db00a723a5 Mon Sep 17 00:00:00 2001 From: Darkmadda <dylan.thurston@gmail.com> Date: Wed, 13 Jul 2022 17:18:38 -0600 Subject: [PATCH 3/5] Delete broken_addon.md Requested as in review suggestion --- .../.github/ISSUE_TEMPLATE/broken_addon.md | 30 ------------------- 1 file changed, 30 deletions(-) delete mode 100644 service.plexskipintro/.github/ISSUE_TEMPLATE/broken_addon.md diff --git a/service.plexskipintro/.github/ISSUE_TEMPLATE/broken_addon.md b/service.plexskipintro/.github/ISSUE_TEMPLATE/broken_addon.md deleted file mode 100644 index 54fa92f119..0000000000 --- a/service.plexskipintro/.github/ISSUE_TEMPLATE/broken_addon.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -name: Report a broken add-on -about: Report an add-on that is currently broken within Kodi. -title: '' -labels: 'Broken-Addon' -assignees: '' - ---- - - -### Add-on details: -<!--- Provide some details of the broken add-on. --> -- Add-on name: -- Add-on ID: -- Version number: -- Kodi/repository version: - -<!--- EXAMPLE HOW TO FILL ADD-ON DETAILS: -- Add-on name: Global Search -- Add-on ID: script.globalsearch -- Version number: 8.0.0 -- Kodi/repository version: Leia ---> - -### Ownership -- [ ] I am the owner of this add-on - -### Broken because: -<!--- Provide a short description/reason of why this add-on is broken. --> - From a2de3813a01080cdd1ae7adf723f4eeea382129e Mon Sep 17 00:00:00 2001 From: Darkmadda <dylan.thurston@gmail.com> Date: Wed, 13 Jul 2022 17:50:23 -0600 Subject: [PATCH 4/5] Update addon.xml CR fixes --- service.plexskipintro/addon.xml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/service.plexskipintro/addon.xml b/service.plexskipintro/addon.xml index ea491e6963..64d73746ae 100644 --- a/service.plexskipintro/addon.xml +++ b/service.plexskipintro/addon.xml @@ -9,10 +9,11 @@ <description lang="en">Prompt a Skip Intro dialog Netflix style using plex metadata. Skips intro for your favourite shows</description> <summary lang="en">Skip TV Shows Intro</summary> <platform>all</platform> - <forum>-</forum> - <website>-</website> - <source>-</source> - <news>-</news> + <forum>-https://forum.kodi.tv/showthread.php?tid=368916</forum> + <website>https://github.com/Darkmadda/PlexSkipIntro</website> + <source>https://github.com/Darkmadda/PlexSkipIntro</source> + <news>https://github.com/Darkmadda/PlexSkipIntro/releases</news> + <license>GPL-3.0-ONLY</license> <assets> <icon>resources/icon.png</icon> <fanart>resources/fanart.jpg</fanart> From 302fc5d006cddb1e95277cb1e99b226eff47183f Mon Sep 17 00:00:00 2001 From: Darkmadda <dylan.thurston@gmail.com> Date: Wed, 13 Jul 2022 17:51:24 -0600 Subject: [PATCH 5/5] Delete CONTRIBUTING.md CR fix --- service.plexskipintro/CONTRIBUTING.md | 95 --------------------------- 1 file changed, 95 deletions(-) delete mode 100644 service.plexskipintro/CONTRIBUTING.md diff --git a/service.plexskipintro/CONTRIBUTING.md b/service.plexskipintro/CONTRIBUTING.md deleted file mode 100644 index d7ad6dc30c..0000000000 --- a/service.plexskipintro/CONTRIBUTING.md +++ /dev/null @@ -1,95 +0,0 @@ -### Introduction - -**Kodi** uses Github for development only, i.e. for *pull requests* and the review of such code. -**Do not open** an issue on Github for your questions or bug reports. -**Do not comment** on a *pull request* unless you are involved in the testing of such or have something meaningful to contribute. -Not familiar with git? Start by looking at Github's [collaborating pages](https://help.github.com/categories/collaborating/). - -#### Questions about Kodi? - -To get your questions answered, please ask in the [Kodi community forum's](http://forum.kodi.tv/) or on **IRC:** [#kodi](http://webchat.freenode.net?nick=kodi-contrib&channels=%23kodi&prompt=1&uio=OT10cnVlde) on freenode.net - -#### Issue or bug reports and discussions - -Issue or bug reports must be send towards the add-on creator which can be found in each [[addon.xml]] (http://kodi.wiki/view/Addon.xml) file. - -If you can, we encourage you to investigate the issue yourself and create a [pull request](https://help.github.com/articles/creating-a-pull-request/) towards the original source of the code. We try to ask each add-on aythor to include this in the [[addon.xml]] (http://kodi.wiki/view/Addon.xml) file. Should this not be present then we advise you to find the dedicated add-on thread on the forum and ask there. - -For bug reports and related discussions, feature requests and all other support, please go to [Kodi community forum's](http://forum.kodi.tv/) and find the dedicated add-on thread. - -#### Pull Requests - -Before [creating a pull request](https://help.github.com/articles/creating-a-pull-request/), please read our general code guidelines that can be found at: - -- [Kodi add-on development](http://kodi.wiki/view/Add-on_development) - -###### General guidelines for creating pull requests: -- **Create separate branches**. Don't ask us to pull from your master branch. -- **One pull request per add-on**. If you want to do more than one, send multiple *pull requests*. -- **Do not send us multiple commits**. Make sure each add-on only consists of a single commit in your *pull - request*. - If you had to make multiple intermediate commits while developing, please squash them before sending them to us. - In the end before merging you may be asked to squash your commit even some more. - -###### Please follow these guidelines; it's the best way to get your work included in the repository! - -- [Click here](https://github.com/xbmc/repo-scripts/fork/) to fork the Kodi script repository, - and [configure the remote](https://help.github.com/articles/configuring-a-remote-for-a-fork/): - - ```bash - # Clone your fork of kodi's repo into the current directory in terminal - git clone git@github.com:<your github username>/repo-scripts.git repo-scripts - # Navigate to the newly cloned directory - cd repo-scripts - # Assign the original repo to a remote called "upstream" - git remote add upstream https://github.com/xbmc/repo-scripts.git - ``` - -- If you cloned a while ago, get the latest changes from upstream: - - ```bash - # Fetch upstream changes - git fetch upstream - # Make sure you are on your 'master' branch - git checkout master - # Merge upstream changes - git merge upstream/master - ``` - 'master' is only used as example here. Please replace it with the correct branch you want to submit your add-on towards. - -- Create a new branch to contain your new add-on or subsequent update: - - ```bash - git checkout -b <add-on-branch-name> - ``` - - The branch name isn't really relevant however a good suggestion is to name it like the addon ID. - -- Commit your changes in a single commit, or your *[pull request](https://help.github.com/articles/using-pull-requests)* is unlikely to be merged into the main repository. - Use git's [interactive rebase](https://help.github.com/articles/interactive-rebase) - feature to tidy up your commits before making them public. - The commit for your add-on should have the following naming convention as the following example: - - ```bash - [metadata.themoviedb.org] 3.0.0 - ``` - - Your addon ID between brackets followed by the version number. - -- Push your topic branch up to your fork: - - ```bash - git push origin <add-on-branch-name> - ``` - -- Open a [pull request](https://help.github.com/articles/using-pull-requests) with a - clear title and description. - -- Updating your [pull request](https://help.github.com/articles/using-pull-requests) can be done by applying your changes and squashing them in the already present commit. Afterwards you can force push these change and your pull request will be updated. - - ```bash - git push --force origin <add-on-branch-name> - ``` - -These examples use git command line. There are also git tools available that have a graphic interface and the steps above should be done in a similar way. Please consult the manual of those programs. -