Download plugins/gallery.html from prolapse/fotopee: direct link, hf CLI and curl.
- Browser
- Download file 4.8 kB
-
https://huggingface.co/spaces/prolapse/fotopee/resolve/main/plugins/gallery.html
- Command line
-
hf download hf://spaces/prolapse/fotopee/plugins/gallery.html
-
curl -L -o gallery.html https://huggingface.co/spaces/prolapse/fotopee/resolve/main/plugins/gallery.html
4.8 kB
| | |
| <html> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0" /> | |
| <style> | |
| body { background-color:#474747; overflow:hidden; } | |
| label { color:white; font-family:sans-serif; font-size:0.8em; } | |
| img { margin-right:4px; cursor:pointer; } | |
| button { padding:0 4px; } | |
| #cont { | |
| margin-top:4px; | |
| overflow-y: scroll; | |
| /* for Firefox: */ | |
| scrollbar-color: #222222 rgba(0,0,0, 0.2 ); | |
| scrollbar-width: thin; | |
| } | |
| #cont::-webkit-scrollbar { | |
| width: 10px; | |
| background: rgba(0,0,0,0.2); | |
| } | |
| #cont::-webkit-scrollbar-thumb { | |
| background: #222222; | |
| margin:2px; | |
| } | |
| </style> | |
| <script> | |
| var imgs = [], hits = [], done=0; | |
| var UNS = location.href.indexOf("uns")!=-1, PAGE=1, sTop=-1, cont, keyws; | |
| function update(page) { | |
| cont = document.getElementById("cont"); | |
| keyws = document.getElementById("keyws"); | |
| if(page==null) { PAGE=1; hits=[]; sTop=-1; } | |
| else { PAGE = page; sTop=cont.scrollTop; } | |
| var ikey = keyws.value; | |
| if(document.getElementById("isolated").checked) ikey += " isolated"; | |
| ikey = ikey.trim(); | |
| console.log(JSON.stringify(ikey)); | |
| var url; | |
| if(!UNS) { | |
| url = "https://pixabay.com/api/?image_type=photo"+(ikey==""?"":"&q="+encodeURIComponent(ikey))+"&per_page="+100+"&page="+PAGE+"&key=10554583-a5eacb61c2e61105fdfb6eb88&safesearch=true"; | |
| } | |
| else { | |
| //var keys = ["lake", "mountains", "tree"]; if(ikey=="") ikey=keys[Math.floor(Math.random()*keys.length)]; | |
| url = "https://api.unsplash.com/search/photos?per_page="+30+"&query="+encodeURIComponent(ikey)+"&page="+PAGE; | |
| } | |
| var fnam = "gallery"+(UNS?"1":""); | |
| if(ikey=="") { | |
| if(!UNS && Math.random()<0.005) url="gallery.php?url="+encodeURIComponent(url)+"&fnam="+fnam;//+"&r="+Math.random(); | |
| else url=fnam+".json"; | |
| } | |
| console.log(url); | |
| var req = new XMLHttpRequest(); | |
| req.open("GET", url, true); | |
| if(UNS) req.setRequestHeader("Authorization", "Client-ID 3twt3nS_LYzp4nViMBB3tmWU0F-wyHUpgfrG1nIuiYs"); | |
| req.onload = imgsLoaded.bind(this); | |
| req.onerror = function(e) { console.log(e.target.response); } | |
| req.send(); | |
| } | |
| function imgsLoaded(e) { | |
| //console.log(e.target.response); | |
| var obj = JSON.parse(e.target.response); //console.log(obj); | |
| var list = obj["hits"]?obj["hits"]:obj["results"]; | |
| hits = hits.concat(list); | |
| var iw = window.innerWidth-29, th=100; | |
| cont.setAttribute("style","height:"+(window.innerHeight-42)+"px;"); | |
| while(cont.firstChild) cont.removeChild(cont.firstChild); | |
| cont.scrollTop = 0; | |
| //for(var i=0; i<hits.length; i++) if(hits[i]["user_id"]==6314823) hits.splice(i,1); | |
| var heis = []; | |
| for(var i=0; i<hits.length; ) { | |
| var totw = 0, j=i; | |
| while(j<hits.length) { | |
| var hit = hits[j], w=hit["previewWidth"], h=hit["previewHeight"]; | |
| if(w==null) { w=hit["width"]; h=hit["height"]; } | |
| var nw=w*(th/h); | |
| if(j<=i+1 || totw+nw < iw) { totw+=nw; j++; } | |
| else break; | |
| } | |
| var num = j-i; | |
| while(i<j) { | |
| heis.push(Math.min(th*2,th*((iw-num*4)/totw))); i++; | |
| } | |
| } | |
| imgs=[]; | |
| for(var i=0; i<hits.length; i++) { | |
| var hit = hits[i]; | |
| var img = document.createElement("img"); | |
| img.setAttribute("src",hit["previewURL"]?hit["previewURL"]:hit["urls"]["thumb"]); | |
| img.setAttribute("height",heis[i]+"px"); | |
| img.addEventListener("click", imgClick); | |
| cont.appendChild(img); | |
| imgs.push(img); | |
| } | |
| if(sTop!=-1) cont.scrollTop=sTop; | |
| cont.appendChild(document.createElement("br")); | |
| var more = document.createElement("button"); | |
| more.onclick = function(e) { update(PAGE+1); } | |
| more.textContent="Load More"; | |
| if(keyws.value!="") cont.appendChild(more); | |
| console.log(hits); | |
| } | |
| function imgClick(e) { | |
| var ind = imgs.indexOf(e.currentTarget); | |
| var hit = hits[ind]; console.log(hit); | |
| var url = hit["largeImageURL"]; if(url==null) url = hit["urls"]["full"]; | |
| var x = "app.open(\""+url+"\",null,true);"; | |
| window.parent.postMessage(x, "*"); | |
| } | |
| function msg(e) { alert("These images come from www."+(UNS?"Unsplash":"PixaBay")+".com and are free to use for any purpose."); } | |
| window.onresize = update; | |
| </script> | |
| </head> | |
| <body onload="update()"> | |
| <div style="height:22px; overflow:hidden;"> | |
| <button onclick="msg()">?</button> | |
| <label>Keywords:</label> <input type="text" id="keyws" onchange="update()" value=""></input> | |
| <input type="checkbox" id="isolated" style="vertical-align:middle;" onchange="update()" /> <label for="isolated">Isolated</label> | |
| </div> | |
| <div id="cont"></div> | |
| </body> | |
| </html> | |