// clock function getClock(){ var d = new Date(); var nhour = d.getHours(), nmin = d.getMinutes(); if(nmin<=9) nmin="0"+nmin document.getElementById('clock').innerHTML=" "+nhour+":"+nmin+""; } window.onload = function(){ getClock(); setInterval(getClock,1000); } // remove empty p tags for (const p of document.querySelectorAll('p')) { if (p.innerHTML.trim() === '') { p.remove() } } let posts = [] posts.push({ npf: JSON.parse('{\x22content\x22:[{\x22type\x22:\x22text\x22,\x22text\x22:\x22neko masterpost\x22,\x22subtype\x22:\x22heading1\x22},{\x22type\x22:\x22image\x22,\x22media\x22:[{\x22media_key\x22:\x22ba5887ec826de060f2a6c216f38575c7:3f0c6b430880daa6-64\x22,\x22type\x22:\x22image/webp\x22,\x22width\x22:50,\x22height\x22:50,\x22url\x22:\x22https://64.media.tumblr.com/ba5887ec826de060f2a6c216f38575c7/3f0c6b430880daa6-64/s75x75_c1/372db0277369b6837be397a934400d64f05aad1f.webp\x22,\x22cropped\x22:true,\x22has_original_dimensions\x22:true}],\x22colors\x22:{\x22c0\x22:\x22ffffff\x22,\x22c1\x22:\x22000000\x22}},{\x22type\x22:\x22text\x22,\x22text\x22:\x22ever wonder about where this little guy is from? i did. and then i extensively sought him out\x22},{\x22type\x22:\x22link\x22,\x22url\x22:\x22https://en.wikipedia.org/wiki/Neko_(software)\x22,\x22display_url\x22:\x22https://en.wikipedia.org/wiki/Neko_(software)\x22,\x22title\x22:\x22Neko (software) - Wikipedia\x22,\x22site_name\x22:\x22en.wikipedia.org\x22,\x22poster\x22:[{\x22media_key\x22:\x2254b629dcbea514bb536fe8e38d1d8d05:3f0c6b430880daa6-d5\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:128,\x22height\x22:96,\x22url\x22:\x22https://64.media.tumblr.com/54b629dcbea514bb536fe8e38d1d8d05/3f0c6b430880daa6-d5/s250x400/aaa5e8c07a14efcf70a5a898f0ae87f1b16fb645.png\x22}]},{\x22type\x22:\x22text\x22,\x22text\x22:\x22neko was an add-on to windows that would have a cute pixel cat follow your mouse around the screen. it included cute features such as the cat sleeping when you didn\'t move the mouse for a long enough time. You could also click and drag the cat to pick it up and move it.\x22},{\x22type\x22:\x22text\x22,\x22text\x22:\x22my early experiences with it was in the form of an early 2000s iphone game that included features such as cat herding, changing the color/design of your neko, picking up your neko, and the original chase and idle animations. \x22},{\x22type\x22:\x22text\x22,\x22text\x22:\x22though i haven\'t been able to find the old app, the same features can be found on this website:\x22},{\x22type\x22:\x22link\x22,\x22url\x22:\x22https://webneko.net/?pink\x22,\x22display_url\x22:\x22https://webneko.net/?pink\x22,\x22title\x22:\x22*NEKO* Welcome to the Web Neko Server!\x22,\x22site_name\x22:\x22webneko.net\x22},{\x22type\x22:\x22text\x22,\x22text\x22:\x22this website lists some script that can be added to the html portion of a website. when i tried to add him to my blog i learned that javascript additions to the html of tumblr blogs was removed as a feature in 2022. \x22},{\x22type\x22:\x22image\x22,\x22media\x22:[{\x22media_key\x22:\x222d021948b3c8fa4a460ea0b3685ec995:3f0c6b430880daa6-43\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:604,\x22height\x22:818,\x22url\x22:\x22https://64.media.tumblr.com/2d021948b3c8fa4a460ea0b3685ec995/3f0c6b430880daa6-43/s640x960/12dc5dcae70702935d7aa79ac9dd490d346a71fa.png\x22,\x22has_original_dimensions\x22:true},{\x22media_key\x22:\x222d021948b3c8fa4a460ea0b3685ec995:3f0c6b430880daa6-43\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:540,\x22height\x22:731,\x22url\x22:\x22https://64.media.tumblr.com/2d021948b3c8fa4a460ea0b3685ec995/3f0c6b430880daa6-43/s540x810/6f3e17a09844dc49ee44cd6df0170f038d8ff641.png\x22},{\x22media_key\x22:\x222d021948b3c8fa4a460ea0b3685ec995:3f0c6b430880daa6-43\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:500,\x22height\x22:677,\x22url\x22:\x22https://64.media.tumblr.com/2d021948b3c8fa4a460ea0b3685ec995/3f0c6b430880daa6-43/s500x750/e43fa16252be11176933b211e8376ccbd59dafb9.png\x22},{\x22media_key\x22:\x222d021948b3c8fa4a460ea0b3685ec995:3f0c6b430880daa6-43\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:400,\x22height\x22:542,\x22url\x22:\x22https://64.media.tumblr.com/2d021948b3c8fa4a460ea0b3685ec995/3f0c6b430880daa6-43/s400x600/5c7ef019d14a681e20ffdc99b947efccff1bda93.png\x22},{\x22media_key\x22:\x222d021948b3c8fa4a460ea0b3685ec995:3f0c6b430880daa6-43\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:250,\x22height\x22:339,\x22url\x22:\x22https://64.media.tumblr.com/2d021948b3c8fa4a460ea0b3685ec995/3f0c6b430880daa6-43/s250x400/23269d1179089a77749cc69cc252568874adbfe8.png\x22},{\x22media_key\x22:\x222d021948b3c8fa4a460ea0b3685ec995:3f0c6b430880daa6-43\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:100,\x22height\x22:135,\x22url\x22:\x22https://64.media.tumblr.com/2d021948b3c8fa4a460ea0b3685ec995/3f0c6b430880daa6-43/s100x200/c70b6af2ce0137e69feca83a8371fcf4cc1abff6.png\x22},{\x22media_key\x22:\x222d021948b3c8fa4a460ea0b3685ec995:3f0c6b430880daa6-43\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:75,\x22height\x22:75,\x22url\x22:\x22https://64.media.tumblr.com/2d021948b3c8fa4a460ea0b3685ec995/3f0c6b430880daa6-43/s75x75_c1/2fe7414593da55e5a229cdfb3d81d0e3afd0ab59.png\x22,\x22cropped\x22:true}],\x22colors\x22:{\x22c0\x22:\x22040404\x22,\x22c1\x22:\x221f1f1f\x22,\x22c2\x22:\x22232323\x22,\x22c3\x22:\x22303030\x22,\x22c4\x22:\x22373737\x22}},{\x22type\x22:\x22image\x22,\x22media\x22:[{\x22media_key\x22:\x2218302a1cc712f3d80ad3af62f23faacd:3f0c6b430880daa6-04\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:604,\x22height\x22:908,\x22url\x22:\x22https://64.media.tumblr.com/18302a1cc712f3d80ad3af62f23faacd/3f0c6b430880daa6-04/s640x960/a8d5d73d2d15e8f87668a91e200ba839f7fd8f7d.png\x22,\x22has_original_dimensions\x22:true},{\x22media_key\x22:\x2218302a1cc712f3d80ad3af62f23faacd:3f0c6b430880daa6-04\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:539,\x22height\x22:810,\x22url\x22:\x22https://64.media.tumblr.com/18302a1cc712f3d80ad3af62f23faacd/3f0c6b430880daa6-04/s540x810/7f65e3d9942f8df6cde6f7273fa4dc65a6bc53a7.png\x22},{\x22media_key\x22:\x2218302a1cc712f3d80ad3af62f23faacd:3f0c6b430880daa6-04\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:499,\x22height\x22:750,\x22url\x22:\x22https://64.media.tumblr.com/18302a1cc712f3d80ad3af62f23faacd/3f0c6b430880daa6-04/s500x750/1ce46c632313579c550511fa70c04b654d51a53d.png\x22},{\x22media_key\x22:\x2218302a1cc712f3d80ad3af62f23faacd:3f0c6b430880daa6-04\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:399,\x22height\x22:600,\x22url\x22:\x22https://64.media.tumblr.com/18302a1cc712f3d80ad3af62f23faacd/3f0c6b430880daa6-04/s400x600/5ae4ab28c47a72285357d9aa74dc74162b296332.png\x22},{\x22media_key\x22:\x2218302a1cc712f3d80ad3af62f23faacd:3f0c6b430880daa6-04\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:250,\x22height\x22:376,\x22url\x22:\x22https://64.media.tumblr.com/18302a1cc712f3d80ad3af62f23faacd/3f0c6b430880daa6-04/s250x400/f3349649c2be06e6491d32576a571404268d911d.png\x22},{\x22media_key\x22:\x2218302a1cc712f3d80ad3af62f23faacd:3f0c6b430880daa6-04\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:100,\x22height\x22:150,\x22url\x22:\x22https://64.media.tumblr.com/18302a1cc712f3d80ad3af62f23faacd/3f0c6b430880daa6-04/s100x200/2b9468246b70649499966701dff40ca7c7c42433.png\x22},{\x22media_key\x22:\x2218302a1cc712f3d80ad3af62f23faacd:3f0c6b430880daa6-04\x22,\x22type\x22:\x22image/png\x22,\x22width\x22:75,\x22height\x22:75,\x22url\x22:\x22https://64.media.tumblr.com/18302a1cc712f3d80ad3af62f23faacd/3f0c6b430880daa6-04/s75x75_c1/cfeb9e02f1c5df8344e06d78643d32f5773940c3.png\x22,\x22cropped\x22:true}],\x22colors\x22:{\x22c0\x22:\x22040404\x22,\x22c1\x22:\x22080808\x22,\x22c2\x22:\x220d0d0d\x22,\x22c3\x22:\x22171717\x22,\x22c4\x22:\x22252525\x22}},{\x22type\x22:\x22text\x22,\x22text\x22:\x22(so jealous of the people who had a webneko on their blog before 2022)\x22},{\x22type\x22:\x22text\x22,\x22text\x22:\x22according to this post, javascript additions to your blog can be appealed through tumblr support. i appealed and received an email back asking how my tumblr experience would be improved by adding html script to my blog and saying my appeal would be processed in a few weeks\x22,\x22formatting\x22:[{\x22type\x22:\x22link\x22,\x22start\x22:13,\x22end\x22:22,\x22url\x22:\x22https://www.tumblr.com/glenthemes/683796810867900416/tumblr-javascript\x22}]},{\x22type\x22:\x22text\x22,\x22text\x22:\x22i also found this chrome extension for adding neko but it needs permission to alter every website you visit and i didn\'t trust that :/\x22},{\x22type\x22:\x22link\x22,\x22url\x22:\x22https://onekoneko.app/\x22,\x22display_url\x22:\x22https://onekoneko.app/\x22,\x22title\x22:\x22Oneko Neko\x22,\x22site_name\x22:\x22onekoneko.app\x22},{\x22type\x22:\x22text\x22,\x22text\x22:\x22the website allows you to play with neko on the page as well but with less features compared to the other one such as customization.\x22},{\x22type\x22:\x22text\x22,\x22text\x22:\x22anyway i don\'t think i\'ll get the approval to get neko on my blog but it\'s worth a try!\x22},{\x22type\x22:\x22text\x22,\x22text\x22:\x22tldr: check out webneko.net to play with the original cat computer mouse chaser but just know that the script cannot be added to your blog\x22}],\x22layout\x22:[{\x22type\x22:\x22rows\x22,\x22display\x22:[{\x22blocks\x22:[0]},{\x22blocks\x22:[1]},{\x22blocks\x22:[2]},{\x22blocks\x22:[3]},{\x22blocks\x22:[4]},{\x22blocks\x22:[5]},{\x22blocks\x22:[6]},{\x22blocks\x22:[7]},{\x22blocks\x22:[8]},{\x22blocks\x22:[9]},{\x22blocks\x22:[10]},{\x22blocks\x22:[11]},{\x22blocks\x22:[12]},{\x22blocks\x22:[13]},{\x22blocks\x22:[14]},{\x22blocks\x22:[15]},{\x22blocks\x22:[16]},{\x22blocks\x22:[17]}],\x22truncate_after\x22:2}],\x22trail\x22:[]}'), id: '745253040150413312'}) function updateType(type, article) { article.classList.add('npf-post', `${ type }-post`) article.classList.remove('text-post') article.querySelector('.post-type').textContent = type } for (const post of posts) { let npf = post.npf let article = document.getElementById(`post-${post.id}`) // select captions that have something in them let caption = article.querySelector('.caption:is(:not(:empty))') if (caption != null && article.classList.contains('text-post')) { // if content if (npf.trail.length || npf.content.length) { switch (npf.trail[0]?.content[0]?.type ?? npf.content[0].type) { case 'image': updateType('photos', article) if (article.querySelector('.npf_row') == null) { caption.prepend(article.querySelector('figure')) } break case 'video': updateType('video', article) let video = article.querySelector('figure') caption.prepend(video) break case 'link': updateType('link', article) } if (article.classList.contains('photos-post')) { let photoset = document.createElement('div') photoset.classList.add('npf-photos') caption.prepend(photoset) // find where a photoset would be split up by another content block let photoBreak = article.querySelector('.reblog-content > *:is(:not(.npf_row))') let elements = [] if (photoBreak) { let prevElement = photoBreak.parentNode.firstElementChild while (prevElement !== photoBreak) { elements.push(prevElement) prevElement = prevElement.nextElementSibling } } else { elements = article.querySelectorAll('.npf_row') } for (const el of elements) { photoset.append(el) } if (article.querySelectorAll('.npf_row').length > 1) { article.classList.add('photoset-post', 'npf-post', 'photos-post') article.querySelector('.post-type').textContent = 'photoset' } else { article.classList.add('photo-post') article.querySelector('.post-type').textContent = 'photo' } } // clean up any potential stray reblog headers let reblogHeader = article.querySelector('.reblog-header') let reblogContent = article.querySelector('.reblog-content') if (reblogHeader?.nextElementSibling === reblogContent && reblogContent?.childElementCount === 0) { reblogHeader.remove() reblogContent.remove() } } } if (article.classList.contains('video-post')) { let video = article.querySelector('.tumblr_video_iframe') let videoCont = article.querySelector('.video-container') if (video) { if (npf.trail) { for (const trail of npf.trail) { let videoTrail = trail.content.find(x => x.type === 'video') let videoEl = document.createElement('video') videoEl.src = videoTrail.media.url videoEl.setAttribute('controls', 'controls') videoEl.setAttribute('muted','muted') videoCont.append(videoEl) } } article.querySelector('.tumblr_video_container').remove() } } }