1"use strict";(self.webpackChunkpinepods_docs=self.webpackChunkpinepods_docs||[]).push([[2547],{28453:(e,o,n)=>{n.d(o,{R:()=>a,x:()=>l});var s=n(96540);const d={},t=s.createContext(d);function a(e){const o=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(o):{...o,...e}},[o,e])}function l(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:a(e.components),s.createElement(t.Provider,{value:o},e.children)}},71346:(e,o,n)=>{n.d(o,{A:()=>s});const s=n.p+"assets/images/downloadspage-8d4c65460f69d167e5331449a8e53cb5.png"},96958:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>i});const s=JSON.parse('{"id":"Features/Downloads","title":"Downloads","description":"Download episodes to keep them for offline listening \u2014 on a flight, a commute, or","source":"@site/docs/Features/Downloads.md","sourceDirName":"Features","slug":"/Features/Downloads","permalink":"/docs/next/Features/Downloads","draft":false,"unlisted":false,"editUrl":"https://github.com/madeofpendletonwool/Pinepods-Docs/blob/main/docs/Features/Downloads.md","tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"The Queue","permalink":"/docs/next/Features/Queue"},"next":{"title":"Auto-Download","permalink":"/docs/next/Features/AutoDownload"}}');var d=n(74848),t=n(28453);const a={},l="Downloads",r={},i=[{value:"Downloading episodes",id:"downloading-episodes",level:2},{value:"The downloads page",id:"the-downloads-page",level:2},{value:"Performance",id:"performance",level:2},{value:"Storage",id:"storage",level:2},{value:"Tips",id:"tips",level:2}];function c(e){const o={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(o.header,{children:(0,d.jsx)(o.h1,{id:"downloads",children:"Downloads"})}),"\n",(0,d.jsx)(o.p,{children:"Download episodes to keep them for offline listening \u2014 on a flight, a commute, or\nanywhere without a reliable connection. Downloaded episodes are stored on your server\n(and on-device for the mobile apps) and play back without streaming."}),"\n",(0,d.jsx)(o.p,{children:(0,d.jsx)(o.img,{alt:"The PinePods downloads page",src:n(71346).A+"",width:"1994",height:"1908"})}),"\n",(0,d.jsx)(o.h2,{id:"downloading-episodes",children:"Downloading episodes"}),"\n",(0,d.jsxs)(o.p,{children:["Download an individual episode from its options menu on any client. Want it to happen\nautomatically for a whole show? See ",(0,d.jsx)(o.a,{href:"/docs/next/Features/AutoDownload",children:"Auto-Download"}),"."]}),"\n",(0,d.jsx)(o.h2,{id:"the-downloads-page",children:"The downloads page"}),"\n",(0,d.jsxs)(o.p,{children:["The ",(0,d.jsx)(o.strong,{children:"Downloads"})," page is your hub for everything you've saved offline:"]}),"\n",(0,d.jsxs)(o.ul,{children:["\n",(0,d.jsx)(o.li,{children:"Browse all of your downloaded episodes in one place."}),"\n",(0,d.jsx)(o.li,{children:"Play, queue, or remove downloads."}),"\n",(0,d.jsx)(o.li,{children:"See download progress for items still in flight."}),"\n"]}),"\n",(0,d.jsxs)(o.p,{children:["On mobile, the downloads experience includes a ",(0,d.jsx)(o.strong,{children:"download dashboard"})," and a dedicated\n",(0,d.jsx)(o.strong,{children:"download activity"})," view with live progress tracking, so you can watch large downloads\ncomplete."]}),"\n",(0,d.jsx)(o.h2,{id:"performance",children:"Performance"}),"\n",(0,d.jsxs)(o.p,{children:["Downloads run ",(0,d.jsx)(o.strong,{children:"asynchronously in the background"})," \u2014 kicking off a large download won't\nfreeze the rest of the app. PinePods also sends proper ",(0,d.jsx)(o.code,{children:"Accept"})," and ",(0,d.jsx)(o.code,{children:"User-Agent"})," headers\nwhen fetching episodes, which prevents some podcast hosts from blocking the download."]}),"\n",(0,d.jsx)(o.h2,{id:"storage",children:"Storage"}),"\n",(0,d.jsxs)(o.p,{children:["On the server, downloads are written to the ",(0,d.jsx)(o.code,{children:"/opt/pinepods/downloads"})," directory, which\nyou mount as a volume in your Docker Compose file. Point it at wherever you want the\nfiles to live on your host:"]}),"\n",(0,d.jsx)(o.pre,{children:(0,d.jsx)(o.code,{className:"language-yaml",children:" volumes:\n - /home/user/pinepods/downloads:/opt/pinepods/downloads\n"})}),"\n",(0,d.jsx)(o.h2,{id:"tips",children:"Tips"}),"\n",(0,d.jsxs)(o.ul,{children:["\n",(0,d.jsxs)(o.li,{children:["Set the ",(0,d.jsx)(o.code,{children:"PUID"}),"/",(0,d.jsx)(o.code,{children:"PGID"})," environment variables to your host user so downloaded files stay\nreadable on the host system."]}),"\n",(0,d.jsxs)(o.li,{children:["Combine downloads with ",(0,d.jsx)(o.a,{href:"/docs/next/Features/AutoDownload",children:"Auto-Download"}),' and a "Fresh Releases"\n',(0,d.jsx)(o.a,{href:"/docs/next/Features/smart-playlists",children:"smart playlist"})," for a fully hands-off offline setup."]}),"\n"]})]})}function h(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,d.jsx)(o,{...e,children:(0,d.jsx)(c,{...e})}):c(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.