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

+ + License GPL 3 + +

+ +# Livie is Video in Emacs + +![screenshot](screenshot.png) + +Livie allows the user to search youtube.com and play the video from `mpv`. + +## Requeriments + +- `python-beautifulsoup4` +- `python-lxml` +- `mpv` +- `hypervideo` or `youtube-dl` + + `sudo pacman -S python-beautifulsoup4 python-lxml mpv hypervideo` + +## Installation + +``` emacs-lisp +(require 'livie "~/.emacs.d/path/to/livie.el") +(setq livie-script-path (expand-file-name "path/to/livie.py" user-emacs-directory)) +``` + +## Usage + +Just run `M-x livie` and enter a search query. `n`, `p` and `tab` +can be used to navigate the buffer. Type `s` to enter another search. +To watch a video, press ``. diff --git a/livie.el b/livie.el new file mode 100644 index 0000000..b107186 --- /dev/null +++ b/livie.el @@ -0,0 +1,156 @@ +;;; livie.el --- Livie is Video in Emacs -*- lexical-binding: t; -*- + +;; Copyright (C) 2018 + +;;; Authors: + +;; Charlie Ritter +;; Jesus E. + +;;; Commentary: + +;; livie grabs a list of youtube videos based on a search. the user +;; can then select a video to watch through `livie-player' + +;;; Code: + +(require 'f) + +(defgroup livie '() + "Livie is Video in Emacs" + :prefix "livie-" + :group 'livie) + +(defcustom livie-player "mpv" + "Default video player to use with livie." + :group 'livie + :type 'string) + +(defcustom livie-player-args '() + "Command line arguments for `livie-player'." + :group 'livie + :type '(list) + :tag "Livie Player Arguments") + +(defcustom livie-python-name "python3" + "Name of the python executable." + :group 'livie + :type 'string) + +(defcustom livie-script-path nil + "Full path of livie.py." + :group 'livie + :type 'file) + +(defcustom livie-buffer-name "*livie*" + "Name of the buffer to show results." + :group 'livie + :type 'string) + +(defvar livie-youtube-regexp "https://www.youtube.com/watch\\?v=[A-Za-z0-9_\\-]\\{11\\}") + +(define-derived-mode livie-mode + special-mode "livie" + "Major mode for livie.") + +(defun livie-close-window () + "Close the livie window and bury the buffer." + (interactive) + (bury-buffer) + (delete-window) + (message nil)) + +(defun livie-next-video () + "Goto the next video in the buffer." + (interactive) + (forward-line 1) + (search-forward-regexp livie-youtube-regexp) + (livie-prev-video)) + +(defun livie-prev-video () + "Goto the previous video in the buffer." + (interactive) + (search-backward-regexp livie-youtube-regexp)) + +(defun livie-this-video () + "Go to the start of the current video." + (interactive) + (move-beginning-of-line nil) + (ignore-errors (forward-line -1)) + (livie-next-video)) + +(defun livie-copy-video () + "Copy the currently selected video into the kill ring." + (interactive) + (livie-this-video) + (push-mark) + (move-end-of-line nil) + (kill-ring-save nil nil t) + (livie-this-video)) + +(defun livie-watch-this-video () + "Watch video under the cursor." + (interactive) + (livie-copy-video) + (livie-watch (car kill-ring)) + (delete-other-windows)) + +(defun livie-watch (url) + "Watch video at URL using `livie-player' and `livie-player-args'." + (interactive "sURL: ") + (apply 'start-process + (cl-concatenate + 'list + (list "livie" + nil + livie-player) + livie-player-args + (list url))) + (message "Loading video...")) + +(defun livie (query) + "Livie is Video in Emacs. + +Livie will prompt the user for a QUERY. This is fed into a +python script that scrapes youtube.com for search results. The +results are displayed in an Emacs buffer. + +See also: `livie-mode'." + (interactive "sSearch: ") + (unless livie-script-path + (error "Please set `livie-script-path'")) + (if (equal (buffer-name) livie-buffer-name) + (progn + (read-only-mode -1) + (erase-buffer)) + (progn + (select-window (split-window)) + (ignore-errors (kill-buffer livie-buffer-name)) + (switch-to-buffer (generate-new-buffer livie-buffer-name)))) + (call-process livie-python-name + nil t t + livie-script-path + query) + (livie-mode) + (font-lock-ensure) + (goto-char (point-min)) + (message (concat "Results for: " query))) + +(font-lock-add-keywords + 'livie-mode + `((,livie-youtube-regexp . 'link) + ("title: \\(.*\\)" 1 'bold) + ("channel: \\(.*\\)" 1 'italic) + ("^ +[a-z]+:" . 'shadow))) + +(define-key livie-mode-map "s" 'livie) +(define-key livie-mode-map "q" 'livie-close-window) +(define-key livie-mode-map (kbd "") 'livie-next-video) +(define-key livie-mode-map (kbd "") 'livie-prev-video) +(define-key livie-mode-map "n" 'livie-next-video) +(define-key livie-mode-map "p" 'livie-prev-video) +(define-key livie-mode-map (kbd "") 'livie-watch-this-video) + +(provide 'livie) + +;;; livie.el ends here diff --git a/livie.py b/livie.py new file mode 100644 index 0000000..c9eacce --- /dev/null +++ b/livie.py @@ -0,0 +1,47 @@ +"""This module does render video""" + +import sys +import requests +from bs4 import BeautifulSoup + +BASE_URL = 'https://www.youtube.com' + +SEARCH_FILTER = '&sp=EgIQAQ%253D%253D' + +URL = BASE_URL + '/results?search_query=' + sys.argv[1] + SEARCH_FILTER + +HTML = requests.get(URL).text + +SOUP = BeautifulSoup(HTML, 'lxml') + +FIRST = True + +for vid in SOUP.find_all(class_='yt-lockup-content'): + try: + link = BASE_URL + vid.h3.a['href'] + title = vid.h3.a.text + description = vid.h3.span.text + author = vid.find(class_='yt-lockup-byline').a.text + meta = vid.find(class_='yt-lockup-meta').ul.contents + time = meta[0].text + views_str = meta[1].text[:-6] + views = int(views_str.replace(',', '')) + + except TypeError: + continue + + if FIRST: + FIRST = False + else: + print() + + print(f' title: {title}') + print(f' url: {link}') + print(f' channel: {author}') + print(f' uploaded: {time}') + print(f' views: {views_str}') + +# test +# f = open('output.xml','w') +# f.write(str(SOUP)) +# f.write(soup.encode('utf-8')) diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..c5eacd0bd02c79a881ab36a871f3ef6bf37f4ce6 GIT binary patch literal 40137 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

^EKsvYzojjs5?I| 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 N002ovPDHLkV1jZ9DenLP literal 0 HcmV?d00001