From 472092fe43ad7da9feb4a8c0b4bf216b20c063b9 Mon Sep 17 00:00:00 2001 From: Squibid Date: Fri, 22 Sep 2023 18:08:37 -0400 Subject: [PATCH] inital commit --- LISCENSE | 690 +++++++++++++++++++++++++++++++++++++++++ README.md | 12 + config.php | 9 + index.php | 39 +++ misc/404.png | Bin 0 -> 150444 bytes misc/curlproxy.php | 434 ++++++++++++++++++++++++++ misc/tools.php | 41 +++ proxy.php | 19 ++ query.php | 52 ++++ scrapers/wallhaven.php | 98 ++++++ style/header.php | 40 +++ style/style.css | 225 ++++++++++++++ view.php | 55 ++++ 13 files changed, 1714 insertions(+) create mode 100644 LISCENSE create mode 100644 README.md create mode 100644 config.php create mode 100644 index.php create mode 100644 misc/404.png create mode 100644 misc/curlproxy.php create mode 100644 misc/tools.php create mode 100644 proxy.php create mode 100644 query.php create mode 100644 scrapers/wallhaven.php create mode 100644 style/header.php create mode 100644 style/style.css create mode 100644 view.php diff --git a/LISCENSE b/LISCENSE new file mode 100644 index 0000000..32901f0 --- /dev/null +++ b/LISCENSE @@ -0,0 +1,690 @@ +WallHeaven - The wallpaper proxy + +Copyright © 2023 squibid + +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. + +----- + + 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..cc59acf --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# WallHeaven +The best wallpaper proxy +Might be endorsed by the pope, idk + +# Install Instructions +coming soon™️ + +# ToDo +- add a website icon + +# Known Bug(s) (I'm too lazy to fix these) +- Tags occasionally overflow onto the next line if hovered over diff --git a/config.php b/config.php new file mode 100644 index 0000000..f8f1dcc --- /dev/null +++ b/config.php @@ -0,0 +1,9 @@ + array( + "wallhaven" => array( + "apikey" => "", + ), + ), + ); +?> diff --git a/index.php b/index.php new file mode 100644 index 0000000..a005d7f --- /dev/null +++ b/index.php @@ -0,0 +1,39 @@ + + + + + WallHeaven + + + + + + +

WallHeaven

+ + + diff --git a/misc/404.png b/misc/404.png new file mode 100644 index 0000000000000000000000000000000000000000..0f36532a90dcd1f76125296bcd6611cb45ff7e25 GIT binary patch literal 150444 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

8ACWfX!@} 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ðufH#pOdUzMNbNGZDMG6TU%ZTE4TapS@EE% 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%0Dt9Q0NTvcfh&g=)f@ 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 Qj{?7x70)Q7$m@Fi4@o;=CjbBd literal 0 HcmV?d00001 diff --git a/misc/curlproxy.php b/misc/curlproxy.php new file mode 100644 index 0000000..82766d7 --- /dev/null +++ b/misc/curlproxy.php @@ -0,0 +1,434 @@ +cache = $cache; + } + + public function do404() { + http_response_code(404); + header("Content-Type: image/png"); + + $handle = fopen("misc/404.png", "r"); + echo fread($handle, filesize("misc/404.png")); + fclose($handle); + + die(); + return; + } + + public function getabsoluteurl($path, $relative) { + if ($this->validateurl($path)) + return $path; + if (substr($path, 0, 2) == "//") + return "https:" . $path; + + $url = null; + + $relative = parse_url($relative); + $url = $relative["scheme"] . "://"; + + if (isset($relative["user"]) && isset($relative["pass"])) + $url .= $relative["user"] . ":" . $relative["pass"] . "@"; + + $url .= $relative["host"]; + if (isset($relative["path"])) { + $relative["path"] = explode( "/", $relative["path"]); + unset($relative["path"][count($relative["path"]) - 1]); + $relative["path"] = implode("/", $relative["path"]); + $url .= $relative["path"]; + } + + if (strlen($path) !== 0 && $path[0] !== "/") + $url .= "/"; + $url .= $path; + return $url; + } + + public function validateurl($url) { + $url_parts = parse_url($url); + + // check if required parts are there + if (!isset($url_parts["scheme"]) || !($url_parts["scheme"] == "http" || + $url_parts["scheme"] == "https") || !isset($url_parts["host"])) + return false; + + $ip = str_replace(["[", "]"], "", $url_parts["host"]); + + // if its not an IP + if (!filter_var($ip, FILTER_VALIDATE_IP)) { + // resolve domain's IP + $ip = gethostbyname($url_parts["host"] . "."); + } + + // check if its localhost + if (filter_var( $ip, FILTER_VALIDATE_IP, + FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false) + return false; + + return true; + } + + public function get($url, $reqtype = self::req_web, $acceptallcodes = false, $referer = null, $redirectcount = 0) { + + if ($redirectcount === 5) + throw new Exception("Too many redirects"); + + // sanitize URL + if ($this->validateurl($url) === false) + throw new Exception("Invalid URL"); + + $this->clientcache(); + + $curl = curl_init(); + + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_ENCODING, ""); // default encoding + curl_setopt($curl, CURLOPT_HEADER, 1); + + switch($reqtype) { + case self::req_web: + curl_setopt( + $curl, + CURLOPT_HTTPHEADER, + [ + "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0", + "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "Accept-Language: en-US,en;q=0.5", + "Accept-Encoding: gzip, deflate", + "DNT: 1", + "Upgrade-Insecure-Requests: 1", + "Sec-Fetch-Dest: document", + "Sec-Fetch-Mode: navigate", + "Sec-Fetch-Site: none", + "Sec-Fetch-User: ?1" + ] + ); + break; + + case self::req_image: + + curl_setopt( + $curl, + CURLOPT_HTTPHEADER, + [ + "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0", + "Accept: image/avif,image/webp,*/*", + "Accept-Language: en-US,en;q=0.5", + "Accept-Encoding: gzip, deflate", + "DNT: 1", + ] + ); + break; + } + + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30); + curl_setopt($curl, CURLOPT_TIMEOUT, 30); + + if (curl_errno($curl)) + throw new Exception(curl_error($curl)); + + curl_close($curl); + $headers = []; + $http = null; + while (true) { + $header = explode("\n", $body, 2); + $body = $header[1]; + if ($http === null) { + // http/1.1 200 ok + $header = explode("/", $header[0], 2); + $header = explode(" ", $header[1], 3); + $http = [ + "version" => (float)$header[0], + "code" => (int)$header[1] + ]; + continue; + } + + if (trim($header[0]) == "") + // reached end of headers + break; + + $header = explode(":", $header[0], 2); + + // malformed headers + if (count($header) !== 2) continue; + + $headers[strtolower(trim($header[0]))] = trim($header[1]); + } + + // check http code + if ($http["code"] >= 300 && $http["code"] <= 309) { + // redirect + if (!isset($headers["location"])) + throw new Exception("Broken redirect"); + + $redirectcount++; + + return $this->get($this->getabsoluteurl($headers["location"], $url), $reqtype, $acceptallcodes, $referer, $redirectcount); + } else { + if ($acceptallcodes === false && $http["code"] > 300) + throw new Exception("Remote server returned an error code! ({$http["code"]})"); + } + + // check if data is okay + switch($reqtype) { + case self::req_image: + $format = false; + if (isset($headers["content-type"])) { + if ($headers["content-type"] == "text/html") { + throw new Exception("Server returned an html document instead of image"); + } + $tmp = explode(";", $headers["content-type"]); + for ($i=0; $i $http, + "format" => $format, + "headers" => $headers, + "body" => $body + ]; + break; + default: + return [ + "http" => $http, + "headers" => $headers, + "body" => $body + ]; + break; + } + return; + } + + public function stream_linear_image($url, $referer = null) { + $this->stream($url, $referer, "image"); + } + + private function stream($url, $referer, $format) { + $this->url = $url; + $this->format = $format; + + // sanitize URL + if ($this->validateurl($url) === false) + throw new Exception("Invalid URL"); + + $this->clientcache(); + $curl = curl_init(); + + // set headers + if ($referer === null) { + $referer = explode("/", $url, 4); + array_pop($referer); + + $referer = implode("/", $referer); + } + + curl_setopt( $curl, CURLOPT_HTTPHEADER, [ + "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0", + "Accept: image/avif,image/webp,*/*", + "Accept-Language: en-US,en;q=0.5", + "Accept-Encoding: gzip, deflate, br", + "DNT: 1", + "Connection: keep-alive", + ]); + + // follow redirects + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($curl, CURLOPT_MAXREDIRS, 5); + curl_setopt($curl, CURLOPT_AUTOREFERER, 5); + + // set url + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_ENCODING, ""); // default encoding + + // timeout + disable ssl + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($curl, CURLOPT_TIMEOUT, 30); + + curl_setopt( + $curl, + CURLOPT_WRITEFUNCTION, + function($c, $data) { + + if (curl_getinfo($c, CURLINFO_HTTP_CODE) !== 200) + throw new Exception("Serber returned a non-200 code"); + + echo $data; + return strlen($data); + } + ); + + $this->empty_header = false; + $this->cont = false; + $this->headers_tmp = []; + $this->headers = []; + curl_setopt( + $curl, + CURLOPT_HEADERFUNCTION, + function($c, $header) { + $head = trim($header); + $len = strlen($head); + + if ($len === 0) { + $this->empty_header = true; + $this->headers_tmp = []; + } else { + $this->empty_header = false; + $this->headers_tmp[] = $head; + } + + foreach($this->headers_tmp as $h) { + // parse headers + $h = explode(":", $h, 2); + + if (count($h) !== 2) { + if (curl_getinfo($c, CURLINFO_HTTP_CODE) !== 200) + // not HTTP 200, probably a redirect + $this->cont = false; + else + $this->cont = true; + + // is HTTP 200, just ignore that line + continue; + } + + $this->headers[strtolower(trim($h[0]))] = trim($h[1]); + } + + if ($this->cont && $this->empty_header) { + // get content type + if (isset($this->headers["content-type"])) { + $filetype = explode("/", $this->headers["content-type"]); + if (strtolower($filetype[0]) != $this->format) { + throw new Exception("Resource is not an {$this->format} (Found {$filetype[0]} instead)"); + } + } else { + throw new Exception("Resource is not an {$this->format} (no Content-Type)"); + } + header("Content-Type: {$this->format}/{$filetype[1]}"); + // give payload size + if (isset($this->headers["content-length"])) + header("Content-Length: {$this->headers["content-length"]}"); + + // give filename + $this->getfilenameheader($this->headers, $this->url, $filetype[1]); + } + + return strlen($header); + } + ); + + curl_exec($curl); + + if (curl_errno($curl)) + throw new Exception(curl_error($curl)); + + curl_close($curl); + } + + public function getfilenameheader($headers, $url, $filetype = "jpg") { + // get filename from content-disposition header + if (isset($headers["content-disposition"])) { + preg_match( '/filename=([^;]+)/', $headers["content-disposition"], + $filename); + + if (isset($filename[1])) { + header("Content-Disposition: filename=" . $filename[1] . "." . $filetype); + return; + } + } + + // get filename from URL + $filename = parse_url($url, PHP_URL_PATH); + if ($filename === null) { + + // everything failed! rename file to domain name + header("Content-Disposition: filename=" . parse_url($url, PHP_URL_HOST) . "." . $filetype); + return; + } + + // remove extension from filename + $filename = explode(".", basename($filename)); + + if (count($filename) > 1) + array_pop($filename); + + $filename = implode(".", $filename); + + header("Content-Disposition: inline; filename=" . $filename . "." . $filetype); + return; + } + + public function getimageformat($payload, &$imagick) { + $finfo = new finfo(FILEINFO_MIME_TYPE); + $format = $finfo->buffer($payload["body"]); + + if ($format === false) { + if ($payload["format"] === false) { + header("X-Error: Could not parse format"); + $this->favicon404(); + } + $format = $payload["format"]; + } else { + $format_tmp = explode("/", $format, 2); + + if ($format_tmp[0] == "image") { + $format_tmp = strtolower($format_tmp[1]); + if (substr($format_tmp, 0, 2) == "x-") + $format_tmp = substr($format_tmp, 2); + $format = $format_tmp; + } + } + + switch($format) { + case "tiff": $format = "gif"; break; + case "vnd.microsoft.icon": $format = "ico"; break; + case "icon": $format = "ico"; break; + case "svg+xml": $format = "svg"; break; + } + + $imagick = new Imagick(); + + if (!in_array($format, array_map("strtolower", $imagick->queryFormats()))) + // format could not be found, but imagemagick can + // sometimes detect it? shit's fucked + $format = false; + + return $format; + } + + public function clientcache() { + if ($this->cache === false) + return; + + header("Last-Modified: Thu, 01 Oct 1970 00:00:00 GMT"); + $headers = getallheaders(); + + if (isset($headers["If-Modified-Since"]) || + isset($headers["If-Unmodified-Since"])) { + + http_response_code(304); // 304: Not Modified + die(); + } + } +} diff --git a/misc/tools.php b/misc/tools.php new file mode 100644 index 0000000..7473953 --- /dev/null +++ b/misc/tools.php @@ -0,0 +1,41 @@ + 'year', + 2592000 => 'month', + 604800 => 'week', + 86400 => 'day', + 3600 => 'hour', + 60 => 'minute', + ]; + + $numunits; + foreach ($timeunits as $unit => $text) { + if ($time < $unit) + continue; + $numunits = floor($time / $unit); + return ' '.$numunits.' '.$text.(($numunits > 1) ? 's' : ''); + } + } + + function humanfilesize($size, $unit="") { + if ((!$unit && $size >= 1 << 30) || $unit == "GB") + return number_format($size / (1 << 30),2)."GB"; + if ((!$unit && $size >= 1 << 20) || $unit == "MB") + return number_format($size / (1 << 20),2)."MB"; + if ((!$unit && $size >= 1 << 10) || $unit == "KB") + return number_format($size / (1 << 10),2)."KB"; + return number_format($size)." bytes"; + } + + function toupperpurity($str) { + if ($str == "sfw") + return strtoupper($str); + if ($str == "sketchy") + return ucfirst($str); + if ($str == "nsfw") + return strtoupper($str); + return $str; + } +?> diff --git a/proxy.php b/proxy.php new file mode 100644 index 0000000..6dd4690 --- /dev/null +++ b/proxy.php @@ -0,0 +1,19 @@ +do404(); + die(); + } + try { + if (!isset($_GET["s"]) || $_GET["s"] == "original") { + $proxy->stream_linear_image($_GET["i"]); + } + } catch (Exception $error) { + header("X-Error: " . $error->getMessage()); + $proxy->do404(); + die(); + } +?> diff --git a/query.php b/query.php new file mode 100644 index 0000000..1b7b7c1 --- /dev/null +++ b/query.php @@ -0,0 +1,52 @@ +\n"); + if (!$res[0]) + printf("No Results Found :("); + else + foreach($res[0] as $walls) { + printf("

\n"); + printf("\n", $walls["purity"]); + printf("\n", $walls["path"], $walls["purity"], $walls["purity"], $walls["thumbs"]["small"]); + printf("\n"); + } + printf("\n"); + + /* page numbers */ + if (!$res || $res[1]["pages"] == 0 || !$res[0][0]) + return; + + printf("
\n
\n

\n"); +?> diff --git a/scrapers/wallhaven.php b/scrapers/wallhaven.php new file mode 100644 index 0000000..5dbdd68 --- /dev/null +++ b/scrapers/wallhaven.php @@ -0,0 +1,98 @@ + $value) { + $walls[$key]["id"] = $decoded["data"][$key]["id"]; + $walls[$key]["url"] = $decoded["data"][$key]["url"]; + $walls[$key]["short_url"] = $decoded["data"][$key]["short_url"]; + $walls[$key]["views"] = $decoded["data"][$key]["views"]; + $walls[$key]["favorites"] = $decoded["data"][$key]["favorites"]; + $walls[$key]["source"] = $decoded["data"][$key]["source"]; + $walls[$key]["purity"] = $decoded["data"][$key]["purity"]; + $walls[$key]["category"] = $decoded["data"][$key]["category"]; + $walls[$key]["dimension_x"] = $decoded["data"][$key]["dimension_x"]; + $walls[$key]["dimension_y"] = $decoded["data"][$key]["dimension_y"]; + $walls[$key]["resolution"] = $decoded["data"][$key]["resolution"]; + $walls[$key]["ratio"] = $decoded["data"][$key]["ratio"]; + $walls[$key]["file_size"] = $decoded["data"][$key]["file_size"]; + $walls[$key]["file_type"] = $decoded["data"][$key]["file_type"]; + $walls[$key]["created_at"] = $decoded["data"][$key]["created_at"]; + $walls[$key]["colors"] = $decoded["data"][$key]["colors"]; + $walls[$key]["path"] = $decoded["data"][$key]["path"]; + $walls[$key]["thumbs"] = $decoded["data"][$key]["thumbs"]; + } + $meta["pages"] = $decoded["meta"]["last_page"]; + $meta["total"] = $decoded["meta"]["total"]; + return array($walls, $meta); + } + + function getwallpaper($link) { + $decoded = json_decode(callapi("GET", $link), true); + $wall = $decoded["data"]; + $wall["tags"] = $decoded["tags"]; + foreach($decoded["data"] as $key => $value) { + $wall["id"] = $decoded["data"]["id"]; + $wall["url"] = $decoded["data"]["url"]; + $wall["short_url"] = $decoded["data"]["short_url"]; + foreach($decoded["data"]["uploader"] as $key => $value) { + $wall["uploader"]["username"] = $decoded["data"]["uploader"]["username"]; + $wall["uploader"]["group"] = $decoded["data"]["uploader"]["group"]; + foreach($decoded["data"]["uploader"]["avatar"] as $key => $value) { + $wall["uploader"]["avatar"]["large"] = $decoded["data"]["uploader"]["avatar"]["200px"]; + $wall["uploader"]["avatar"]["medium"] = $decoded["data"]["uploader"]["avatar"]["128px"]; + $wall["uploader"]["avatar"]["small"] = $decoded["data"]["uploader"]["avatar"]["32px"]; + $wall["uploader"]["avatar"]["xsmall"] = $decoded["data"]["uploader"]["avatar"]["20px"]; + } + } + $wall["views"] = $decoded["data"]["views"]; + $wall["favorites"] = $decoded["data"]["favorites"]; + $wall["source"] = $decoded["data"]["source"]; + $wall["purity"] = $decoded["data"]["purity"]; + $wall["category"] = $decoded["data"]["category"]; + $wall["dimension_x"] = $decoded["data"]["dimension_x"]; + $wall["dimension_y"] = $decoded["data"]["dimension_y"]; + $wall["resolution"] = $decoded["data"]["resolution"]; + $wall["ratio"] = $decoded["data"]["ratio"]; + $wall["file_size"] = $decoded["data"]["file_size"]; + $wall["file_type"] = $decoded["data"]["file_type"]; + $wall["created_at"] = $decoded["data"]["created_at"]; + foreach ($decoded["data"]["tags"] as $key => $value) { + $wall["tags"][$key]["id"] = $decoded["data"]["tags"][$key]["id"]; + $wall["tags"][$key]["name"] = $decoded["data"]["tags"][$key]["name"]; + $wall["tags"][$key]["alias"] = $decoded["data"]["tags"][$key]["alias"]; + $wall["tags"][$key]["category_id"] = $decoded["data"]["tags"][$key]["category_id"]; + $wall["tags"][$key]["category"] = $decoded["data"]["tags"][$key]["category"]; + $wall["tags"][$key]["purity"] = $decoded["data"]["tags"][$key]["purity"]; + $wall["tags"][$key]["created_at"] = $decoded["data"]["tags"][$key]["created_at"]; + } + } + return $wall; + } +?> diff --git a/style/header.php b/style/header.php new file mode 100644 index 0000000..79a4479 --- /dev/null +++ b/style/header.php @@ -0,0 +1,40 @@ +\nWallHeaven - %s\n", $_GET["q"]); + printf("\n", $_GET["q"]); + echo << + + + +

WallHeaven

+ \n") +?> diff --git a/style/style.css b/style/style.css new file mode 100644 index 0000000..11f90fe --- /dev/null +++ b/style/style.css @@ -0,0 +1,225 @@ +:root { + --bg-color: #161616; + + /* purity colors */ + --sfw-color-1: #99ff99; + --sfw-color-2: #92f592; + --sketchy-color-1: #ffff99; + --sketchy-color-2: #f0f08f; + --nsfw-color-1: #ff9999; + --nsfw-color-2: #ff9a99; + + /* role colors */ + --owner-color-1: #b336ed; + --owner-color-2: #b886ed; + --developer-color-1: #fa8072; + --admin-color-1: #ffd700; + --user-color-1: #4169e1; + --deleted-color-1: #aaaaaa; +} + +html, body { + background-color: var(--bg-color); + font-family: sans-serif; +} + +h1, #header { + font-size: 2em; + color: white; + text-align: center; +} + +#searchbox { + text-align: center; + font-size: 1em; +} + +#options { display: inline-block; } + +#heaven { + -webkit-animation-name: heaven; + -webkit-animation-duration: 1s; + -webkit-animation-iteration-count: infinite; + -webkit-animation-direction: alternate; +} + +@-webkit-keyframes heaven { + from { + text-shadow: 0 0 10px #ff9, 0 0 20px #ff9, 0 0 30px #fd8, 0 0 40px #fd8; + } to { + text-shadow: 0 0 10px #ff9, 0 0 20px #ff9, 0 0 30px #fd9, 0 0 40px #fd9, 0 0 50px #fd9, 0 0 60px #fd9; + } +} + +#wallpapers { + text-align: center; + color: #fff; +} +#wallpapers form { display: inline-block; } + +button[name=wall] { + all: unset; + margin: 3px; + cursor: pointer; +} + +#wallmaster { + width: 100%; + height: 80%; +} + +#wallpaperinfo { + width: 15%; + max-height: 100%; + margin-right: 10px; + padding: 10px; + float: left; + overflow-y: auto; + background-color: #1a1a1a; + color: #fff; +} + +#uploader { text-align: center; } +#uploader span[title='Owner/Developer'] { + font-weight: bold; + color: var(--owner-color-1); + text-shadow: 0 0 2px var(--owner-color-1), 0 0 5px var(--owner-color-2); +} +#uploader span[title=Developer] { + font-weight: bold; + color: var(--developer-color-1); +} +#uploader span[title=Administrator] { + font-weight: bold; + color: var(--admin-color-1); +} +#uploader span[title=User] { color: var(--user-color-1); } +#uploader span[title=deleted] { + color: var(--deleted-color-1); + text-decoration: line-through; +} + +a#similar { + text-decoration: underline; + color: inherit; + float: right; +} + +#tags span { + white-space: nowrap; + line-height: 1.8; +} +#tags span a { color: #000; } +#tags span[id=sfw], #properties span[id=sfw] { + color: #000; + background-color: var(--sfw-color-1); + border: 3px solid var(--sfw-color-2); +} +#tags span[id=sketchy], #properties span[id=sketchy] { + color: #000; + background-color: var(--sketchy-color-1); + border: 3px solid var(--sketchy-color-2); +} +#tags span[id=nsfw], #properties span[id=nsfw] { + color: #000; + background-color: var(--nsfw-color-1); + border: 3px solid var(--nsfw-color-2); +} + +#properties p { color: #ccf; } +#tags a, summary { user-select: none; } +#properties span { + color: #fff; + float: right; +} + +#bwallpaperview { + float: left; + width: 75%; + height: 100%; +} + +#bwallpaperview img { + display: block; + margin: auto; + max-width: 100%; + max-height: 100%; +} + +#footer { + user-select: none; + text-align: center; + font-size: 1.5em; +} + +/* wallpaper preview borders */ +#sfw { border: 3px solid var(--sfw-color-1); } +#sketchy { border: 3px solid var(--sketchy-color-1); } +#nsfw { border: 3px solid var(--nsfw-color-1); } + +/* search category buttons */ +input[type=checkbox] { display: none; } +input[type=checkbox] + label { + border: 3px solid var(--bg-color); + background-color: var(--bg-color); + color: white; + user-select: none; +} +input[type=checkbox] + label:hover { + border: 3px solid #555; + cursor: pointer; +} +input[type=checkbox]:checked + label { color: #000; } +/* sfw */ +input[id=SFW]:checked + label { + background-color: var(--sfw-color-1); + border: 3px solid var(--sfw-color-2); +} +input[id=SFW]:checked + label:hover { border: 3px solid #77ff77; } +/* sketchy */ +input[id=Sketchy]:checked + label { + background-color: var(--sketchy-color-1); + border: 3px solid var(--sketchy-color-2); +} +input[id=Sketchy]:checked + label:hover { border: 3px solid #ffff66; } +/* nsfw */ +input[id=NSFW]:checked + label { + background-color: var(--nsfw-color-1); + border: 3px solid var(--nsfw-color-2); +} +input[id=NSFW]:checked + label:hover { border: 3px solid #ffaaaa; } +/* other tags */ +input[id=General]:checked + label, +input[id=Anime]:checked + label, +input[id=People]:checked + label, +#properties span[id='category'] { + color: #000; + background-color: #eeeeee; + border: 3px solid #efefef; +} +input[id=General]:checked + label:hover, +input[id=Anime]:checked + label:hover, +input[id=People]:checked + label:hover { border: 3px solid #afafaf; } + +/* search box */ +input[type=text] { + padding: 5px; + width: 42vw; + box-sizing: border-box; + border: 3px solid #ccc; + -webkit-transition: 0.5s; + transition: 0.5s; + outline: none; +} +input[type=text]:focus { + border: 3px solid #555; +} + +a { + text-decoration: none; + color: #fff; +} + +a:hover { + font-style: italic; +} diff --git a/view.php b/view.php new file mode 100644 index 0000000..bbc707b --- /dev/null +++ b/view.php @@ -0,0 +1,55 @@ + + WallHeaven + + + +
+
+
+\n
\n", $res["uploader"]["avatar"]["medium"]); + printf("%s\n
\n", $res["uploader"]["username"], $res["uploader"]["group"], $res["uploader"]["username"]); + printf("%s old\n", $res["created_at"], timesince(strtotime($res["created_at"]))); +?> +
+
TagsSimilar Wallpapers\n", $matches[0]); + foreach ($res["tags"] as $tags) + printf("%s\n", $tags["alias"], $tags["purity"], $tags["id"], $tags["name"]); +?> +
+
Properties +Category %s

\n", ucfirst($res["category"])); + printf("

Purity %s

\n", $res["purity"], toupperpurity($res["purity"])); + printf("

Resolution %s

\n", $res["resolution"]); + printf("

File Size %s

\n", humanfilesize($res["file_size"])); + printf("

Share %s

\n", $matches[0], $_POST['purity'], $matches[0]); +?> +
+
+
+
+\n", $_POST['wall']); +?> +
+