Created
July 26, 2023 10:09
-
-
Save khanh101/7bd9060e065011efc91d6df4145a5f07 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!doctype html> | |
<html lang="en-US"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1"> | |
<link rel="profile" href="https://gmpg.org/xfn/11"> | |
<link rel="preconnect" href="https://www.googletagmanager.com/" crossorigin /> | |
<link rel='dns-prefetch' href='https://www.googletagmanager.com/' /> | |
<link rel="preconnect" href="https://cdn.pimylifeup.com/" crossorigin /> | |
<link rel="dns-prefetch" href="https://cdn.pimylifeup.com/" /> | |
<link rel="preconnect" href="https://mail.pimylifeup.com/" crossorigin /> | |
<link rel="dns-prefetch" href="https://mail.pimylifeup.com/" /> | |
<link rel="preconnect" href="https://app.slickstream.com/" crossorigin /> | |
<link rel="dns-prefetch" href="https://app.slickstream.com/" /> | |
<link rel="preconnect" href="https://c.slickstream.com/" crossorigin /> | |
<link rel="dns-prefetch" href="https://c.slickstream.com/" /> | |
<link rel="preconnect" href="https://stats.wp.com/" crossorigin /> | |
<link rel="dns-prefetch" href="https://stats.wp.com/" /> | |
<script>!function(){"use strict";var t=window.location.search.substring(1).split("&");const e=t=>t.replace(/\s/g,""),n=t=>new Promise(e=>{if(!("msCrypto"in window)&&"https:"===location.protocol&&"crypto"in window&&"TextEncoder"in window){const n=(new TextEncoder).encode(t);crypto.subtle.digest("SHA-256",n).then(t=>{const n=Array.from(new Uint8Array(t)).map(t=>("00"+t.toString(16)).slice(-2)).join("");e(n)})}else e("")});for(var o=0;o<t.length;o++){var i="adt_ei",r=t[o];if(0===r.indexOf(i)){var s=r.split(i+"=")[1];if((t=>{const e=t.match(/((?=([a-zA-Z0-9._!#$%+^&*()[\]<>-]+))\2@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);return e?e[0]:""})(e(s.toLowerCase()))){n(s).then(e=>{e.length&&(localStorage.setItem(i,e),t.splice(o,1),history.replaceState(null,"","?"+t.join("&")))});break}}}}(); | |
</script><meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> | |
<style data-no-optimize="1" data-cfasync="false"> | |
.adthrive-ad { | |
margin-top: 10px; | |
margin-bottom: 10px; | |
text-align: center; | |
overflow-x: visible; | |
clear: both; | |
line-height: 0; | |
} | |
.adthrive-content { | |
width: 100%; | |
} | |
.adthrive-device-phone .player-container.player-minimize .player-position { | |
padding: 0px !important; | |
} | |
.adthrive-player-position.adthrive-collapse-mobile{ | |
transition: all .2s; | |
right:2%; | |
top: 0; | |
} | |
.adthrive-device-phone h3.adthrive-player-title{ | |
font-size:16px !important; | |
} | |
.adthrive-device-phone .adthrive-player-close, .adthrive-device-tablet .adthrive-player-close { | |
font-weight: bold; | |
font-size: 14px; | |
height: 26px; | |
top: 172px; | |
border: 1px solid; | |
border-radius: 15px; | |
background-color:#fff; | |
} | |
.adthrive-collapse-mobile-background { | |
max-height: 163px!important; | |
} | |
/* Top Center Dark Background */ | |
.adthrive-collapse-mobile-background { | |
background-color: #191919!important; | |
} | |
.adthrive-top-collapse-close > svg > * { | |
stroke: black !important; | |
font-family: sans-serif; | |
} | |
/* END top center Dark background */</style> | |
<script data-no-optimize="1" data-cfasync="false"> | |
window.adthriveCLS = { | |
enabledLocations: ['Content', 'Recipe'], | |
injectedSlots: [], | |
injectedFromPlugin: true, | |
branch: 'df1206d',bucket: 'prod', }; | |
window.adthriveCLS.siteAds = {"siteId":"5c49e4afdf7d2523f3865216","siteName":"Pi My Life Up","betaTester":true,"targeting":[{"value":"5c49e4afdf7d2523f3865216","key":"siteId"},{"value":"6233884d9fe2e87088381dd7","key":"organizationId"},{"value":"Pi My Life Up","key":"siteName"},{"value":"AdThrive Edge","key":"service"},{"value":"on","key":"bidding"},{"value":["Tech"],"key":"verticals"}],"breakpoints":{"tablet":768,"desktop":1024},"adUnits":[{"sequence":null,"targeting":[{"value":["Header"],"key":"location"}],"devices":["desktop","tablet"],"name":"Header","sticky":false,"location":"Header","dynamic":{"pageSelector":"","spacing":0,"max":1,"lazy":false,"lazyMax":null,"elementSelector":"#main-content","skip":0,"classNames":[],"position":"afterbegin","every":1,"enabled":true},"adSizes":[[728,90],[320,50],[468,60],[970,90],[1,1],[320,100],[970,250],[300,50],[728,250]],"priority":399,"autosize":true},{"sequence":1,"targeting":[{"value":["Sidebar"],"key":"location"}],"devices":["desktop"],"name":"Sidebar_1","sticky":false,"location":"Sidebar","dynamic":{"pageSelector":"","spacing":0,"max":1,"lazy":false,"lazyMax":null,"elementSelector":"#sidebar","skip":0,"classNames":[],"position":"afterbegin","every":1,"enabled":true},"adSizes":[[160,600],[336,280],[320,50],[300,600],[250,250],[1,1],[320,100],[300,1050],[300,50],[300,420],[300,250]],"priority":299,"autosize":true},{"sequence":9,"targeting":[{"value":["Sidebar"],"key":"location"},{"value":true,"key":"sticky"}],"devices":["desktop"],"name":"Sidebar_9","sticky":true,"location":"Sidebar","dynamic":{"pageSelector":"","spacing":0,"max":1,"lazy":false,"lazyMax":null,"elementSelector":"#sidebar","skip":0,"classNames":[],"position":"beforeend","every":1,"enabled":true},"stickyOverlapSelector":"#footer-bottom, .site-footer","adSizes":[[160,600],[336,280],[320,50],[300,600],[250,250],[1,1],[320,100],[300,1050],[300,50],[300,420],[300,250]],"priority":291,"autosize":true},{"sequence":null,"targeting":[{"value":["Content"],"key":"location"}],"devices":["desktop","tablet","phone"],"name":"Content","sticky":false,"location":"Content","dynamic":{"pageSelector":"body.single","spacing":1,"max":9,"lazy":true,"lazyMax":90,"elementSelector":".entry-content > *","skip":5,"classNames":[],"position":"afterend","every":1,"enabled":true},"adSizes":[[728,90],[336,280],[320,50],[468,60],[970,90],[250,250],[1,1],[320,100],[970,250],[1,2],[300,50],[300,300],[552,334],[728,250],[300,250]],"priority":199,"autosize":true},{"sequence":null,"targeting":[{"value":["Content"],"key":"location"}],"devices":["desktop","phone","tablet"],"name":"Content","sticky":false,"location":"Content","dynamic":{"pageSelector":"body.home:not(.adthrive-device-desktop), body.archive, body.category, body.search","spacing":0,"max":2,"lazy":false,"lazyMax":null,"elementSelector":"article.post","skip":1,"classNames":[],"position":"afterend","every":4,"enabled":true},"adSizes":[[728,90],[336,280],[320,50],[468,60],[970,90],[250,250],[1,1],[320,100],[970,250],[1,2],[300,50],[300,300],[552,334],[728,250],[300,250]],"priority":199,"autosize":true},{"sequence":null,"targeting":[{"value":["Footer"],"key":"location"},{"value":true,"key":"sticky"}],"devices":["tablet","phone","desktop"],"name":"Footer","sticky":true,"location":"Footer","dynamic":{"pageSelector":"","spacing":0,"max":1,"lazy":false,"lazyMax":null,"elementSelector":"body","skip":0,"classNames":[],"position":"beforeend","every":1,"enabled":true},"adSizes":[[320,50],[320,100],[728,90],[970,90],[468,60],[1,1],[300,50]],"priority":-1,"autosize":true},{"sequence":null,"targeting":[{"value":["Below Post"],"key":"location"}],"devices":["phone","tablet","desktop"],"name":"Below_Post","sticky":false,"location":"Below Post","dynamic":{"pageSelector":"body.single","spacing":0.7,"max":0,"lazy":true,"lazyMax":99,"elementSelector":".entry-content, #comments .comment-body","skip":0,"classNames":[],"position":"beforeend","every":4,"enabled":true},"adSizes":[[728,90],[336,280],[320,50],[468,60],[250,250],[1,1],[320,100],[300,250],[970,250],[728,250]],"priority":99,"autosize":true}],"adDensityLayout":{"mobile":{"adDensity":0.28,"onePerViewport":false},"pageOverrides":[{"mobile":{"adDensity":0.3,"onePerViewport":false},"pageSelector":"body.home:not(.adthrive-device-desktop), body.archive, body.category, body.search","desktop":{"adDensity":0.3,"onePerViewport":false}}],"desktop":{"adDensity":0.28,"onePerViewport":false}},"adDensityEnabled":true,"siteExperiments":[],"adTypes":{"nativeDesktopContent":true,"outstreamDesktop":true,"nativeBelowPostDesktop":true,"miniscroller":true,"animatedFooter":true,"largeFormatsMobile":true,"nativeMobileContent":true,"inRecipeRecommendationMobile":true,"nativeMobileRecipe":true,"expandableFooter":true,"nativeDesktopSidebar":true,"interscroller":true,"nativeDesktopRecipe":true,"outstreamMobile":true,"nativeHeaderDesktop":true,"nativeHeaderMobile":true,"nativeBelowPostMobile":true,"largeFormatsDesktop":true,"inRecipeRecommendationDesktop":true},"adOptions":{"theTradeDesk":true,"rtbhouse":true,"verizon":true,"undertone":false,"concert":false,"footerCloseButton":true,"teads":true,"pmp":true,"thirtyThreeAcross":true,"sharethrough":true,"removeVideoTitleWrapper":true,"pubMatic":true,"roundel":true,"infiniteScroll":false,"yahoossp":true,"improvedigital":true,"spa":false,"stickyContainerConfig":{"recipe":{"minHeight":null,"enabled":false},"blockedSelectors":[],"stickyHeaderSelectors":[],"content":{"minHeight":400,"enabled":true}},"sonobi":true,"yieldmo":true,"footerSelector":"","amazonUAM":true,"gamMCMEnabled":true,"gamMCMChildNetworkCode":"22523461534","stickyContainerAds":false,"rubiconMediaMath":true,"rubicon":true,"conversant":true,"resetdigital":true,"openx":true,"mobileHeaderHeight":1,"unruly":true,"mediaGrid":true,"bRealTime":false,"gumgum":true,"comscoreFooter":true,"desktopInterstitial":false,"footerCloseButtonDesktop":true,"isAutoOptimized":false,"comscoreTAL":true,"brightroll":true,"targetaff":false,"advancePlaylistOptions":{"playlistPlayer":{"enabled":true},"relatedPlayer":{"enabled":true,"applyToFirst":true}},"kargo":true,"liveRampATS":true,"footerCloseButtonMobile":true,"interstitialBlockedPageSelectors":"","allowSmallerAdSizes":true,"comscore":"General","mobileInterstitial":false,"tripleLift":true,"sensitiveCategories":["alc","ast","cbd","conl","cosm","dat","dlu","drg","gamc","gamv","pol","tob","wtl"],"liveRamp":true,"adthriveEmailIdentity":true,"criteo":true,"nativo":true,"infiniteScrollOptions":{"selector":"","heightThreshold":0},"dynamicContentSlotLazyLoading":true,"clsOptimizedAds":false,"colossus":true,"verticals":["Tech"],"inImage":false,"advancePlaylist":true,"delayLoading":false,"inImageZone":null,"appNexus":true,"liveRampId":"","infiniteScrollRefresh":false,"indexExchange":true},"videoPlayers":{"contextual":{"autoplayCollapsibleEnabled":true,"overrideEmbedLocation":false,"defaultPlayerType":"static"},"videoEmbed":"wordpress","footerSelector":"","contentSpecificPlaylists":[],"players":[{"devices":["desktop","mobile"],"description":"","id":4060973,"title":"Stationary related player - desktop and mobile","type":"stationaryRelated","enabled":true,"playerId":"oLyKMNEe"},{"playlistId":"","pageSelector":"body.single","devices":["desktop"],"description":"","elementSelector":".entry-content > *","skip":4,"id":4060974,"position":"afterend","title":"","type":"stickyRelated","enabled":true,"playerId":"oLyKMNEe"},{"playlistId":"","pageSelector":"body.single","devices":["mobile"],"mobileLocation":"top-center","description":"","skip":4,"title":"","type":"stickyRelated","enabled":true,"elementSelector":".entry-content > *","id":4060975,"position":"afterend","saveVideoCloseState":false,"shuffle":false,"mobileHeaderSelector":null,"playerId":"oLyKMNEe"},{"playlistId":"Yfa7tsA9","pageSelector":"body.single","devices":["desktop"],"description":"","skip":4,"title":"LATEST VIDEOS","type":"stickyPlaylist","enabled":true,"footerSelector":"","elementSelector":".entry-content > *","id":4060976,"position":"afterend","saveVideoCloseState":false,"shuffle":true,"playerId":"cYV9UQru"},{"playlistId":"Yfa7tsA9","pageSelector":"body.single","devices":["mobile"],"mobileLocation":"top-center","description":"","skip":2,"title":"LATEST VIDEOS","type":"stickyPlaylist","enabled":true,"footerSelector":"","elementSelector":".entry-content > *","id":4060977,"position":"afterend","saveVideoCloseState":false,"shuffle":true,"mobileHeaderSelector":null,"playerId":"cYV9UQru"}],"partners":{"theTradeDesk":true,"unruly":true,"mediaGrid":true,"undertone":false,"gumgum":true,"pmp":true,"kargo":true,"thirtyThreeAcross":true,"stickyOutstream":{"desktop":{"enabled":true},"blockedPageSelectors":"","mobileLocation":"","allowOnHomepage":false,"mobile":{"enabled":true},"saveVideoCloseState":false,"mobileHeaderSelector":"","allowForPageWithStickyPlayer":{"enabled":true}},"sharethrough":true,"tripleLift":true,"pubMatic":true,"roundel":true,"yahoossp":true,"criteo":true,"improvedigital":true,"colossus":true,"telaria":true,"yieldmo":true,"amazonUAM":true,"rubicon":true,"appNexus":true,"resetdigital":true,"openx":true,"spotx":true,"indexExchange":true}}};</script> | |
<script data-no-optimize="1" data-cfasync="false"> | |
(function(w, d) { | |
w.adthrive = w.adthrive || {}; | |
w.adthrive.cmd = w.adthrive.cmd || []; | |
w.adthrive.plugin = 'adthrive-ads-3.4.1'; | |
w.adthrive.host = 'ads.adthrive.com'; | |
w.adthrive.integration = 'plugin'; | |
var commitParam = (w.adthriveCLS && w.adthriveCLS.bucket !== 'prod' && w.adthriveCLS.branch) ? '&commit=' + w.adthriveCLS.branch : ''; | |
var s = d.createElement('script'); | |
s.async = true; | |
s.referrerpolicy='no-referrer-when-downgrade'; | |
s.src = 'https://' + w.adthrive.host + '/sites/5c49e4afdf7d2523f3865216/ads.min.js?referrer=' + w.encodeURIComponent(w.location.href) + commitParam + '&cb=' + (Math.floor(Math.random() * 100) + 1) + ''; | |
var n = d.getElementsByTagName('script')[0]; | |
n.parentNode.insertBefore(s, n); | |
})(window, document); | |
</script> | |
<title>Installing Jellyfin to the Raspberry Pi - Pi My Life Up</title> | |
<meta name="description" content="This Raspberry Pi project will show you how to install the Jellyfin media server. It is an open-source and free alternative to Plex and Emby." /> | |
<link rel="canonical" href="https://pimylifeup.com/raspberry-pi-jellyfin/" /> | |
<meta property="og:locale" content="en_US" /> | |
<meta property="og:type" content="article" /> | |
<meta property="og:title" content="Installing Jellyfin to the Raspberry Pi" /> | |
<meta property="og:description" content="A free and open-source media server" /> | |
<meta property="og:url" content="https://pimylifeup.com/raspberry-pi-jellyfin/" /> | |
<meta property="og:site_name" content="Pi My Life Up" /> | |
<meta property="article:publisher" content="https://www.facebook.com/pimylifeup" /> | |
<meta property="article:published_time" content="2021-02-15T11:43:28+00:00" /> | |
<meta property="article:modified_time" content="2022-07-18T10:12:21+00:00" /> | |
<meta property="og:image" content="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail-NoWM.jpg" /> | |
<meta property="og:image:width" content="728" /> | |
<meta property="og:image:height" content="400" /> | |
<meta property="og:image:type" content="image/jpeg" /> | |
<meta name="author" content="Emmet" /> | |
<meta name="twitter:card" content="summary_large_image" /> | |
<meta name="twitter:title" content="Installing Jellyfin to the Raspberry Pi" /> | |
<meta name="twitter:description" content="A free and open-source media server" /> | |
<meta name="twitter:creator" content="@pimylifeup" /> | |
<meta name="twitter:site" content="@pimylifeup" /> | |
<meta name="twitter:label1" content="Written by" /> | |
<meta name="twitter:data1" content="Emmet" /> | |
<meta name="twitter:label2" content="Est. reading time" /> | |
<meta name="twitter:data2" content="15 minutes" /> | |
<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"Article","@id":"https://pimylifeup.com/raspberry-pi-jellyfin/#article","isPartOf":{"@id":"https://pimylifeup.com/raspberry-pi-jellyfin/"},"author":{"name":"Emmet","@id":"https://pimylifeup.com/#/schema/person/2209b69d107d64425e1fce1014596f3d"},"headline":"Installing Jellyfin to the Raspberry Pi","datePublished":"2021-02-15T11:43:28+00:00","dateModified":"2022-07-18T10:12:21+00:00","mainEntityOfPage":{"@id":"https://pimylifeup.com/raspberry-pi-jellyfin/"},"wordCount":2392,"commentCount":10,"publisher":{"@id":"https://pimylifeup.com/#organization"},"image":{"@id":"https://pimylifeup.com/raspberry-pi-jellyfin/#primaryimage"},"thumbnailUrl":"https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail-NoWM.jpg","articleSection":["Beginner","Media"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https://pimylifeup.com/raspberry-pi-jellyfin/#respond"]}]},{"@type":"WebPage","@id":"https://pimylifeup.com/raspberry-pi-jellyfin/","url":"https://pimylifeup.com/raspberry-pi-jellyfin/","name":"Installing Jellyfin to the Raspberry Pi - Pi My Life Up","isPartOf":{"@id":"https://pimylifeup.com/#website"},"primaryImageOfPage":{"@id":"https://pimylifeup.com/raspberry-pi-jellyfin/#primaryimage"},"image":{"@id":"https://pimylifeup.com/raspberry-pi-jellyfin/#primaryimage"},"thumbnailUrl":"https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail-NoWM.jpg","datePublished":"2021-02-15T11:43:28+00:00","dateModified":"2022-07-18T10:12:21+00:00","description":"This Raspberry Pi project will show you how to install the Jellyfin media server. It is an open-source and free alternative to Plex and Emby.","breadcrumb":{"@id":"https://pimylifeup.com/raspberry-pi-jellyfin/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://pimylifeup.com/raspberry-pi-jellyfin/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://pimylifeup.com/raspberry-pi-jellyfin/#primaryimage","url":"https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail-NoWM.jpg","contentUrl":"https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail-NoWM.jpg","width":728,"height":400,"caption":"Jellyfin on the Raspberry Pi"},{"@type":"BreadcrumbList","@id":"https://pimylifeup.com/raspberry-pi-jellyfin/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://pimylifeup.com/"},{"@type":"ListItem","position":2,"name":"Installing Jellyfin to the Raspberry Pi"}]},{"@type":"WebSite","@id":"https://pimylifeup.com/#website","url":"https://pimylifeup.com/","name":"Pi My Life Up","description":"","publisher":{"@id":"https://pimylifeup.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://pimylifeup.com/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://pimylifeup.com/#organization","name":"Pi My Life Up","url":"https://pimylifeup.com/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://pimylifeup.com/#/schema/logo/image/","url":"https://pimylifeup.com/wp-content/uploads/2017/11/Asset-3-large.png","contentUrl":"https://pimylifeup.com/wp-content/uploads/2017/11/Asset-3-large.png","width":1800,"height":1800,"caption":"Pi My Life Up"},"image":{"@id":"https://pimylifeup.com/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/pimylifeup","https://twitter.com/pimylifeup","https://www.instagram.com/pimylifeup/","https://www.pinterest.com/pimylifeup","https://www.youtube.com/channel/UC7NMrNa-RgcVeD__l_uPJTg"]},{"@type":"Person","@id":"https://pimylifeup.com/#/schema/person/2209b69d107d64425e1fce1014596f3d","name":"Emmet","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://pimylifeup.com/#/schema/person/image/","url":"https://secure.gravatar.com/avatar/871cde89f7fc504583582089ff8b3648?s=96&d=identicon&r=g","contentUrl":"https://secure.gravatar.com/avatar/871cde89f7fc504583582089ff8b3648?s=96&d=identicon&r=g","caption":"Emmet"}}]}</script> | |
<link rel='dns-prefetch' href='//stats.wp.com' /> | |
<link rel="alternate" type="application/rss+xml" title="Pi My Life Up » Feed" href="https://pimylifeup.com/feed/" /> | |
<link rel='stylesheet' id='lbb-theme-style-css' href='https://pimylifeup.com/wp-content/themes/lbb-theme-pimylifeup/style.min.css?ver=1.3.29' media='all' /> | |
<script nomodule src="https://pimylifeup.com/wp-content/themes/lbb-theme-pimylifeup/js/polyfill.min.js?ver=1.3.29"></script><script id='wp-polyfill-dependency-error-js-after'> | |
console.error( "Payment gateway with handle 'wc-stripe-blocks-integration' has been deactivated in Cart and Checkout blocks because its dependency 'wp-polyfill' is not registered. Read the docs about registering assets for payment methods: https://github.com/woocommerce/woocommerce-blocks/blob/060f63c04f0f34f645200b5d4da9212125c49177/docs/third-party-developers/extensibility/checkout-payment-methods/payment-method-integration.md#registering-assets" ); | |
</script> | |
<!-- [slickstream] Page Generated at: 7/21/2023, 10:34:38 PM UTC --> | |
<!-- [slickstream] Fetching page boot data from server --> | |
<!-- [slickstream] Storing page boot data in transient cache: slick_page_boot_6015f52d089bdb666f8c6a7321884e00 --> | |
<!-- [slickstream] Page Boot Data: --> | |
<script class='slickstream-script'> | |
(function() { | |
"slickstream"; | |
const win = window; | |
win.$slickBoot = win.$slickBoot || {}; | |
win.$slickBoot.d = {"searchHooks":["#toggle-search-button",".searchform"],"fabs":{"showSearch":true,"showFavorite":false,"favoriteIcon":"heart","minLinkedItemHeight":92,"buttonBottom":16,"buttonZIndex":100,"siteColor":"#db3438"},"placeholders":[{"selector":"#email_signup","position":"after selector"},{"selector":"h2.lbb-section-break","position":"before selector"}],"bootTriggerTimeout":250,"filmstrip":{"injection":"auto-inject","includeSearch":false,"selector":".site-content","position":"first child of selector","mode":"og-card","padding":"0 0 16px 0","imageContainment":"cover","minHeight":82,"cssIfInjected":".slick-film-strip { padding: 0 0 16px 0; }"},"inlineSearch":[{"id":"postDCM_below-post","injection":"auto-inject","selector":"#email_signup","position":"after selector","titleHtml":"<span class=\"ss-widget-title\">Explore More<\/span>"},{"id":"postDCM_in-content","injection":"auto-inject","selector":"h2.lbb-section-break","position":"before selector"}],"bestBy":1689979778636,"epoch":1679592377097,"siteCode":"SSVS1M8E","services":{"engagementCacheableApiDomain":"https:\/\/c08f.app.slickstream.com\/","engagementNonCacheableApiDomain":"https:\/\/c08b.app.slickstream.com\/","engagementResourcesDomain":"https:\/\/c08f.app.slickstream.com\/","storyCacheableApiDomain":"https:\/\/stories.slickstream.com\/","storyNonCacheableApiDomain":"https:\/\/stories.slickstream.com\/","storyResourcesDomain":"https:\/\/stories.slickstream.com\/","websocketUri":"wss:\/\/c08b-wss.app.slickstream.com\/socket?site=SSVS1M8E"},"bootUrl":"https:\/\/c.slickstream.com\/app\/2.13.41\/boot-loader.js","appUrl":"https:\/\/c.slickstream.com\/app\/2.13.41\/app.js","adminUrl":"","allowList":["pimylifeup.com"],"abTests":[{"_id":"64ac2a9527d562086228455e","id":"ac037d9e-9084-4fbe-b5cd-56859e56cc52","type":"feature-switches","feature":"heart-fluttering","fraction":95,"startDate":1689048000000,"endDate":1690430400000,"includeSites":null,"excludeSites":["1UKE2G1S","MY8VYZB5","6ZXSY5UT","TX0RQ5ZZ","1FMA936N","CZL2W79Z","VUWHN67V","2M100P02","9ED5GMCM","HC3E36C0","ASFHPXBJ","6RXV2XQ4","ZCCPQJ62","89B7Z58W","TUKDXTE5","LHA4XEV3","P49MPDD8","A5PEEJV7","UELT7CLV"],"addedAt":1689004693010,"updatedAt":1689004693010,"devices":["desktop","phone"]}],"v2":{"phone":{"searchHooks":["#toggle-search-button",".searchform"],"fabs":{"showSearch":true,"showFavorite":false,"favoriteIcon":"heart","minLinkedItemHeight":52,"buttonBottom":16,"buttonZIndex":100,"siteColor":"#db3438"},"placeholders":[{"selector":"#email_signup","position":"after selector"},{"selector":"h2.lbb-section-break","position":"before selector"}],"bootTriggerTimeout":250,"filmstrip":{"injection":"auto-inject","includeSearch":false,"selector":".site-content","position":"first child of selector","mode":"og-card","padding":"0 0 16px 0","imageContainment":"cover","minHeight":82,"cssIfInjected":".slick-film-strip { padding: 0 0 16px 0; }"},"inlineSearch":[{"id":"postDCM_below-post","injection":"auto-inject","selector":"#email_signup","position":"after selector","titleHtml":"<span class=\"ss-widget-title\">Explore More<\/span>"},{"id":"postDCM_in-content","injection":"auto-inject","selector":"h2.lbb-section-break","position":"before selector"}],"bestBy":1689979778636,"epoch":1679592377097,"siteCode":"SSVS1M8E","services":{"engagementCacheableApiDomain":"https:\/\/c08f.app.slickstream.com\/","engagementNonCacheableApiDomain":"https:\/\/c08b.app.slickstream.com\/","engagementResourcesDomain":"https:\/\/c08f.app.slickstream.com\/","storyCacheableApiDomain":"https:\/\/stories.slickstream.com\/","storyNonCacheableApiDomain":"https:\/\/stories.slickstream.com\/","storyResourcesDomain":"https:\/\/stories.slickstream.com\/","websocketUri":"wss:\/\/c08b-wss.app.slickstream.com\/socket?site=SSVS1M8E"},"bootUrl":"https:\/\/c.slickstream.com\/app\/2.13.41\/boot-loader.js","appUrl":"https:\/\/c.slickstream.com\/app\/2.13.41\/app.js","adminUrl":"","allowList":["pimylifeup.com"],"abTests":[{"_id":"64ac2a9527d562086228455e","id":"ac037d9e-9084-4fbe-b5cd-56859e56cc52","type":"feature-switches","feature":"heart-fluttering","fraction":95,"startDate":1689048000000,"endDate":1690430400000,"includeSites":null,"excludeSites":["1UKE2G1S","MY8VYZB5","6ZXSY5UT","TX0RQ5ZZ","1FMA936N","CZL2W79Z","VUWHN67V","2M100P02","9ED5GMCM","HC3E36C0","ASFHPXBJ","6RXV2XQ4","ZCCPQJ62","89B7Z58W","TUKDXTE5","LHA4XEV3","P49MPDD8","A5PEEJV7","UELT7CLV"],"addedAt":1689004693010,"updatedAt":1689004693010,"devices":["desktop","phone"]}]},"tablet":{"searchHooks":["#toggle-search-button",".searchform"],"fabs":{"showSearch":true,"showFavorite":false,"favoriteIcon":"heart","minLinkedItemHeight":52,"buttonBottom":16,"buttonZIndex":100,"siteColor":"#db3438"},"placeholders":[{"selector":"#email_signup","position":"after selector"},{"selector":"h2.lbb-section-break","position":"before selector"}],"bootTriggerTimeout":250,"filmstrip":{"injection":"auto-inject","includeSearch":false,"selector":".site-content","position":"first child of selector","mode":"og-card","padding":"0 0 16px 0","imageContainment":"cover","minHeight":82,"cssIfInjected":".slick-film-strip { padding: 0 0 16px 0; }"},"inlineSearch":[{"id":"postDCM_below-post","injection":"auto-inject","selector":"#email_signup","position":"after selector","titleHtml":"<span class=\"ss-widget-title\">Explore More<\/span>"},{"id":"postDCM_in-content","injection":"auto-inject","selector":"h2.lbb-section-break","position":"before selector"}],"bestBy":1689979778636,"epoch":1679592377097,"siteCode":"SSVS1M8E","services":{"engagementCacheableApiDomain":"https:\/\/c08f.app.slickstream.com\/","engagementNonCacheableApiDomain":"https:\/\/c08b.app.slickstream.com\/","engagementResourcesDomain":"https:\/\/c08f.app.slickstream.com\/","storyCacheableApiDomain":"https:\/\/stories.slickstream.com\/","storyNonCacheableApiDomain":"https:\/\/stories.slickstream.com\/","storyResourcesDomain":"https:\/\/stories.slickstream.com\/","websocketUri":"wss:\/\/c08b-wss.app.slickstream.com\/socket?site=SSVS1M8E"},"bootUrl":"https:\/\/c.slickstream.com\/app\/2.13.41\/boot-loader.js","appUrl":"https:\/\/c.slickstream.com\/app\/2.13.41\/app.js","adminUrl":"","allowList":["pimylifeup.com"],"abTests":[{"_id":"64ac2a9527d562086228455e","id":"ac037d9e-9084-4fbe-b5cd-56859e56cc52","type":"feature-switches","feature":"heart-fluttering","fraction":95,"startDate":1689048000000,"endDate":1690430400000,"includeSites":null,"excludeSites":["1UKE2G1S","MY8VYZB5","6ZXSY5UT","TX0RQ5ZZ","1FMA936N","CZL2W79Z","VUWHN67V","2M100P02","9ED5GMCM","HC3E36C0","ASFHPXBJ","6RXV2XQ4","ZCCPQJ62","89B7Z58W","TUKDXTE5","LHA4XEV3","P49MPDD8","A5PEEJV7","UELT7CLV"],"addedAt":1689004693010,"updatedAt":1689004693010,"devices":["desktop","phone"]}]},"desktop":{"searchHooks":["#toggle-search-button",".searchform"],"fabs":{"showSearch":true,"showFavorite":false,"favoriteIcon":"heart","minLinkedItemHeight":92,"buttonBottom":16,"buttonZIndex":100,"siteColor":"#db3438"},"placeholders":[{"selector":"#email_signup","position":"after selector"},{"selector":"h2.lbb-section-break","position":"before selector"}],"bootTriggerTimeout":250,"filmstrip":{"injection":"auto-inject","includeSearch":false,"selector":".site-content","position":"first child of selector","mode":"og-card","padding":"0 0 16px 0","imageContainment":"cover","minHeight":82,"cssIfInjected":".slick-film-strip { padding: 0 0 16px 0; }"},"inlineSearch":[{"id":"postDCM_below-post","injection":"auto-inject","selector":"#email_signup","position":"after selector","titleHtml":"<span class=\"ss-widget-title\">Explore More<\/span>"},{"id":"postDCM_in-content","injection":"auto-inject","selector":"h2.lbb-section-break","position":"before selector"}],"bestBy":1689979778636,"epoch":1679592377097,"siteCode":"SSVS1M8E","services":{"engagementCacheableApiDomain":"https:\/\/c08f.app.slickstream.com\/","engagementNonCacheableApiDomain":"https:\/\/c08b.app.slickstream.com\/","engagementResourcesDomain":"https:\/\/c08f.app.slickstream.com\/","storyCacheableApiDomain":"https:\/\/stories.slickstream.com\/","storyNonCacheableApiDomain":"https:\/\/stories.slickstream.com\/","storyResourcesDomain":"https:\/\/stories.slickstream.com\/","websocketUri":"wss:\/\/c08b-wss.app.slickstream.com\/socket?site=SSVS1M8E"},"bootUrl":"https:\/\/c.slickstream.com\/app\/2.13.41\/boot-loader.js","appUrl":"https:\/\/c.slickstream.com\/app\/2.13.41\/app.js","adminUrl":"","allowList":["pimylifeup.com"],"abTests":[{"_id":"64ac2a9527d562086228455e","id":"ac037d9e-9084-4fbe-b5cd-56859e56cc52","type":"feature-switches","feature":"heart-fluttering","fraction":95,"startDate":1689048000000,"endDate":1690430400000,"includeSites":null,"excludeSites":["1UKE2G1S","MY8VYZB5","6ZXSY5UT","TX0RQ5ZZ","1FMA936N","CZL2W79Z","VUWHN67V","2M100P02","9ED5GMCM","HC3E36C0","ASFHPXBJ","6RXV2XQ4","ZCCPQJ62","89B7Z58W","TUKDXTE5","LHA4XEV3","P49MPDD8","A5PEEJV7","UELT7CLV"],"addedAt":1689004693010,"updatedAt":1689004693010,"devices":["desktop","phone"]}]},"unknown":{"searchHooks":["#toggle-search-button",".searchform"],"fabs":{"showSearch":true,"showFavorite":false,"favoriteIcon":"heart","minLinkedItemHeight":92,"buttonBottom":16,"buttonZIndex":100,"siteColor":"#db3438"},"placeholders":[{"selector":"#email_signup","position":"after selector"},{"selector":"h2.lbb-section-break","position":"before selector"}],"bootTriggerTimeout":250,"filmstrip":{"injection":"auto-inject","includeSearch":false,"selector":".site-content","position":"first child of selector","mode":"og-card","padding":"0 0 16px 0","imageContainment":"cover","minHeight":82,"cssIfInjected":".slick-film-strip { padding: 0 0 16px 0; }"},"inlineSearch":[{"id":"postDCM_below-post","injection":"auto-inject","selector":"#email_signup","position":"after selector","titleHtml":"<span class=\"ss-widget-title\">Explore More<\/span>"},{"id":"postDCM_in-content","injection":"auto-inject","selector":"h2.lbb-section-break","position":"before selector"}],"bestBy":1689979778636,"epoch":1679592377097,"siteCode":"SSVS1M8E","services":{"engagementCacheableApiDomain":"https:\/\/c08f.app.slickstream.com\/","engagementNonCacheableApiDomain":"https:\/\/c08b.app.slickstream.com\/","engagementResourcesDomain":"https:\/\/c08f.app.slickstream.com\/","storyCacheableApiDomain":"https:\/\/stories.slickstream.com\/","storyNonCacheableApiDomain":"https:\/\/stories.slickstream.com\/","storyResourcesDomain":"https:\/\/stories.slickstream.com\/","websocketUri":"wss:\/\/c08b-wss.app.slickstream.com\/socket?site=SSVS1M8E"},"bootUrl":"https:\/\/c.slickstream.com\/app\/2.13.41\/boot-loader.js","appUrl":"https:\/\/c.slickstream.com\/app\/2.13.41\/app.js","adminUrl":"","allowList":["pimylifeup.com"],"abTests":[{"_id":"64ac2a9527d562086228455e","id":"ac037d9e-9084-4fbe-b5cd-56859e56cc52","type":"feature-switches","feature":"heart-fluttering","fraction":95,"startDate":1689048000000,"endDate":1690430400000,"includeSites":null,"excludeSites":["1UKE2G1S","MY8VYZB5","6ZXSY5UT","TX0RQ5ZZ","1FMA936N","CZL2W79Z","VUWHN67V","2M100P02","9ED5GMCM","HC3E36C0","ASFHPXBJ","6RXV2XQ4","ZCCPQJ62","89B7Z58W","TUKDXTE5","LHA4XEV3","P49MPDD8","A5PEEJV7","UELT7CLV"],"addedAt":1689004693010,"updatedAt":1689004693010,"devices":["desktop","phone"]}]}}}; | |
win.$slickBoot.s = 'plugin'; | |
win.$slickBoot._bd = performance.now(); | |
})(); | |
</script> | |
<!-- [slickstream] END Page Boot Data --> | |
<!-- [slickstream] CLS Insertion: --> | |
<script> | |
"use strict";(async(e,t)=>{const n="slickstream";const r=e?JSON.parse(e):null;const i=t?JSON.parse(t):null;if(r||i){const e=async()=>{if(document.body){if(r){o(r.selector,r.position||"after selector","slick-film-strip",r.minHeight||72,r.margin||r.marginLegacy||"10px auto")}if(i){i.forEach((e=>{if(e.selector){o(e.selector,e.position||"after selector","slick-inline-search-panel",e.minHeight||350,e.margin||e.marginLegacy||"50px 15px",e.id)}}))}return}window.requestAnimationFrame(e)};window.requestAnimationFrame(e)}const c=async(e,t)=>{const n=Date.now();while(true){const r=document.querySelector(e);if(r){return r}const i=Date.now();if(i-n>=t){throw new Error("Timeout")}await s(200)}};const s=async e=>new Promise((t=>{setTimeout(t,e)}));const o=async(e,t,r,i,s,o)=>{try{const n=await c(e,5e3);const a=o?document.querySelector(`.${r}[data-config="${o}"]`):document.querySelector(`.${r}`);if(n&&!a){const e=document.createElement("div");e.style.minHeight=i+"px";e.style.margin=s;e.classList.add(r);if(o){e.dataset.config=o}switch(t){case"after selector":n.insertAdjacentElement("afterend",e);break;case"before selector":n.insertAdjacentElement("beforebegin",e);break;case"first child of selector":n.insertAdjacentElement("afterbegin",e);break;case"last child of selector":n.insertAdjacentElement("beforeend",e);break}return e}}catch(t){console.log("plugin","error",n,`Failed to inject ${r} for selector ${e}`)}return false}}) | |
('{\"injection\":\"auto-inject\",\"includeSearch\":false,\"selector\":\".site-content\",\"position\":\"first child of selector\",\"mode\":\"og-card\",\"padding\":\"0 0 16px 0\",\"imageContainment\":\"cover\",\"minHeight\":82,\"cssIfInjected\":\".slick-film-strip { padding: 0 0 16px 0; }\"}','[{\"id\":\"postDCM_below-post\",\"injection\":\"auto-inject\",\"selector\":\"#email_signup\",\"position\":\"after selector\",\"titleHtml\":\"<span class=\\\"ss-widget-title\\\">Explore More<\\/span>\"},{\"id\":\"postDCM_in-content\",\"injection\":\"auto-inject\",\"selector\":\"h2.lbb-section-break\",\"position\":\"before selector\"}]'); | |
</script> | |
<!-- [slickstream] END CLS Insertion --> | |
<meta property="slick:wpversion" content="1.4.2" /> | |
<!-- [slickstream] Bootloader: --> | |
<script class='slickstream-script' > | |
'use strict'; | |
(async(e,t)=>{if(location.search.indexOf("no-slick")>=0){return}let o;const c=()=>performance.now();let a=window.$slickBoot=window.$slickBoot||{};a.rt=e;a._es=c();a.ev="2.0.1";a.l=async(e,t)=>{try{let a=0;if(!o&&"caches"in self){o=await caches.open("slickstream-code")}if(o){let n=await o.match(e);if(!n){a=c();await o.add(e);n=await o.match(e);if(n&&!n.ok){n=undefined;o.delete(e)}}if(n){const e=n.headers.get("x-slickstream-consent");return{t:a,d:t?await n.blob():await n.json(),c:e||"na"}}}}catch(e){console.log(e)}return{}};const n=e=>new Request(e,{cache:"no-store"});if(!a.d||a.d.bestBy<Date.now()){const o=n(`${e}/d/page-boot-data?site=${t}&url=${encodeURIComponent(location.href.split("#")[0])}`);let{t:s,d:i,c:d}=await a.l(o);if(i){if(i.bestBy<Date.now()){i=undefined}else if(s){a._bd=s;a.c=d}}if(!i){a._bd=c();const e=await fetch(o);const t=e.headers.get("x-slickstream-consent");a.c=t||"na";i=await e.json()}if(i){a.d=i;a.s="embed"}}if(a.d){let e=a.d.bootUrl;const{t:t,d:o}=await a.l(n(e),true);if(o){a.bo=e=URL.createObjectURL(o);if(t){a._bf=t}}else{a._bf=c()}const s=document.createElement("script");s.className="slickstream-script";s.src=e;document.head.appendChild(s)}else{console.log("[slickstream] Boot failed")}}) | |
("https://app.slickstream.com","SSVS1M8E"); | |
</script> | |
<!-- [slickstream] END Bootloader --> | |
<!-- [slickstream] Page Metadata: --> | |
<meta property="slick:wppostid" content="33463706" /> | |
<meta property="slick:featured_image" content="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail-NoWM.jpg" /> | |
<meta property="slick:group" content="post" /> | |
<meta property="slick:category" content="beginner:Beginner;projects:Projects" /> | |
<meta property="slick:category" content="media:Media;projects:Projects" /> | |
<script type="application/x-slickstream+json">{"@context":"https://slickstream.com","@graph":[{"@type":"Plugin","version":"1.4.2"},{"@type":"Site","name":"Pi My Life Up","url":"https://pimylifeup.com","description":"","atomUrl":"https://pimylifeup.com/feed/atom/","rtl":false},{"@type":"WebPage","@id":33463706,"isFront":false,"isHome":false,"isCategory":false,"isTag":false,"isSingular":true,"date":"2021-02-15T22:43:28+11:00","modified":"2022-07-18T20:12:21+10:00","title":"Installing Jellyfin to the Raspberry Pi","pageType":"post","postType":"post","featured_image":"https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail-NoWM.jpg","author":"Emmet","categories":[{"@id":6,"slug":"beginner","name":"Beginner","parents":[{"@type":"CategoryParent","@id":4,"slug":"projects","name":"Projects"}]},{"@id":42,"slug":"media","name":"Media","parents":[{"@type":"CategoryParent","@id":4,"slug":"projects","name":"Projects"}]}],"taxonomies":[]}]}</script> | |
<!-- [slickstream] END Page Metadata --> | |
<script class='slickstream-script'> | |
(function() { | |
const slickstreamRocketPluginScripts = document.querySelectorAll('script.slickstream-script[type=rocketlazyloadscript]'); | |
const slickstreamRocketExternalScripts = document.querySelectorAll('script[type=rocketlazyloadscript][src*="app.slickstream.com"]'); | |
if (slickstreamRocketPluginScripts.length > 0 || slickstreamRocketExternalScripts.length > 0) { | |
console.warn('[slickstream] WARNING: WP-Rocket is deferring one or more Slickstream scripts. This may cause undesirable behavior, such as increased CLS scores.'); | |
} | |
})(); | |
</script> <style>img#wpstats{display:none}</style> | |
<link rel="dns-prefetch" href="https://ads.adthrive.com/"><link rel="preconnect" href="https://ads.adthrive.com/"><link rel="preconnect" href="https://ads.adthrive.com/" crossorigin><link rel="icon" href="https://pimylifeup.com/wp-content/uploads/2021/02/cropped-pi-favicon-1-32x32.png" sizes="32x32" /> | |
<link rel="icon" href="https://pimylifeup.com/wp-content/uploads/2021/02/cropped-pi-favicon-1-192x192.png" sizes="192x192" /> | |
<link rel="apple-touch-icon" href="https://pimylifeup.com/wp-content/uploads/2021/02/cropped-pi-favicon-1-180x180.png" /> | |
<meta name="msapplication-TileImage" content="https://pimylifeup.com/wp-content/uploads/2021/02/cropped-pi-favicon-1-270x270.png" /> | |
<script data-no-optimize='1' data-cfasync='false' id='cls-disable-ads-df1206d'>'use strict';var cls_disable_ads=function(n){function h(a,b){var c="function"===typeof Symbol&&a[Symbol.iterator];if(!c)return a;a=c.call(a);var d,e=[];try{for(;(void 0===b||0<b--)&&!(d=a.next()).done;)e.push(d.value)}catch(l){var f={error:l}}finally{try{d&&!d.done&&(c=a["return"])&&c.call(a)}finally{if(f)throw f.error;}}return e}function k(a,b,c){if(c||2===arguments.length)for(var d=0,e=b.length,f;d<e;d++)!f&&d in b||(f||(f=Array.prototype.slice.call(b,0,d)),f[d]=b[d]);return a.concat(f||Array.prototype.slice.call(b))} | |
window.adthriveCLS.buildDate="2023-07-21";var z=new (function(){function a(){}a.prototype.info=function(b,c){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,k([console.info,b,c],h(d),!1))};a.prototype.warn=function(b,c){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,k([console.warn,b,c],h(d),!1))};a.prototype.error=function(b,c){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,k([console.error,b,c], | |
h(d),!1));this.sendErrorLogToCommandQueue.apply(this,k([b,c],h(d),!1))};a.prototype.event=function(b,c){for(var d,e=2;e<arguments.length;e++);"debug"===(null===(d=window.adthriveCLS)||void 0===d?void 0:d.bucket)&&this.info(b,c)};a.prototype.sendErrorLogToCommandQueue=function(b,c){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];window.adthrive=window.adthrive||{};window.adthrive.cmd=window.adthrive.cmd||[];window.adthrive.cmd.push(function(){void 0!==window.adthrive.logError&&"function"=== | |
typeof window.adthrive.logError&&window.adthrive.logError(b,c,d)}.bind(b,c,d))};a.prototype.call=function(b,c,d){for(var e=[],f=3;f<arguments.length;f++)e[f-3]=arguments[f];f=["%c".concat(c,"::").concat(d," ")];var l=["color: #999; font-weight: bold;"];0<e.length&&"string"===typeof e[0]&&f.push(e.shift());l.push.apply(l,k([],h(e),!1));try{Function.prototype.apply.call(b,console,k([f.join("")],h(l),!1))}catch(y){console.error(y)}};return a}()),g;(function(a){a.amznbid="amznbid";a.amzniid="amzniid"; | |
a.amznp="amznp";a.amznsz="amznsz"})(g||(g={}));var m;(function(a){a.ThirtyThreeAcross="33across";a.AppNexus="appnexus";a.Amazon="amazon";a.Colossus="colossus";a.ColossusServer="col_ss";a.Conversant="conversant";a.Concert="concert";a.Criteo="criteo";a.GumGum="gumgum";a.IndexExchange="ix";a.Kargo="kargo";a.KargoServer="krgo_ss";a.MediaGrid="grid";a.MediaGridVideo="gridvid";a.Nativo="nativo";a.OpenX="openx";a.OpenXServer="opnx_ss";a.Pubmatic="pubmatic";a.PubmaticServer="pubm_ss";a.ResetDigital="resetdigital"; | |
a.Roundel="roundel";a.Rtbhouse="rtbhouse";a.Rubicon="rubicon";a.RubiconServer="rubi_ss";a.Sharethrough="sharethrough";a.Spotx="spotx";a.Teads="teads";a.Triplelift="triplelift";a.TripleliftServer="tripl_ss";a.TTD="ttd";a.Undertone="undertone";a.UndertoneServer="under_ss";a.Unruly="unruly";a.YahooSSP="yahoossp";a.Verizon="verizon";a.Yieldmo="yieldmo"})(m||(m={}));var q;(function(a){a.Prebid="prebid";a.GAM="gam";a.Amazon="amazon";a.WebVitals="webvitals";a.Marmalade="marmalade";a.Floors="floors";a.CMP= | |
"cmp"})(q||(q={}));var r;(function(a){a.bidCycleNonlazy="bidCycleNonlazy";a.instream="instream";a.lazy="lazy";a.refresh="refresh";a.session="session";a.crossDomain="crossdomain";a.highSequence="highsequence";a.lazyBidPool="lazyBidPool";a.rubicon="rubicon"})(r||(r={}));var t;(function(a){a.bidCycleNonlazy="bc";a.instream="i";a.lazy="l";a.refresh="r";a.session="s";a.crossdomain="c";a.highsequence="hs";a.rubicon="rubi";a.lazyBidPool="lbp"})(t||(t={}));var u;(function(a){a.Desktop="desktop";a.Mobile= | |
"mobile"})(u||(u={}));var v;(function(a){a.Video_Collapse_Autoplay_SoundOff="Video_Collapse_Autoplay_SoundOff";a.Video_Individual_Autoplay_SOff="Video_Individual_Autoplay_SOff";a.Video_Coll_SOff_Smartphone="Video_Coll_SOff_Smartphone";a.Video_In_Post_ClicktoPlay_SoundOn="Video_In-Post_ClicktoPlay_SoundOn"})(v||(v={}));var w;(w||(w={})).None="none";var x;(function(a){a.AdDensity="addensity";a.AdLayout="adlayout";a.FooterCloseButton="footerclose";a.Interstitial="interstitial";a.RemoveVideoTitleWrapper= | |
"removevideotitlewrapper";a.StickyOutstream="stickyoutstream";a.StickyOutstreamOnStickyPlayer="sospp";a.VideoAdvancePlaylistRelatedPlayer="videoadvanceplaylistrp";a.MobileStickyPlayerPosition="mspp"})(x||(x={}));g=function(){function a(){this._timeOrigin=0}a.prototype.resetTimeOrigin=function(){this._timeOrigin=window.performance.now()};a.prototype.now=function(){try{return Math.round(window.performance.now()-this._timeOrigin)}catch(b){return 0}};return a}();window.adthrive.windowPerformance=window.adthrive.windowPerformance|| | |
new g;g=window.adthrive.windowPerformance;g.now.bind(g);var p=function(a){var b=window.location.href;return a.some(function(c){return(new RegExp(c,"i")).test(b)})};g=function(){function a(b){this.adthrive=b;this.video=this.recipe=this.content=this.all=!1;this.locations=new Set;this.reasons=new Set;if(this.urlHasEmail(window.location.href)||this.urlHasEmail(window.document.referrer))this.all=!0,this.reasons.add("all_email");try{this.checkCommandQueue(),null!==document.querySelector(".tag-novideo")&& | |
(this.video=!0,this.locations.add("Video"),this.reasons.add("video_tag"))}catch(c){z.error("ClsDisableAds","checkCommandQueue",c)}}a.prototype.checkCommandQueue=function(){var b=this;this.adthrive&&this.adthrive.cmd&&this.adthrive.cmd.forEach(function(c){c=c.toString();var d=b.extractAPICall(c,"disableAds");d&&b.disableAllAds(b.extractPatterns(d));(d=b.extractAPICall(c,"disableContentAds"))&&b.disableContentAds(b.extractPatterns(d));(c=b.extractAPICall(c,"disablePlaylistPlayers"))&&b.disablePlaylistPlayers(b.extractPatterns(c))})}; | |
a.prototype.extractPatterns=function(b){b=b.match(/["'](.*?)['"]/g);if(null!==b)return b.map(function(c){return c.replace(/["']/g,"")})};a.prototype.extractAPICall=function(b,c){b=b.match(new RegExp(c+"\\((.*?)\\)","g"));return null!==b?b[0]:!1};a.prototype.disableAllAds=function(b){if(!b||p(b))this.all=!0,this.reasons.add("all_page")};a.prototype.disableContentAds=function(b){if(!b||p(b))this.recipe=this.content=!0,this.locations.add("Content"),this.locations.add("Recipe"),this.reasons.add("content_plugin")}; | |
a.prototype.disablePlaylistPlayers=function(b){if(!b||p(b))this.video=!0,this.locations.add("Video"),this.reasons.add("video_page")};a.prototype.urlHasEmail=function(b){return b?null!==/([A-Z0-9._%+-]+(@|%(25)*40)[A-Z0-9.-]+\.[A-Z]{2,})/i.exec(b):!1};return a}();if(m=window.adthriveCLS)m.disableAds=new g(window.adthrive);n.ClsDisableAds=g;Object.defineProperty(n,"__esModule",{value:!0});return n}({}) | |
</script><script data-no-optimize='1' data-cfasync='false' id='cls-header-insertion-df1206d'>'use strict';var cls_header_insertion=function(x){function u(a,b){function c(){this.constructor=a}if("function"!==typeof b&&null!==b)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");y(a,b);a.prototype=null===b?Object.create(b):(c.prototype=b.prototype,new c)}function B(a,b,c,d){var e=arguments.length,f=3>e?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d,h;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var g= | |
a.length-1;0<=g;g--)if(h=a[g])f=(3>e?h(f):3<e?h(b,c,f):h(b,c))||f;return 3<e&&f&&Object.defineProperty(b,c,f),f}function C(a,b){if("object"===typeof Reflect&&"function"===typeof Reflect.metadata)return Reflect.metadata(a,b)}function R(a){var b="function"===typeof Symbol&&Symbol.iterator,c=b&&a[b],d=0;if(c)return c.call(a);if(a&&"number"===typeof a.length)return{next:function(){a&&d>=a.length&&(a=void 0);return{value:a&&a[d++],done:!a}}};throw new TypeError(b?"Object is not iterable.":"Symbol.iterator is not defined."); | |
}function l(a,b){var c="function"===typeof Symbol&&a[Symbol.iterator];if(!c)return a;a=c.call(a);var d,e=[];try{for(;(void 0===b||0<b--)&&!(d=a.next()).done;)e.push(d.value)}catch(h){var f={error:h}}finally{try{d&&!d.done&&(c=a["return"])&&c.call(a)}finally{if(f)throw f.error;}}return e}function r(a,b,c){if(c||2===arguments.length)for(var d=0,e=b.length,f;d<e;d++)!f&&d in b||(f||(f=Array.prototype.slice.call(b,0,d)),f[d]=b[d]);return a.concat(f||Array.prototype.slice.call(b))}window.adthriveCLS.buildDate= | |
"2023-07-21";var y=function(a,b){y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(c,d){c.__proto__=d}||function(c,d){for(var e in d)Object.prototype.hasOwnProperty.call(d,e)&&(c[e]=d[e])};return y(a,b)},v=function(){v=Object.assign||function(a){for(var b,c=1,d=arguments.length;c<d;c++){b=arguments[c];for(var e in b)Object.prototype.hasOwnProperty.call(b,e)&&(a[e]=b[e])}return a};return v.apply(this,arguments)},z=new (function(){function a(){}a.prototype.info=function(b,c){for(var d= | |
[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,r([console.info,b,c],l(d),!1))};a.prototype.warn=function(b,c){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,r([console.warn,b,c],l(d),!1))};a.prototype.error=function(b,c){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,r([console.error,b,c],l(d),!1));this.sendErrorLogToCommandQueue.apply(this,r([b,c],l(d),!1))};a.prototype.event=function(b,c){for(var d,e=2;e< | |
arguments.length;e++);"debug"===(null===(d=window.adthriveCLS)||void 0===d?void 0:d.bucket)&&this.info(b,c)};a.prototype.sendErrorLogToCommandQueue=function(b,c){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];window.adthrive=window.adthrive||{};window.adthrive.cmd=window.adthrive.cmd||[];window.adthrive.cmd.push(function(){void 0!==window.adthrive.logError&&"function"===typeof window.adthrive.logError&&window.adthrive.logError(b,c,d)}.bind(b,c,d))};a.prototype.call=function(b,c,d){for(var e= | |
[],f=3;f<arguments.length;f++)e[f-3]=arguments[f];f=["%c".concat(c,"::").concat(d," ")];var h=["color: #999; font-weight: bold;"];0<e.length&&"string"===typeof e[0]&&f.push(e.shift());h.push.apply(h,r([],l(e),!1));try{Function.prototype.apply.call(b,console,r([f.join("")],l(h),!1))}catch(g){console.error(g)}};return a}()),m=function(a,b){return null==a||a!==a?b:a},S=function(a){var b=a.clientWidth;getComputedStyle&&(a=getComputedStyle(a,null),b-=parseFloat(a.paddingLeft||"0")+parseFloat(a.paddingRight|| | |
"0"));return b},D=function(){var a=navigator.userAgent,b=/Tablet|iPad|Playbook|Nook|webOS|Kindle|Android (?!.*Mobile).*Safari/i.test(a);return/Mobi|iP(hone|od)|Opera Mini/i.test(a)&&!b},n;(function(a){a.amznbid="amznbid";a.amzniid="amzniid";a.amznp="amznp";a.amznsz="amznsz"})(n||(n={}));var E;(function(a){a.ThirtyThreeAcross="33across";a.AppNexus="appnexus";a.Amazon="amazon";a.Colossus="colossus";a.ColossusServer="col_ss";a.Conversant="conversant";a.Concert="concert";a.Criteo="criteo";a.GumGum="gumgum"; | |
a.IndexExchange="ix";a.Kargo="kargo";a.KargoServer="krgo_ss";a.MediaGrid="grid";a.MediaGridVideo="gridvid";a.Nativo="nativo";a.OpenX="openx";a.OpenXServer="opnx_ss";a.Pubmatic="pubmatic";a.PubmaticServer="pubm_ss";a.ResetDigital="resetdigital";a.Roundel="roundel";a.Rtbhouse="rtbhouse";a.Rubicon="rubicon";a.RubiconServer="rubi_ss";a.Sharethrough="sharethrough";a.Spotx="spotx";a.Teads="teads";a.Triplelift="triplelift";a.TripleliftServer="tripl_ss";a.TTD="ttd";a.Undertone="undertone";a.UndertoneServer= | |
"under_ss";a.Unruly="unruly";a.YahooSSP="yahoossp";a.Verizon="verizon";a.Yieldmo="yieldmo"})(E||(E={}));var F;(function(a){a.Prebid="prebid";a.GAM="gam";a.Amazon="amazon";a.WebVitals="webvitals";a.Marmalade="marmalade";a.Floors="floors";a.CMP="cmp"})(F||(F={}));var G;(function(a){a.bidCycleNonlazy="bidCycleNonlazy";a.instream="instream";a.lazy="lazy";a.refresh="refresh";a.session="session";a.crossDomain="crossdomain";a.highSequence="highsequence";a.lazyBidPool="lazyBidPool";a.rubicon="rubicon"})(G|| | |
(G={}));var H;(function(a){a.bidCycleNonlazy="bc";a.instream="i";a.lazy="l";a.refresh="r";a.session="s";a.crossdomain="c";a.highsequence="hs";a.rubicon="rubi";a.lazyBidPool="lbp"})(H||(H={}));var I;(function(a){a.Desktop="desktop";a.Mobile="mobile"})(I||(I={}));var J;(function(a){a.Video_Collapse_Autoplay_SoundOff="Video_Collapse_Autoplay_SoundOff";a.Video_Individual_Autoplay_SOff="Video_Individual_Autoplay_SOff";a.Video_Coll_SOff_Smartphone="Video_Coll_SOff_Smartphone";a.Video_In_Post_ClicktoPlay_SoundOn= | |
"Video_In-Post_ClicktoPlay_SoundOn"})(J||(J={}));var K;(K||(K={})).None="none";var L;(function(a){a.AdDensity="addensity";a.AdLayout="adlayout";a.FooterCloseButton="footerclose";a.Interstitial="interstitial";a.RemoveVideoTitleWrapper="removevideotitlewrapper";a.StickyOutstream="stickyoutstream";a.StickyOutstreamOnStickyPlayer="sospp";a.VideoAdvancePlaylistRelatedPlayer="videoadvanceplaylistrp";a.MobileStickyPlayerPosition="mspp"})(L||(L={}));n=function(){function a(){this._timeOrigin=0}a.prototype.resetTimeOrigin= | |
function(){this._timeOrigin=window.performance.now()};a.prototype.now=function(){try{return Math.round(window.performance.now()-this._timeOrigin)}catch(b){return 0}};return a}();window.adthrive.windowPerformance=window.adthrive.windowPerformance||new n;n=window.adthrive.windowPerformance;var A=n.now.bind(n),T=["siteId","siteName","adOptions","breakpoints","adUnits"],M=function(a,b){void 0===b&&(b=T);if(!a)return!1;for(var c=0;c<b.length;c++)if(!a[b[c]])return!1;return!0},w=function(a){function b(c){var d= | |
a.call(this)||this;d._probability=c;return d}u(b,a);b.prototype.get=function(){if(0>this._probability||1<this._probability)throw Error("Invalid probability: ".concat(this._probability));return Math.random()<this._probability};return b}(function(){return function(){}}()),U=function(){function a(){this._clsGlobalData=window.adthriveCLS}Object.defineProperty(a.prototype,"enabled",{get:function(){return!!this._clsGlobalData&&!!this._clsGlobalData.siteAds&&M(this._clsGlobalData.siteAds)},enumerable:!1, | |
configurable:!0});Object.defineProperty(a.prototype,"error",{get:function(){return!(!this._clsGlobalData||!this._clsGlobalData.error)},enumerable:!1,configurable:!0});Object.defineProperty(a.prototype,"siteAds",{get:function(){return this._clsGlobalData.siteAds},set:function(b){this._clsGlobalData.siteAds=b},enumerable:!1,configurable:!0});Object.defineProperty(a.prototype,"disableAds",{get:function(){return this._clsGlobalData.disableAds},set:function(b){this._clsGlobalData.disableAds=b},enumerable:!1, | |
configurable:!0});Object.defineProperty(a.prototype,"enabledLocations",{get:function(){return this._clsGlobalData.enabledLocations},set:function(b){this._clsGlobalData.enabledLocations=b},enumerable:!1,configurable:!0});Object.defineProperty(a.prototype,"injectedFromPlugin",{get:function(){return this._clsGlobalData.injectedFromPlugin},set:function(b){this._clsGlobalData.injectedFromPlugin=b},enumerable:!1,configurable:!0});Object.defineProperty(a.prototype,"injectedFromSiteAds",{get:function(){return this._clsGlobalData.injectedFromSiteAds}, | |
set:function(b){this._clsGlobalData.injectedFromSiteAds=b},enumerable:!1,configurable:!0});a.prototype.overwriteInjectedSlots=function(b){this._clsGlobalData.injectedSlots=b};a.prototype.setInjectedSlots=function(b){this._clsGlobalData.injectedSlots=this._clsGlobalData.injectedSlots||[];this._clsGlobalData.injectedSlots.push(b)};Object.defineProperty(a.prototype,"injectedSlots",{get:function(){return this._clsGlobalData.injectedSlots},enumerable:!1,configurable:!0});a.prototype.setInjectedVideoSlots= | |
function(b){this._clsGlobalData.injectedVideoSlots=this._clsGlobalData.injectedVideoSlots||[];this._clsGlobalData.injectedVideoSlots.push(b)};Object.defineProperty(a.prototype,"injectedVideoSlots",{get:function(){return this._clsGlobalData.injectedVideoSlots},enumerable:!1,configurable:!0});a.prototype.setInjectedScripts=function(b){this._clsGlobalData.injectedScripts=this._clsGlobalData.injectedScripts||[];this._clsGlobalData.injectedScripts.push(b)};Object.defineProperty(a.prototype,"getInjectedScripts", | |
{get:function(){return this._clsGlobalData.injectedScripts},enumerable:!1,configurable:!0});a.prototype.setExperiment=function(b,c,d){void 0===d&&(d=!1);this._clsGlobalData.experiments=this._clsGlobalData.experiments||{};this._clsGlobalData.siteExperiments=this._clsGlobalData.siteExperiments||{};(d?this._clsGlobalData.siteExperiments:this._clsGlobalData.experiments)[b]=c};a.prototype.getExperiment=function(b,c){void 0===c&&(c=!1);return(c=c?this._clsGlobalData.siteExperiments:this._clsGlobalData.experiments)&& | |
c[b]};a.prototype.setWeightedChoiceExperiment=function(b,c,d){void 0===d&&(d=!1);this._clsGlobalData.experimentsWeightedChoice=this._clsGlobalData.experimentsWeightedChoice||{};this._clsGlobalData.siteExperimentsWeightedChoice=this._clsGlobalData.siteExperimentsWeightedChoice||{};(d?this._clsGlobalData.siteExperimentsWeightedChoice:this._clsGlobalData.experimentsWeightedChoice)[b]=c};a.prototype.getWeightedChoiceExperiment=function(b,c){var d,e;void 0===c&&(c=!1);return(c=c?null===(d=this._clsGlobalData)|| | |
void 0===d?void 0:d.siteExperimentsWeightedChoice:null===(e=this._clsGlobalData)||void 0===e?void 0:e.experimentsWeightedChoice)&&c[b]};Object.defineProperty(a.prototype,"branch",{get:function(){return this._clsGlobalData.branch},enumerable:!1,configurable:!0});Object.defineProperty(a.prototype,"bucket",{get:function(){return this._clsGlobalData.bucket},enumerable:!1,configurable:!0});Object.defineProperty(a.prototype,"videoDisabledFromPlugin",{get:function(){return this._clsGlobalData.videoDisabledFromPlugin}, | |
set:function(b){this._clsGlobalData.videoDisabledFromPlugin=b},enumerable:!1,configurable:!0});Object.defineProperty(a.prototype,"targetDensityLog",{get:function(){return this._clsGlobalData.targetDensityLog},set:function(b){this._clsGlobalData.targetDensityLog=b},enumerable:!1,configurable:!0});Object.defineProperty(a.prototype,"removeVideoTitleWrapper",{get:function(){return this._clsGlobalData.siteAds.adOptions.removeVideoTitleWrapper},enumerable:!1,configurable:!0});return a}();n=function(){function a(){this._clsOptions= | |
new U;this.shouldUseCoreExperimentsConfig=!1}a.prototype.setExperimentKey=function(b){void 0===b&&(b=!1);this._clsOptions.setExperiment(this.key,this.result,b)};return a}();var V=function(a){function b(){var c=a.call(this)||this;c._result=!1;c._choices=[{choice:!0},{choice:!1}];c.key="smhd100";c._result=c.run();c.setExperimentKey();return c}u(b,a);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new w(.1)).get()}; | |
return b}(n),N=function(a,b,c,d,e,f){a=Math.round(f-e);b=[];e=[];b.push("(",c.map(function(){return"%o"}).join(", "),")");e.push.apply(e,r([],l(c),!1));void 0!==d&&(b.push(" => %o"),e.push(d));b.push(" %c(".concat(a,"ms)"));e.push("color: #999;")},O=function(a,b,c){var d=void 0!==c.get?c.get:c.value;return function(){for(var e=[],f=0;f<arguments.length;f++)e[f]=arguments[f];try{var h=A(),g=d.apply(this,e);if(g instanceof Promise)return g.then(function(k){var q=A();N(a,b,e,k,h,q);return Promise.resolve(k)}).catch(function(k){k.logged|| | |
(z.error(a,b,k),k.logged=!0);throw k;});var p=A();N(a,b,e,g,h,p);return g}catch(k){throw k.logged||(z.error(a,b,k),k.logged=!0),k;}}},P=function(a,b){void 0===b&&(b=!1);return function(c){var d,e=Object.getOwnPropertyNames(c.prototype).filter(function(t){return b||0!==t.indexOf("_")}).map(function(t){return[t,Object.getOwnPropertyDescriptor(c.prototype,t)]});try{for(var f=R(e),h=f.next();!h.done;h=f.next()){var g=l(h.value,2),p=g[0],k=g[1];void 0!==k&&"function"===typeof k.value?c.prototype[p]=O(a, | |
p,k):void 0!==k&&void 0!==k.get&&"function"===typeof k.get&&Object.defineProperty(c.prototype,p,v(v({},k),{get:O(a,p,k)}))}}catch(t){var q={error:t}}finally{try{h&&!h.done&&(d=f.return)&&d.call(f)}finally{if(q)throw q.error;}}}},W=function(a){function b(){var c=a.call(this)||this;c._result=!1;c.key="conmax99";c._choices=[{choice:!0},{choice:!1}];c.weight=.02;c._result=c.run();c.setExperimentKey();return c}u(b,a);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1, | |
configurable:!0});b.prototype.run=function(){return(new w(this.weight)).get()};return b=B([P("MaxContentExperiment"),C("design:paramtypes",[])],b)}(n),X=function(a){function b(c){var d=a.call(this)||this;d._result=!1;d.key="parallax";d._choices=[{choice:!0},{choice:!1}];d.weight=.5;D()&&c.largeFormatsMobile&&(d._result=d.run(),d.setExperimentKey());return d}u(b,a);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new w(this.weight)).get()}; | |
return b=B([P("ParallaxAdsExperiment"),C("design:paramtypes",[Object])],b)}(n),Y=function(a){function b(){var c=a.call(this)||this;c._result=!1;c._choices=[{choice:!0},{choice:!1}];c.key="mrsf";D()&&(c._result=c.run(),c.setExperimentKey());return c}u(b,a);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new w(.2)).get()};return b}(n),Z=[[728,90],[300,250],[300,600],[320,50],[970,250],[160,600],[300,1050], | |
[336,280],[970,90],[300,50],[320,100],[468,60],[250,250],[120,240],[1,1],[300,300],[552,334],[300,420],[728,250],[320,300],[300,390]],aa=[[300,600],[160,600]],ba=new Map([["Footer",1],["Header",2],["Sidebar",3],["Content",4],["Recipe",5],["Sidebar_sticky",6],["Below Post",7]]),ca=function(a){return Z.filter(function(b){b=l(b,2);var c=b[0],d=b[1];return a.some(function(e){e=l(e,2);var f=e[1];return c===e[0]&&d===f})})},da=function(a,b,c,d,e){b=l(b,2);var f=b[0],h=b[1],g=a.location;b=a.sequence;return"Footer"=== | |
g?!("phone"===c&&320===f&&100===h):"Header"===g?!(100<h&&d.result):"Recipe"===g?!(e.result&&"phone"===c&&(300===f&&390===h||320===f&&300===h)):"Sidebar"===g?(c=a.adSizes.some(function(p){return 300>=l(p,2)[1]}),(d=300<h)&&!c?!0:9===b?!0:b&&5>=b?d?a.sticky:!0:!d):!0},ea=function(a,b){var c=b.adUnits,d=b.adTypes?(new X(b.adTypes)).result:!1,e=new V,f=new W,h=new Y;return c.filter(function(g){return void 0!==g.dynamic&&g.dynamic.enabled}).map(function(g){var p=g.location.replace(/\s+/g,"_"),k="Sidebar"=== | |
p?0:2;return{auctionPriority:ba.get(p)||8,location:p,sequence:m(g.sequence,1),sizes:ca(g.adSizes).filter(function(q){return da(g,q,a,e,h)}).concat(d&&"Content"===g.location?aa:[]),devices:g.devices,pageSelector:m(g.dynamic.pageSelector,"").trim(),elementSelector:m(g.dynamic.elementSelector,"").trim(),position:m(g.dynamic.position,"beforebegin"),max:f.result&&"Content"===g.location?99:Math.floor(m(g.dynamic.max,0)),spacing:m(g.dynamic.spacing,0),skip:Math.floor(m(g.dynamic.skip,0)),every:Math.max(Math.floor(m(g.dynamic.every, | |
1)),1),classNames:g.dynamic.classNames||[],sticky:"Footer"===g.location?!0:g.sticky,stickyOverlapSelector:m(g.stickyOverlapSelector,"").trim(),autosize:g.autosize,special:m(g.targeting,[]).filter(function(q){return"special"===q.key}).reduce(function(q,t){return q.concat.apply(q,r([],l(t.value),!1))},[]),lazy:m(g.dynamic.lazy,!1),lazyMax:m(g.dynamic.lazyMax,k),lazyMaxDefaulted:0===g.dynamic.lazyMax?!1:!g.dynamic.lazyMax}})},fa=function(a,b){var c=S(b),d=a.sticky&&"Sidebar"===a.location;return a.sizes.filter(function(e){var f= | |
d?e[1]<=window.innerHeight-100:!0;return(a.autosize?e[0]<=c||320>=e[0]:!0)&&f})},Q=function(){function a(b){this.adthriveCLS=b;this.deviceToMinHeight={desktop:"90px",tablet:"90px",phone:"50px"};b=this.adthriveCLS.siteAds.breakpoints;var c=b.tablet;var d=window.innerWidth;b=d>=b.desktop?"desktop":d>=c?"tablet":"phone";this._device=b}a.prototype.start=function(){var b=this;try{for(var c=ea(this._device,this.adthriveCLS.siteAds).filter(function(e){return b.locationEnabled(e)}).filter(function(e){return e.devices.includes(b._device)}), | |
d=0;d<c.length;d++)window.requestAnimationFrame(this.inject.bind(this,c[d],document))}catch(e){z.error("ClsHeaderInjector","start",e)}};a.prototype.inject=function(b,c){void 0===c&&(c=document);if("complete"!==document.readyState)if(0===b.pageSelector.length||document.querySelector(b.pageSelector)){var d=this.getElements(b.elementSelector,c);if(d){var e=this.getDynamicElementId(b),f="adthrive-".concat(b.location.replace("_","-").toLowerCase()),h="".concat(f,"-").concat(b.sequence);f=r([f,h],l(b.classNames), | |
!1);if(d=this.addAd(d,e,b.position,f))e=fa(b,d),0<e.length&&(b={clsDynamicAd:b,dynamicAd:b,element:d,sizes:e,name:"Header_1",infinite:c!==document},this.adthriveCLS.injectedSlots.some(function(g){return"Header_1"===g.name})||this.adthriveCLS.injectedSlots.push(b),d.style.minHeight=this.deviceToMinHeight[this._device])}else window.requestAnimationFrame(this.inject.bind(this,b,document))}else window.requestAnimationFrame(this.inject.bind(this,b,document))};a.prototype.getDynamicElementId=function(b){return"".concat("AdThrive", | |
"_").concat(b.location,"_").concat(b.sequence,"_").concat(this._device)};a.prototype.getElements=function(b,c){void 0===c&&(c=document);return c.querySelector(b)};a.prototype.addAd=function(b,c,d,e){void 0===e&&(e=[]);document.getElementById(c)||(e='<div id="'.concat(c,'" class="adthrive-ad ').concat(e.join(" "),'"></div>'),b.insertAdjacentHTML(d,e));return document.getElementById(c)};a.prototype.locationEnabled=function(b){return!(this.adthriveCLS.disableAds&&this.adthriveCLS.disableAds.all)&&"Header"=== | |
b.location&&1===b.sequence&&1===b.max&&0===b.spacing};return a}();(function(){var a=window.adthriveCLS;a&&a.siteAds&&M(a.siteAds)&&window.requestAnimationFrame&&(new Q(a)).start()})();x.ClsHeaderInjector=Q;Object.defineProperty(x,"__esModule",{value:!0});return x}({}) | |
</script> | |
<!-- Global site tag (gtag.js) - Google Analytics --> | |
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-11613365-32"></script> | |
<script> | |
window.dataLayer = window.dataLayer || []; | |
function gtag(){dataLayer.push(arguments);} | |
gtag('js', new Date()); | |
gtag('config', 'UA-11613365-32'); | |
</script> | |
</head> | |
<body class="post-template-default single single-post postid-33463706 single-format-standard wp-custom-logo theme-lbb-theme-pimylifeup woocommerce-no-js no-sidebar"> | |
<div id="page" class="site"> | |
<header id="masthead" class="site-header"> | |
<nav id="site-navigation" class="navbar navbar-expand-lg navbar-light"> | |
<div class="container nav-container"> | |
<div class="nav-wrapper"> | |
<a class="navbar-brand" title="Go to Homepage" href="https://pimylifeup.com/" rel="home"> | |
<img width="160" height="50" src="https://pimylifeup.com/wp-content/uploads/2021/06/pimylifeuplogosmall.png" class="attachment-full size-full" alt="Pi My Life Up" decoding="async" loading="eager" /> </a> | |
<div id="nav-search-bar" class="w-100 h-100 search-nav-bar"> | |
<div class="w-100 d-flex align-items-center"> | |
<form role="search" method="get" class="searchform" action="https://pimylifeup.com/"> | |
<div class="input-group"> | |
<input type="text" class="form-control" aria-label="Search" placeholder="Search …" value="" name="s" /> | |
<div class="input-group-append"> | |
<input type="submit" class="btn btn-outline-secondary" value="Search" /> | |
</div> | |
</div> | |
</form> </div> | |
</div> | |
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation"> | |
<span class="navbar-toggler-icon"></span> | |
</button> | |
<div id="navbarCollapse" class="collapse navbar-collapse"> | |
<ul id="primary-menu" itemscope itemtype="https://schema.org/SiteNavigationElement" class="navbar-nav mr-auto"><li id="menu-item-14848" class="highlighted menu-item menu-item-type-custom menu-item-object-custom menu-item-14848 nav-item"><a itemprop="url" href="https://pimylifeup.com/subscribe/?utm_source=menu&utm_medium=link" class="nav-link"><span itemprop="name">Ad-Free</span></a></li> | |
<li id="menu-item-33457029" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-33457029 nav-item"><a itemprop="url" href="https://pimylifeup.com/raspberry-pi-index/" class="nav-link"><span itemprop="name">Raspberry Pi</span></a></li> | |
<li id="menu-item-33470026" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-33470026 nav-item"><a itemprop="url" href="https://pimylifeup.com/linux-index/" class="nav-link"><span itemprop="name">Linux</span></a></li> | |
<li id="menu-item-33476258" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-33476258 nav-item"><a itemprop="url" href="https://pimylifeup.com/category/windows/" class="nav-link"><span itemprop="name">Windows</span></a></li> | |
<li id="menu-item-33476257" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-33476257 nav-item"><a itemprop="url" href="https://pimylifeup.com/category/macos/" class="nav-link"><span itemprop="name">macOS</span></a></li> | |
<li id="menu-item-33479343" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-33479343 nav-item"><a itemprop="url" href="https://pimylifeup.com/category/steamdeck/" class="nav-link"><span itemprop="name">Steam Deck</span></a></li> | |
<li id="menu-item-33465488" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children dropdown menu-item-33465488 nav-item"><a href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="dropdown-toggle nav-link" id="menu-item-dropdown-33465488"><span itemprop="name">More</span></a> | |
<ul class="dropdown-menu" aria-labelledby="menu-item-dropdown-33465488"> | |
<li id="menu-item-33470034" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-33470034 nav-item"><a itemprop="url" href="https://pimylifeup.com/coding-index/" class="dropdown-item"><span itemprop="name">Coding</span></a></li> | |
<li id="menu-item-33457032" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-33457032 nav-item"><a itemprop="url" href="https://pimylifeup.com/category/learn-electronics/" class="dropdown-item"><span itemprop="name">Electronics</span></a></li> | |
<li id="menu-item-33457030" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-33457030 nav-item"><a itemprop="url" href="https://pimylifeup.com/category/arduino-projects/" class="dropdown-item"><span itemprop="name">Arduino</span></a></li> | |
<li id="menu-item-33466152" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-33466152 nav-item"><a itemprop="url" href="https://pimylifeup.com/compilations/" class="dropdown-item"><span itemprop="name">Compilations</span></a></li> | |
<li id="menu-item-33472130" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-33472130 nav-item"><a itemprop="url" href="https://pimylifeup.com/category/tutorials/" class="dropdown-item"><span itemprop="name">Other Tutorials</span></a></li> | |
<li id="menu-item-33476256" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-33476256 nav-item"><a itemprop="url" href="https://pimylifeup.com/category/archive/" class="dropdown-item"><span itemprop="name">Archive</span></a></li> | |
<li id="menu-item-16907" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16907 nav-item"><a rel="nofollow" itemprop="url" href="https://pimylifeup.com/my-account/" class="dropdown-item"><span itemprop="name">Login</span></a></li> | |
</ul> | |
</li> | |
</ul> | |
<button class="themeToggle" title="Dark Theme Toggle" aria-label="Dark Theme Toggle"> | |
<i class="fa-themeToggle"></i><span class="d-lg-none themeToggle-text"></span> | |
</button> | |
</div> | |
</div> | |
<button id="toggle-search-button" title="Search" class="searchToggle" aria-label="Toggle Search"> | |
<i class="fa-searchToggle"></i> | |
</button> | |
</div> | |
</nav><!-- #site-navigation --> | |
</header><!-- #masthead --> | |
<div id="main-content" class="site-content container"> | |
<div class="row"> | |
<div id="primary" class="content-area col-lg-8"> | |
<main id="main" class="site-main"> | |
<article id="post-33463706" class="post-33463706 post type-post status-publish format-standard has-post-thumbnail hentry category-beginner category-media"> | |
<header class="entry-header post-header-outer row"> | |
<h1 class="entry-title text-center col-12">Installing Jellyfin to the Raspberry Pi</h1> <div class="entry-meta header-meta-tags text-center col-12"> | |
<div class="byline mx-2"><img alt='Emmet Avatar' src="https://cdn.pimylifeup.com/wp-content/uploads/2022/04/pimylifeup_editor_avatar.png" class='avatar avatar-48 photo rounded' height='48' width='48' loading='lazy'/> by <span class="author vcard"><span class="fn">Emmet</span></span></div><div class="updated-on mx-2 fa-calendar-alt">Updated <time class="entry-date date updated" datetime="2022-07-18T20:12:21+10:00"> Jul 18, 2022</time></div><div class="cat-links mx-2"><a class='fa-raspberry-pi' href="https://pimylifeup.com/category/projects/beginner/" rel="category tag">Beginner</a> <a class='fa-raspberry-pi' href="https://pimylifeup.com/category/projects/media/" rel="category tag">Media</a></div><div class='social-share-links mx-2 '><a rel='nofollow noopener noreferrer' class='social-share-button fa-facebook' title='Share to Facebook' target='_blank' href='https://www.facebook.com/sharer.php?u=https%3A%2F%2Fpimylifeup.com%2Fraspberry-pi-jellyfin%2F'></a><a rel='nofollow noopener noreferrer' class='social-share-button fa-twitter' title='Share to Twitter' target='_blank' href='https://twitter.com/intent/tweet?text=Installing%20Jellyfin%20to%20the%20Raspberry%20Pi&url=https%3A%2F%2Fpimylifeup.com%2Fraspberry-pi-jellyfin%2F'></a><a rel='nofollow noopener noreferrer' class='social-share-button fa-pinterest' title='Share to Pinterest' target='_blank' href='https://pinterest.com/pin/create/bookmarklet/?url=https%3A%2F%2Fpimylifeup.com%2Fraspberry-pi-jellyfin%2F&media=https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Long.jpg'></a><a rel='nofollow noopener noreferrer' class='social-share-button fa-mail' title='Email this page' href='mailto:?subject=Installing%20Jellyfin%20to%20the%20Raspberry%20Pi&body=Check%20out%20this:%20https%3A%2F%2Fpimylifeup.com%2Fraspberry-pi-jellyfin%2F'></a></div> </div><!-- .entry-meta --> | |
</header><!-- .entry-header --> | |
<div class="entry-content"> | |
<p class="text-center">This tutorial will show you how to install the Jellyfin media server to the Raspberry Pi.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail.jpg" alt="Jellyfin on the Raspberry Pi" class="wp-image-33463747" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-Thumbnail-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p>Jellyfin is a media server much like Plex and Emby. The software is designed to stream the media off of your Raspberry Pi to various clients.</p> | |
<p>Where <a href="https://jellyfin.org/" target="_blank" rel="noopener">Jellyfin</a> differs itself is in its licensing, the software is open source and completely free-to-use.</p> | |
<p>All of the media server’s features and apps are not locked behind any paywall like its alternatives making Jellyfin a solid choice for the Raspberry Pi.</p> | |
<p>It has many of the same features that <a href="https://pimylifeup.com/raspberry-pi-plex-server/">software like Plex</a> and Emby have. Such as an inbuilt DVR and live TV functionality.</p> | |
<p>Jellyfin started as a fork of the <a href="https://emby.media/" target="_blank" rel="noopener">Emby project</a> after the Emby team moved to be proprietary software.</p> | |
<p>The biggest downside to using the Jellyfin media server on your Raspberry Pi is that it doesn’t have as much client software available.</p> | |
<p>However, it still features a <a href="https://jellyfin.org/clients/" target="_blank" rel="noopener">client for most major operating systems</a>, including Fire TV, Roku, Kodi, Android TV, Android, and iOS.</p> | |
<p>The Jellyfin team is working on expanding the support to the major game consoles as and LG’s and Samsung’s TV operating systems.</p> | |
<p>To get the best performance out of the Jellyfin media server we recommend using the Raspberry Pi 4. While the Pi 3 can run Jellyfin, it will start to come undone once transcoding is heavily used.</p> | |
<h2 class="lbb-section-break mt-5 wp-block-heading" id="table-of-contents">Table of Contents</h2> | |
<ul class="pi_list_style border py-3"><li><a href="#preparing">Preparing your Raspberry Pi for Jellyfin</a></li><li><a href="#installing">Installing Jellyfin to the Raspberry Pi</a></li><li><a href="#accessing">Accessing Jellyfin’s Web Interface</a></li><li><a href="#firstsetup">First Setup Experience of Jellyfin</a></li><li><a href="#loggingin">Logging in to Jellyfin</a></li><li><a href="#hardwareacceleration">Enabling Hardware Acceleration for Jellyfin</a> | |
<ul> | |
<li><a href="#configuringpi">Configuring your Raspberry Pi for Hardware Acceleration</a></li> | |
<li><a href="#configuringjellyfin">Telling Jellyfin to use Hardware Acceleration</a></li> | |
</ul> | |
</li><li><a href="#permission">Dealing with Permission Issues</a></li><li><a href="#conclusion">Conclusion</a></li></ul> | |
<h2 class="lbb-section-break wp-block-heading" id="equipment">Equipment</h2> | |
<p>Below is a list of the equipment we used for installing the Jellyfin media server to the Raspberry Pi.</p> | |
<h3>Recommended</h3><ul id='recommended_equipment' class='list-unstyled'><li class='fa-microchip'><a href="https://0g.pimylifeup.com/l8KF94/amazon/raspberrypi" target="_blank" rel="noopener nofollow">Raspberry Pi</a></li><li class='fa-hdd'><a href="https://0g.pimylifeup.com/DUVENo/amazon/microsdcard" target="_blank" rel="noopener nofollow">Micro SD Card</a> (8GB+)</li><li class='fa-wifi'><a href="https://0g.pimylifeup.com/9YIU76/amazon/ethernetcord" target="_blank" rel="noopener nofollow">Ethernet Cable</a> or <a href="https://0g.pimylifeup.com/89vmLk/amazon/wifidongle" target="_blank" rel="noopener nofollow">Wi-Fi</a></li></ul><h3>Optional</h3><ul id='optional_equipment' class='list-unstyled'><li class='fa-square'><a href="https://pimylifeup.com/raspberry-pi-cases/" target="_blank" rel="noopener nofollow">Raspberry Pi Case</a></li><li class='fa-keyboard'><a href="https://0g.pimylifeup.com/FiheVF/amazon/usbkeyboard" target="_blank" rel="noopener nofollow">USB Keyboard</a></li><li class='fa-mouse-pointer'><a href="https://0g.pimylifeup.com/2VE9AD/amazon/usbmouse" target="_blank" rel="noopener nofollow">USB Mouse</a></li></ul> | |
<p>We tested this tutorial on the <a href="https://pimylifeup.com/raspberry-pi-400/">Raspberry Pi 400</a> using the latest release of Raspberry Pi OS Buster.</p> | |
<h2 class="text-center mt-5 lbb-section-break wp-block-heading" id="preparing">Preparing your Raspberry Pi for Jellyfin</h2> | |
<p>Before installing the Jellyfin media server to our Raspberry Pi, we need to do some essential preparatory work.</p> | |
<p>As Jellyfin is available through its repository, we will need to add it for our package manager to install Jellyfin.</p> | |
<p><strong class="step_numbering">1.</strong> Before we proceed, let us start by ensuring we are running an updated operating system.</p> | |
<p>As long as you are running a Debian operating system such as Ubuntu or Raspberry Pi OS, the following steps will work fine for you.</p> | |
<p>Update your Raspberry Pi’s operating system by using the following two commands.</p> | |
<pre class="wp-block-code"><code class="header terminal">sudo apt update | |
sudo apt full-upgrade</code></pre> | |
<p><strong class="step_numbering">2.</strong> With our Raspberry Pi up to date, we need to install some packages to access the Jellyfin package repository.</p> | |
<p>Out of the box, the apt package manager does not have support for repositories running behind HTTPS.</p> | |
<p>To work around this, we can install the <code>apt-transport-https</code> package by running the following command.</p> | |
<pre class="wp-block-code"><code class="header terminal">sudo apt install apt-transport-https lsb-release</code></pre> | |
<p>This package adds support for the HTTPS transport protocol to the apt package manager.</p> | |
<p><strong class="step_numbering">3.</strong> Next, we need to import the GPG signing key to our Pi.</p> | |
<p>We can use the following command to pipe the key directly to our package manager’s key chain.</p> | |
<pre class="wp-block-code"><code class="header terminal">curl https://repo.jellyfin.org/debian/jellyfin_team.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/jellyfin-archive-keyring.gpg >/dev/null</code></pre> | |
<p>GPG Keys are an essential part of how package repositories remain secure. The keys help ensure that only software signed by the repository will be installed.</p> | |
<p><strong class="step_numbering">4.</strong> Now that we have the GPG key added, we can finally add the Jellyfin repository to our Raspberry Pi.</p> | |
<p>We can use a handy one-liner that will automatically generate the correct line for the sources file.</p> | |
<pre class="wp-block-code"><code class="header terminal">echo "deb [signed-by=/usr/share/keyrings/jellyfin-archive-keyring.gpg arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/debian $( lsb_release -c -s ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list</code></pre> | |
<p>This line automatically grabs the current systems architecture and its current release and fills in the blanks.</p> | |
<p><strong class="step_numbering">4.</strong> Lastly, we need to update our Pi’s package list.</p> | |
<p>You can update the package list by using the following command on your device.</p> | |
<pre class="wp-block-code"><code class="header terminal">sudo apt update</code></pre> | |
<p>When you make a change to the sources file, you need to update the package list. Without updating, the package manager won’t be aware of the changes.</p> | |
<p><strong class="step_numbering">5.</strong> Before continuing you should consider setting your <a href="https://pimylifeup.com/raspberry-pi-static-ip-address/">Raspberry Pi to use a static IP address</a>.</p> | |
<p>This will make it easier to connect to the Jellyfin media server when your device restarts.</p> | |
<h2 class="text-center mt-5 lbb-section-break wp-block-heading" id="installing">Installing Jellyfin to the Raspberry Pi</h2> | |
<p>With the package repository added, we can now install the Jellyfin media server on our Raspberry Pi.</p> | |
<p>Thanks to all the work we did in the previous section, this step is very straightforward.</p> | |
<p><strong class="step_numbering">1.</strong> On your Raspberry Pi, all you need to do is run the following command to install Jellyfin.</p> | |
<pre class="wp-block-code"><code class="header terminal">sudo apt install jellyfin</code></pre> | |
<p>This command will download and install Jellyfin from the package repository we added.</p> | |
<p><strong class="step_numbering">2.</strong> During the installation process Jellyfin will set up a few things on our Raspberry Pi.</p> | |
<p>The first thing it does is create a new user called “<code>jellyfin</code>“. This user is used to run the software on your Raspberry Pi and is also the user who will need to access your files.</p> | |
<p>Secondly, it also creates a service for Jellyfin. This service will start the media server automatically at boot and allow you to start, stop, and restart the service easily.</p> | |
<h2 class="text-center mt-5 lbb-section-break wp-block-heading" id="accessing">Accessing Jellyfin’s Web Interface</h2> | |
<p>Now that you have installed the Jellyfin media server to your Raspberry Pi, you will want to access its web interface.</p> | |
<p>The web interface is straightforward to use and supports <a href="https://pimylifeup.com/category/guides/browsers/">most major web browsers</a>.</p> | |
<p><strong class="step_numbering">1.</strong> To access the Jellyifn web interface, you will need to know your <a href="https://pimylifeup.com/raspberry-pi-ip-address/">Raspberry Pi’s IP address</a>.</p> | |
<p>The quickest way of getting your Pi’s local IP address is to <a href="https://pimylifeup.com/hostname-command/">use the hostname command</a> as we have below.</p> | |
<pre class="wp-block-code"><code class="header terminal">hostname -I</code></pre> | |
<p><strong class="step_numbering">2.</strong> With the IP address handy, you need to go to the following address in your web browser.</p> | |
<p>Make sure you include the Jellyfin port (<code>8096</code>) at the end of the URL.</p> | |
<pre class="wp-block-code"><code class="header goto">http://<strong>[IPADDRESS]</strong>:8096</code></pre> | |
<p>You need to replace “<code>[IPADDRESS]</code>” with the IP you got in this section’s first step.</p> | |
<h2 class="text-center mt-5 lbb-section-break wp-block-heading" id="firstsetup">First Setup Experience of Jellyfin</h2> | |
<p>Before you can start using Jellyfin, you will need to run through its first setup experience.</p> | |
<p>Don’t worry, as the setup experience is a reasonably straightforward process.</p> | |
<p><strong class="step_numbering">1.</strong> When you first use Jellyfin, you will need to configure the media server.</p> | |
<p>The first step is to select the display language that you want to use (<strong>1.</strong>).</p> | |
<p>Once you have the language you want set, <kbd>click</kbd> the “<code>Next -></code>” button (<strong>2.</strong>) to continue.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-01-Select-Language.jpg" alt="Selecting the Jellyfin Language for your Raspberry Pi" class="wp-image-33463722" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-01-Select-Language.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-01-Select-Language-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-01-Select-Language-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-01-Select-Language-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">2.</strong> Now, we need to create an admin user for accessing Jellyfin.</p> | |
<p>Use the interface to set a username and password for your account (<strong>1.</strong>).</p> | |
<p>When you have filled out the required information, <kbd>click</kbd> the “<code>Next -></code>” button (<strong>2.</strong>) to set the user details.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-02-Creating-an-Initial-User.jpg" alt="Creating a User for Jellyfins Web Interface" class="wp-image-33463723" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-02-Creating-an-Initial-User.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-02-Creating-an-Initial-User-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-02-Creating-an-Initial-User-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-02-Creating-an-Initial-User-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">3.</strong> On this step, you can now add media libraries to your Jellyfin media server.</p> | |
<p>To add your first media folder, <kbd>click</kbd> the “<code>Add Media Library</code>” button.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-03-Adding-Initial-Media-Folders.jpg" alt="Adding Initial Media Folder for Jellyfin" class="wp-image-33463724" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-03-Adding-Initial-Media-Folders.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-03-Adding-Initial-Media-Folders-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-03-Adding-Initial-Media-Folders-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-03-Adding-Initial-Media-Folders-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">4.</strong> The first thing you need to do is select a content type (<strong>1.</strong>).</p> | |
<p>The content type is what dictates how Jellyfin will retrieve information about these files.</p> | |
<p>Next, you need to add the folders where your media files are located. You can start this process by <kbd>clicking</kbd> the plus symbol (<code>+</code>) next to “<code>Folders</code>” (<strong>2.</strong>).</p> | |
<p>Once you have folders added, <kbd>click</kbd> the “<code>Ok</code>” button located at the bottom of this screen (<strong>3.</strong>).</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="680" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-04-Choosing-Content-Type-and-Folders.jpg" alt="Adding a Media folder to Jellyfin" class="wp-image-33463725" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-04-Choosing-Content-Type-and-Folders.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-04-Choosing-Content-Type-and-Folders-300x280.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-04-Choosing-Content-Type-and-Folders-600x560.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">5.</strong> You can now add additional media folders if you want.</p> | |
<p>For this guide, we will be sticking with our “<code>Movies</code>” folder.</p> | |
<p><kbd>Click</kbd> the “<code>Next -></code>” button to proceed.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-05-Continuing-after-choosing-Media-Folder.jpg" alt="Media Successfully Added to Raspberry Pi Jellyfin" class="wp-image-33463726" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-05-Continuing-after-choosing-Media-Folder.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-05-Continuing-after-choosing-Media-Folder-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-05-Continuing-after-choosing-Media-Folder-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-05-Continuing-after-choosing-Media-Folder-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">6.</strong> We can now set the default language Jellyfin will use to fetch metadata (<strong>1.</strong>).</p> | |
<p>When Jellyfin connects to services such as TVDB, it can fetch episode names and other information in your local language if it is available.</p> | |
<p>Once you have set the language, <kbd>click</kbd> the “<code>Next -></code>” button to continue (<strong>2.</strong>).</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-06-Set-Default-Metadata-Language.jpg" alt="Setting the default metadata Language" class="wp-image-33463727" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-06-Set-Default-Metadata-Language.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-06-Set-Default-Metadata-Language-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-06-Set-Default-Metadata-Language-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-06-Set-Default-Metadata-Language-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">7.</strong> During the initial setup experience, you can configure remote access for your Jellyfin media server (<strong>1.</strong>).</p> | |
<p>Use these options to block outside access to your Jellyfin server or to get itself to auto-forward access through your router.</p> | |
<p>Once set, <kbd>click</kbd> the “<code>Next -></code>” button to confirm your settings (<strong>2.</strong>).</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-07-Configure-Remote-Access.jpg" alt="Configure Remote Access to your Raspberry Pi Jellyfin server" class="wp-image-33463728" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-07-Configure-Remote-Access.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-07-Configure-Remote-Access-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-07-Configure-Remote-Access-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-07-Configure-Remote-Access-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">8.</strong> You have now finished the initial setup experience for the Jellyfin media server on your Raspberry Pi.</p> | |
<p>You can <kbd>click</kbd> the “<code>Finish</code>” button to finalize the setup.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-08-Finished-Initial-Jellyfin-Setup.jpg" alt="Finished setup for Jellyfin on the Raspberry Pi" class="wp-image-33463714" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-08-Finished-Initial-Jellyfin-Setup.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-08-Finished-Initial-Jellyfin-Setup-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-08-Finished-Initial-Jellyfin-Setup-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-08-Finished-Initial-Jellyfin-Setup-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<h2 class="text-center mt-5 lbb-section-break wp-block-heading" id="loggingin">Logging in to Jellyfin</h2> | |
<p>Before accessing your Raspberry Pi’s Jellyfin web interface, you will need to log in.</p> | |
<p><strong class="step_numbering">1.</strong> Logging in to Jellyfin is a fairly straightforward process.</p> | |
<p>All you need is a username and password (<strong>1.</strong>). Both of these you should have created during the Jellyfin initial setup experience.</p> | |
<p>With your login details entered, <kbd>click</kbd> the “<code>Sign In</code>” button (<strong>2.</strong>) to log in to the web interface.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-09-Logging-into-the-web-interface.jpg" alt="Logging in to the Raspberry Pi Jellyfin Web Interface" class="wp-image-33463715" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-09-Logging-into-the-web-interface.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-09-Logging-into-the-web-interface-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-09-Logging-into-the-web-interface-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-09-Logging-into-the-web-interface-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">2.</strong> You should now be able to watch your media through the Jellyfin media server.</p> | |
<p>Be sure to explore the interface to see how you can configure Jellyfin to best suit your needs.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-10-Initial-Web-Experience.jpg" alt="Jellyfin Running Successfully on the Raspberry Pi" class="wp-image-33463716" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-10-Initial-Web-Experience.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-10-Initial-Web-Experience-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-10-Initial-Web-Experience-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-10-Initial-Web-Experience-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<h2 class="text-center mt-5 lbb-section-break wp-block-heading" id="hardwareacceleration">Enabling Hardware Acceleration for Jellyfin</h2> | |
<p>To help improve your experience with Jellyfin on the Raspberry Pi, you should enable hardware acceleration.</p> | |
<p>These steps will require you to do things on both the Raspberry Pi and the Jellyfin web interface.</p> | |
<p>Please note that for the optimum experience, you should also ensure your <a href="https://pimylifeup.com/raspberry-pi-temperature/">Raspberry Pi is adequately cooled</a>.</p> | |
<h3 class="lbb-section-break h4 mt-5 wp-block-heading" id="configuringpi">Configuring your Raspberry Pi for Hardware Acceleration</h3> | |
<p>We must configure a few things on our Raspberry Pi using the terminal before it will be able to utilize hardware acceleration.</p> | |
<p><strong class="step_numbering">1.</strong> We need to start by adding the jellyfin user to the “<code>video</code>” group.</p> | |
<p>The video group is a special system group with access to features such as the Raspberry Pi’s GPU.</p> | |
<p>The following usermod command will allow us to add the jellyfin user to the video group.</p> | |
<pre class="wp-block-code"><code class="header terminal">sudo usermod -aG video jellyfin</code></pre> | |
<p>The <code>-a</code> argument says that we want to add an attribute to a user. The capital <code>G</code> tells usermod that we want to add the <code>video</code> group to <code>jellyfin</code>.</p> | |
<p><strong class="step_numbering">2.</strong> As hardware acceleration can be fairly memory intensive, we should increase the amount of memory available to the GPU.</p> | |
<p>Use the <a href="https://pimylifeup.com/nano-text-editor/">nano text editor</a> to begin modifying the boot configuration file.</p> | |
<pre class="wp-block-code"><code class="header terminal">sudo nano /boot/config.txt</code></pre> | |
<p>Be careful when modifying this file, as you could potentially stop your Pi from booting. However, it is easy to fix from another device.</p> | |
<p><strong class="step_numbering">3.</strong> Within this file, you need to add the following line.</p> | |
<p>This line tells the operating system how much memory it should dedicate to the GPU.</p> | |
<p>More video memory allows the Raspberry Pi’s GPU to store more data, allowing it to handle tasks that consume a considerable amount of video memory.</p> | |
<p><strong class="border-bottom d-block">Raspberry Pi 4</strong></p> | |
<pre class="wp-block-code"><code class="header add-bottom">gpu_mem=320</code></pre> | |
<p><strong class="border-bottom d-block">Raspberry Pi 3</strong></p> | |
<pre class="wp-block-code"><code class="header add-bottom">gpu_mem=256</code></pre> | |
<p>We give the Raspberry Pi 4 more video memory to handle the transcoding of 4k HEVC files. The Pi 3’s processor won’t handle these files very well, so 256mb of video ram should suffice.</p> | |
<p>You can try increasing the amount of memory dedicated to the GPU to see if it improves your performance further.</p> | |
<p><strong class="step_numbering">4.</strong> Once you have added the relevant line to the file, you can save and quit by pressing <kbd>CTRL</kbd> + <kbd>X</kbd>, followed by <kbd>Y</kbd>, then the <kbd>ENTER</kbd> key.</p> | |
<p><strong class="step_numbering">5.</strong> For the memory allocation changes to take effect, you will need to restart your Raspberry Pi.</p> | |
<p>Restarting your Pi is as straightforward as running the command below.</p> | |
<pre class="wp-block-code"><code class="header terminal">sudo reboot</code></pre> | |
<p><strong class="step_numbering">6.</strong> Once your Raspberry Pi finishes rebooting, we can check the memory split.</p> | |
<p>Run the following two commands to see how much RAM has been allocated to the CPU and GPU.</p> | |
<pre class="wp-block-code"><code class="header terminal">vcgencmd get_mem arm | |
vcgencmd get_mem gpu</code></pre> | |
<p>Below is an example of what your memory split should now look like.</p> | |
<pre class="wp-block-code"><code class="header" heading-text="Example Memory Split">arm=704M | |
gpu=320M</code></pre> | |
<h3 class="lbb-section-break h4 mt-5 wp-block-heading" id="configuringjellyfin">Telling Jellyfin to use Hardware Acceleration</h3> | |
<p>With our Raspberry Pi now better configured for Jellyfin’s hardware acceleration, we now need to reconfigure the media server.</p> | |
<p>For this process, you will need to have access to Jellyfin’s web interface.</p> | |
<p><strong class="step_numbering">1.</strong> While on the web interface’s front page, you need to change to the user settings page.</p> | |
<p>You can get to the user settings by clicking the person icon in the window’s top-left corner.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-11-Open-User-Settings-Page.jpg" alt="Open User Settings Page" class="wp-image-33463717" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-11-Open-User-Settings-Page.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-11-Open-User-Settings-Page-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-11-Open-User-Settings-Page-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-11-Open-User-Settings-Page-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">2.</strong> Within the user settings, we need to change to the media servers dashboard.</p> | |
<p>To change to the dashboard, <kbd>click</kbd> the “<code>Dashboard</code>” option.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-12-Opening-the-Dashboard-Settings.jpg" alt="Opening Raspberry Pi Jellyfin's Dashboard" class="wp-image-33463718" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-12-Opening-the-Dashboard-Settings.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-12-Opening-the-Dashboard-Settings-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-12-Opening-the-Dashboard-Settings-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-12-Opening-the-Dashboard-Settings-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">3.</strong> Now that we are in our Raspberry Pi’s Jellyfin dashboard, we need to change to the “<code>Playback</code>” tab.</p> | |
<p>You can find this option in the left-hand sidebar.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-13-Change-to-playback-tab.jpg" alt="Jellyfin Change to Playback Tab" class="wp-image-33463719" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-13-Change-to-playback-tab.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-13-Change-to-playback-tab-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-13-Change-to-playback-tab-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-13-Change-to-playback-tab-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p>The “<code>Playback</code>” tab is where we can control how files are played from our Raspberry Pi to the Jellyfin clients.</p> | |
<p><strong class="step_numbering">4.</strong> Under the “Hardware acceleration” heading, you should see a select box (<strong>1.</strong>).</p> | |
<p><kbd>Click</kbd> this box, then select the “<code>Video4Linux2(V4L2)</code>” option (<strong>2.</strong>).</p> | |
<p>V4L2 is the only one of these options that have built-in support for the Raspberry Pi’s hardware.</p> | |
<figure class="wp-block-image aligncenter size-full"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-14-Setting-Hardware-Acceleration-to-V4Linux.jpg" alt="Enable V4L Hardware Acceleration on Raspberry Pi" class="wp-image-33475036" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-14-Setting-Hardware-Acceleration-to-V4Linux.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-14-Setting-Hardware-Acceleration-to-V4Linux-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-14-Setting-Hardware-Acceleration-to-V4Linux-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-14-Setting-Hardware-Acceleration-to-V4Linux-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">5.</strong> Now, the final thing you need to do is scroll down to the bottom of the window.</p> | |
<p>At the bottom, you can save the settings by <kbd>clicking</kbd> the “<code>Save</code>” button.</p> | |
<figure class="wp-block-image aligncenter"><img decoding="async" loading="lazy" width="728" height="400" src="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-15-Saving-Playback-Settings.jpg" alt="Save Jellyfin Playback Settings" class="wp-image-33463721" srcset="https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-15-Saving-Playback-Settings.jpg 728w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-15-Saving-Playback-Settings-300x165.jpg 300w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-15-Saving-Playback-Settings-227x125.jpg 227w, https://pimylifeup.com/wp-content/uploads/2021/02/Jellyfin-on-the-Raspberry-Pi-15-Saving-Playback-Settings-600x330.jpg 600w" sizes="(max-width: 728px) 100vw, 728px" /></figure> | |
<p><strong class="step_numbering">6.</strong> You should now have successfully enabled Jellyfin hardware acceleration on your Raspberry Pi.</p> | |
<h2 class="lbb-section-break mt-5 text-center wp-block-heading" id="permission">Dealing with Permission Issues</h2> | |
<p>One problem you may encounter when dealing with a media server such as Jellyfin is potential permission issues.</p> | |
<p>The <a href="https://pimylifeup.com/file-permissions-in-linux/">Linux permission system</a> can sometimes be a bit picky, especially when dealing with mounted drives.</p> | |
<p>In this section, we will show you how to set the permissions for an ext4 based drive.</p> | |
<p>Alternative drive format types such as <code>NTFS</code> or <code>FAT</code> will require you to adjust how you are mounting the drive. These drive format types were never designed with the Linux permission system in mind.</p> | |
<p><strong class="step_numbering">1.</strong> First, work out the directory where you are storing your media files.</p> | |
<p>You will need to know the exact path so the script knows what directory it needs to modify permissions for.</p> | |
<p>For our example we will use a directory such as “<code>/home/pi/media/movies</code>“.</p> | |
<p><strong class="step_numbering">2.</strong> For the commands that we will use, we need to be utilizing the superuser.</p> | |
<p>We can change to the superuser by running the following command on your device.</p> | |
<pre class="wp-block-code"><code class="header terminal">sudo su</code></pre> | |
<p><strong class="step_numbering">3.</strong> With a directory path handy, we can now utilize two special commands.</p> | |
<p>Run the following two commands on your device. Make sure that you replace “<code>[YOURDRIVEPATH]</code>” with the path you want to try correcting the permissions on.</p> | |
<pre class="wp-block-code"><code class="header admin">find <strong>[YOURDRIVEPATH]</strong> -type d -exec chmod 755 {} \; | |
find <strong>[YOURDRIVEPATH]</strong> -type f -exec chmod 644 {} \;</code></pre> | |
<p>These commands will loop through your files and directories and re-adjust the permissions so that our <code>jellyfin</code> user should be able to read the media files within it.</p> | |
<p><strong class="step_numbering">4.</strong> Once you have run the previous two commands, we should exit out of the superuser.</p> | |
<p>To exit, all you need to do is run the following command on your Raspberry Pi.</p> | |
<pre class="wp-block-code"><code class="header admin">exit</code></pre> | |
<h2 class="lbb-section-break mt-5 text-center wp-block-heading" id="conclusion">Conclusion</h2> | |
<p>You should now have the Jellyfin media server installed on your Raspberry Pi.</p> | |
<p>We have shown you how to install the software, do the initial setup experience, and even enable hardware acceleration.</p> | |
<p>Jellyfin is a strong alternative to Plex and Emby that offers an entirely open-source and free experience.</p> | |
<p>The media server sports many of the paid features of software such as Plex, including hardware acceleration and live TV support.</p> | |
<p>If you have had any issues with the steps provided in our guide, feel free to leave a comment below.</p> | |
<p>Be sure to check out some of our other <a href="https://pimylifeup.com/category/projects/media/">Raspberry Pi media projects</a> to find out what else you can do with your device.</p> | |
<form method="POST" action="javascript:void(0);" id="email_signup" class="email-optin mt-5 py-3 mb-2"> | |
<div class="form-group"> | |
<div class="email-form-title text-center">Weekly Updates Straight To Your Inbox</div> | |
<p class="mb-4 text-center">Receive our Raspberry Pi projects, coding tutorials, Linux guides and more!</p> | |
<p class="email-thank-you text-center h3" hidden="">Thank you for subscribing</p> | |
<div class="input-group input-group-email-field"> | |
<input type="email" name="email" placeholder="Email*" class="form-control" required autocomplete="email"> | |
</div> | |
<div class="input-group input-group-submit-button justify-content-center my-2"> | |
<button id="email_signup_submit" class="btn-lg w-100 btn-secondary" type="submit">Subscribe</button></div> | |
</div> | |
</form><div class="lbb-related-posts d-flex flex-wrap mt-5"><h2 class="col-12 border-bottom mb-3">Recommended</h2><div class="col-6 col-sm-4 blog-reel-post text-center"><a href="https://pimylifeup.com/php-basename/"><img width="227" height="125" src="https://pimylifeup.com/wp-content/uploads/2022/05/PHP-basename-function-Thumbnail-NoWM-227x125.png" class="d-block mx-auto wp-post-image" alt="PHP basename Function" loading="lazy" /><span class="post-highlight">Using the basename() Function in PHP</span></a></div><div class="col-6 col-sm-4 blog-reel-post text-center"><a href="https://pimylifeup.com/raspberry-pi-libreelec/"><img width="227" height="125" src="https://pimylifeup.com/wp-content/uploads/2020/05/Raspberry-Pi-LibreELEC-Thumbnail-NoWM-227x125.jpg" class="d-block mx-auto wp-post-image" alt="Raspberry Pi LibreELEC Thumbnail NoWM" loading="lazy" /><span class="post-highlight">Installing LibreELEC on the Raspberry Pi</span></a></div><div class="col-6 col-sm-4 blog-reel-post text-center"><a href="https://pimylifeup.com/raspberry-pi-telegram-cli/"><img width="227" height="125" src="https://pimylifeup.com/wp-content/uploads/2017/09/Raspberry-Pi-Telegram-no-wm-227x125.jpg" class="d-block mx-auto wp-post-image" alt="Raspberry Pi Telegram" loading="lazy" /><span class="post-highlight">Using Telegram CLI on the Raspberry Pi</span></a></div><div class="col-6 col-sm-4 blog-reel-post text-center"><a href="https://pimylifeup.com/raspberry-pi-network-install/"><img width="227" height="125" src="https://pimylifeup.com/wp-content/uploads/2022/03/Raspberry-Pi-Network-Install-Thumbnail-NoWM-227x125.jpg" class="d-block mx-auto wp-post-image" alt="Raspberry Pi Network Install" loading="lazy" /><span class="post-highlight">Network Install on the Raspberry Pi</span></a></div><div class="col-6 col-sm-4 blog-reel-post text-center"><a href="https://pimylifeup.com/raspberry-pi-terminal-sharing/"><img width="227" height="125" src="https://pimylifeup.com/wp-content/uploads/2018/05/Raspberry-Pi-Terminal-Sharing-no-wm-227x125.jpg" class="d-block mx-auto wp-post-image" alt="Raspberry Pi Terminal Sharing" loading="lazy" /><span class="post-highlight">How to Setup Raspberry Pi Terminal Sharing</span></a></div><div class="col-6 col-sm-4 blog-reel-post text-center"><a href="https://pimylifeup.com/raspberry-pi-ebook-server/"><img width="227" height="125" src="https://pimylifeup.com/wp-content/uploads/2017/10/Raspberry-Pi-eBook-Library-no-wm-1-227x125.jpg" class="d-block mx-auto wp-post-image" alt="Raspberry Pi eBook Server" loading="lazy" /><span class="post-highlight">Setting up your own Raspberry Pi eBook Server</span></a></div></div> </div><!-- .entry-content --> | |
</article><!-- #post-33463706 --> | |
<div id="comments" class="comments-area mt-5 pb-1"> | |
<h2 class="comments-title mb-3 fa-comments">10 Comments</h2><!-- .comments-title --> | |
<ol class="comment-list text-break"> | |
<li id="comment-88586" class="comment even thread-even depth-1"> | |
<article id="div-comment-88586" class="comment-body"> | |
<footer class="comment-meta row align-items-center"> | |
<div class="comment-avatar col-3 col-md-2 text-center"> | |
<img alt='Avatar for Ken' src="data:image/svg+xml,%3csvg viewBox='0 0 5 5' xmlns='http://www.w3.org/2000/svg' fill='hsl(203%2c 70%25%2c 50%25)'%3e%3crect width='100%25' height='100%25' fill='hsl(23%2c 50%25%2c 50%25)'/%3e%3crect x='2' y='1' width='1' height='1'/%3e%3crect x='2' y='3' width='1' height='1'/%3e%3crect x='2' y='4' width='1' height='1'/%3e%3crect x='1' width='1' height='1'/%3e%3crect x='3' width='1' height='1'/%3e%3crect x='1' y='1' width='1' height='1'/%3e%3crect x='3' y='1' width='1' height='1'/%3e%3crect x='1' y='2' width='1' height='1'/%3e%3crect x='3' y='2' width='1' height='1'/%3e%3crect x='1' y='3' width='1' height='1'/%3e%3crect x='3' y='3' width='1' height='1'/%3e%3crect width='1' height='1'/%3e%3crect x='4' width='1' height='1'/%3e%3crect y='4' width='1' height='1'/%3e%3crect x='4' y='4' width='1' height='1'/%3e%3c/svg%3e" class='avatar avatar-80 photo' height='80' width='80' loading='lazy'/> </div> | |
<div class="col-9 col-md-10"> | |
<div class="comment-author vcard row"> | |
<div class="col-12"> | |
<b class="fn">Ken</b> <span class="says">on</span> <time datetime="2022-12-30T13:33:24+11:00"> | |
December 30, 2022 at 1:33 pm </time> | |
</div> | |
</div><!-- .comment-author --> | |
</div> | |
</footer><!-- .comment-meta --> | |
<div class="comment-content row"> | |
<div class="col-12"> | |
<p>This was extremely helpful.Thank you!</p> | |
<div class="reply"><a rel='nofollow' class='comment-reply-link btn btn-primary' href='#comment-88586' data-commentid="88586" data-postid="33463706" data-belowelement="div-comment-88586" data-respondelement="respond" data-replyto="Reply to Ken" aria-label='Reply to Ken'>Reply</a></div> </div> | |
</div><!-- .comment-content --> | |
</article><!-- .comment-body --> | |
</li><!-- #comment-## --> | |
<li id="comment-87381" class="comment odd alt thread-odd thread-alt depth-1 parent"> | |
<article id="div-comment-87381" class="comment-body"> | |
<footer class="comment-meta row align-items-center"> | |
<div class="comment-avatar col-3 col-md-2 text-center"> | |
<img alt='Avatar for jstsmblaz' src="data:image/svg+xml,%3csvg viewBox='0 0 5 5' xmlns='http://www.w3.org/2000/svg' fill='hsl(90%2c 70%25%2c 50%25)'%3e%3crect width='100%25' height='100%25' fill='hsl(270%2c 50%25%2c 50%25)'/%3e%3crect x='2' y='1' width='1' height='1'/%3e%3crect x='2' y='4' width='1' height='1'/%3e%3crect x='1' width='1' height='1'/%3e%3crect x='3' width='1' height='1'/%3e%3crect x='1' y='1' width='1' height='1'/%3e%3crect x='3' y='1' width='1' height='1'/%3e%3crect x='1' y='2' width='1' height='1'/%3e%3crect x='3' y='2' width='1' height='1'/%3e%3crect x='1' y='3' width='1' height='1'/%3e%3crect x='3' y='3' width='1' height='1'/%3e%3crect width='1' height='1'/%3e%3crect x='4' width='1' height='1'/%3e%3crect y='2' width='1' height='1'/%3e%3crect x='4' y='2' width='1' height='1'/%3e%3crect y='3' width='1' height='1'/%3e%3crect x='4' y='3' width='1' height='1'/%3e%3c/svg%3e" class='avatar avatar-80 photo' height='80' width='80' loading='lazy'/> </div> | |
<div class="col-9 col-md-10"> | |
<div class="comment-author vcard row"> | |
<div class="col-12"> | |
<b class="fn">jstsmblaz</b> <span class="says">on</span> <time datetime="2022-09-18T18:06:43+10:00"> | |
September 18, 2022 at 6:06 pm </time> | |
</div> | |
</div><!-- .comment-author --> | |
</div> | |
</footer><!-- .comment-meta --> | |
<div class="comment-content row"> | |
<div class="col-12"> | |
<p>hi there, i was just wondering: i have an rpi4 running samba and transmission. can i add also jellyfin and still use samba?</p> | |
<div class="reply"><a rel='nofollow' class='comment-reply-link btn btn-primary' href='#comment-87381' data-commentid="87381" data-postid="33463706" data-belowelement="div-comment-87381" data-respondelement="respond" data-replyto="Reply to jstsmblaz" aria-label='Reply to jstsmblaz'>Reply</a></div> </div> | |
</div><!-- .comment-content --> | |
</article><!-- .comment-body --> | |
<ol class="children"> | |
<li id="comment-87394" class="comment byuser comment-author-death-droid bypostauthor even depth-2"> | |
<article id="div-comment-87394" class="comment-body"> | |
<footer class="comment-meta row align-items-center"> | |
<div class="comment-avatar col-3 col-md-2 text-center"> | |
<img alt='Avatar for Emmet' src="https://cdn.pimylifeup.com/wp-content/uploads/2022/04/pimylifeup_editor_avatar.png" class='avatar avatar-80 photo' height='80' width='80' loading='lazy'/> </div> | |
<div class="col-9 col-md-10"> | |
<div class="comment-author vcard row"> | |
<div class="col-12"> | |
<b class="fn">Emmet</b> <span class="says">on</span> <time datetime="2022-09-19T14:13:27+10:00"> | |
September 19, 2022 at 2:13 pm </time> | |
</div> | |
</div><!-- .comment-author --> | |
<div class="comment-buttons row"> | |
<div class="col-12"> | |
<span class="btn-sm btn btn-danger fa-shield-alt">Editor</span> | |
</div> | |
</div> | |
</div> | |
</footer><!-- .comment-meta --> | |
<div class="comment-content row"> | |
<div class="col-12"> | |
<p>Hi Jstmblaz,</p> | |
<p>Off the top of my head, you should be fine using Jellyfin alongside both of those. However, it is not something I’ve personally tested.</p> | |
<p>Cheers,<br /> | |
Emmet</p> | |
</div> | |
</div><!-- .comment-content --> | |
</article><!-- .comment-body --> | |
</li><!-- #comment-## --> | |
</ol><!-- .children --> | |
</li><!-- #comment-## --> | |
<li id="comment-86524" class="comment odd alt thread-even depth-1 parent"> | |
<article id="div-comment-86524" class="comment-body"> | |
<footer class="comment-meta row align-items-center"> | |
<div class="comment-avatar col-3 col-md-2 text-center"> | |
<img alt='Avatar for Joe Miller' src="data:image/svg+xml,%3csvg viewBox='0 0 5 5' xmlns='http://www.w3.org/2000/svg' fill='hsl(169%2c 70%25%2c 50%25)'%3e%3crect width='100%25' height='100%25' fill='hsl(349%2c 50%25%2c 50%25)'/%3e%3crect x='2' y='3' width='1' height='1'/%3e%3crect x='2' y='4' width='1' height='1'/%3e%3crect x='1' y='1' width='1' height='1'/%3e%3crect x='3' y='1' width='1' height='1'/%3e%3crect x='1' y='2' width='1' height='1'/%3e%3crect x='3' y='2' width='1' height='1'/%3e%3crect y='2' width='1' height='1'/%3e%3crect x='4' y='2' width='1' height='1'/%3e%3crect y='3' width='1' height='1'/%3e%3crect x='4' y='3' width='1' height='1'/%3e%3c/svg%3e" class='avatar avatar-80 photo' height='80' width='80' loading='lazy'/> </div> | |
<div class="col-9 col-md-10"> | |
<div class="comment-author vcard row"> | |
<div class="col-12"> | |
<b class="fn">Joe Miller</b> <span class="says">on</span> <time datetime="2022-07-18T01:40:19+10:00"> | |
July 18, 2022 at 1:40 am </time> | |
</div> | |
</div><!-- .comment-author --> | |
</div> | |
</footer><!-- .comment-meta --> | |
<div class="comment-content row"> | |
<div class="col-12"> | |
<p>This is a great and detailed article. I’m hitting problems at the early stages if anyone has any ideas. </p> | |
<p>The following packages have unmet dependencies:<br /> | |
jellyfin : Depends: jellyfin-ffmpeg5 (>= 5.0.0) but it is not installable<br /> | |
E: Unable to correct problems, you have held broken packages.</p> | |
<div class="reply"><a rel='nofollow' class='comment-reply-link btn btn-primary' href='#comment-86524' data-commentid="86524" data-postid="33463706" data-belowelement="div-comment-86524" data-respondelement="respond" data-replyto="Reply to Joe Miller" aria-label='Reply to Joe Miller'>Reply</a></div> </div> | |
</div><!-- .comment-content --> | |
</article><!-- .comment-body --> | |
<ol class="children"> | |
<li id="comment-86544" class="comment byuser comment-author-death-droid bypostauthor even depth-2"> | |
<article id="div-comment-86544" class="comment-body"> | |
<footer class="comment-meta row align-items-center"> | |
<div class="comment-avatar col-3 col-md-2 text-center"> | |
<img alt='Avatar for Emmet' src="https://cdn.pimylifeup.com/wp-content/uploads/2022/04/pimylifeup_editor_avatar.png" class='avatar avatar-80 photo' height='80' width='80' loading='lazy'/> </div> | |
<div class="col-9 col-md-10"> | |
<div class="comment-author vcard row"> | |
<div class="col-12"> | |
<b class="fn">Emmet</b> <span class="says">on</span> <time datetime="2022-07-18T20:14:32+10:00"> | |
July 18, 2022 at 8:14 pm </time> | |
</div> | |
</div><!-- .comment-author --> | |
<div class="comment-buttons row"> | |
<div class="col-12"> | |
<span class="btn-sm btn btn-danger fa-shield-alt">Editor</span> | |
</div> | |
</div> | |
</div> | |
</footer><!-- .comment-meta --> | |
<div class="comment-content row"> | |
<div class="col-12"> | |
<p>Hi Joe,</p> | |
<p>This is a strange issue, can you check the contents of the “/etc/apt/sources.list.d/jellyfin.list” file.</p> | |
<p>You can output the line using the “cat” command as shown below.</p> | |
<pre><code>/etc/apt/sources.list.d/jellyfin.list</code></pre> | |
<p>If you are using Raspberry Pi OS Bullseye it should look like what we have shown below.</p> | |
<pre><code>deb [signed-by=/usr/share/keyrings/jellyfin-archive-keyring.gpg arch=armhf] https://repo.jellyfin.org/debian bullseye main</code></pre> | |
<p>Cheers,<br /> | |
Emmet</p> | |
</div> | |
</div><!-- .comment-content --> | |
</article><!-- .comment-body --> | |
</li><!-- #comment-## --> | |
</ol><!-- .children --> | |
</li><!-- #comment-## --> | |
<li id="comment-86314" class="comment odd alt thread-odd thread-alt depth-1 parent"> | |
<article id="div-comment-86314" class="comment-body"> | |
<footer class="comment-meta row align-items-center"> | |
<div class="comment-avatar col-3 col-md-2 text-center"> | |
<img alt='Avatar for Julian M' src="data:image/svg+xml,%3csvg viewBox='0 0 5 5' xmlns='http://www.w3.org/2000/svg' fill='hsl(245%2c 70%25%2c 50%25)'%3e%3crect width='100%25' height='100%25' fill='hsl(65%2c 50%25%2c 50%25)'/%3e%3crect x='2' y='3' width='1' height='1'/%3e%3crect x='1' width='1' height='1'/%3e%3crect x='3' width='1' height='1'/%3e%3crect x='1' y='2' width='1' height='1'/%3e%3crect x='3' y='2' width='1' height='1'/%3e%3crect width='1' height='1'/%3e%3crect x='4' width='1' height='1'/%3e%3crect y='2' width='1' height='1'/%3e%3crect x='4' y='2' width='1' height='1'/%3e%3crect y='4' width='1' height='1'/%3e%3crect x='4' y='4' width='1' height='1'/%3e%3c/svg%3e" class='avatar avatar-80 photo' height='80' width='80' loading='lazy'/> </div> | |
<div class="col-9 col-md-10"> | |
<div class="comment-author vcard row"> | |
<div class="col-12"> | |
<b class="fn">Julian M</b> <span class="says">on</span> <time datetime="2022-06-22T07:04:14+10:00"> | |
June 22, 2022 at 7:04 am </time> | |
</div> | |
</div><!-- .comment-author --> | |
</div> | |
</footer><!-- .comment-meta --> | |
<div class="comment-content row"> | |
<div class="col-12"> | |
<p>Awesome guide, just one thing that needs a little updating concerns the hardware acceleration portion as OpenMAX OMX was recently dropped from Jellyfin – their latest doc mentions that they have migrated to V4L2 with a fallback on software de/encoding whenever it wouldn’t work.</p> | |
<div class="reply"><a rel='nofollow' class='comment-reply-link btn btn-primary' href='#comment-86314' data-commentid="86314" data-postid="33463706" data-belowelement="div-comment-86314" data-respondelement="respond" data-replyto="Reply to Julian M" aria-label='Reply to Julian M'>Reply</a></div> </div> | |
</div><!-- .comment-content --> | |
</article><!-- .comment-body --> | |
<ol class="children"> | |
<li id="comment-86545" class="comment byuser comment-author-death-droid bypostauthor even depth-2"> | |
<article id="div-comment-86545" class="comment-body"> | |
<footer class="comment-meta row align-items-center"> | |
<div class="comment-avatar col-3 col-md-2 text-center"> | |
<img alt='Avatar for Emmet' src="https://cdn.pimylifeup.com/wp-content/uploads/2022/04/pimylifeup_editor_avatar.png" class='avatar avatar-80 photo' height='80' width='80' loading='lazy'/> </div> | |
<div class="col-9 col-md-10"> | |
<div class="comment-author vcard row"> | |
<div class="col-12"> | |
<b class="fn">Emmet</b> <span class="says">on</span> <time datetime="2022-07-18T20:15:06+10:00"> | |
July 18, 2022 at 8:15 pm </time> | |
</div> | |
</div><!-- .comment-author --> | |
<div class="comment-buttons row"> | |
<div class="col-12"> | |
<span class="btn-sm btn btn-danger fa-shield-alt">Editor</span> | |
</div> | |
</div> | |
</div> | |
</footer><!-- .comment-meta --> | |
<div class="comment-content row"> | |
<div class="col-12"> | |
<p>Hi Julian,</p> | |
<p>Thank you for mentioning this issue. I haven updated that part of the guide so it now points to Video4Linux instead.</p> | |
<p>Cheers,<br /> | |
Emmet</p> | |
</div> | |
</div><!-- .comment-content --> | |
</article><!-- .comment-body --> | |
</li><!-- #comment-## --> | |
</ol><!-- .children --> | |
</li><!-- #comment-## --> | |
<li id="comment-76266" class="comment odd alt thread-even depth-1"> | |
<article id="div-comment-76266" class="comment-body"> | |
<footer class="comment-meta row align-items-center"> | |
<div class="comment-avatar col-3 col-md-2 text-center"> | |
<img alt='Avatar for xak47d' src="data:image/svg+xml,%3csvg viewBox='0 0 5 5' xmlns='http://www.w3.org/2000/svg' fill='hsl(316%2c 70%25%2c 50%25)'%3e%3crect width='100%25' height='100%25' fill='hsl(136%2c 50%25%2c 50%25)'/%3e%3crect x='2' width='1' height='1'/%3e%3crect x='2' y='1' width='1' height='1'/%3e%3crect x='2' y='4' width='1' height='1'/%3e%3crect x='1' y='2' width='1' height='1'/%3e%3crect x='3' y='2' width='1' height='1'/%3e%3crect x='1' y='3' width='1' height='1'/%3e%3crect x='3' y='3' width='1' height='1'/%3e%3crect x='1' y='4' width='1' height='1'/%3e%3crect x='3' y='4' width='1' height='1'/%3e%3crect width='1' height='1'/%3e%3crect x='4' width='1' height='1'/%3e%3crect y='1' width='1' height='1'/%3e%3crect x='4' y='1' width='1' height='1'/%3e%3c/svg%3e" class='avatar avatar-80 photo' height='80' width='80' loading='lazy'/> </div> | |
<div class="col-9 col-md-10"> | |
<div class="comment-author vcard row"> | |
<div class="col-12"> | |
<b class="fn">xak47d</b> <span class="says">on</span> <time datetime="2021-11-30T15:19:45+11:00"> | |
November 30, 2021 at 3:19 pm </time> | |
</div> | |
</div><!-- .comment-author --> | |
</div> | |
</footer><!-- .comment-meta --> | |
<div class="comment-content row"> | |
<div class="col-12"> | |
<p>This is the best guide available. Thank you!!!</p> | |
<div class="reply"><a rel='nofollow' class='comment-reply-link btn btn-primary' href='#comment-76266' data-commentid="76266" data-postid="33463706" data-belowelement="div-comment-76266" data-respondelement="respond" data-replyto="Reply to xak47d" aria-label='Reply to xak47d'>Reply</a></div> </div> | |
</div><!-- .comment-content --> | |
</article><!-- .comment-body --> | |
</li><!-- #comment-## --> | |
<li id="comment-64759" class="comment even thread-odd thread-alt depth-1 parent"> | |
<article id="div-comment-64759" class="comment-body"> | |
<footer class="comment-meta row align-items-center"> | |
<div class="comment-avatar col-3 col-md-2 text-center"> | |
<img alt='Avatar for dobber' src="data:image/svg+xml,%3csvg viewBox='0 0 5 5' xmlns='http://www.w3.org/2000/svg' fill='hsl(96%2c 70%25%2c 50%25)'%3e%3crect width='100%25' height='100%25' fill='hsl(276%2c 50%25%2c 50%25)'/%3e%3crect x='2' y='1' width='1' height='1'/%3e%3crect x='2' y='2' width='1' height='1'/%3e%3crect x='2' y='4' width='1' height='1'/%3e%3crect x='1' y='1' width='1' height='1'/%3e%3crect x='3' y='1' width='1' height='1'/%3e%3crect x='1' y='3' width='1' height='1'/%3e%3crect x='3' y='3' width='1' height='1'/%3e%3crect y='1' width='1' height='1'/%3e%3crect x='4' y='1' width='1' height='1'/%3e%3crect y='2' width='1' height='1'/%3e%3crect x='4' y='2' width='1' height='1'/%3e%3crect y='3' width='1' height='1'/%3e%3crect x='4' y='3' width='1' height='1'/%3e%3crect y='4' width='1' height='1'/%3e%3crect x='4' y='4' width='1' height='1'/%3e%3c/svg%3e" class='avatar avatar-80 photo' height='80' width='80' loading='lazy'/> </div> | |
<div class="col-9 col-md-10"> | |
<div class="comment-author vcard row"> | |
<div class="col-12"> | |
<b class="fn">dobber</b> <span class="says">on</span> <time datetime="2021-08-23T05:20:09+10:00"> | |
August 23, 2021 at 5:20 am </time> | |
</div> | |
</div><!-- .comment-author --> | |
</div> | |
</footer><!-- .comment-meta --> | |
<div class="comment-content row"> | |
<div class="col-12"> | |
<p>Per <a href="https://github.com/jellyfin/jellyfin/issues/2832" rel="nofollow ugc">https://github.com/jellyfin/jellyfin/issues/2832</a>, since the pi may be running ubuntu rather than debian, a better command for step 3 of “Preparing your Raspberry Pi for Jellyfin” is:<br /> | |
<code>echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list</code></p> | |
<div class="reply"><a rel='nofollow' class='comment-reply-link btn btn-primary' href='#comment-64759' data-commentid="64759" data-postid="33463706" data-belowelement="div-comment-64759" data-respondelement="respond" data-replyto="Reply to dobber" aria-label='Reply to dobber'>Reply</a></div> </div> | |
</div><!-- .comment-content --> | |
</article><!-- .comment-body --> | |
<ol class="children"> | |
<li id="comment-64823" class="comment byuser comment-author-death-droid bypostauthor odd alt depth-2"> | |
<article id="div-comment-64823" class="comment-body"> | |
<footer class="comment-meta row align-items-center"> | |
<div class="comment-avatar col-3 col-md-2 text-center"> | |
<img alt='Avatar for Emmet' src="https://cdn.pimylifeup.com/wp-content/uploads/2022/04/pimylifeup_editor_avatar.png" class='avatar avatar-80 photo' height='80' width='80' loading='lazy'/> </div> | |
<div class="col-9 col-md-10"> | |
<div class="comment-author vcard row"> | |
<div class="col-12"> | |
<b class="fn">Emmet</b> <span class="says">on</span> <time datetime="2021-08-24T21:53:19+10:00"> | |
August 24, 2021 at 9:53 pm </time> | |
</div> | |
</div><!-- .comment-author --> | |
<div class="comment-buttons row"> | |
<div class="col-12"> | |
<span class="btn-sm btn btn-danger fa-shield-alt">Editor</span> | |
</div> | |
</div> | |
</div> | |
</footer><!-- .comment-meta --> | |
<div class="comment-content row"> | |
<div class="col-12"> | |
<p>Hi Dobber,</p> | |
<p>Thank you for the suggestion, however, in the case of this tutorial it won’t really work.</p> | |
<p>The reason for this is that for Raspberry Pi OS we need to be using “Debian” as the ID. However the “ID” from the “<code>/etc/os-release</code>” file reports this as being <strong>Raspbian</strong>, so in that case this tutorial would broke.</p> | |
<p>They have the alternative <code>ID_LIKE</code>, but that value for both Ubuntu and Raspbian references “Debian”.</p> | |
<p>Cheers,<br /> | |
Emmet</p> | |
</div> | |
</div><!-- .comment-content --> | |
</article><!-- .comment-body --> | |
</li><!-- #comment-## --> | |
</ol><!-- .children --> | |
</li><!-- #comment-## --> | |
</ol><!-- .comment-list --> | |
<div class="row comment-form-outer"> <div id="respond" class="comment-respond col-12"> | |
<h3 id="reply-title" class="comment-reply-title">Leave a Reply <small><a rel="nofollow" id="cancel-comment-reply-link" class="btn btn-danger" href="/raspberry-pi-jellyfin/#respond" style="display:none;">Cancel reply</a></small></h3><form action="https://pimylifeup.com/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><p class="comment-notes"><span id="email-notes">Your email address will not be published.</span> <span class="required-field-message">Required fields are marked <span class="required">*</span></span></p><p class="comment-form-comment form-group"><textarea id="comment" class="form-control" name="comment" placeholder="Comment" rows="8" maxlength="65525" required></textarea></p><div class="row mb-4"><div class="comment-form-author col-sm-6 col-12"><label for="author">Name <span class="required">*</span></label> <input id="author" class="form-control" name="author" type="text" value="" size="30" maxlength="245" required='required' /></div> | |
<div class="comment-form-email col-sm-6 col-12"><label for="email">Email <span class="required">*</span></label> <input id="email" class="form-control" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" required='required' /></div></div> | |
<p class="comment-subscription-form"><input type="checkbox" name="subscribe_comments" id="subscribe_comments" value="subscribe" style="width: auto; -moz-appearance: checkbox; -webkit-appearance: checkbox;" /> <label class="subscribe-label" id="subscribe-label" for="subscribe_comments">Notify me of follow-up comments by email.</label></p><p class="form-submit"><input name="submit" type="submit" id="submit" class="btn btn-primary" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='33463706' id='comment_post_ID' /> | |
<input type='hidden' name='comment_parent' id='comment_parent' value='0' /> | |
</p><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="42c00ac3ca" /></p><p style="display: none !important;"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="170"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div><!-- #respond --> | |
</div> | |
</div><!-- #comments --> | |
</main><!-- #main --> | |
</div><!-- #primary --> | |
<aside id="sidebar" class="widget-area col-lg-4"> | |
</aside><!-- #secondary --> | |
</div> | |
</div><!-- #content --> | |
<footer id="colophon" class="site-footer"> | |
<div class="site-info container"> | |
<p><a href="#">↑ Back to Top</a></p> | |
<div class="social-nav mr-2"> | |
<span>© 2023 Pi My Life Up | </span> | |
<a href="https://www.facebook.com/pimylifeup" title="Follow us on Facebook" class="social-follow fa-facebook"></a><a href="https://twitter.com/pimylifeup" title="Follow us on Twitter" class="social-follow fa-twitter"></a><a href="https://www.pinterest.com/pimylifeup" title="Follow us on Pinterest" class="social-follow fa-pinterest"></a><a href="https://www.instagram.com/pimylifeup/" title="Follow us on Instagram" class="social-follow fa-instagram"></a><a href="https://www.youtube.com/channel/UC7NMrNa-RgcVeD__l_uPJTg" title="Subscribe to us on Youtube" class="social-follow fa-youtube-play"></a> </div> | |
<p><a href="https://pimylifeup.com/disclaimer-privacy-policy/">Disclaimer & Privacy Policy</a> | <a href="https://pimylifeup.com/about-us/">About us</a> | <a href="https://pimylifeup.com/contact/">Contact</a></p> | |
</div><!-- .site-info --> | |
</footer><!-- #colophon --> | |
</div><!-- #page --> | |
<script data-no-optimize='1' data-cfasync='false' id='cls-insertion-df1206d'>'use strict';(function(){function w(c,b){function a(){this.constructor=c}if("function"!==typeof b&&null!==b)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");T(c,b);c.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)}function F(c,b,a,d){var e=arguments.length,f=3>e?b:null===d?d=Object.getOwnPropertyDescriptor(b,a):d,g;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)f=Reflect.decorate(c,b,a,d);else for(var h=c.length-1;0<=h;h--)if(g= | |
c[h])f=(3>e?g(f):3<e?g(b,a,f):g(b,a))||f;return 3<e&&f&&Object.defineProperty(b,a,f),f}function C(c,b){if("object"===typeof Reflect&&"function"===typeof Reflect.metadata)return Reflect.metadata(c,b)}function M(c){var b="function"===typeof Symbol&&Symbol.iterator,a=b&&c[b],d=0;if(a)return a.call(c);if(c&&"number"===typeof c.length)return{next:function(){c&&d>=c.length&&(c=void 0);return{value:c&&c[d++],done:!c}}};throw new TypeError(b?"Object is not iterable.":"Symbol.iterator is not defined.");}function r(c, | |
b){var a="function"===typeof Symbol&&c[Symbol.iterator];if(!a)return c;c=a.call(c);var d,e=[];try{for(;(void 0===b||0<b--)&&!(d=c.next()).done;)e.push(d.value)}catch(g){var f={error:g}}finally{try{d&&!d.done&&(a=c["return"])&&a.call(c)}finally{if(f)throw f.error;}}return e}function x(c,b,a){if(a||2===arguments.length)for(var d=0,e=b.length,f;d<e;d++)!f&&d in b||(f||(f=Array.prototype.slice.call(b,0,d)),f[d]=b[d]);return c.concat(f||Array.prototype.slice.call(b))}function X(c,b){void 0===b&&(b={}); | |
b=b.insertAt;if(c&&"undefined"!==typeof document){var a=document.head||document.getElementsByTagName("head")[0],d=document.createElement("style");d.type="text/css";"top"===b?a.firstChild?a.insertBefore(d,a.firstChild):a.appendChild(d):a.appendChild(d);d.styleSheet?d.styleSheet.cssText=c:d.appendChild(document.createTextNode(c))}}window.adthriveCLS.buildDate="2023-07-21";var T=function(c,b){T=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,d){a.__proto__=d}||function(a,d){for(var e in d)Object.prototype.hasOwnProperty.call(d, | |
e)&&(a[e]=d[e])};return T(c,b)},y=function(){y=Object.assign||function(c){for(var b,a=1,d=arguments.length;a<d;a++){b=arguments[a];for(var e in b)Object.prototype.hasOwnProperty.call(b,e)&&(c[e]=b[e])}return c};return y.apply(this,arguments)},p=new (function(){function c(){}c.prototype.info=function(b,a){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,x([console.info,b,a],r(d),!1))};c.prototype.warn=function(b,a){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e]; | |
this.call.apply(this,x([console.warn,b,a],r(d),!1))};c.prototype.error=function(b,a){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,x([console.error,b,a],r(d),!1));this.sendErrorLogToCommandQueue.apply(this,x([b,a],r(d),!1))};c.prototype.event=function(b,a){for(var d,e=2;e<arguments.length;e++);"debug"===(null===(d=window.adthriveCLS)||void 0===d?void 0:d.bucket)&&this.info(b,a)};c.prototype.sendErrorLogToCommandQueue=function(b,a){for(var d=[],e=2;e<arguments.length;e++)d[e- | |
2]=arguments[e];window.adthrive=window.adthrive||{};window.adthrive.cmd=window.adthrive.cmd||[];window.adthrive.cmd.push(function(){void 0!==window.adthrive.logError&&"function"===typeof window.adthrive.logError&&window.adthrive.logError(b,a,d)}.bind(b,a,d))};c.prototype.call=function(b,a,d){for(var e=[],f=3;f<arguments.length;f++)e[f-3]=arguments[f];f=["%c".concat(a,"::").concat(d," ")];var g=["color: #999; font-weight: bold;"];0<e.length&&"string"===typeof e[0]&&f.push(e.shift());g.push.apply(g, | |
x([],r(e),!1));try{Function.prototype.apply.call(b,console,x([f.join("")],r(g),!1))}catch(h){console.error(h)}};return c}()),v=function(c,b){return null==c||c!==c?b:c},oa=function(c){var b=c.clientWidth;getComputedStyle&&(c=getComputedStyle(c,null),b-=parseFloat(c.paddingLeft||"0")+parseFloat(c.paddingRight||"0"));return b},pa=function(c){var b=c.offsetHeight,a=c.offsetWidth,d=c.getBoundingClientRect(),e=document.body,f=document.documentElement;c=Math.round(d.top+(window.pageYOffset||f.scrollTop|| | |
e.scrollTop)-(f.clientTop||e.clientTop||0));d=Math.round(d.left+(window.pageXOffset||f.scrollLeft||e.scrollLeft)-(f.clientLeft||e.clientLeft||0));return{top:c,left:d,bottom:c+b,right:d+a,width:a,height:b}},J=function(){var c=navigator.userAgent,b=/Tablet|iPad|Playbook|Nook|webOS|Kindle|Android (?!.*Mobile).*Safari/i.test(c);return/Mobi|iP(hone|od)|Opera Mini/i.test(c)&&!b},qa=function(c){void 0===c&&(c=document);return(c===document?document.body:c).getBoundingClientRect().top},ra=function(c){return c.includes(",")? | |
c.split(","):[c]},sa=function(c){void 0===c&&(c=document);c=c.querySelectorAll("article");return 0===c.length?null:(c=Array.from(c).reduce(function(b,a){return a.offsetHeight>b.offsetHeight?a:b}))&&c.offsetHeight>1.5*window.innerHeight?c:null},ta=function(c,b,a){void 0===a&&(a=document);var d=sa(a),e=d?[d]:[],f=[];c.forEach(function(h){var m=Array.from(a.querySelectorAll(h.elementSelector)).slice(0,h.skip);ra(h.elementSelector).forEach(function(k){var l=a.querySelectorAll(k);k=function(n){var t=l[n]; | |
if(b.map.some(function(B){return B.el.isEqualNode(t)}))return"continue";(n=t&&t.parentElement)&&n!==document.body?e.push(n):e.push(t);-1===m.indexOf(t)&&f.push({dynamicAd:h,element:t})};for(var q=0;q<l.length;q++)k(q)})});var g=qa(a);c=f.sort(function(h,m){return h.element.getBoundingClientRect().top-g-(m.element.getBoundingClientRect().top-g)});return[e,c]},ua=function(c,b,a){void 0===a&&(a=document);b=r(ta(c,b,a),2);c=b[0];b=b[1];if(0===c.length)throw Error("No Main Content Elements Found");return[Array.from(c).reduce(function(d, | |
e){return e.offsetHeight>d.offsetHeight?e:d})||document.body,b]},z;(function(c){c.amznbid="amznbid";c.amzniid="amzniid";c.amznp="amznp";c.amznsz="amznsz"})(z||(z={}));var D;(function(c){c.ThirtyThreeAcross="33across";c.AppNexus="appnexus";c.Amazon="amazon";c.Colossus="colossus";c.ColossusServer="col_ss";c.Conversant="conversant";c.Concert="concert";c.Criteo="criteo";c.GumGum="gumgum";c.IndexExchange="ix";c.Kargo="kargo";c.KargoServer="krgo_ss";c.MediaGrid="grid";c.MediaGridVideo="gridvid";c.Nativo= | |
"nativo";c.OpenX="openx";c.OpenXServer="opnx_ss";c.Pubmatic="pubmatic";c.PubmaticServer="pubm_ss";c.ResetDigital="resetdigital";c.Roundel="roundel";c.Rtbhouse="rtbhouse";c.Rubicon="rubicon";c.RubiconServer="rubi_ss";c.Sharethrough="sharethrough";c.Spotx="spotx";c.Teads="teads";c.Triplelift="triplelift";c.TripleliftServer="tripl_ss";c.TTD="ttd";c.Undertone="undertone";c.UndertoneServer="under_ss";c.Unruly="unruly";c.YahooSSP="yahoossp";c.Verizon="verizon";c.Yieldmo="yieldmo"})(D||(D={}));var Y;(function(c){c.Prebid= | |
"prebid";c.GAM="gam";c.Amazon="amazon";c.WebVitals="webvitals";c.Marmalade="marmalade";c.Floors="floors";c.CMP="cmp"})(Y||(Y={}));var Z;(function(c){c.bidCycleNonlazy="bidCycleNonlazy";c.instream="instream";c.lazy="lazy";c.refresh="refresh";c.session="session";c.crossDomain="crossdomain";c.highSequence="highsequence";c.lazyBidPool="lazyBidPool";c.rubicon="rubicon"})(Z||(Z={}));var aa;(function(c){c.bidCycleNonlazy="bc";c.instream="i";c.lazy="l";c.refresh="r";c.session="s";c.crossdomain="c";c.highsequence= | |
"hs";c.rubicon="rubi";c.lazyBidPool="lbp"})(aa||(aa={}));var K;(function(c){c.Desktop="desktop";c.Mobile="mobile"})(K||(K={}));var G;(function(c){c.Video_Collapse_Autoplay_SoundOff="Video_Collapse_Autoplay_SoundOff";c.Video_Individual_Autoplay_SOff="Video_Individual_Autoplay_SOff";c.Video_Coll_SOff_Smartphone="Video_Coll_SOff_Smartphone";c.Video_In_Post_ClicktoPlay_SoundOn="Video_In-Post_ClicktoPlay_SoundOn"})(G||(G={}));var ba;(ba||(ba={})).None="none";var E;(function(c){c.AdDensity="addensity"; | |
c.AdLayout="adlayout";c.FooterCloseButton="footerclose";c.Interstitial="interstitial";c.RemoveVideoTitleWrapper="removevideotitlewrapper";c.StickyOutstream="stickyoutstream";c.StickyOutstreamOnStickyPlayer="sospp";c.VideoAdvancePlaylistRelatedPlayer="videoadvanceplaylistrp";c.MobileStickyPlayerPosition="mspp"})(E||(E={}));var va=function(c,b){var a=c.adDensityEnabled;c=c.adDensityLayout.pageOverrides.find(function(d){return!!document.querySelector(d.pageSelector)&&(d[b].onePerViewport||"number"=== | |
typeof d[b].adDensity)});return a?!c:!0};z=function(){function c(){this._timeOrigin=0}c.prototype.resetTimeOrigin=function(){this._timeOrigin=window.performance.now()};c.prototype.now=function(){try{return Math.round(window.performance.now()-this._timeOrigin)}catch(b){return 0}};return c}();window.adthrive.windowPerformance=window.adthrive.windowPerformance||new z;z=window.adthrive.windowPerformance;var U=z.now.bind(z),ca=function(c){try{return{valid:!0,elements:document.querySelectorAll(c)}}catch(b){return y({valid:!1}, | |
b)}},da=function(c){return""===c?{valid:!0}:ca(c)},wa=function(c){var b=c.reduce(function(a,d){return d.weight?d.weight+a:a},0);return 0<c.length&&c.every(function(a){var d=a.value;a=a.weight;return!(void 0===d||null===d||"number"===typeof d&&isNaN(d)||!a)})&&100===b},xa=["siteId","siteName","adOptions","breakpoints","adUnits"],ea=function(){function c(){this._clsGlobalData=window.adthriveCLS}Object.defineProperty(c.prototype,"enabled",{get:function(){var b;if(b=!!this._clsGlobalData&&!!this._clsGlobalData.siteAds)a:{b= | |
this._clsGlobalData.siteAds;var a=void 0;void 0===a&&(a=xa);if(b){for(var d=0;d<a.length;d++)if(!b[a[d]]){b=!1;break a}b=!0}else b=!1}return b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"error",{get:function(){return!(!this._clsGlobalData||!this._clsGlobalData.error)},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"siteAds",{get:function(){return this._clsGlobalData.siteAds},set:function(b){this._clsGlobalData.siteAds=b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype, | |
"disableAds",{get:function(){return this._clsGlobalData.disableAds},set:function(b){this._clsGlobalData.disableAds=b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"enabledLocations",{get:function(){return this._clsGlobalData.enabledLocations},set:function(b){this._clsGlobalData.enabledLocations=b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"injectedFromPlugin",{get:function(){return this._clsGlobalData.injectedFromPlugin},set:function(b){this._clsGlobalData.injectedFromPlugin= | |
b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"injectedFromSiteAds",{get:function(){return this._clsGlobalData.injectedFromSiteAds},set:function(b){this._clsGlobalData.injectedFromSiteAds=b},enumerable:!1,configurable:!0});c.prototype.overwriteInjectedSlots=function(b){this._clsGlobalData.injectedSlots=b};c.prototype.setInjectedSlots=function(b){this._clsGlobalData.injectedSlots=this._clsGlobalData.injectedSlots||[];this._clsGlobalData.injectedSlots.push(b)};Object.defineProperty(c.prototype, | |
"injectedSlots",{get:function(){return this._clsGlobalData.injectedSlots},enumerable:!1,configurable:!0});c.prototype.setInjectedVideoSlots=function(b){this._clsGlobalData.injectedVideoSlots=this._clsGlobalData.injectedVideoSlots||[];this._clsGlobalData.injectedVideoSlots.push(b)};Object.defineProperty(c.prototype,"injectedVideoSlots",{get:function(){return this._clsGlobalData.injectedVideoSlots},enumerable:!1,configurable:!0});c.prototype.setInjectedScripts=function(b){this._clsGlobalData.injectedScripts= | |
this._clsGlobalData.injectedScripts||[];this._clsGlobalData.injectedScripts.push(b)};Object.defineProperty(c.prototype,"getInjectedScripts",{get:function(){return this._clsGlobalData.injectedScripts},enumerable:!1,configurable:!0});c.prototype.setExperiment=function(b,a,d){void 0===d&&(d=!1);this._clsGlobalData.experiments=this._clsGlobalData.experiments||{};this._clsGlobalData.siteExperiments=this._clsGlobalData.siteExperiments||{};(d?this._clsGlobalData.siteExperiments:this._clsGlobalData.experiments)[b]= | |
a};c.prototype.getExperiment=function(b,a){void 0===a&&(a=!1);return(a=a?this._clsGlobalData.siteExperiments:this._clsGlobalData.experiments)&&a[b]};c.prototype.setWeightedChoiceExperiment=function(b,a,d){void 0===d&&(d=!1);this._clsGlobalData.experimentsWeightedChoice=this._clsGlobalData.experimentsWeightedChoice||{};this._clsGlobalData.siteExperimentsWeightedChoice=this._clsGlobalData.siteExperimentsWeightedChoice||{};(d?this._clsGlobalData.siteExperimentsWeightedChoice:this._clsGlobalData.experimentsWeightedChoice)[b]= | |
a};c.prototype.getWeightedChoiceExperiment=function(b,a){var d,e;void 0===a&&(a=!1);return(a=a?null===(d=this._clsGlobalData)||void 0===d?void 0:d.siteExperimentsWeightedChoice:null===(e=this._clsGlobalData)||void 0===e?void 0:e.experimentsWeightedChoice)&&a[b]};Object.defineProperty(c.prototype,"branch",{get:function(){return this._clsGlobalData.branch},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"bucket",{get:function(){return this._clsGlobalData.bucket},enumerable:!1,configurable:!0}); | |
Object.defineProperty(c.prototype,"videoDisabledFromPlugin",{get:function(){return this._clsGlobalData.videoDisabledFromPlugin},set:function(b){this._clsGlobalData.videoDisabledFromPlugin=b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"targetDensityLog",{get:function(){return this._clsGlobalData.targetDensityLog},set:function(b){this._clsGlobalData.targetDensityLog=b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"removeVideoTitleWrapper",{get:function(){return this._clsGlobalData.siteAds.adOptions.removeVideoTitleWrapper}, | |
enumerable:!1,configurable:!0});return c}(),ya=function(){function c(){}c.getScrollTop=function(){return(window.pageYOffset||document.documentElement.scrollTop)-(document.documentElement.clientTop||0)};c.getScrollBottom=function(){return this.getScrollTop()+(document.documentElement.clientHeight||0)};c.shufflePlaylist=function(b){for(var a=b.length,d,e;0!==a;)e=Math.floor(Math.random()*b.length),--a,d=b[a],b[a]=b[e],b[e]=d;return b};c.isMobileLandscape=function(){return window.matchMedia("(orientation: landscape) and (max-height: 480px)").matches}; | |
c.playerViewable=function(b){b=b.getBoundingClientRect();return this.isMobileLandscape()?window.innerHeight>b.top+b.height/2&&0<b.top+b.height/2:window.innerHeight>b.top+b.height/2};c.playerVisible=function(b){b=b.getBoundingClientRect();return window.innerHeight>b.top};c.createQueryString=function(b){return Object.keys(b).map(function(a){return"".concat(a,"=").concat(b[a])}).join("&")};c.createEncodedQueryString=function(b){return Object.keys(b).map(function(a){return"".concat(a,"=").concat(encodeURIComponent(b[a]))}).join("&")}; | |
c.setMobileLocation=function(b){b=b||"bottom-right";"top-left"===b?b="adthrive-collapse-top-left":"top-right"===b?b="adthrive-collapse-top-right":"bottom-left"===b?b="adthrive-collapse-bottom-left":"bottom-right"===b?b="adthrive-collapse-bottom-right":"top-center"===b&&(b=J()?"adthrive-collapse-top-center":"adthrive-collapse-bottom-right");return b};c.addMaxResolutionQueryParam=function(b){var a=J()?"320":"1280";a="max_resolution=".concat(a);var d=r(String(b).split("?"),2);b=d[0];a=(d=d[1])?d+"&".concat(a): | |
a;return"".concat(b,"?").concat(a)};return c}(),za=function(){return function(c){this._clsOptions=c;this.removeVideoTitleWrapper=v(this._clsOptions.siteAds.adOptions.removeVideoTitleWrapper,!1);c=this._clsOptions.siteAds.videoPlayers;this.footerSelector=v(c&&c.footerSelector,"");this.players=v(c&&c.players.map(function(b){b.mobileLocation=ya.setMobileLocation(b.mobileLocation);return b}),[]);this.contextualSettings=c&&c.contextual}}(),Aa=function(){return function(c){this.contextualPlayerAdded=this.playlistPlayerAdded= | |
this.mobileStickyPlayerOnPage=!1;this.footerSelector="";this.removeVideoTitleWrapper=!1;this.videoAdOptions=new za(c);this.players=this.videoAdOptions.players;this.contextualSettings=this.videoAdOptions.contextualSettings;this.removeVideoTitleWrapper=this.videoAdOptions.removeVideoTitleWrapper;this.footerSelector=this.videoAdOptions.footerSelector}}();D=function(){return function(){}}();var H=function(c){function b(a){var d=c.call(this)||this;d._probability=a;return d}w(b,c);b.prototype.get=function(){if(0> | |
this._probability||1<this._probability)throw Error("Invalid probability: ".concat(this._probability));return Math.random()<this._probability};return b}(D);z=function(){function c(){this._clsOptions=new ea;this.shouldUseCoreExperimentsConfig=!1}c.prototype.setExperimentKey=function(b){void 0===b&&(b=!1);this._clsOptions.setExperiment(this.key,this.result,b)};return c}();var Ba=function(c){function b(){var a=c.call(this)||this;a._result=!1;a._choices=[{choice:!0},{choice:!1}];a.key="smhd100";a._result= | |
a.run();a.setExperimentKey();return a}w(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(.1)).get()};return b}(z),fa=function(c,b,a,d,e,f){c=Math.round(f-e);b=[];e=[];b.push("(",a.map(function(){return"%o"}).join(", "),")");e.push.apply(e,x([],r(a),!1));void 0!==d&&(b.push(" => %o"),e.push(d));b.push(" %c(".concat(c,"ms)"));e.push("color: #999;")},ha=function(c,b,a){var d=void 0!==a.get?a.get: | |
a.value;return function(){for(var e=[],f=0;f<arguments.length;f++)e[f]=arguments[f];try{var g=U(),h=d.apply(this,e);if(h instanceof Promise)return h.then(function(k){var l=U();fa(c,b,e,k,g,l);return Promise.resolve(k)}).catch(function(k){k.logged||(p.error(c,b,k),k.logged=!0);throw k;});var m=U();fa(c,b,e,h,g,m);return h}catch(k){throw k.logged||(p.error(c,b,k),k.logged=!0),k;}}},N=function(c,b){void 0===b&&(b=!1);return function(a){var d,e=Object.getOwnPropertyNames(a.prototype).filter(function(q){return b|| | |
0!==q.indexOf("_")}).map(function(q){return[q,Object.getOwnPropertyDescriptor(a.prototype,q)]});try{for(var f=M(e),g=f.next();!g.done;g=f.next()){var h=r(g.value,2),m=h[0],k=h[1];void 0!==k&&"function"===typeof k.value?a.prototype[m]=ha(c,m,k):void 0!==k&&void 0!==k.get&&"function"===typeof k.get&&Object.defineProperty(a.prototype,m,y(y({},k),{get:ha(c,m,k)}))}}catch(q){var l={error:q}}finally{try{g&&!g.done&&(d=f.return)&&d.call(f)}finally{if(l)throw l.error;}}}},Ca=function(c){function b(){var a= | |
c.call(this)||this;a._result=!1;a.key="conmax99";a._choices=[{choice:!0},{choice:!1}];a.weight=.02;a._result=a.run();a.setExperimentKey();return a}w(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(this.weight)).get()};return b=F([N("MaxContentExperiment"),C("design:paramtypes",[])],b)}(z),Da=function(c){function b(a){var d=c.call(this)||this;d._result=!1;d.key="parallax";d._choices=[{choice:!0}, | |
{choice:!1}];d.weight=.5;J()&&a.largeFormatsMobile&&(d._result=d.run(),d.setExperimentKey());return d}w(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(this.weight)).get()};return b=F([N("ParallaxAdsExperiment"),C("design:paramtypes",[Object])],b)}(z),Ea=function(c){function b(){var a=c.call(this)||this;a._result=!1;a._choices=[{choice:!0},{choice:!1}];a.key="mrsf";J()&&(a._result=a.run(), | |
a.setExperimentKey());return a}w(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(.2)).get()};return b}(z),Fa=[[728,90],[300,250],[300,600],[320,50],[970,250],[160,600],[300,1050],[336,280],[970,90],[300,50],[320,100],[468,60],[250,250],[120,240],[1,1],[300,300],[552,334],[300,420],[728,250],[320,300],[300,390]],Ga=[[300,600],[160,600]],Ha=new Map([["Footer",1],["Header",2],["Sidebar",3],["Content", | |
4],["Recipe",5],["Sidebar_sticky",6],["Below Post",7]]),Ia=function(c){return Fa.filter(function(b){b=r(b,2);var a=b[0],d=b[1];return c.some(function(e){e=r(e,2);var f=e[1];return a===e[0]&&d===f})})},Ja=function(c,b,a,d,e){b=r(b,2);var f=b[0],g=b[1],h=c.location;b=c.sequence;return"Footer"===h?!("phone"===a&&320===f&&100===g):"Header"===h?!(100<g&&d.result):"Recipe"===h?!(e.result&&"phone"===a&&(300===f&&390===g||320===f&&300===g)):"Sidebar"===h?(a=c.adSizes.some(function(m){return 300>=r(m,2)[1]}), | |
(d=300<g)&&!a?!0:9===b?!0:b&&5>=b?d?c.sticky:!0:!d):!0},Ka=function(c,b){var a=b.adUnits,d=b.adTypes?(new Da(b.adTypes)).result:!1,e=new Ba,f=new Ca,g=new Ea;return a.filter(function(h){return void 0!==h.dynamic&&h.dynamic.enabled}).map(function(h){var m=h.location.replace(/\s+/g,"_"),k="Sidebar"===m?0:2;return{auctionPriority:Ha.get(m)||8,location:m,sequence:v(h.sequence,1),sizes:Ia(h.adSizes).filter(function(l){return Ja(h,l,c,e,g)}).concat(d&&"Content"===h.location?Ga:[]),devices:h.devices,pageSelector:v(h.dynamic.pageSelector, | |
"").trim(),elementSelector:v(h.dynamic.elementSelector,"").trim(),position:v(h.dynamic.position,"beforebegin"),max:f.result&&"Content"===h.location?99:Math.floor(v(h.dynamic.max,0)),spacing:v(h.dynamic.spacing,0),skip:Math.floor(v(h.dynamic.skip,0)),every:Math.max(Math.floor(v(h.dynamic.every,1)),1),classNames:h.dynamic.classNames||[],sticky:"Footer"===h.location?!0:h.sticky,stickyOverlapSelector:v(h.stickyOverlapSelector,"").trim(),autosize:h.autosize,special:v(h.targeting,[]).filter(function(l){return"special"=== | |
l.key}).reduce(function(l,q){return l.concat.apply(l,x([],r(q.value),!1))},[]),lazy:v(h.dynamic.lazy,!1),lazyMax:v(h.dynamic.lazyMax,k),lazyMaxDefaulted:0===h.dynamic.lazyMax?!1:!h.dynamic.lazyMax}})},ia=function(c,b){var a=oa(b),d=c.sticky&&"Sidebar"===c.location;return c.sizes.filter(function(e){var f=d?e[1]<=window.innerHeight-100:!0;return(c.autosize?e[0]<=a||320>=e[0]:!0)&&f})},La=function(){return function(c){this.clsOptions=c;this.enabledLocations=["Below_Post","Content","Recipe","Sidebar"]}}(), | |
Ma=function(c){var b=document.body;c="adthrive-device-".concat(c);if(!b.classList.contains(c))try{b.classList.add(c)}catch(a){p.error("BodyDeviceClassComponent","init",{message:a.message}),b="classList"in document.createElement("_"),p.error("BodyDeviceClassComponent","init.support",{support:b})}},Na=function(c){return X('\n .adthrive-device-phone .adthrive-sticky-content {\n height: 450px !important;\n margin-bottom: 100px !important;\n }\n .adthrive-content.adthrive-sticky {\n position: -webkit-sticky;\n position: sticky !important;\n top: 42px !important;\n margin-top: 42px !important;\n }\n .adthrive-content.adthrive-sticky:after {\n content: "\u2014 Advertisement. Scroll down to continue. \u2014";\n font-size: 10pt;\n margin-top: 5px;\n margin-bottom: 5px;\n display:block;\n color: #888;\n }\n .adthrive-sticky-container {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n min-height:'.concat(c? | |
c:400,"px !important;\n margin: 10px 0 10px 0;\n background-color: #FAFAFA;\n padding-bottom:0px;\n }\n "))},Oa=function(c){X("\n .adthrive-recipe.adthrive-sticky {\n position: -webkit-sticky;\n position: sticky !important;\n top: 42px !important;\n margin-top: 42px !important;\n }\n .adthrive-recipe-sticky-container {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n min-height:".concat(c? | |
c:400,"px !important;\n margin: 10px 0 10px 0;\n background-color: #FAFAFA;\n padding-bottom:0px;\n }\n "))},ja=function(c){return c.some(function(b){return null!==document.querySelector(b)})},V=function(c){function b(a,d){void 0===a&&(a=[]);var e=c.call(this)||this;e._choices=a;e._default=d;return e}w(b,c);b.fromArray=function(a,d){return new b(a.map(function(e){e=r(e,2);return{choice:e[0],weight:e[1]}}),d)};b.prototype.addChoice=function(a,d){this._choices.push({choice:a,weight:d})}; | |
b.prototype.get=function(){var a,d=100*Math.random(),e=0;try{for(var f=M(this._choices),g=f.next();!g.done;g=f.next()){var h=g.value,m=h.choice;e+=h.weight;if(e>=d)return m}}catch(l){var k={error:l}}finally{try{g&&!g.done&&(a=f.return)&&a.call(f)}finally{if(k)throw k.error;}}return this._default};Object.defineProperty(b.prototype,"totalWeight",{get:function(){return this._choices.reduce(function(a,d){return a+d.weight},0)},enumerable:!1,configurable:!0});return b}(D),Pa=function(c){for(var b=5381, | |
a=c.length;a;)b=33*b^c.charCodeAt(--a);return b>>>0},O=new (function(){function c(){var b=this;this.name="StorageHandler";this.disable=!1;this.removeLocalStorageValue=function(a){window.localStorage.removeItem("adthrive_".concat(a.toLowerCase()))};this.getLocalStorageValue=function(a,d,e,f){void 0===d&&(d=!0);if(b.disable)return null;try{var g=window.localStorage.getItem("".concat(d?"adthrive_":"").concat(a.toLowerCase()));if(g){var h=JSON.parse(g),m=void 0!==e&&Date.now()-h.created>=e;if(h&&!m)return f&& | |
b.setLocalStorageValue(a,h.value,d),h.value}}catch(k){}return null};this.setLocalStorageValue=function(a,d,e){void 0===e&&(e=!0);try{e=e?"adthrive_":"";var f={value:d,created:Date.now()};window.localStorage.setItem("".concat(e).concat(a.toLowerCase()),JSON.stringify(f))}catch(g){}};this.isValidABGroupLocalStorageValue=function(a){return void 0!==a&&null!==a&&!("number"===typeof a&&isNaN(a))};this.getOrSetLocalStorageValue=function(a,d,e,f,g,h){void 0===f&&(f=!0);void 0===h&&(h=!0);e=b.getLocalStorageValue(a, | |
h,e,f);if(null!==e)return e;d=d();b.setLocalStorageValue(a,d,h);g&&g(d);return d};this.getOrSetABGroupLocalStorageValue=function(a,d,e,f,g){var h;void 0===f&&(f=!0);e=b.getLocalStorageValue("abgroup",!0,e,f);if(null!==e&&(f=e[a],b.isValidABGroupLocalStorageValue(f)))return f;d=d();a=y(y({},e),(h={},h[a]=d,h));b.setLocalStorageValue("abgroup",a);g&&g();return d}}c.prototype.init=function(){};return c}()),ka=function(){return function(c,b,a){var d=a.value;d&&(a.value=function(){for(var e=this,f=[], | |
g=0;g<arguments.length;g++)f[g]=arguments[g];g=Array.isArray(this._choices)?Pa(JSON.stringify(this._choices)).toString(16):null;var h=this.key?this.key.toLowerCase():"";g=g?"".concat(h,"_").concat(g):h;g=this.localStoragePrefix?"".concat(this.localStoragePrefix,"-").concat(g):g;h=O.getLocalStorageValue("branch");!1===(h&&h.enabled)&&O.removeLocalStorageValue(g);return O.getOrSetABGroupLocalStorageValue(g,function(){return d.apply(e,f)},864E5)})}};D=function(c){function b(){var a=null!==c&&c.apply(this, | |
arguments)||this;a._resultValidator=function(){return!0};return a}w(b,c);b.prototype._isValidResult=function(a){var d=this;return c.prototype._isValidResult.call(this,a,function(){return d._resultValidator(a)||"control"===a})};b.prototype.run=function(){if(!this.enabled)return p.error("CLSWeightedChoiceSiteExperiment","run","() => %o","No experiment config found. Defaulting to control."),"control";if(!this._mappedChoices||0===this._mappedChoices.length)return p.error("CLSWeightedChoiceSiteExperiment", | |
"run","() => %o","No experiment variants found. Defaulting to control."),"control";var a=(new V(this._mappedChoices)).get();if(this._isValidResult(a))return a;p.error("CLSWeightedChoiceSiteExperiment","run","() => %o","Invalid result from experiment choices. Defaulting to control.");return"control"};return b}(function(){function c(){}Object.defineProperty(c.prototype,"enabled",{get:function(){return void 0!==this.experimentConfig},enumerable:!1,configurable:!0});c.prototype._isValidResult=function(b, | |
a){void 0===a&&(a=function(){return!0});return a()&&O.isValidABGroupLocalStorageValue(b)};return c}());var la=function(){function c(b){var a=this,d,e;this.siteExperiments=[];this._clsOptions=b;this._device=J()?"mobile":"desktop";this.siteExperiments=null!==(e=null===(d=this._clsOptions.siteAds.siteExperiments)||void 0===d?void 0:d.filter(function(f){var g=f.key;var h=a._device;if(f){var m=!!f.enabled,k=null==f.dateStart||Date.now()>=f.dateStart,l=null==f.dateEnd||Date.now()<=f.dateEnd,q=null===f.selector|| | |
""!==f.selector&&!!document.querySelector(f.selector),n="mobile"===f.platform&&"mobile"===h;h="desktop"===f.platform&&"desktop"===h;n=null===f.platform||"all"===f.platform||n||h;(h="bernoulliTrial"===f.experimentType?1===f.variants.length:wa(f.variants))||p.error("ValidateSiteExperiment","util","experiment presented invalid choices for key:",f.key,f.variants);f=m&&k&&l&&q&&n&&h}else f=!1;a:switch(m=a._clsOptions.siteAds,g){case E.AdDensity:var t=va(m,a._device);break a;case E.StickyOutstream:var B, | |
A;t=(g=null===(A=null===(B=null===(t=m.videoPlayers)||void 0===t?void 0:t.partners)||void 0===B?void 0:B.stickyOutstream)||void 0===A?void 0:A.blockedPageSelectors)?!document.querySelector(g):!0;break a;case E.Interstitial:t=(t=m.adOptions.interstitialBlockedPageSelectors)?!document.querySelector(t):!0;break a;default:t=!0}return f&&t}))&&void 0!==e?e:[]}c.prototype.getSiteExperimentByKey=function(b){return this.siteExperiments.filter(function(a){return a.key.toLowerCase()===b.toLowerCase()})[0]}; | |
return c}(),Qa=function(c){function b(a){var d=c.call(this)||this;d._choices=[];d._mappedChoices=[];d._result="";d._resultValidator=function(e){return"string"===typeof e};d.key=E.AdLayout;d._clsSiteExperiments=new la(a);d.experimentConfig=d._clsSiteExperiments.getSiteExperimentByKey(d.key);d.enabled&&d.experimentConfig&&(d._choices=d.experimentConfig.variants,d._mappedChoices=d._mapChoices(),d._result=d.run(),a.setWeightedChoiceExperiment(d.key,d._result,!0));return d}w(b,c);Object.defineProperty(b.prototype, | |
"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){if(!this.enabled)return p.error("CLSAdLayoutSiteExperiment","run","() => %o","No experiment config found. Defaulting to empty class name."),"";var a=(new V(this._mappedChoices)).get();if(this._isValidResult(a))return a;p.error("CLSAdLayoutSiteExperiment","run","() => %o","Invalid result from experiment choices. Defaulting to empty class name.");return""};b.prototype._mapChoices=function(){return this._choices.map(function(a){return{weight:a.weight, | |
choice:a.value}})};F([ka(),C("design:type",Function),C("design:paramtypes",[]),C("design:returntype",void 0)],b.prototype,"run",null);return b}(D),Ra=function(c){function b(a){var d=c.call(this)||this;d._choices=[];d._mappedChoices=[];d._result="control";d._resultValidator=function(e){return"number"===typeof e};d.key=E.AdDensity;d._clsSiteExperiments=new la(a);d.experimentConfig=d._clsSiteExperiments.getSiteExperimentByKey(d.key);d.enabled&&d.experimentConfig&&(d._choices=d.experimentConfig.variants, | |
d._mappedChoices=d._mapChoices(),d._result=d.run(),a.setWeightedChoiceExperiment(d.key,d._result,!0));return d}w(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){if(!this.enabled)return p.error("CLSTargetAdDensitySiteExperiment","run","() => %o","No experiment config found. Defaulting to control."),"control";var a=(new V(this._mappedChoices)).get();if(this._isValidResult(a))return a;p.error("CLSTargetAdDensitySiteExperiment", | |
"run","() => %o","Invalid result from experiment choices. Defaulting to control.");return"control"};b.prototype._mapChoices=function(){return this._choices.map(function(a){var d=a.value;return{weight:a.weight,choice:"number"===typeof d?(d||0)/100:"control"}})};F([ka(),C("design:type",Function),C("design:paramtypes",[]),C("design:returntype",void 0)],b.prototype,"run",null);return b}(D),Sa=function(c){function b(){var a=c.call(this)||this;a._result=!1;a.key="scae";a._choices=[{choice:!0},{choice:!1}]; | |
a.weight=.99;a._result=a.run();a.setExperimentKey();return a}w(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(this.weight)).get()};return b=F([N("StickyContainerAdsExperiment"),C("design:paramtypes",[])],b)}(z),Ta=function(c){function b(){var a=c.call(this)||this;a._result=!1;a.key="scre";a._choices=[{choice:!0},{choice:!1}];a.weight=.99;a._result=a.run();a.setExperimentKey();return a}w(b, | |
c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(this.weight)).get()};return b=F([N("StickyContainerRecipeExperiment"),C("design:paramtypes",[])],b)}(z),Wa=function(){function c(b,a){this._clsOptions=b;this._adInjectionMap=a;this._mainContentHeight=this._recipeCount=0;this._mainContentDiv=null;this._totalAvailableElements=[];this._minDivHeight=250;this._densityDevice=K.Desktop;this._pubLog={onePerViewport:!1, | |
targetDensity:0,targetDensityUnits:0,combinedMax:0};this._densityMax=.99;this._smallerIncrementAttempts=0;this._absoluteMinimumSpacingByDevice=250;this._usedAbsoluteMinimum=!1;this._infPageEndOffset=0;this.locationMaxLazySequence=new Map([["Recipe",5]]);this.locationToMinHeight={Below_Post:"250px",Content:"250px",Recipe:"250px",Sidebar:"250px"};a=this._clsOptions.siteAds.breakpoints;var d=a.tablet;var e=window.innerWidth;a=e>=a.desktop?"desktop":e>=d?"tablet":"phone";this._device=a;this._config=new La(b); | |
this._clsOptions.enabledLocations=this._config.enabledLocations;this._clsTargetAdDensitySiteExperiment=this._clsOptions.siteAds.siteExperiments?new Ra(this._clsOptions):null;this._stickyContainerAdsExperiment=new Sa;this._stickyContainerRecipeExperiment=new Ta}c.prototype.start=function(){var b=this,a,d,e,f;try{Ma(this._device);var g=new Qa(this._clsOptions);if(g.enabled){var h=g.result.substring(1);if(/^[-_a-zA-Z]+[-_a-zA-Z0-9]*$/.test(h))try{document.body.classList.add(h)}catch(l){p.error("ClsDynamicAdsInjector", | |
"start","Uncaught CSS Class error: ".concat(l))}else p.error("ClsDynamicAdsInjector","start","Invalid class name: ".concat(h))}var m=Ka(this._device,this._clsOptions.siteAds).filter(function(l){return b._locationEnabled(l)}).filter(function(l){return l.devices.includes(b._device)}).filter(function(l){return 0===l.pageSelector.length||null!==document.querySelector(l.pageSelector)}),k=this.inject(m);(null===(d=null===(a=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===a?void 0:a.content)|| | |
void 0===d?0:d.enabled)&&this._stickyContainerAdsExperiment.result&&!ja(this._clsOptions.siteAds.adOptions.stickyContainerConfig.blockedSelectors||[])&&Na(null===(f=null===(e=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===e?void 0:e.content)||void 0===f?void 0:f.minHeight);k.forEach(function(l){return b._clsOptions.setInjectedSlots(l)})}catch(l){p.error("ClsDynamicAdsInjector","start",l)}};c.prototype.inject=function(b,a){void 0===a&&(a=document);this._densityDevice="desktop"=== | |
this._device?K.Desktop:K.Mobile;this._overrideDefaultAdDensitySettingsWithSiteExperiment();var d=this._clsOptions.siteAds,e=v(d.adDensityEnabled,!0),f=d.adDensityLayout&&e;d=b.filter(function(g){return f?"Content"!==g.location:g});b=b.filter(function(g){return f?"Content"===g.location:null});return x(x([],r(d.length?this._injectNonDensitySlots(d,a):[]),!1),r(b.length?this._injectDensitySlots(b,a):[]),!1)};c.prototype._injectNonDensitySlots=function(b,a){var d,e=this,f,g,h;void 0===a&&(a=document); | |
var m=[],k=[];this._stickyContainerRecipeExperiment.result&&b.some(function(u){return"Recipe"===u.location&&u.sticky})&&!ja((null===(f=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===f?void 0:f.blockedSelectors)||[])&&Oa(null===(h=null===(g=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===g?void 0:g.recipe)||void 0===h?void 0:h.minHeight);try{for(var l=M(b),q=l.next();!q.done;q=l.next()){var n=q.value,t=0,B=0,A=0;0<n.spacing&&(B=t=window.innerHeight*n.spacing); | |
var L=this._repeatDynamicAds(n),P=this.getElements(n.elementSelector,a);b=function(u){if(A+1>L.length)return"break";var I=P[u];if(0<t){u=pa(I).bottom;if(u<=B)return"continue";B=u+t}u=L[A];var ma="".concat(u.location,"_").concat(u.sequence);m.some(function(Ua){return Ua.name===ma})&&(A+=1);var R=Q.getDynamicElementId(u),S="adthrive-".concat(n.location.replace("_","-").toLowerCase()),Va="".concat(S,"-").concat(n.sequence);S=x([Q._stickyContainerRecipeExperiment.result&&"Recipe"===n.location&&n.sticky? | |
"adthrive-recipe-sticky-container":"",S,Va],r(n.classNames),!1);if(I=Q.addAd(I,R,n.position,S))R=ia(u,I),R.length&&(m.push({clsDynamicAd:n,dynamicAd:u,element:I,sizes:R,name:ma,infinite:a!==document}),k.push({location:u.location,element:I}),"Recipe"===n.location&&++Q._recipeCount,A+=1)};for(var Q=this,W=n.skip;W<P.length&&"break"!==b(W);W+=n.every);}}catch(u){var na={error:u}}finally{try{q&&!q.done&&(d=l.return)&&d.call(l)}finally{if(na)throw na.error;}}k.forEach(function(u){u.element.style.minHeight= | |
e.locationToMinHeight[u.location]});return m};c.prototype._injectDensitySlots=function(b,a){void 0===a&&(a=document);try{this._calculateMainContentHeightAndAllElements(b,a)}catch(h){return[]}var d=this._getDensitySettings(b,a);b=d.onePerViewport;var e=d.targetAll,f=d.targetDensityUnits,g=d.combinedMax;d=d.numberOfUnits;this._absoluteMinimumSpacingByDevice=b?window.innerHeight:this._absoluteMinimumSpacingByDevice;if(!d)return[];this._adInjectionMap.filterUsed();this._findElementsForAds(d,b,e,g,f,a); | |
return this._insertAds()};c.prototype._overrideDefaultAdDensitySettingsWithSiteExperiment=function(){var b;if(null===(b=this._clsTargetAdDensitySiteExperiment)||void 0===b?0:b.enabled)b=this._clsTargetAdDensitySiteExperiment.result,"number"===typeof b&&(this._clsOptions.siteAds.adDensityEnabled=!0,this._clsOptions.siteAds.adDensityLayout[this._densityDevice].adDensity=b)};c.prototype._getDensitySettings=function(b,a){void 0===a&&(a=document);var d=this._clsOptions.siteAds.adDensityLayout,e=this._determineOverrides(d.pageOverrides); | |
e=e.length?e[0]:d[this._densityDevice];d=e.adDensity;e=e.onePerViewport;var f=this._shouldTargetAllEligible(d),g=this._getTargetDensityUnits(d,f);b=this._getCombinedMax(b,a);a=Math.min.apply(Math,x([],r(x([this._totalAvailableElements.length,g],r(0<b?[b]:[]),!1)),!1));this._pubLog={onePerViewport:e,targetDensity:d,targetDensityUnits:g,combinedMax:b};return{onePerViewport:e,targetAll:f,targetDensityUnits:g,combinedMax:b,numberOfUnits:a}};c.prototype._determineOverrides=function(b){var a=this;return b.filter(function(d){var e= | |
da(d.pageSelector);return""===d.pageSelector||e.elements&&e.elements.length}).map(function(d){return d[a._densityDevice]})};c.prototype._shouldTargetAllEligible=function(b){return b===this._densityMax};c.prototype._getTargetDensityUnits=function(b,a){return a?this._totalAvailableElements.length:Math.floor(b*this._mainContentHeight/(1-b)/this._minDivHeight)-this._recipeCount};c.prototype._getCombinedMax=function(b,a){void 0===a&&(a=document);return v(b.filter(function(d){try{var e=a.querySelector(d.elementSelector)}catch(f){}return e}).map(function(d){return Number(d.max)+ | |
Number(d.lazyMaxDefaulted?0:d.lazyMax)}).sort(function(d,e){return e-d})[0],0)};c.prototype._elementLargerThanMainContent=function(b){return b.offsetHeight>=this._mainContentHeight&&1<this._totalAvailableElements.length};c.prototype._elementDisplayNone=function(b){var a=window.getComputedStyle(b,null).display;return a&&"none"===a||"none"===b.style.display};c.prototype._isBelowMaxes=function(b,a){return this._adInjectionMap.map.length<b&&this._adInjectionMap.map.length<a};c.prototype._findElementsForAds= | |
function(b,a,d,e,f,g){var h=this;void 0===g&&(g=document);this._clsOptions.targetDensityLog={onePerViewport:a,combinedMax:e,targetDensityUnits:f,targetDensityPercentage:this._pubLog.targetDensity,mainContentHeight:this._mainContentHeight,recipeCount:this._recipeCount,numberOfEls:this._totalAvailableElements.length};var m=function(k){var l;try{for(var q=M(h._totalAvailableElements),n=q.next();!n.done;n=q.next()){var t=n.value,B=t.dynamicAd,A=t.element;h._logDensityInfo(A,B.elementSelector,k);if(!(!d&& | |
h._elementLargerThanMainContent(A)||h._elementDisplayNone(A)))if(h._isBelowMaxes(e,f))h._checkElementSpacing({dynamicAd:B,element:A,insertEvery:k,targetAll:d,target:g});else break}}catch(P){var L={error:P}}finally{try{n&&!n.done&&(l=q.return)&&l.call(q)}finally{if(L)throw L.error;}}!h._usedAbsoluteMinimum&&5>h._smallerIncrementAttempts&&(++h._smallerIncrementAttempts,m(h._getSmallerIncrement(k)))};b=this._getInsertEvery(b,a,f);m(b)};c.prototype._getSmallerIncrement=function(b){b*=.6;b<=this._absoluteMinimumSpacingByDevice&& | |
(b=this._absoluteMinimumSpacingByDevice,this._usedAbsoluteMinimum=!0);return b};c.prototype._insertAds=function(){var b=this,a=[];this._adInjectionMap.filterUsed();this._adInjectionMap.map.forEach(function(d,e){var f=d.el,g=d.dynamicAd;d=d.target;e=Number(g.sequence)+e;var h=g.max;h=g.lazy&&e>h;g.sequence=e;g.lazy=h;if(f=b._addContentAd(f,g,d))g.used=!0,a.push(f)});return a};c.prototype._getInsertEvery=function(b,a,d){this._moreAvailableElementsThanUnitsToInject(d,b)?(this._usedAbsoluteMinimum=!1, | |
b=this._useWiderSpacing(d,b)):(this._usedAbsoluteMinimum=!0,b=this._useSmallestSpacing(a));return a&&window.innerHeight>b?window.innerHeight:b};c.prototype._useWiderSpacing=function(b,a){return this._mainContentHeight/Math.min(b,a)};c.prototype._useSmallestSpacing=function(b){return b&&window.innerHeight>this._absoluteMinimumSpacingByDevice?window.innerHeight:this._absoluteMinimumSpacingByDevice};c.prototype._moreAvailableElementsThanUnitsToInject=function(b,a){return this._totalAvailableElements.length> | |
b||this._totalAvailableElements.length>a};c.prototype._logDensityInfo=function(b,a,d){b=this._pubLog;b.onePerViewport;b.targetDensity;b.combinedMax};c.prototype._checkElementSpacing=function(b){var a=b.dynamicAd,d=b.element,e=b.insertEvery,f=b.targetAll;b=b.target;b=void 0===b?document:b;(this._isFirstAdInjected()||this._hasProperSpacing(d,a,f,e))&&this._markSpotForContentAd(d,y({},a),b)};c.prototype._isFirstAdInjected=function(){return!this._adInjectionMap.map.length};c.prototype._markSpotForContentAd= | |
function(b,a,d){void 0===d&&(d=document);this._adInjectionMap.add(b,this._getElementCoords(b,"beforebegin"===a.position||"afterbegin"===a.position),a,d);this._adInjectionMap.sort()};c.prototype._hasProperSpacing=function(b,a,d,e){var f="beforebegin"===a.position||"afterbegin"===a.position;a="beforeend"===a.position||"afterbegin"===a.position;d=d||this._isElementFarEnoughFromOtherAdElements(b,e,f);f=a||this._isElementNotInRow(b,f);b=-1===b.id.indexOf("AdThrive_".concat("Below_Post"));return d&&f&& | |
b};c.prototype._isElementFarEnoughFromOtherAdElements=function(b,a,d){b=this._getElementCoords(b,d);var e=!1;for(d=0;d<this._adInjectionMap.map.length&&!(e=this._adInjectionMap.map[d+1]&&this._adInjectionMap.map[d+1].coords,e=b-a>this._adInjectionMap.map[d].coords&&(!e||b+a<e));d++);return e};c.prototype._isElementNotInRow=function(b,a){var d=b.previousElementSibling,e=b.nextElementSibling;return(a=a?!d&&e||d&&b.tagName!==d.tagName?e:d:e)&&0===b.getBoundingClientRect().height?!0:a?b.getBoundingClientRect().top!== | |
a.getBoundingClientRect().top:!0};c.prototype._calculateMainContentHeightAndAllElements=function(b,a){void 0===a&&(a=document);b=r(ua(b,this._adInjectionMap,a),2);a=b[1];this._mainContentDiv=b[0];this._totalAvailableElements=a;b=this._mainContentDiv;a=void 0;void 0===a&&(a="div #comments, section .comments");this._mainContentHeight=(a=b.querySelector(a))?b.offsetHeight-a.offsetHeight:b.offsetHeight};c.prototype._getElementCoords=function(b,a){void 0===a&&(a=!1);b=b.getBoundingClientRect();return(a? | |
b.top:b.bottom)+window.scrollY};c.prototype._addContentAd=function(b,a,d){var e,f;void 0===d&&(d=document);var g=null,h="adthrive-".concat(a.location.replace("_","-").toLowerCase()),m="".concat(h,"-").concat(a.sequence),k=(null===(f=null===(e=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===e?void 0:e.content)||void 0===f?0:f.enabled)&&this._stickyContainerAdsExperiment.result?"adthrive-sticky-container":"";if(b=this.addAd(b,this.getDynamicElementId(a),a.position,x([k,h,m],r(a.classNames), | |
!1)))e=ia(a,b),e.length&&(b.style.minHeight=this.locationToMinHeight[a.location],g="".concat(a.location,"_").concat(a.sequence),g={clsDynamicAd:a,dynamicAd:a,element:b,sizes:e,name:g,infinite:d!==document});return g};c.prototype.getDynamicElementId=function(b){return"".concat("AdThrive","_").concat(b.location,"_").concat(b.sequence,"_").concat(this._device)};c.prototype.getElements=function(b,a){void 0===a&&(a=document);return a.querySelectorAll(b)};c.prototype.addAd=function(b,a,d,e){void 0===e&& | |
(e=[]);document.getElementById(a)||(e='<div id="'.concat(a,'" class="adthrive-ad ').concat(e.join(" "),'"></div>'),b.insertAdjacentHTML(d,e));return document.getElementById(a)};c.prototype._repeatDynamicAds=function(b){var a=[],d=b.lazy?v(this.locationMaxLazySequence.get(b.location),0):0,e=b.max,f=b.lazyMax;d=Math.max(e,0===d&&b.lazy?e+f:Math.min(Math.max(d-b.sequence+1,0),e+f));for(f=0;f<d;f++){var g=Number(b.sequence)+f,h=b.lazy&&f>=e;a.push(y(y({},b),{sequence:g,lazy:h}))}return a};c.prototype._locationEnabled= | |
function(b){b=this._clsOptions.enabledLocations.includes(b.location);var a=this._clsOptions.disableAds&&this._clsOptions.disableAds.all||document.body.classList.contains("adthrive-disable-all"),d=!document.body.classList.contains("adthrive-disable-content")&&!this._clsOptions.disableAds.reasons.has("content_plugin");return b&&!a&&d};return c}(),Xa=function(c){function b(a,d){var e=c.call(this,a,"ClsVideoInsertion")||this;e._videoConfig=a;e._clsOptions=d;e._IN_POST_SELECTOR=".adthrive-video-player"; | |
e._WRAPPER_BAR_HEIGHT=36;e._playersAddedFromPlugin=[];d.removeVideoTitleWrapper&&(e._WRAPPER_BAR_HEIGHT=0);return e}w(b,c);b.prototype.init=function(){this._initializePlayers()};b.prototype._wrapJWPlayerWithCLS=function(a,d,e){void 0===e&&(e=0);return a.parentNode?(d=this._createGenericCLSWrapper(.5625*a.offsetWidth,d,e),a.parentNode.insertBefore(d,a),d.appendChild(a),d):null};b.prototype._createGenericCLSWrapper=function(a,d,e){var f=document.createElement("div");f.id="cls-video-container-".concat(d); | |
f.className="adthrive";f.style.minHeight="".concat(a+e,"px");return f};b.prototype._getTitleHeight=function(a){a.innerText="Title";a.style.visibility="hidden";document.body.appendChild(a);var d=window.getComputedStyle(a),e=parseInt(d.height,10),f=parseInt(d.marginTop,10);d=parseInt(d.marginBottom,10);document.body.removeChild(a);return Math.min(e+d+f,50)};b.prototype._initializePlayers=function(){var a=document.querySelectorAll(this._IN_POST_SELECTOR);a.length&&this._initializeRelatedPlayers(a);this._shouldRunAutoplayPlayers()&& | |
this._determineAutoplayPlayers()};b.prototype._createStationaryRelatedPlayer=function(a,d){var e="mobile"===this._device?[400,225]:[640,360],f=G.Video_In_Post_ClicktoPlay_SoundOn;d&&a.mediaId&&(d=this._wrapJWPlayerWithCLS(d,a.mediaId),this._playersAddedFromPlugin.push(a.mediaId),d&&this._clsOptions.setInjectedVideoSlots({playerId:a.playerId,playerName:f,playerSize:e,element:d,type:"stationaryRelated"}))};b.prototype._createStickyRelatedPlayer=function(a,d){var e="mobile"===this._device?[400,225]: | |
[640,360],f=G.Video_Individual_Autoplay_SOff;this._stickyRelatedOnPage=!0;this._videoConfig.mobileStickyPlayerOnPage="mobile"===this._device;if(d&&a.position&&a.mediaId){var g=document.createElement("div");d.insertAdjacentElement(a.position,g);d=document.createElement("h3");d.style.margin="10px 0";d=this._getTitleHeight(d);d=this._wrapJWPlayerWithCLS(g,a.mediaId,this._WRAPPER_BAR_HEIGHT+d);this._playersAddedFromPlugin.push(a.mediaId);d&&this._clsOptions.setInjectedVideoSlots({playlistId:a.playlistId, | |
playerId:a.playerId,playerSize:e,playerName:f,element:g,type:"stickyRelated"})}};b.prototype._createPlaylistPlayer=function(a,d){var e=a.playlistId,f="mobile"===this._device?G.Video_Coll_SOff_Smartphone:G.Video_Collapse_Autoplay_SoundOff,g="mobile"===this._device?[400,225]:[640,360];this._videoConfig.mobileStickyPlayerOnPage=!0;var h=document.createElement("div");d.insertAdjacentElement(a.position,h);d=this._wrapJWPlayerWithCLS(h,e,this._WRAPPER_BAR_HEIGHT);this._playersAddedFromPlugin.push("playlist-".concat(e)); | |
d&&this._clsOptions.setInjectedVideoSlots({playlistId:a.playlistId,playerId:a.playerId,playerSize:g,playerName:f,element:h,type:"stickyPlaylist"})};b.prototype._isVideoAllowedOnPage=function(){var a=this._clsOptions.disableAds;if(a&&a.video){var d="";a.reasons.has("video_tag")?d="video tag":a.reasons.has("video_plugin")?d="video plugin":a.reasons.has("video_page")&&(d="command queue");p.error(d?"ClsVideoInsertionMigrated":"ClsVideoInsertion","isVideoAllowedOnPage",Error("DBP: Disabled by publisher via ".concat(d|| | |
"other")));return!1}return this._clsOptions.videoDisabledFromPlugin?!1:!0};return b}(function(c){function b(a,d){var e=c.call(this)||this;e._videoConfig=a;e._component=d;e._stickyRelatedOnPage=!1;e._contextualMediaIds=[];a=void 0;void 0===a&&(a=navigator.userAgent);a=/Windows NT|Macintosh/i.test(a);e._device=a?"desktop":"mobile";e._potentialPlayerMap=e.setPotentialPlayersMap();return e}w(b,c);b.prototype.setPotentialPlayersMap=function(){var a=this._videoConfig.players||[],d=this._filterPlayerMap(); | |
a=a.filter(function(e){return"stationaryRelated"===e.type&&e.enabled});d.stationaryRelated=a;return this._potentialPlayerMap=d};b.prototype._filterPlayerMap=function(){var a=this,d=this._videoConfig.players,e={stickyRelated:[],stickyPlaylist:[],stationaryRelated:[]};return d&&d.length?d.filter(function(f){var g;return null===(g=f.devices)||void 0===g?void 0:g.includes(a._device)}).reduce(function(f,g){f[g.type]||(p.event(a._component,"constructor","Unknown Video Player Type detected",g.type),f[g.type]= | |
[]);g.enabled&&f[g.type].push(g);return f},e):e};b.prototype._checkPlayerSelectorOnPage=function(a){var d=this;a=this._potentialPlayerMap[a].map(function(e){return{player:e,playerElement:d._getPlacementElement(e)}});return a.length?a[0]:{player:null,playerElement:null}};b.prototype._getOverrideElement=function(a,d,e){a&&d?(e=document.createElement("div"),d.insertAdjacentElement(a.position,e)):(d=this._checkPlayerSelectorOnPage("stickyPlaylist"),a=d.player,d=d.playerElement,a&&d&&(e=document.createElement("div"), | |
d.insertAdjacentElement(a.position,e)));return e};b.prototype._shouldOverrideElement=function(a){a=a.getAttribute("override-embed");return"true"===a||"false"===a?"true"===a:this._videoConfig.contextualSettings?this._videoConfig.contextualSettings.overrideEmbedLocation:!1};b.prototype._getPlacementElement=function(a){var d,e=da(a.pageSelector),f=ca(a.elementSelector);if(!e.valid)return p.error("VideoUtils","getPlacementElement",Error("".concat(a.pageSelector," is not a valid selector"))),null;if(a.pageSelector&& | |
(null===(d=e.elements)||void 0===d||!d.length))return p.event("VideoUtils","getPlacementElement",Error("PSNF: ".concat(a.pageSelector," does not exist on the page"))),null;if(!f.valid)return p.error("VideoUtils","getPlacementElement",Error("".concat(a.elementSelector," is not a valid selector"))),null;if(f.elements.length>a.skip)return f.elements[a.skip];p.event("VideoUtils","getPlacementElement",Error("ESNF: ".concat(a.elementSelector," does not exist on the page")));return null};b.prototype._getEmbeddedPlayerType= | |
function(a){(a=a.getAttribute("data-player-type"))&&"default"!==a||(a=this._videoConfig.contextualSettings?this._videoConfig.contextualSettings.defaultPlayerType:"static");this._stickyRelatedOnPage&&(a="static");return a};b.prototype._getUnusedMediaId=function(a){return(a=a.getAttribute("data-video-id"))&&!this._contextualMediaIds.includes(a)?(this._contextualMediaIds.push(a),a):!1};b.prototype._createRelatedPlayer=function(a,d,e){"collapse"===d?this._createCollapsePlayer(a,e):"static"===d&&this._createStaticPlayer(a, | |
e)};b.prototype._createCollapsePlayer=function(a,d){var e=this._checkPlayerSelectorOnPage("stickyRelated"),f=e.player;e=e.playerElement;var g=f?f:this._potentialPlayerMap.stationaryRelated[0];g&&g.playerId?(this._shouldOverrideElement(d)&&(d=this._getOverrideElement(f,e,d)),d=document.querySelector("#cls-video-container-".concat(a," > div"))||d,this._createStickyRelatedPlayer(y(y({},g),{mediaId:a}),d)):p.error(this._component,"_createCollapsePlayer","No video player found")};b.prototype._createStaticPlayer= | |
function(a,d){this._potentialPlayerMap.stationaryRelated.length&&this._potentialPlayerMap.stationaryRelated[0].playerId?this._createStationaryRelatedPlayer(y(y({},this._potentialPlayerMap.stationaryRelated[0]),{mediaId:a}),d):p.error(this._component,"_createStaticPlayer","No video player found")};b.prototype._shouldRunAutoplayPlayers=function(){return this._isVideoAllowedOnPage()&&(this._potentialPlayerMap.stickyRelated.length||this._potentialPlayerMap.stickyPlaylist.length)?!0:!1};b.prototype._determineAutoplayPlayers= | |
function(){var a=this._component,d="VideoManagerComponent"===a,e=this._config;if(this._stickyRelatedOnPage)p.event(a,"stickyRelatedOnPage",d&&{device:e&&e.context.device,isDesktop:this._device}||{});else{var f=this._checkPlayerSelectorOnPage("stickyPlaylist"),g=f.player;f=f.playerElement;g&&g.playerId&&g.playlistId&&f?this._createPlaylistPlayer(g,f):p.event(a,"noStickyPlaylist",d&&{vendor:"none",device:e&&e.context.device,isDesktop:this._device}||{})}};b.prototype._initializeRelatedPlayers=function(a){for(var d= | |
0;d<a.length;d++){var e=a[d],f=this._getEmbeddedPlayerType(e),g=this._getUnusedMediaId(e);g&&this._createRelatedPlayer(g,f,e)}};return b}(function(){function c(){}Object.defineProperty(c.prototype,"enabled",{get:function(){return!0},enumerable:!1,configurable:!0});return c}())),Ya=function(c){function b(){return null!==c&&c.apply(this,arguments)||this}w(b,c);return b}(function(){function c(){this._map=[]}c.prototype.add=function(b,a,d,e){void 0===e&&(e=document);this._map.push({el:b,coords:a,dynamicAd:d, | |
target:e})};Object.defineProperty(c.prototype,"map",{get:function(){return this._map},enumerable:!1,configurable:!0});c.prototype.sort=function(){this._map.sort(function(b,a){return b.coords-a.coords})};c.prototype.filterUsed=function(){this._map=this._map.filter(function(b){return!b.dynamicAd.used})};c.prototype.reset=function(){this._map=[]};return c}());try{(function(){var c=new ea;c&&c.enabled&&((new Wa(c,new Ya)).start(),(new Xa(new Aa(c),c)).init())})()}catch(c){p.error("CLS","pluginsertion-iife", | |
c),window.adthriveCLS&&(window.adthriveCLS.injectedFromPlugin=!1)}})() | |
</script><script data-no-optimize="1" data-cfasync="false">(function () {var clsElements = document.querySelectorAll("script[id^='cls-']"); window.adthriveCLS && clsElements && clsElements.length === 0 ? window.adthriveCLS.injectedFromPlugin = false : ""; })();</script><script src='https://pimylifeup.com/wp-content/themes/lbb-theme-pimylifeup/js/bootstrap-native.min.js?ver=1.3.29' id='lbb-theme-bootstrap-js'></script> | |
<script src='https://pimylifeup.com/wp-includes/js/comment-reply.min.js?ver=6.2.2' id='comment-reply-js'></script> | |
<script defer src='https://stats.wp.com/e-202329.js' id='jetpack-stats-js'></script> | |
<script id='jetpack-stats-js-after'> | |
_stq = window._stq || []; | |
_stq.push([ "view", {v:'ext',blog:'75265728',post:'33463706',tz:'10',srv:'pimylifeup.com',j:'1:12.3'} ]); | |
_stq.push([ "clickTrackerInit", "75265728", "33463706" ]); | |
</script> | |
<script>!function(){"use strict";!function(e){if(-1===e.cookie.indexOf("__adblocker")){e.cookie="__adblocker=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";var t=new XMLHttpRequest;t.open("GET","https://ads.adthrive.com/abd/abd.js",!0),t.onreadystatechange=function(){if(XMLHttpRequest.DONE===t.readyState)if(200===t.status){var a=e.createElement("script");a.innerHTML=t.responseText,e.getElementsByTagName("head")[0].appendChild(a)}else{var n=new Date;n.setTime(n.getTime()+3e5),e.cookie="__adblocker=true; expires="+n.toUTCString()+"; path=/"}},t.send()}}(document)}(); | |
</script><script>!function(){"use strict";var e;e=document,function(){var t,n;function r(){var t=e.createElement("script");t.src="https://cafemedia-com.videoplayerhub.com/galleryplayer.js",e.head.appendChild(t)}function a(){var t=e.cookie.match("(^|[^;]+)\\s*__adblocker\\s*=\\s*([^;]+)");return t&&t.pop()}function c(){clearInterval(n)}return{init:function(){var e;"true"===(t=a())?r():(e=0,n=setInterval((function(){100!==e&&"false"!==t||c(),"true"===t&&(r(),c()),t=a(),e++}),50))}}}().init()}(); | |
</script> | |
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8b253dfea2ab4077af8c6f58422dfbfd1689876627854" integrity="sha512-bjgnUKX4azu3dLTVtie9u6TKqgx29RBwfj3QXYt5EKfWM/9hPSAI/4qcV5NACjwAo8UtTeWefx6Zq5PHcMm7Tg==" data-cf-beacon='{"rayId":"7ecbd67c6fd23de4","token":"d72025be5ff748259ccab89dcaeb9214","version":"2023.7.0","si":100}' crossorigin="anonymous"></script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment