summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLunatixz <Kgraer@gmail.com>2017-12-29 20:06:15 -0500
committerMartijn Kaijser <martijn@xbmc.org>2018-01-01 13:24:06 +0100
commit5e1d17ee44e15d785a8b13e2827ea729332828bb (patch)
tree39ce99f88b17631084c91f4d5189daa9f71ce4c4
parent444c95e8ba520acd2277dad334774717eb143826 (diff)
[plugin.video.newsblender] 1.0.0
-rw-r--r--plugin.video.newsblender/LICENSE674
-rw-r--r--plugin.video.newsblender/README.md1
-rw-r--r--plugin.video.newsblender/addon.xml28
-rw-r--r--plugin.video.newsblender/default.py23
-rw-r--r--plugin.video.newsblender/resources/__init__.py0
-rw-r--r--plugin.video.newsblender/resources/images/fanart.jpgbin0 -> 152460 bytes
-rw-r--r--plugin.video.newsblender/resources/images/icon.pngbin0 -> 68955 bytes
-rw-r--r--plugin.video.newsblender/resources/images/screenshot01.pngbin0 -> 678403 bytes
-rw-r--r--plugin.video.newsblender/resources/images/screenshot02.pngbin0 -> 684648 bytes
-rw-r--r--plugin.video.newsblender/resources/images/screenshot03.pngbin0 -> 828536 bytes
-rw-r--r--plugin.video.newsblender/resources/iso3166-1.json1677
-rw-r--r--plugin.video.newsblender/resources/iso639-1.json752
-rw-r--r--plugin.video.newsblender/resources/language/resource.language.en_gb/strings.po41
-rw-r--r--plugin.video.newsblender/resources/lib/__init__.py0
-rw-r--r--plugin.video.newsblender/resources/lib/newsblender.py272
-rw-r--r--plugin.video.newsblender/resources/settings.xml6
16 files changed, 3474 insertions, 0 deletions
diff --git a/plugin.video.newsblender/LICENSE b/plugin.video.newsblender/LICENSE
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/plugin.video.newsblender/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ 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.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 <http://www.gnu.org/licenses/>.
+
+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:
+
+ <program> Copyright (C) <year> <name of author>
+ 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
+<http://www.gnu.org/licenses/>.
+
+ 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
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/plugin.video.newsblender/README.md b/plugin.video.newsblender/README.md
new file mode 100644
index 0000000..4e5b5bf
--- /dev/null
+++ b/plugin.video.newsblender/README.md
@@ -0,0 +1 @@
+# plugin.video.newsblender \ No newline at end of file
diff --git a/plugin.video.newsblender/addon.xml b/plugin.video.newsblender/addon.xml
new file mode 100644
index 0000000..e94fa97
--- /dev/null
+++ b/plugin.video.newsblender/addon.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<addon id="plugin.video.newsblender" version="1.0.0" name="News Blender" provider-name="Lunatixz">
+ <requires>
+ <import addon="xbmc.python" version="2.25.0"/>
+ <import addon="script.module.simplecache" version="1.0.0"/>
+ <import addon="script.module.youtube.dl" version="17.0.0"/>
+ </requires>
+ <extension point="xbmc.python.pluginsource" library="default.py">
+ <provides>video</provides>
+ </extension>
+ <extension point="xbmc.addon.metadata">
+ <summary lang="en_GB">Access worldwide news from over 5,000 news sources and blogs in one plugin.</summary>
+ <description lang="en_GB">Get breaking news headlines, and search for articles from over 5,000 news sources and blogs.</description>
+ <platform>all</platform>
+ <license>GNU GENERAL PUBLIC LICENSE. Version 3, June 2007</license>
+ <source>https://github.com/Lunatixz/KODI_Addons/tree/master/plugin.video.newsblender</source>
+ <website>http://newsapi.org</website>
+ <news></news>
+ <forum>https://forum.kodi.tv/showthread.php?tid=326129</forum>
+ <assets>
+ <icon>resources/images/icon.png</icon>
+ <fanart>resources/images/fanart.jpg</fanart>
+ <screenshot>resources/images/screenshot01.png</screenshot>
+ <screenshot>resources/images/screenshot02.png</screenshot>
+ <screenshot>resources/images/screenshot03.png</screenshot>
+ </assets>
+ </extension>
+</addon>
diff --git a/plugin.video.newsblender/default.py b/plugin.video.newsblender/default.py
new file mode 100644
index 0000000..2446035
--- /dev/null
+++ b/plugin.video.newsblender/default.py
@@ -0,0 +1,23 @@
+# Copyright (C) 2017 Lunatixz
+#
+#
+# This file is part of News Blender.
+#
+# News Blender 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.
+#
+# News Blender 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 News Blender. If not, see <http://www.gnu.org/licenses/>.
+
+# -*- coding: utf-8 -*-
+
+#entrypoint
+if __name__ == '__main__':
+ from resources.lib import newsblender \ No newline at end of file
diff --git a/plugin.video.newsblender/resources/__init__.py b/plugin.video.newsblender/resources/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/plugin.video.newsblender/resources/__init__.py
diff --git a/plugin.video.newsblender/resources/images/fanart.jpg b/plugin.video.newsblender/resources/images/fanart.jpg
new file mode 100644
index 0000000..feac538
--- /dev/null
+++ b/plugin.video.newsblender/resources/images/fanart.jpg
Binary files differ
diff --git a/plugin.video.newsblender/resources/images/icon.png b/plugin.video.newsblender/resources/images/icon.png
new file mode 100644
index 0000000..1323860
--- /dev/null
+++ b/plugin.video.newsblender/resources/images/icon.png
Binary files differ
diff --git a/plugin.video.newsblender/resources/images/screenshot01.png b/plugin.video.newsblender/resources/images/screenshot01.png
new file mode 100644
index 0000000..49ed9b5
--- /dev/null
+++ b/plugin.video.newsblender/resources/images/screenshot01.png
Binary files differ
diff --git a/plugin.video.newsblender/resources/images/screenshot02.png b/plugin.video.newsblender/resources/images/screenshot02.png
new file mode 100644
index 0000000..59f5d0f
--- /dev/null
+++ b/plugin.video.newsblender/resources/images/screenshot02.png
Binary files differ
diff --git a/plugin.video.newsblender/resources/images/screenshot03.png b/plugin.video.newsblender/resources/images/screenshot03.png
new file mode 100644
index 0000000..8d1d9e4
--- /dev/null
+++ b/plugin.video.newsblender/resources/images/screenshot03.png
Binary files differ
diff --git a/plugin.video.newsblender/resources/iso3166-1.json b/plugin.video.newsblender/resources/iso3166-1.json
new file mode 100644
index 0000000..2834482
--- /dev/null
+++ b/plugin.video.newsblender/resources/iso3166-1.json
@@ -0,0 +1,1677 @@
+{
+ "3166-1": [
+ {
+ "alpha_2": "AW",
+ "alpha_3": "ABW",
+ "name": "Aruba",
+ "numeric": "533"
+ },
+ {
+ "alpha_2": "AF",
+ "alpha_3": "AFG",
+ "name": "Afghanistan",
+ "numeric": "004",
+ "official_name": "Islamic Republic of Afghanistan"
+ },
+ {
+ "alpha_2": "AO",
+ "alpha_3": "AGO",
+ "name": "Angola",
+ "numeric": "024",
+ "official_name": "Republic of Angola"
+ },
+ {
+ "alpha_2": "AI",
+ "alpha_3": "AIA",
+ "name": "Anguilla",
+ "numeric": "660"
+ },
+ {
+ "alpha_2": "AX",
+ "alpha_3": "ALA",
+ "name": "Åland Islands",
+ "numeric": "248"
+ },
+ {
+ "alpha_2": "AL",
+ "alpha_3": "ALB",
+ "name": "Albania",
+ "numeric": "008",
+ "official_name": "Republic of Albania"
+ },
+ {
+ "alpha_2": "AD",
+ "alpha_3": "AND",
+ "name": "Andorra",
+ "numeric": "020",
+ "official_name": "Principality of Andorra"
+ },
+ {
+ "alpha_2": "AE",
+ "alpha_3": "ARE",
+ "name": "United Arab Emirates",
+ "numeric": "784"
+ },
+ {
+ "alpha_2": "AR",
+ "alpha_3": "ARG",
+ "name": "Argentina",
+ "numeric": "032",
+ "official_name": "Argentine Republic"
+ },
+ {
+ "alpha_2": "AM",
+ "alpha_3": "ARM",
+ "name": "Armenia",
+ "numeric": "051",
+ "official_name": "Republic of Armenia"
+ },
+ {
+ "alpha_2": "AS",
+ "alpha_3": "ASM",
+ "name": "American Samoa",
+ "numeric": "016"
+ },
+ {
+ "alpha_2": "AQ",
+ "alpha_3": "ATA",
+ "name": "Antarctica",
+ "numeric": "010"
+ },
+ {
+ "alpha_2": "TF",
+ "alpha_3": "ATF",
+ "name": "French Southern Territories",
+ "numeric": "260"
+ },
+ {
+ "alpha_2": "AG",
+ "alpha_3": "ATG",
+ "name": "Antigua and Barbuda",
+ "numeric": "028"
+ },
+ {
+ "alpha_2": "AU",
+ "alpha_3": "AUS",
+ "name": "Australia",
+ "numeric": "036"
+ },
+ {
+ "alpha_2": "AT",
+ "alpha_3": "AUT",
+ "name": "Austria",
+ "numeric": "040",
+ "official_name": "Republic of Austria"
+ },
+ {
+ "alpha_2": "AZ",
+ "alpha_3": "AZE",
+ "name": "Azerbaijan",
+ "numeric": "031",
+ "official_name": "Republic of Azerbaijan"
+ },
+ {
+ "alpha_2": "BI",
+ "alpha_3": "BDI",
+ "name": "Burundi",
+ "numeric": "108",
+ "official_name": "Republic of Burundi"
+ },
+ {
+ "alpha_2": "BE",
+ "alpha_3": "BEL",
+ "name": "Belgium",
+ "numeric": "056",
+ "official_name": "Kingdom of Belgium"
+ },
+ {
+ "alpha_2": "BJ",
+ "alpha_3": "BEN",
+ "name": "Benin",
+ "numeric": "204",
+ "official_name": "Republic of Benin"
+ },
+ {
+ "alpha_2": "BQ",
+ "alpha_3": "BES",
+ "name": "Bonaire, Sint Eustatius and Saba",
+ "numeric": "535",
+ "official_name": "Bonaire, Sint Eustatius and Saba"
+ },
+ {
+ "alpha_2": "BF",
+ "alpha_3": "BFA",
+ "name": "Burkina Faso",
+ "numeric": "854"
+ },
+ {
+ "alpha_2": "BD",
+ "alpha_3": "BGD",
+ "name": "Bangladesh",
+ "numeric": "050",
+ "official_name": "People's Republic of Bangladesh"
+ },
+ {
+ "alpha_2": "BG",
+ "alpha_3": "BGR",
+ "name": "Bulgaria",
+ "numeric": "100",
+ "official_name": "Republic of Bulgaria"
+ },
+ {
+ "alpha_2": "BH",
+ "alpha_3": "BHR",
+ "name": "Bahrain",
+ "numeric": "048",
+ "official_name": "Kingdom of Bahrain"
+ },
+ {
+ "alpha_2": "BS",
+ "alpha_3": "BHS",
+ "name": "Bahamas",
+ "numeric": "044",
+ "official_name": "Commonwealth of the Bahamas"
+ },
+ {
+ "alpha_2": "BA",
+ "alpha_3": "BIH",
+ "name": "Bosnia and Herzegovina",
+ "numeric": "070",
+ "official_name": "Republic of Bosnia and Herzegovina"
+ },
+ {
+ "alpha_2": "BL",
+ "alpha_3": "BLM",
+ "name": "Saint Barthélemy",
+ "numeric": "652"
+ },
+ {
+ "alpha_2": "BY",
+ "alpha_3": "BLR",
+ "name": "Belarus",
+ "numeric": "112",
+ "official_name": "Republic of Belarus"
+ },
+ {
+ "alpha_2": "BZ",
+ "alpha_3": "BLZ",
+ "name": "Belize",
+ "numeric": "084"
+ },
+ {
+ "alpha_2": "BM",
+ "alpha_3": "BMU",
+ "name": "Bermuda",
+ "numeric": "060"
+ },
+ {
+ "alpha_2": "BO",
+ "alpha_3": "BOL",
+ "common_name": "Bolivia",
+ "name": "Bolivia, Plurinational State of",
+ "numeric": "068",
+ "official_name": "Plurinational State of Bolivia"
+ },
+ {
+ "alpha_2": "BR",
+ "alpha_3": "BRA",
+ "name": "Brazil",
+ "numeric": "076",
+ "official_name": "Federative Republic of Brazil"
+ },
+ {
+ "alpha_2": "BB",
+ "alpha_3": "BRB",
+ "name": "Barbados",
+ "numeric": "052"
+ },
+ {
+ "alpha_2": "BN",
+ "alpha_3": "BRN",
+ "name": "Brunei Darussalam",
+ "numeric": "096"
+ },
+ {
+ "alpha_2": "BT",
+ "alpha_3": "BTN",
+ "name": "Bhutan",
+ "numeric": "064",
+ "official_name": "Kingdom of Bhutan"
+ },
+ {
+ "alpha_2": "BV",
+ "alpha_3": "BVT",
+ "name": "Bouvet Island",
+ "numeric": "074"
+ },
+ {
+ "alpha_2": "BW",
+ "alpha_3": "BWA",
+ "name": "Botswana",
+ "numeric": "072",
+ "official_name": "Republic of Botswana"
+ },
+ {
+ "alpha_2": "CF",
+ "alpha_3": "CAF",
+ "name": "Central African Republic",
+ "numeric": "140"
+ },
+ {
+ "alpha_2": "CA",
+ "alpha_3": "CAN",
+ "name": "Canada",
+ "numeric": "124"
+ },
+ {
+ "alpha_2": "CC",
+ "alpha_3": "CCK",
+ "name": "Cocos (Keeling) Islands",
+ "numeric": "166"
+ },
+ {
+ "alpha_2": "CH",
+ "alpha_3": "CHE",
+ "name": "Switzerland",
+ "numeric": "756",
+ "official_name": "Swiss Confederation"
+ },
+ {
+ "alpha_2": "CL",
+ "alpha_3": "CHL",
+ "name": "Chile",
+ "numeric": "152",
+ "official_name": "Republic of Chile"
+ },
+ {
+ "alpha_2": "CN",
+ "alpha_3": "CHN",
+ "name": "China",
+ "numeric": "156",
+ "official_name": "People's Republic of China"
+ },
+ {
+ "alpha_2": "CI",
+ "alpha_3": "CIV",
+ "name": "Côte d'Ivoire",
+ "numeric": "384",
+ "official_name": "Republic of Côte d'Ivoire"
+ },
+ {
+ "alpha_2": "CM",
+ "alpha_3": "CMR",
+ "name": "Cameroon",
+ "numeric": "120",
+ "official_name": "Republic of Cameroon"
+ },
+ {
+ "alpha_2": "CD",
+ "alpha_3": "COD",
+ "name": "Congo, The Democratic Republic of the",
+ "numeric": "180"
+ },
+ {
+ "alpha_2": "CG",
+ "alpha_3": "COG",
+ "name": "Congo",
+ "numeric": "178",
+ "official_name": "Republic of the Congo"
+ },
+ {
+ "alpha_2": "CK",
+ "alpha_3": "COK",
+ "name": "Cook Islands",
+ "numeric": "184"
+ },
+ {
+ "alpha_2": "CO",
+ "alpha_3": "COL",
+ "name": "Colombia",
+ "numeric": "170",
+ "official_name": "Republic of Colombia"
+ },
+ {
+ "alpha_2": "KM",
+ "alpha_3": "COM",
+ "name": "Comoros",
+ "numeric": "174",
+ "official_name": "Union of the Comoros"
+ },
+ {
+ "alpha_2": "CV",
+ "alpha_3": "CPV",
+ "name": "Cabo Verde",
+ "numeric": "132",
+ "official_name": "Republic of Cabo Verde"
+ },
+ {
+ "alpha_2": "CR",
+ "alpha_3": "CRI",
+ "name": "Costa Rica",
+ "numeric": "188",
+ "official_name": "Republic of Costa Rica"
+ },
+ {
+ "alpha_2": "CU",
+ "alpha_3": "CUB",
+ "name": "Cuba",
+ "numeric": "192",
+ "official_name": "Republic of Cuba"
+ },
+ {
+ "alpha_2": "CW",
+ "alpha_3": "CUW",
+ "name": "Curaçao",
+ "numeric": "531",
+ "official_name": "Curaçao"
+ },
+ {
+ "alpha_2": "CX",
+ "alpha_3": "CXR",
+ "name": "Christmas Island",
+ "numeric": "162"
+ },
+ {
+ "alpha_2": "KY",
+ "alpha_3": "CYM",
+ "name": "Cayman Islands",
+ "numeric": "136"
+ },
+ {
+ "alpha_2": "CY",
+ "alpha_3": "CYP",
+ "name": "Cyprus",
+ "numeric": "196",
+ "official_name": "Republic of Cyprus"
+ },
+ {
+ "alpha_2": "CZ",
+ "alpha_3": "CZE",
+ "name": "Czechia",
+ "numeric": "203",
+ "official_name": "Czech Republic"
+ },
+ {
+ "alpha_2": "DE",
+ "alpha_3": "DEU",
+ "name": "Germany",
+ "numeric": "276",
+ "official_name": "Federal Republic of Germany"
+ },
+ {
+ "alpha_2": "DJ",
+ "alpha_3": "DJI",
+ "name": "Djibouti",
+ "numeric": "262",
+ "official_name": "Republic of Djibouti"
+ },
+ {
+ "alpha_2": "DM",
+ "alpha_3": "DMA",
+ "name": "Dominica",
+ "numeric": "212",
+ "official_name": "Commonwealth of Dominica"
+ },
+ {
+ "alpha_2": "DK",
+ "alpha_3": "DNK",
+ "name": "Denmark",
+ "numeric": "208",
+ "official_name": "Kingdom of Denmark"
+ },
+ {
+ "alpha_2": "DO",
+ "alpha_3": "DOM",
+ "name": "Dominican Republic",
+ "numeric": "214"
+ },
+ {
+ "alpha_2": "DZ",
+ "alpha_3": "DZA",
+ "name": "Algeria",
+ "numeric": "012",
+ "official_name": "People's Democratic Republic of Algeria"
+ },
+ {
+ "alpha_2": "EC",
+ "alpha_3": "ECU",
+ "name": "Ecuador",
+ "numeric": "218",
+ "official_name": "Republic of Ecuador"
+ },
+ {
+ "alpha_2": "EG",
+ "alpha_3": "EGY",
+ "name": "Egypt",
+ "numeric": "818",
+ "official_name": "Arab Republic of Egypt"
+ },
+ {
+ "alpha_2": "ER",
+ "alpha_3": "ERI",
+ "name": "Eritrea",
+ "numeric": "232",
+ "official_name": "the State of Eritrea"
+ },
+ {
+ "alpha_2": "EH",
+ "alpha_3": "ESH",
+ "name": "Western Sahara",
+ "numeric": "732"
+ },
+ {
+ "alpha_2": "ES",
+ "alpha_3": "ESP",
+ "name": "Spain",
+ "numeric": "724",
+ "official_name": "Kingdom of Spain"
+ },
+ {
+ "alpha_2": "EE",
+ "alpha_3": "EST",
+ "name": "Estonia",
+ "numeric": "233",
+ "official_name": "Republic of Estonia"
+ },
+ {
+ "alpha_2": "ET",
+ "alpha_3": "ETH",
+ "name": "Ethiopia",
+ "numeric": "231",
+ "official_name": "Federal Democratic Republic of Ethiopia"
+ },
+ {
+ "alpha_2": "FI",
+ "alpha_3": "FIN",
+ "name": "Finland",
+ "numeric": "246",
+ "official_name": "Republic of Finland"
+ },
+ {
+ "alpha_2": "FJ",
+ "alpha_3": "FJI",
+ "name": "Fiji",
+ "numeric": "242",
+ "official_name": "Republic of Fiji"
+ },
+ {
+ "alpha_2": "FK",
+ "alpha_3": "FLK",
+ "name": "Falkland Islands (Malvinas)",
+ "numeric": "238"
+ },
+ {
+ "alpha_2": "FR",
+ "alpha_3": "FRA",
+ "name": "France",
+ "numeric": "250",
+ "official_name": "French Republic"
+ },
+ {
+ "alpha_2": "FO",
+ "alpha_3": "FRO",
+ "name": "Faroe Islands",
+ "numeric": "234"
+ },
+ {
+ "alpha_2": "FM",
+ "alpha_3": "FSM",
+ "name": "Micronesia, Federated States of",
+ "numeric": "583",
+ "official_name": "Federated States of Micronesia"
+ },
+ {
+ "alpha_2": "GA",
+ "alpha_3": "GAB",
+ "name": "Gabon",
+ "numeric": "266",
+ "official_name": "Gabonese Republic"
+ },
+ {
+ "alpha_2": "GB",
+ "alpha_3": "GBR",
+ "name": "United Kingdom",
+ "numeric": "826",
+ "official_name": "United Kingdom of Great Britain and Northern Ireland"
+ },
+ {
+ "alpha_2": "GE",
+ "alpha_3": "GEO",
+ "name": "Georgia",
+ "numeric": "268"
+ },
+ {
+ "alpha_2": "GG",
+ "alpha_3": "GGY",
+ "name": "Guernsey",
+ "numeric": "831"
+ },
+ {
+ "alpha_2": "GH",
+ "alpha_3": "GHA",
+ "name": "Ghana",
+ "numeric": "288",
+ "official_name": "Republic of Ghana"
+ },
+ {
+ "alpha_2": "GI",
+ "alpha_3": "GIB",
+ "name": "Gibraltar",
+ "numeric": "292"
+ },
+ {
+ "alpha_2": "GN",
+ "alpha_3": "GIN",
+ "name": "Guinea",
+ "numeric": "324",
+ "official_name": "Republic of Guinea"
+ },
+ {
+ "alpha_2": "GP",
+ "alpha_3": "GLP",
+ "name": "Guadeloupe",
+ "numeric": "312"
+ },
+ {
+ "alpha_2": "GM",
+ "alpha_3": "GMB",
+ "name": "Gambia",
+ "numeric": "270",
+ "official_name": "Islamic Republic of the Gambia"
+ },
+ {
+ "alpha_2": "GW",
+ "alpha_3": "GNB",
+ "name": "Guinea-Bissau",
+ "numeric": "624",
+ "official_name": "Republic of Guinea-Bissau"
+ },
+ {
+ "alpha_2": "GQ",
+ "alpha_3": "GNQ",
+ "name": "Equatorial Guinea",
+ "numeric": "226",
+ "official_name": "Republic of Equatorial Guinea"
+ },
+ {
+ "alpha_2": "GR",
+ "alpha_3": "GRC",
+ "name": "Greece",
+ "numeric": "300",
+ "official_name": "Hellenic Republic"
+ },
+ {
+ "alpha_2": "GD",
+ "alpha_3": "GRD",
+ "name": "Grenada",
+ "numeric": "308"
+ },
+ {
+ "alpha_2": "GL",
+ "alpha_3": "GRL",
+ "name": "Greenland",
+ "numeric": "304"
+ },
+ {
+ "alpha_2": "GT",
+ "alpha_3": "GTM",
+ "name": "Guatemala",
+ "numeric": "320",
+ "official_name": "Republic of Guatemala"
+ },
+ {
+ "alpha_2": "GF",
+ "alpha_3": "GUF",
+ "name": "French Guiana",
+ "numeric": "254"
+ },
+ {
+ "alpha_2": "GU",
+ "alpha_3": "GUM",
+ "name": "Guam",
+ "numeric": "316"
+ },
+ {
+ "alpha_2": "GY",
+ "alpha_3": "GUY",
+ "name": "Guyana",
+ "numeric": "328",
+ "official_name": "Republic of Guyana"
+ },
+ {
+ "alpha_2": "HK",
+ "alpha_3": "HKG",
+ "name": "Hong Kong",
+ "numeric": "344",
+ "official_name": "Hong Kong Special Administrative Region of China"
+ },
+ {
+ "alpha_2": "HM",
+ "alpha_3": "HMD",
+ "name": "Heard Island and McDonald Islands",
+ "numeric": "334"
+ },
+ {
+ "alpha_2": "HN",
+ "alpha_3": "HND",
+ "name": "Honduras",
+ "numeric": "340",
+ "official_name": "Republic of Honduras"
+ },
+ {
+ "alpha_2": "HR",
+ "alpha_3": "HRV",
+ "name": "Croatia",
+ "numeric": "191",
+ "official_name": "Republic of Croatia"
+ },
+ {
+ "alpha_2": "HT",
+ "alpha_3": "HTI",
+ "name": "Haiti",
+ "numeric": "332",
+ "official_name": "Republic of Haiti"
+ },
+ {
+ "alpha_2": "HU",
+ "alpha_3": "HUN",
+ "name": "Hungary",
+ "numeric": "348",
+ "official_name": "Hungary"
+ },
+ {
+ "alpha_2": "ID",
+ "alpha_3": "IDN",
+ "name": "Indonesia",
+ "numeric": "360",
+ "official_name": "Republic of Indonesia"
+ },
+ {
+ "alpha_2": "IM",
+ "alpha_3": "IMN",
+ "name": "Isle of Man",
+ "numeric": "833"
+ },
+ {
+ "alpha_2": "IN",
+ "alpha_3": "IND",
+ "name": "India",
+ "numeric": "356",
+ "official_name": "Republic of India"
+ },
+ {
+ "alpha_2": "IO",
+ "alpha_3": "IOT",
+ "name": "British Indian Ocean Territory",
+ "numeric": "086"
+ },
+ {
+ "alpha_2": "IE",
+ "alpha_3": "IRL",
+ "name": "Ireland",
+ "numeric": "372"
+ },
+ {
+ "alpha_2": "IR",
+ "alpha_3": "IRN",
+ "name": "Iran, Islamic Republic of",
+ "numeric": "364",
+ "official_name": "Islamic Republic of Iran"
+ },
+ {
+ "alpha_2": "IQ",
+ "alpha_3": "IRQ",
+ "name": "Iraq",
+ "numeric": "368",
+ "official_name": "Republic of Iraq"
+ },
+ {
+ "alpha_2": "IS",
+ "alpha_3": "ISL",
+ "name": "Iceland",
+ "numeric": "352",
+ "official_name": "Republic of Iceland"
+ },
+ {
+ "alpha_2": "IL",
+ "alpha_3": "ISR",
+ "name": "Israel",
+ "numeric": "376",
+ "official_name": "State of Israel"
+ },
+ {
+ "alpha_2": "IT",
+ "alpha_3": "ITA",
+ "name": "Italy",
+ "numeric": "380",
+ "official_name": "Italian Republic"
+ },
+ {
+ "alpha_2": "JM",
+ "alpha_3": "JAM",
+ "name": "Jamaica",
+ "numeric": "388"
+ },
+ {
+ "alpha_2": "JE",
+ "alpha_3": "JEY",
+ "name": "Jersey",
+ "numeric": "832"
+ },
+ {
+ "alpha_2": "JO",
+ "alpha_3": "JOR",
+ "name": "Jordan",
+ "numeric": "400",
+ "official_name": "Hashemite Kingdom of Jordan"
+ },
+ {
+ "alpha_2": "JP",
+ "alpha_3": "JPN",
+ "name": "Japan",
+ "numeric": "392"
+ },
+ {
+ "alpha_2": "KZ",
+ "alpha_3": "KAZ",
+ "name": "Kazakhstan",
+ "numeric": "398",
+ "official_name": "Republic of Kazakhstan"
+ },
+ {
+ "alpha_2": "KE",
+ "alpha_3": "KEN",
+ "name": "Kenya",
+ "numeric": "404",
+ "official_name": "Republic of Kenya"
+ },
+ {
+ "alpha_2": "KG",
+ "alpha_3": "KGZ",
+ "name": "Kyrgyzstan",
+ "numeric": "417",
+ "official_name": "Kyrgyz Republic"
+ },
+ {
+ "alpha_2": "KH",
+ "alpha_3": "KHM",
+ "name": "Cambodia",
+ "numeric": "116",
+ "official_name": "Kingdom of Cambodia"
+ },
+ {
+ "alpha_2": "KI",
+ "alpha_3": "KIR",
+ "name": "Kiribati",
+ "numeric": "296",
+ "official_name": "Republic of Kiribati"
+ },
+ {
+ "alpha_2": "KN",
+ "alpha_3": "KNA",
+ "name": "Saint Kitts and Nevis",
+ "numeric": "659"
+ },
+ {
+ "alpha_2": "KR",
+ "alpha_3": "KOR",
+ "name": "Korea, Republic of",
+ "numeric": "410"
+ },
+ {
+ "alpha_2": "KW",
+ "alpha_3": "KWT",
+ "name": "Kuwait",
+ "numeric": "414",
+ "official_name": "State of Kuwait"
+ },
+ {
+ "alpha_2": "LA",
+ "alpha_3": "LAO",
+ "name": "Lao People's Democratic Republic",
+ "numeric": "418"
+ },
+ {
+ "alpha_2": "LB",
+ "alpha_3": "LBN",
+ "name": "Lebanon",
+ "numeric": "422",
+ "official_name": "Lebanese Republic"
+ },
+ {
+ "alpha_2": "LR",
+ "alpha_3": "LBR",
+ "name": "Liberia",
+ "numeric": "430",
+ "official_name": "Republic of Liberia"
+ },
+ {
+ "alpha_2": "LY",
+ "alpha_3": "LBY",
+ "name": "Libya",
+ "numeric": "434",
+ "official_name": "Libya"
+ },
+ {
+ "alpha_2": "LC",
+ "alpha_3": "LCA",
+ "name": "Saint Lucia",
+ "numeric": "662"
+ },
+ {
+ "alpha_2": "LI",
+ "alpha_3": "LIE",
+ "name": "Liechtenstein",
+ "numeric": "438",
+ "official_name": "Principality of Liechtenstein"
+ },
+ {
+ "alpha_2": "LK",
+ "alpha_3": "LKA",
+ "name": "Sri Lanka",
+ "numeric": "144",
+ "official_name": "Democratic Socialist Republic of Sri Lanka"
+ },
+ {
+ "alpha_2": "LS",
+ "alpha_3": "LSO",
+ "name": "Lesotho",
+ "numeric": "426",
+ "official_name": "Kingdom of Lesotho"
+ },
+ {
+ "alpha_2": "LT",
+ "alpha_3": "LTU",
+ "name": "Lithuania",
+ "numeric": "440",
+ "official_name": "Republic of Lithuania"
+ },
+ {
+ "alpha_2": "LU",
+ "alpha_3": "LUX",
+ "name": "Luxembourg",
+ "numeric": "442",
+ "official_name": "Grand Duchy of Luxembourg"
+ },
+ {
+ "alpha_2": "LV",
+ "alpha_3": "LVA",
+ "name": "Latvia",
+ "numeric": "428",
+ "official_name": "Republic of Latvia"
+ },
+ {
+ "alpha_2": "MO",
+ "alpha_3": "MAC",
+ "name": "Macao",
+ "numeric": "446",
+ "official_name": "Macao Special Administrative Region of China"
+ },
+ {
+ "alpha_2": "MF",
+ "alpha_3": "MAF",
+ "name": "Saint Martin (French part)",
+ "numeric": "663"
+ },
+ {
+ "alpha_2": "MA",
+ "alpha_3": "MAR",
+ "name": "Morocco",
+ "numeric": "504",
+ "official_name": "Kingdom of Morocco"
+ },
+ {
+ "alpha_2": "MC",
+ "alpha_3": "MCO",
+ "name": "Monaco",
+ "numeric": "492",
+ "official_name": "Principality of Monaco"
+ },
+ {
+ "alpha_2": "MD",
+ "alpha_3": "MDA",
+ "common_name": "Moldova",
+ "name": "Moldova, Republic of",
+ "numeric": "498",
+ "official_name": "Republic of Moldova"
+ },
+ {
+ "alpha_2": "MG",
+ "alpha_3": "MDG",
+ "name": "Madagascar",
+ "numeric": "450",
+ "official_name": "Republic of Madagascar"
+ },
+ {
+ "alpha_2": "MV",
+ "alpha_3": "MDV",
+ "name": "Maldives",
+ "numeric": "462",
+ "official_name": "Republic of Maldives"
+ },
+ {
+ "alpha_2": "MX",
+ "alpha_3": "MEX",
+ "name": "Mexico",
+ "numeric": "484",
+ "official_name": "United Mexican States"
+ },
+ {
+ "alpha_2": "MH",
+ "alpha_3": "MHL",
+ "name": "Marshall Islands",
+ "numeric": "584",
+ "official_name": "Republic of the Marshall Islands"
+ },
+ {
+ "alpha_2": "MK",
+ "alpha_3": "MKD",
+ "name": "Macedonia, Republic of",
+ "numeric": "807",
+ "official_name": "The Former Yugoslav Republic of Macedonia"
+ },
+ {
+ "alpha_2": "ML",
+ "alpha_3": "MLI",
+ "name": "Mali",
+ "numeric": "466",
+ "official_name": "Republic of Mali"
+ },
+ {
+ "alpha_2": "MT",
+ "alpha_3": "MLT",
+ "name": "Malta",
+ "numeric": "470",
+ "official_name": "Republic of Malta"
+ },
+ {
+ "alpha_2": "MM",
+ "alpha_3": "MMR",
+ "name": "Myanmar",
+ "numeric": "104",
+ "official_name": "Republic of Myanmar"
+ },
+ {
+ "alpha_2": "ME",
+ "alpha_3": "MNE",
+ "name": "Montenegro",
+ "numeric": "499",
+ "official_name": "Montenegro"
+ },
+ {
+ "alpha_2": "MN",
+ "alpha_3": "MNG",
+ "name": "Mongolia",
+ "numeric": "496"
+ },
+ {
+ "alpha_2": "MP",
+ "alpha_3": "MNP",
+ "name": "Northern Mariana Islands",
+ "numeric": "580",
+ "official_name": "Commonwealth of the Northern Mariana Islands"
+ },
+ {
+ "alpha_2": "MZ",
+ "alpha_3": "MOZ",
+ "name": "Mozambique",
+ "numeric": "508",
+ "official_name": "Republic of Mozambique"
+ },
+ {
+ "alpha_2": "MR",
+ "alpha_3": "MRT",
+ "name": "Mauritania",
+ "numeric": "478",
+ "official_name": "Islamic Republic of Mauritania"
+ },
+ {
+ "alpha_2": "MS",
+ "alpha_3": "MSR",
+ "name": "Montserrat",
+ "numeric": "500"
+ },
+ {
+ "alpha_2": "MQ",
+ "alpha_3": "MTQ",
+ "name": "Martinique",
+ "numeric": "474"
+ },
+ {
+ "alpha_2": "MU",
+ "alpha_3": "MUS",
+ "name": "Mauritius",
+ "numeric": "480",
+ "official_name": "Republic of Mauritius"
+ },
+ {
+ "alpha_2": "MW",
+ "alpha_3": "MWI",
+ "name": "Malawi",
+ "numeric": "454",
+ "official_name": "Republic of Malawi"
+ },
+ {
+ "alpha_2": "MY",
+ "alpha_3": "MYS",
+ "name": "Malaysia",
+ "numeric": "458"
+ },
+ {
+ "alpha_2": "YT",
+ "alpha_3": "MYT",
+ "name": "Mayotte",
+ "numeric": "175"
+ },
+ {
+ "alpha_2": "NA",
+ "alpha_3": "NAM",
+ "name": "Namibia",
+ "numeric": "516",
+ "official_name": "Republic of Namibia"
+ },
+ {
+ "alpha_2": "NC",
+ "alpha_3": "NCL",
+ "name": "New Caledonia",
+ "numeric": "540"
+ },
+ {
+ "alpha_2": "NE",
+ "alpha_3": "NER",
+ "name": "Niger",
+ "numeric": "562",
+ "official_name": "Republic of the Niger"
+ },
+ {
+ "alpha_2": "NF",
+ "alpha_3": "NFK",
+ "name": "Norfolk Island",
+ "numeric": "574"
+ },
+ {
+ "alpha_2": "NG",
+ "alpha_3": "NGA",
+ "name": "Nigeria",
+ "numeric": "566",
+ "official_name": "Federal Republic of Nigeria"
+ },
+ {
+ "alpha_2": "NI",
+ "alpha_3": "NIC",
+ "name": "Nicaragua",
+ "numeric": "558",
+ "official_name": "Republic of Nicaragua"
+ },
+ {
+ "alpha_2": "NU",
+ "alpha_3": "NIU",
+ "name": "Niue",
+ "numeric": "570",
+ "official_name": "Niue"
+ },
+ {
+ "alpha_2": "NL",
+ "alpha_3": "NLD",
+ "name": "Netherlands",
+ "numeric": "528",
+ "official_name": "Kingdom of the Netherlands"
+ },
+ {
+ "alpha_2": "NO",
+ "alpha_3": "NOR",
+ "name": "Norway",
+ "numeric": "578",
+ "official_name": "Kingdom of Norway"
+ },
+ {
+ "alpha_2": "NP",
+ "alpha_3": "NPL",
+ "name": "Nepal",
+ "numeric": "524",
+ "official_name": "Federal Democratic Republic of Nepal"
+ },
+ {
+ "alpha_2": "NR",
+ "alpha_3": "NRU",
+ "name": "Nauru",
+ "numeric": "520",
+ "official_name": "Republic of Nauru"
+ },
+ {
+ "alpha_2": "NZ",
+ "alpha_3": "NZL",
+ "name": "New Zealand",
+ "numeric": "554"
+ },
+ {
+ "alpha_2": "OM",
+ "alpha_3": "OMN",
+ "name": "Oman",
+ "numeric": "512",
+ "official_name": "Sultanate of Oman"
+ },
+ {
+ "alpha_2": "PK",
+ "alpha_3": "PAK",
+ "name": "Pakistan",
+ "numeric": "586",
+ "official_name": "Islamic Republic of Pakistan"
+ },
+ {
+ "alpha_2": "PA",
+ "alpha_3": "PAN",
+ "name": "Panama",
+ "numeric": "591",
+ "official_name": "Republic of Panama"
+ },
+ {
+ "alpha_2": "PN",
+ "alpha_3": "PCN",
+ "name": "Pitcairn",
+ "numeric": "612"
+ },
+ {
+ "alpha_2": "PE",
+ "alpha_3": "PER",
+ "name": "Peru",
+ "numeric": "604",
+ "official_name": "Republic of Peru"
+ },
+ {
+ "alpha_2": "PH",
+ "alpha_3": "PHL",
+ "name": "Philippines",
+ "numeric": "608",
+ "official_name": "Republic of the Philippines"
+ },
+ {
+ "alpha_2": "PW",
+ "alpha_3": "PLW",
+ "name": "Palau",
+ "numeric": "585",
+ "official_name": "Republic of Palau"
+ },
+ {
+ "alpha_2": "PG",
+ "alpha_3": "PNG",
+ "name": "Papua New Guinea",
+ "numeric": "598",
+ "official_name": "Independent State of Papua New Guinea"
+ },
+ {
+ "alpha_2": "PL",
+ "alpha_3": "POL",
+ "name": "Poland",
+ "numeric": "616",
+ "official_name": "Republic of Poland"
+ },
+ {
+ "alpha_2": "PR",
+ "alpha_3": "PRI",
+ "name": "Puerto Rico",
+ "numeric": "630"
+ },
+ {
+ "alpha_2": "KP",
+ "alpha_3": "PRK",
+ "name": "Korea, Democratic People's Republic of",
+ "numeric": "408",
+ "official_name": "Democratic People's Republic of Korea"
+ },
+ {
+ "alpha_2": "PT",
+ "alpha_3": "PRT",
+ "name": "Portugal",
+ "numeric": "620",
+ "official_name": "Portuguese Republic"
+ },
+ {
+ "alpha_2": "PY",
+ "alpha_3": "PRY",
+ "name": "Paraguay",
+ "numeric": "600",
+ "official_name": "Republic of Paraguay"
+ },
+ {
+ "alpha_2": "PS",
+ "alpha_3": "PSE",
+ "name": "Palestine, State of",
+ "numeric": "275",
+ "official_name": "the State of Palestine"
+ },
+ {
+ "alpha_2": "PF",
+ "alpha_3": "PYF",
+ "name": "French Polynesia",
+ "numeric": "258"
+ },
+ {
+ "alpha_2": "QA",
+ "alpha_3": "QAT",
+ "name": "Qatar",
+ "numeric": "634",
+ "official_name": "State of Qatar"
+ },
+ {
+ "alpha_2": "RE",
+ "alpha_3": "REU",
+ "name": "Réunion",
+ "numeric": "638"
+ },
+ {
+ "alpha_2": "RO",
+ "alpha_3": "ROU",
+ "name": "Romania",
+ "numeric": "642"
+ },
+ {
+ "alpha_2": "RU",
+ "alpha_3": "RUS",
+ "name": "Russian Federation",
+ "numeric": "643"
+ },
+ {
+ "alpha_2": "RW",
+ "alpha_3": "RWA",
+ "name": "Rwanda",
+ "numeric": "646",
+ "official_name": "Rwandese Republic"
+ },
+ {
+ "alpha_2": "SA",
+ "alpha_3": "SAU",
+ "name": "Saudi Arabia",
+ "numeric": "682",
+ "official_name": "Kingdom of Saudi Arabia"
+ },
+ {
+ "alpha_2": "SD",
+ "alpha_3": "SDN",
+ "name": "Sudan",
+ "numeric": "729",
+ "official_name": "Republic of the Sudan"
+ },
+ {
+ "alpha_2": "SN",
+ "alpha_3": "SEN",
+ "name": "Senegal",
+ "numeric": "686",
+ "official_name": "Republic of Senegal"
+ },
+ {
+ "alpha_2": "SG",
+ "alpha_3": "SGP",
+ "name": "Singapore",
+ "numeric": "702",
+ "official_name": "Republic of Singapore"
+ },
+ {
+ "alpha_2": "GS",
+ "alpha_3": "SGS",
+ "name": "South Georgia and the South Sandwich Islands",
+ "numeric": "239"
+ },
+ {
+ "alpha_2": "SH",
+ "alpha_3": "SHN",
+ "name": "Saint Helena, Ascension and Tristan da Cunha",
+ "numeric": "654"
+ },
+ {
+ "alpha_2": "SJ",
+ "alpha_3": "SJM",
+ "name": "Svalbard and Jan Mayen",
+ "numeric": "744"
+ },
+ {
+ "alpha_2": "SB",
+ "alpha_3": "SLB",
+ "name": "Solomon Islands",
+ "numeric": "090"
+ },
+ {
+ "alpha_2": "SL",
+ "alpha_3": "SLE",
+ "name": "Sierra Leone",
+ "numeric": "694",
+ "official_name": "Republic of Sierra Leone"
+ },
+ {
+ "alpha_2": "SV",
+ "alpha_3": "SLV",
+ "name": "El Salvador",
+ "numeric": "222",
+ "official_name": "Republic of El Salvador"
+ },
+ {
+ "alpha_2": "SM",
+ "alpha_3": "SMR",
+ "name": "San Marino",
+ "numeric": "674",
+ "official_name": "Republic of San Marino"
+ },
+ {
+ "alpha_2": "SO",
+ "alpha_3": "SOM",
+ "name": "Somalia",
+ "numeric": "706",
+ "official_name": "Federal Republic of Somalia"
+ },
+ {
+ "alpha_2": "PM",
+ "alpha_3": "SPM",
+ "name": "Saint Pierre and Miquelon",
+ "numeric": "666"
+ },
+ {
+ "alpha_2": "RS",
+ "alpha_3": "SRB",
+ "name": "Serbia",
+ "numeric": "688",
+ "official_name": "Republic of Serbia"
+ },
+ {
+ "alpha_2": "SS",
+ "alpha_3": "SSD",
+ "name": "South Sudan",
+ "numeric": "728",
+ "official_name": "Republic of South Sudan"
+ },
+ {
+ "alpha_2": "ST",
+ "alpha_3": "STP",
+ "name": "Sao Tome and Principe",
+ "numeric": "678",
+ "official_name": "Democratic Republic of Sao Tome and Principe"
+ },
+ {
+ "alpha_2": "SR",
+ "alpha_3": "SUR",
+ "name": "Suriname",
+ "numeric": "740",
+ "official_name": "Republic of Suriname"
+ },
+ {
+ "alpha_2": "SK",
+ "alpha_3": "SVK",
+ "name": "Slovakia",
+ "numeric": "703",
+ "official_name": "Slovak Republic"
+ },
+ {
+ "alpha_2": "SI",
+ "alpha_3": "SVN",
+ "name": "Slovenia",
+ "numeric": "705",
+ "official_name": "Republic of Slovenia"
+ },
+ {
+ "alpha_2": "SE",
+ "alpha_3": "SWE",
+ "name": "Sweden",
+ "numeric": "752",
+ "official_name": "Kingdom of Sweden"
+ },
+ {
+ "alpha_2": "SZ",
+ "alpha_3": "SWZ",
+ "name": "Swaziland",
+ "numeric": "748",
+ "official_name": "Kingdom of Swaziland"
+ },
+ {
+ "alpha_2": "SX",
+ "alpha_3": "SXM",
+ "name": "Sint Maarten (Dutch part)",
+ "numeric": "534",
+ "official_name": "Sint Maarten (Dutch part)"
+ },
+ {
+ "alpha_2": "SC",
+ "alpha_3": "SYC",
+ "name": "Seychelles",
+ "numeric": "690",
+ "official_name": "Republic of Seychelles"
+ },
+ {
+ "alpha_2": "SY",
+ "alpha_3": "SYR",
+ "name": "Syrian Arab Republic",
+ "numeric": "760"
+ },
+ {
+ "alpha_2": "TC",
+ "alpha_3": "TCA",
+ "name": "Turks and Caicos Islands",
+ "numeric": "796"
+ },
+ {
+ "alpha_2": "TD",
+ "alpha_3": "TCD",
+ "name": "Chad",
+ "numeric": "148",
+ "official_name": "Republic of Chad"
+ },
+ {
+ "alpha_2": "TG",
+ "alpha_3": "TGO",
+ "name": "Togo",
+ "numeric": "768",
+ "official_name": "Togolese Republic"
+ },
+ {
+ "alpha_2": "TH",
+ "alpha_3": "THA",
+ "name": "Thailand",
+ "numeric": "764",
+ "official_name": "Kingdom of Thailand"
+ },
+ {
+ "alpha_2": "TJ",
+ "alpha_3": "TJK",
+ "name": "Tajikistan",
+ "numeric": "762",
+ "official_name": "Republic of Tajikistan"
+ },
+ {
+ "alpha_2": "TK",
+ "alpha_3": "TKL",
+ "name": "Tokelau",
+ "numeric": "772"
+ },
+ {
+ "alpha_2": "TM",
+ "alpha_3": "TKM",
+ "name": "Turkmenistan",
+ "numeric": "795"
+ },
+ {
+ "alpha_2": "TL",
+ "alpha_3": "TLS",
+ "name": "Timor-Leste",
+ "numeric": "626",
+ "official_name": "Democratic Republic of Timor-Leste"
+ },
+ {
+ "alpha_2": "TO",
+ "alpha_3": "TON",
+ "name": "Tonga",
+ "numeric": "776",
+ "official_name": "Kingdom of Tonga"
+ },
+ {
+ "alpha_2": "TT",
+ "alpha_3": "TTO",
+ "name": "Trinidad and Tobago",
+ "numeric": "780",
+ "official_name": "Republic of Trinidad and Tobago"
+ },
+ {
+ "alpha_2": "TN",
+ "alpha_3": "TUN",
+ "name": "Tunisia",
+ "numeric": "788",
+ "official_name": "Republic of Tunisia"
+ },
+ {
+ "alpha_2": "TR",
+ "alpha_3": "TUR",
+ "name": "Turkey",
+ "numeric": "792",
+ "official_name": "Republic of Turkey"
+ },
+ {
+ "alpha_2": "TV",
+ "alpha_3": "TUV",
+ "name": "Tuvalu",
+ "numeric": "798"
+ },
+ {
+ "alpha_2": "TW",
+ "alpha_3": "TWN",
+ "common_name": "Taiwan",
+ "name": "Taiwan, Province of China",
+ "numeric": "158",
+ "official_name": "Taiwan, Province of China"
+ },
+ {
+ "alpha_2": "TZ",
+ "alpha_3": "TZA",
+ "common_name": "Tanzania",
+ "name": "Tanzania, United Republic of",
+ "numeric": "834",
+ "official_name": "United Republic of Tanzania"
+ },
+ {
+ "alpha_2": "UG",
+ "alpha_3": "UGA",
+ "name": "Uganda",
+ "numeric": "800",
+ "official_name": "Republic of Uganda"
+ },
+ {
+ "alpha_2": "UA",
+ "alpha_3": "UKR",
+ "name": "Ukraine",
+ "numeric": "804"
+ },
+ {
+ "alpha_2": "UM",
+ "alpha_3": "UMI",
+ "name": "United States Minor Outlying Islands",
+ "numeric": "581"
+ },
+ {
+ "alpha_2": "UY",
+ "alpha_3": "URY",
+ "name": "Uruguay",
+ "numeric": "858",
+ "official_name": "Eastern Republic of Uruguay"
+ },
+ {
+ "alpha_2": "US",
+ "alpha_3": "USA",
+ "name": "United States",
+ "numeric": "840",
+ "official_name": "United States of America"
+ },
+ {
+ "alpha_2": "UZ",
+ "alpha_3": "UZB",
+ "name": "Uzbekistan",
+ "numeric": "860",
+ "official_name": "Republic of Uzbekistan"
+ },
+ {
+ "alpha_2": "VA",
+ "alpha_3": "VAT",
+ "name": "Holy See (Vatican City State)",
+ "numeric": "336"
+ },
+ {
+ "alpha_2": "VC",
+ "alpha_3": "VCT",
+ "name": "Saint Vincent and the Grenadines",
+ "numeric": "670"
+ },
+ {
+ "alpha_2": "VE",
+ "alpha_3": "VEN",
+ "common_name": "Venezuela",
+ "name": "Venezuela, Bolivarian Republic of",
+ "numeric": "862",
+ "official_name": "Bolivarian Republic of Venezuela"
+ },
+ {
+ "alpha_2": "VG",
+ "alpha_3": "VGB",
+ "name": "Virgin Islands, British",
+ "numeric": "092",
+ "official_name": "British Virgin Islands"
+ },
+ {
+ "alpha_2": "VI",
+ "alpha_3": "VIR",
+ "name": "Virgin Islands, U.S.",
+ "numeric": "850",
+ "official_name": "Virgin Islands of the United States"
+ },
+ {
+ "alpha_2": "VN",
+ "alpha_3": "VNM",
+ "common_name": "Vietnam",
+ "name": "Viet Nam",
+ "numeric": "704",
+ "official_name": "Socialist Republic of Viet Nam"
+ },
+ {
+ "alpha_2": "VU",
+ "alpha_3": "VUT",
+ "name": "Vanuatu",
+ "numeric": "548",
+ "official_name": "Republic of Vanuatu"
+ },
+ {
+ "alpha_2": "WF",
+ "alpha_3": "WLF",
+ "name": "Wallis and Futuna",
+ "numeric": "876"
+ },
+ {
+ "alpha_2": "WS",
+ "alpha_3": "WSM",
+ "name": "Samoa",
+ "numeric": "882",
+ "official_name": "Independent State of Samoa"
+ },
+ {
+ "alpha_2": "YE",
+ "alpha_3": "YEM",
+ "name": "Yemen",
+ "numeric": "887",
+ "official_name": "Republic of Yemen"
+ },
+ {
+ "alpha_2": "ZA",
+ "alpha_3": "ZAF",
+ "name": "South Africa",
+ "numeric": "710",
+ "official_name": "Republic of South Africa"
+ },
+ {
+ "alpha_2": "ZM",
+ "alpha_3": "ZMB",
+ "name": "Zambia",
+ "numeric": "894",
+ "official_name": "Republic of Zambia"
+ },
+ {
+ "alpha_2": "ZW",
+ "alpha_3": "ZWE",
+ "name": "Zimbabwe",
+ "numeric": "716",
+ "official_name": "Republic of Zimbabwe"
+ }
+ ]
+}
diff --git a/plugin.video.newsblender/resources/iso639-1.json b/plugin.video.newsblender/resources/iso639-1.json
new file mode 100644
index 0000000..df6005c
--- /dev/null
+++ b/plugin.video.newsblender/resources/iso639-1.json
@@ -0,0 +1,752 @@
+{
+ "639-1": [
+ {
+ "code": "ab",
+ "name": "Abkhaz"
+ },
+ {
+ "code": "aa",
+ "name": "Afar"
+ },
+ {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ {
+ "code": "ak",
+ "name": "Akan"
+ },
+ {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ {
+ "code": "am",
+ "name": "Amharic"
+ },
+ {
+ "code": "ar",
+ "name": "Arabic"
+ },
+ {
+ "code": "an",
+ "name": "Aragonese"
+ },
+ {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ {
+ "code": "as",
+ "name": "Assamese"
+ },
+ {
+ "code": "av",
+ "name": "Avaric"
+ },
+ {
+ "code": "ae",
+ "name": "Avestan"
+ },
+ {
+ "code": "ay",
+ "name": "Aymara"
+ },
+ {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ {
+ "code": "ba",
+ "name": "Bashkir"
+ },
+ {
+ "code": "eu",
+ "name": "Basque"
+ },
+ {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ {
+ "code": "bn",
+ "name": "Bengali; Bangla"
+ },
+ {
+ "code": "bh",
+ "name": "Bihari"
+ },
+ {
+ "code": "bi",
+ "name": "Bislama"
+ },
+ {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ {
+ "code": "br",
+ "name": "Breton"
+ },
+ {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ {
+ "code": "my",
+ "name": "Burmese"
+ },
+ {
+ "code": "ca",
+ "name": "Catalan; Valencian"
+ },
+ {
+ "code": "ch",
+ "name": "Chamorro"
+ },
+ {
+ "code": "ce",
+ "name": "Chechen"
+ },
+ {
+ "code": "ny",
+ "name": "Chichewa; Chewa; Nyanja"
+ },
+ {
+ "code": "zh",
+ "name": "Chinese"
+ },
+ {
+ "code": "cn",
+ "name": "Chinese"
+ },
+ {
+ "code": "ud",
+ "name": "Udmurt"
+ },
+ {
+ "code": "cv",
+ "name": "Chuvash"
+ },
+ {
+ "code": "kw",
+ "name": "Cornish"
+ },
+ {
+ "code": "co",
+ "name": "Corsican"
+ },
+ {
+ "code": "cr",
+ "name": "Cree"
+ },
+ {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ {
+ "code": "cs",
+ "name": "Czech"
+ },
+ {
+ "code": "da",
+ "name": "Danish"
+ },
+ {
+ "code": "dv",
+ "name": "Divehi; Dhivehi; Maldivian;"
+ },
+ {
+ "code": "nl",
+ "name": "Dutch"
+ },
+ {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ {
+ "code": "en",
+ "name": "English"
+ },
+ {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ {
+ "code": "et",
+ "name": "Estonian"
+ },
+ {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ {
+ "code": "fj",
+ "name": "Fijian"
+ },
+ {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ {
+ "code": "fr",
+ "name": "French"
+ },
+ {
+ "code": "ff",
+ "name": "Fula; Fulah; Pulaar; Pular"
+ },
+ {
+ "code": "gl",
+ "name": "Galician"
+ },
+ {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ {
+ "code": "de",
+ "name": "German"
+ },
+ {
+ "code": "el",
+ "name": "Greek, Modern"
+ },
+ {
+ "code": "gn",
+ "name": "Guaraní"
+ },
+ {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ {
+ "code": "ht",
+ "name": "Haitian; Haitian Creole"
+ },
+ {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ {
+ "code": "he",
+ "name": "Hebrew (modern)"
+ },
+ {
+ "code": "hz",
+ "name": "Herero"
+ },
+ {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ {
+ "code": "ho",
+ "name": "Hiri Motu"
+ },
+ {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ {
+ "code": "ia",
+ "name": "Interlingua"
+ },
+ {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ {
+ "code": "ie",
+ "name": "Interlingue"
+ },
+ {
+ "code": "ga",
+ "name": "Irish"
+ },
+ {
+ "code": "ig",
+ "name": "Igbo"
+ },
+ {
+ "code": "ik",
+ "name": "Inupiaq"
+ },
+ {
+ "code": "io",
+ "name": "Ido"
+ },
+ {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ {
+ "code": "it",
+ "name": "Italian"
+ },
+ {
+ "code": "iu",
+ "name": "Inuktitut"
+ },
+ {
+ "code": "ja",
+ "name": "Japanese"
+ },
+ {
+ "code": "jv",
+ "name": "Javanese"
+ },
+ {
+ "code": "kl",
+ "name": "Kalaallisut, Greenlandic"
+ },
+ {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ {
+ "code": "kr",
+ "name": "Kanuri"
+ },
+ {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ {
+ "code": "km",
+ "name": "Khmer"
+ },
+ {
+ "code": "ki",
+ "name": "Kikuyu, Gikuyu"
+ },
+ {
+ "code": "rw",
+ "name": "Kinyarwanda"
+ },
+ {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ {
+ "code": "kv",
+ "name": "Komi"
+ },
+ {
+ "code": "kg",
+ "name": "Kongo"
+ },
+ {
+ "code": "ko",
+ "name": "Korean"
+ },
+ {
+ "code": "ku",
+ "name": "Kurdish"
+ },
+ {
+ "code": "kj",
+ "name": "Kwanyama, Kuanyama"
+ },
+ {
+ "code": "la",
+ "name": "Latin"
+ },
+ {
+ "code": "lb",
+ "name": "Luxembourgish, Letzeburgesch"
+ },
+ {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ {
+ "code": "li",
+ "name": "Limburgish, Limburgan, Limburger"
+ },
+ {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ {
+ "code": "lo",
+ "name": "Lao"
+ },
+ {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ {
+ "code": "gv",
+ "name": "Manx"
+ },
+ {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ {
+ "code": "ms",
+ "name": "Malay"
+ },
+ {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ {
+ "code": "mi",
+ "name": "MÄori"
+ },
+ {
+ "code": "mr",
+ "name": "Marathi (MarÄá¹­hÄ«)"
+ },
+ {
+ "code": "mh",
+ "name": "Marshallese"
+ },
+ {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ {
+ "code": "na",
+ "name": "Nauru"
+ },
+ {
+ "code": "nv",
+ "name": "Navajo, Navaho"
+ },
+ {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ {
+ "code": "ng",
+ "name": "Ndonga"
+ },
+ {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ {
+ "code": "no",
+ "name": "Norwegian"
+ },
+ {
+ "code": "ii",
+ "name": "Nuosu"
+ },
+ {
+ "code": "nr",
+ "name": "South Ndebele"
+ },
+ {
+ "code": "oc",
+ "name": "Occitan"
+ },
+ {
+ "code": "oj",
+ "name": "Ojibwe, Ojibwa"
+ },
+ {
+ "code": "cu",
+ "name": "Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic"
+ },
+ {
+ "code": "om",
+ "name": "Oromo"
+ },
+ {
+ "code": "or",
+ "name": "Oriya"
+ },
+ {
+ "code": "os",
+ "name": "Ossetian, Ossetic"
+ },
+ {
+ "code": "pa",
+ "name": "Panjabi, Punjabi"
+ },
+ {
+ "code": "pi",
+ "name": "PÄli"
+ },
+ {
+ "code": "fa",
+ "name": "Persian (Farsi)"
+ },
+ {
+ "code": "pl",
+ "name": "Polish"
+ },
+ {
+ "code": "ps",
+ "name": "Pashto, Pushto"
+ },
+ {
+ "code": "pt",
+ "name": "Portuguese"
+ },
+ {
+ "code": "qu",
+ "name": "Quechua"
+ },
+ {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ {
+ "code": "rn",
+ "name": "Kirundi"
+ },
+ {
+ "code": "ro",
+ "name": "Romanian, [])"
+ },
+ {
+ "code": "ru",
+ "name": "Russian"
+ },
+ {
+ "code": "sa",
+ "name": "Sanskrit (Saá¹ská¹›ta)"
+ },
+ {
+ "code": "sc",
+ "name": "Sardinian"
+ },
+ {
+ "code": "sd",
+ "name": "Sindhi"
+ },
+ {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ {
+ "code": "sm",
+ "name": "Samoan"
+ },
+ {
+ "code": "sg",
+ "name": "Sango"
+ },
+ {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ {
+ "code": "gd",
+ "name": "Scottish Gaelic; Gaelic"
+ },
+ {
+ "code": "sn",
+ "name": "Shona"
+ },
+ {
+ "code": "si",
+ "name": "Sinhala, Sinhalese"
+ },
+ {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ {
+ "code": "sl",
+ "name": "Slovene"
+ },
+ {
+ "code": "so",
+ "name": "Somali"
+ },
+ {
+ "code": "st",
+ "name": "Southern Sotho"
+ },
+ {
+ "code": "az",
+ "name": "South Azerbaijani"
+ },
+ {
+ "code": "es",
+ "name": "Spanish; Castilian"
+ },
+ {
+ "code": "su",
+ "name": "Sundanese"
+ },
+ {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ {
+ "code": "ss",
+ "name": "Swati"
+ },
+ {
+ "code": "sv",
+ "name": "Swedish"
+ },
+ {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ {
+ "code": "te",
+ "name": "Telugu"
+ },
+ {
+ "code": "tg",
+ "name": "Tajik"
+ },
+ {
+ "code": "th",
+ "name": "Thai"
+ },
+ {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ {
+ "code": "bo",
+ "name": "Tibetan Standard, Tibetan, Central"
+ },
+ {
+ "code": "tk",
+ "name": "Turkmen"
+ },
+ {
+ "code": "tl",
+ "name": "Tagalog"
+ },
+ {
+ "code": "tn",
+ "name": "Tswana"
+ },
+ {
+ "code": "to",
+ "name": "Tonga (Tonga Islands)"
+ },
+ {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ {
+ "code": "ts",
+ "name": "Tsonga"
+ },
+ {
+ "code": "tt",
+ "name": "Tatar"
+ },
+ {
+ "code": "tw",
+ "name": "Twi"
+ },
+ {
+ "code": "ty",
+ "name": "Tahitian"
+ },
+ {
+ "code": "ug",
+ "name": "Uyghur, Uighur"
+ },
+ {
+ "code": "uk",
+ "name": "Ukrainian"
+ },
+ {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ {
+ "code": "ve",
+ "name": "Venda"
+ },
+ {
+ "code": "vi",
+ "name": "Vietnamese"
+ },
+ {
+ "code": "vo",
+ "name": "Volapük"
+ },
+ {
+ "code": "wa",
+ "name": "Walloon"
+ },
+ {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ {
+ "code": "wo",
+ "name": "Wolof"
+ },
+ {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ {
+ "code": "xh",
+ "name": "Xhosa"
+ },
+ {
+ "code": "yi",
+ "name": "Yiddish"
+ },
+ {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ {
+ "code": "za",
+ "name": "Zhuang, Chuang"
+ },
+ {
+ "code": "zu",
+ "name": "Zulu"
+ }
+ ]
+} \ No newline at end of file
diff --git a/plugin.video.newsblender/resources/language/resource.language.en_gb/strings.po b/plugin.video.newsblender/resources/language/resource.language.en_gb/strings.po
new file mode 100644
index 0000000..91725c4
--- /dev/null
+++ b/plugin.video.newsblender/resources/language/resource.language.en_gb/strings.po
@@ -0,0 +1,41 @@
+# Kodi Media Center language file
+# Addon Name: "News Blender
+# Addon id: plugin.video.newsblender
+# Addon Provider: Lunatixz
+msgid ""
+msgstr ""
+"Project-Id-Version: plugin.video.newsblender\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Lunatixz Translation Team\n"
+"Language-Team: English (http://www.transifex.com/projects/p/xbmc-addons/language/en/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: en\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#30000"
+msgid "Enable Debugging [Log errors]"
+msgstr ""
+
+msgctxt "#30001"
+msgid "Something went wrong, Try again..."
+msgstr ""
+
+msgctxt "#30002"
+msgid "Select Preferred Quality"
+msgstr ""
+
+msgctxt "#30003"
+msgid "No videos found in %s"
+msgstr ""
+
+msgctxt "#30004"
+msgid "[B]- Search:[/B] %s"
+msgstr ""
+
+msgctxt "#30005"
+msgid "%s - Enter Search Term"
+msgstr ""
diff --git a/plugin.video.newsblender/resources/lib/__init__.py b/plugin.video.newsblender/resources/lib/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/plugin.video.newsblender/resources/lib/__init__.py
diff --git a/plugin.video.newsblender/resources/lib/newsblender.py b/plugin.video.newsblender/resources/lib/newsblender.py
new file mode 100644
index 0000000..f60e0cd
--- /dev/null
+++ b/plugin.video.newsblender/resources/lib/newsblender.py
@@ -0,0 +1,272 @@
+# Copyright (C) 2017 Lunatixz
+#
+#
+# This file is part of News Blender.
+#
+# News Blender 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.
+#
+# News Blender 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 News Blender. If not, see <http://www.gnu.org/licenses/>.
+
+# -*- coding: utf-8 -*-
+import os, sys, time, datetime, re, traceback
+import urllib, urllib2, socket, json, collections
+import xbmc, xbmcvfs, xbmcgui, xbmcplugin, xbmcaddon
+
+from YDStreamExtractor import getVideoInfo
+from simplecache import SimpleCache, use_cache
+
+# Plugin Info
+ADDON_ID = 'plugin.video.newsblender'
+REAL_SETTINGS = xbmcaddon.Addon(id=ADDON_ID)
+ADDON_NAME = REAL_SETTINGS.getAddonInfo('name')
+SETTINGS_LOC = REAL_SETTINGS.getAddonInfo('profile')
+ADDON_PATH = REAL_SETTINGS.getAddonInfo('path').decode('utf-8')
+ADDON_VERSION = REAL_SETTINGS.getAddonInfo('version')
+ICON = REAL_SETTINGS.getAddonInfo('icon')
+FANART = REAL_SETTINGS.getAddonInfo('fanart')
+LANGUAGE = REAL_SETTINGS.getLocalizedString
+
+## GLOBALS ##
+TIMEOUT = 15
+CONTENT_TYPE = 'files'
+USER_REGION = REAL_SETTINGS.getSetting("Select_Country")
+ISO3166 = os.path.join(ADDON_PATH,'resources','iso3166-1.json')
+ISO639 = os.path.join(ADDON_PATH,'resources','iso639-1.json')
+COUNTRY_LIST = sorted((json.load(xbmcvfs.File(ISO3166)))['3166-1'], key=lambda x: x['name'])
+LANGUAGE_LIST = sorted((json.load(xbmcvfs.File(ISO639)))['639-1'], key=lambda x: x['name'])
+API_KEY = REAL_SETTINGS.getSetting('APIKEY')
+BASE_URL = 'http://newsapi.org/v2'
+SOURCES_URL = BASE_URL + '/sources?apiKey=%s'%API_KEY #?language=en&country=us
+HEADLINE_URL = BASE_URL + '/top-headlines?apiKey=%s'%API_KEY
+EVRYTHING_URL = BASE_URL + '/everything?apiKey=%s'%API_KEY
+'&sources=%s'
+'&q=%s'
+'&category=%s'
+'&sortBy=%s' #popularity,top,latest
+LOGO_URL = 'http://icons.better-idea.org/icon?url=%s&size=70..120..200'
+DEBUG = REAL_SETTINGS.getSetting('Enable_Debugging') == 'true'
+QUALITY = int(REAL_SETTINGS.getSetting('Quality'))
+MAIN_MENU = ["Browse by Category","Browse by Source","Browse by Country","Browse by Language"]
+ITEM_MENU = ["All","Top","Latest","Popular","Search"]
+
+def log(msg, level=xbmc.LOGDEBUG):
+ if DEBUG == False and level != xbmc.LOGERROR: return
+ if level == xbmc.LOGERROR: msg += ' ,' + traceback.format_exc()
+ xbmc.log(ADDON_ID + '-' + ADDON_VERSION + '-' + msg, level)
+
+def getParams():
+ param=[]
+ if len(sys.argv[2])>=2:
+ params=sys.argv[2]
+ cleanedparams=params.replace('?','')
+ if (params[len(params)-1]=='/'): params=params[0:len(params)-2]
+ pairsofparams=cleanedparams.split('&')
+ param={}
+ for i in range(len(pairsofparams)):
+ splitparams={}
+ splitparams=pairsofparams[i].split('=')
+ if (len(splitparams))==2: param[splitparams[0]]=splitparams[1]
+ return param
+
+def getRegionName(region):
+ for item in COUNTRY_LIST:
+ if item['alpha_2'].lower() == region.lower(): return item['name']
+ return region
+
+def getLanguageName(language):
+ for item in LANGUAGE_LIST:
+ if item['code'].lower() == language.lower(): return item['name']
+ return language
+
+socket.setdefaulttimeout(TIMEOUT)
+class NewsBlender(object):
+ def __init__(self):
+ self.cache = SimpleCache()
+ self.sources = self.openURL(SOURCES_URL).get('sources','')
+
+
+ def openURL(self, url):
+ log('openURL, url = ' + url)
+ try:
+ cacheresponse = self.cache.get(ADDON_NAME + '.openURL, url = %s'%url)
+ if not cacheresponse:
+ request = urllib2.Request(url)
+ request.add_header('User-Agent','Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)')
+ response = urllib2.urlopen(request, timeout = TIMEOUT).read()
+ self.cache.set(ADDON_NAME + '.openURL, url = %s'%url, response, expiration=datetime.timedelta(hours=1))
+ return json.loads(self.cache.get(ADDON_NAME + '.openURL, url = %s'%url))
+ except Exception as e:
+ log("openURL Failed! " + str(e), xbmc.LOGERROR)
+ xbmcgui.Dialog().notification(ADDON_NAME, LANGUAGE(30001), ICON, 4000)
+ return ''
+
+
+ def buildMenu(self):
+ for idx, item in enumerate(MAIN_MENU): self.addDir(item,'',idx)
+
+
+ def buildCategory(self):
+ category = collections.Counter([x['category'] for x in self.sources])
+ for category, value in sorted(category.iteritems()): self.addDir(category.title(),category,4)
+
+
+ def buildCountry(self):
+ countries = collections.Counter([x['country'] for x in self.sources])
+ for country, value in sorted(countries.iteritems()): self.addDir(getRegionName(country),country,6)
+
+
+ def buildLanguage(self):
+ languages = collections.Counter([x['language'] for x in self.sources])
+ for language, value in sorted(languages.iteritems()): self.addDir(getLanguageName(language),language,7)
+
+
+ def buildSource(self, items=None):
+ if items is None: items = self.sources
+ for source in items:
+ label = source['name']
+ thumb = (LOGO_URL%source['url'] or ICON)
+ infoLabels = {"mediatype":"files","label":label,"title":label,"genre":source.get('category','news'),"plot":source.get('description','news')}
+ infoArt = {"thumb":thumb,"poster":thumb,"fanart":FANART,"icon":ICON,"logo":ICON}
+ self.addDir(label, source['id'], 5, infoLabels, infoArt)
+
+
+ def browseCategory(self, url):
+ self.buildSource(self.openURL(SOURCES_URL + '&category=%s'%url).get('sources',''))
+
+
+ def browseCountry(self, url):
+ self.buildSource(self.openURL(SOURCES_URL + '&country=%s'%url).get('sources',''))
+
+
+ def browseLanguage(self, url):
+ self.buildSource(self.openURL(SOURCES_URL + '&language=%s'%url).get('sources',''))
+
+
+ def browseTop(self, url):
+ self.browse(self.newsArticles.get_by_top(url).get('sources',''))
+
+
+ def browseLatest(self, url):
+ self.browse(self.newsArticles.get_by_latest(url).get('sources',''))
+
+
+ def browsePopular(self, url):
+ self.browse(self.newsArticles.get_by_popular(url).get('sources',''))
+
+
+ def search(self, name, url):
+ kb = xbmc.Keyboard('', LANGUAGE(30005)%name)
+ xbmc.sleep(1000)
+ kb.doModal()
+ if kb.isConfirmed():
+ try: self.browseArticles(name, url, self.openURL(EVRYTHING_URL + '&sources=%s&q=%s'%(url,urllib.quote_plus(kb.getText()))).get('articles',''), False)
+ except Exception as e:
+ log('search, failed ' + str(e), xbmc.LOGERROR)
+
+
+ def buildArticles(self, name, url):
+ self.browseArticles(name, url, self.openURL(HEADLINE_URL + '&sources=%s'%url).get('articles',''))
+
+
+ def browseArticles(self, name, url, items, search=True):
+ found = False
+ if search: self.addSearch(name, url)
+ for item in items:
+ source = item['source']['name']
+ label = item['title']
+ thumb = item['urlToImage']
+ try: aired = item['publishedAt'].split('T')[0]
+ except: aired = (datetime.datetime.now()).strftime('%Y-%m-%d')
+ info = self.getVideo(item['url'])
+ if info is None: continue
+ found = True
+ url = info[0]['xbmc_url']
+ # if 'subtitles' in info[0]['ytdl_format']: liz.setSubtitles([x['url'] for x in info[0]['ytdl_format']['subtitles'].get('en','') if 'url' in x])
+ infoLabels = {"mediatype":"episode","label":label ,"title":label,"duration":info[0]['ytdl_format'].get('duration',0),"aired":aired,"plot":item['description'],"genre":"News"}
+ infoArt = {"thumb":thumb,"poster":thumb,"fanart":FANART,"icon":ICON,"logo":ICON}
+ self.addLink(label, url, 99, infoLabels, infoArt)
+ if not found: self.addLink((LANGUAGE(30003)%source), "", 99)
+
+
+ def getVideo(self, url):
+ cacheresponse = self.cache.get(ADDON_NAME + '.getVideo, url = %s'%url)
+ if not cacheresponse:
+ info = getVideoInfo(url,QUALITY,True)
+ if info is not None: info = info.streams()
+ self.cache.set(ADDON_NAME + '.getVideo, url = %s'%url, json.dumps(info), expiration=datetime.timedelta(days=14))
+ return json.loads(self.cache.get(ADDON_NAME + '.getVideo, url = %s'%url))
+
+
+ def playVideo(self, name, url, liz=None):
+ log('playVideo')
+ if liz is None: liz = xbmcgui.ListItem(name, path=url)
+ xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, liz)
+
+
+ def addSearch(self, name, url):
+ self.addDir((LANGUAGE(30004)%name), url, 8)
+
+
+ def addLink(self, name, u, mode, infoList=False, infoArt=False, total=0):
+ name = name.encode("utf-8")
+ log('addLink, name = ' + name)
+ liz=xbmcgui.ListItem(name)
+ liz.setProperty('IsPlayable', 'true')
+ if infoList == False: liz.setInfo(type="Video", infoLabels={"mediatype":"video","label":name,"title":name})
+ else: liz.setInfo(type="Video", infoLabels=infoList)
+ if infoArt == False: liz.setArt({'thumb':LOGO_URL%urllib.quote_plus(name),'fanart':FANART})
+ else: liz.setArt(infoArt)
+ u=sys.argv[0]+"?url="+urllib.quote_plus(u)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)
+ xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,totalItems=total)
+
+
+ def addDir(self, name, u, mode, infoList=False, infoArt=False):
+ name = name.encode("utf-8")
+ log('addDir, name = ' + name)
+ liz=xbmcgui.ListItem(name)
+ liz.setProperty('IsPlayable', 'false')
+ if infoList == False: liz.setInfo(type="Video", infoLabels={"mediatype":"video","label":name,"title":name})
+ else: liz.setInfo(type="Video", infoLabels=infoList)
+ if infoArt == False: liz.setArt({'thumb':ICON,'fanart':FANART}) #LOGO_URL%urllib.quote_plus(name)
+ else: liz.setArt(infoArt)
+ u=sys.argv[0]+"?url="+urllib.quote_plus(u)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)
+ xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
+
+params=getParams()
+try: url=urllib.unquote_plus(params["url"])
+except: url=None
+try: name=urllib.unquote_plus(params["name"])
+except: name=None
+try: mode=int(params["mode"])
+except: mode=None
+log("Mode: "+str(mode))
+log("URL : "+str(url))
+log("Name: "+str(name))
+
+if mode==None: NewsBlender().buildMenu()
+elif mode == 0: NewsBlender().buildCategory()
+elif mode == 1: NewsBlender().buildSource()
+elif mode == 2: NewsBlender().buildCountry()
+elif mode == 3: NewsBlender().buildLanguage()
+elif mode == 4: NewsBlender().browseCategory(url)
+elif mode == 5: NewsBlender().buildArticles(name, url)
+elif mode == 6: NewsBlender().browseCountry(url)
+elif mode == 7: NewsBlender().browseLanguage(url)
+elif mode == 8: NewsBlender().search(name, url)
+elif mode == 99: NewsBlender().playVideo(name, url)
+
+xbmcplugin.setContent(int(sys.argv[1]) , CONTENT_TYPE)
+xbmcplugin.addSortMethod(int(sys.argv[1]) , xbmcplugin.SORT_METHOD_UNSORTED)
+xbmcplugin.addSortMethod(int(sys.argv[1]) , xbmcplugin.SORT_METHOD_NONE)
+xbmcplugin.addSortMethod(int(sys.argv[1]) , xbmcplugin.SORT_METHOD_LABEL)
+xbmcplugin.addSortMethod(int(sys.argv[1]) , xbmcplugin.SORT_METHOD_TITLE)
+xbmcplugin.endOfDirectory(int(sys.argv[1]), cacheToDisc=True) \ No newline at end of file
diff --git a/plugin.video.newsblender/resources/settings.xml b/plugin.video.newsblender/resources/settings.xml
new file mode 100644
index 0000000..ca3092b
--- /dev/null
+++ b/plugin.video.newsblender/resources/settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<settings>
+ <setting id="Enable_Debugging" type="bool" label="30000" default="false" />
+ <setting id="Quality" type="enum" label="30002" default="3" values="SD|720p|1080p|Highest Available"/>
+ <setting id="APIKEY" enable="false" visible="false" option="hidden" type="text" default="4a5acaee9e8944baa36729027e6e75a6" />
+</settings>