fimad / podstash Goto Github PK
View Code? Open in Web Editor NEWA podcast archive and mirroring tool.
License: Apache License 2.0
A podcast archive and mirroring tool.
License: Apache License 2.0
There's several tags that aren't included in the output feed xml. At least one of these is useful in some players as an icon for the podcast Namely itunes:image. Example follows.
This is part of the channel, not individual podcasts.
Get rid of the following errors on startup:
(node:4403) [DEP0091] DeprecationWarning: crypto.DEFAULT_ENCODING is deprecated.
(node:4403) [DEP0010] DeprecationWarning: crypto.createCredentials is deprecated. Use tls.createSecureContext instead.
(node:4403) [DEP0011] DeprecationWarning: crypto.Credentials is deprecated. Use tls.SecureContext instead.
(node:4403) ExperimentalWarning: The fs.promises API is experimental
I noticed that my podcast app refused to subscribe to Science Friday because of invalid XML being translated from... unicode perhap?
Original:
<copyright>© Science Friday</copyright>
Locally translated
<copyright>© Science Friday</copyright>
feed: https://feeds.simplecast.com/h18ZIZD_
Once I took out the copyright notice, the XML was valid, and the podcast app subscribed it.
Read about the bin
attribute in package.json
and determine how to make this npm install-able.
Right now the back button for feeds is in the title area. This looks bad if the title wraps.
Right now there is the possibility of a race if a user attempts to manually update an archive and a cron instance also becomes active.
A lock file with the pid of the current instance should solve this.
The following things should be done to clean up the current HTML templates:
Remove readFileSync
calls.
The promise variants of the fs
methods cannot be used because nexe
does not hook them to read bundled resources. Instead we should use the readFile
and manually promise wrap it.
Allow reading templates from the archive directory.
Right now templates are bundled into the binary. This is OK, but it would be nicer if the user could also provide their own templates. These can be stored in a directory under the archive directory.
Right now a new snapshot of the RSS feed is saved every time podstash updates. This is fine but will slow things down over time as the number of snapshot'ed feeds grows.
This can be mitigated by only keeping unique snapshots.
I'm really excited about this project because it allows me to continue to use my old Pod touch indefinitely (https issues with new keys), as well as speeds up my download times significantly since I can cache locally. It looks like a very well written program that does exactly what I want.
However, I can't get this to install via npm on Debian 10.
I just get this at the prompt:
steve@colossus:~$ sudo npm install -g podstash
[sudo] password for steve:
npm WARN npm npm does not support Node.js v10.24.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9.
npm WARN npm You can find the latest version at https://nodejs.org/
npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated [email protected]: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated har-
[podstash.log](https://github.com/fimad/podstash/files/11069684/podstash.log)
[email protected]: this library is no longer supported
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm ERR! path /usr/local/lib/node_modules/podstash/dist/podstash
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall chmod
npm ERR! enoent ENOENT: no such file or directory, chmod '/usr/local/lib/node_modules/podstash/dist/podstash'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2023-03-25T17_43_57_554Z-debug.log
I'm a developer, but I'm not really familiar with typescript or nodejs or even npm, so I don't really know how to move forward.
I don't know if this is a bug in the current built/deploy process, or just a missing dependency on my end. debug log attached. I cloned the repo as well, but can't seem to get it to build via yarn. yarn build seems to complain about no such file or directory build. I don't know anything about yarn, so I'm again stuck.
Any help in the right direction is appreciated.
Right now the descriptions are HTML escaped before rendering which looks bad.
The following things need to happen to support rendering descriptions as HTML content:
Locally cache image assets.
Some podcasts have a lot of episodes that embed images. Loading the feed page for these podcasts hits their cdn with a lot of requests and gets the user rate limited.
Also it would be good from an archival perspective.
Properly decode text nodes from the feed.
To support this CDATA must be distinguished from other types of nodes. CDATA does not need to be escaped but plan text nodes do.
Decide if we should attempt to protect against XSS.
Directly rendering HTML from the RSS feed into the feed page is a giant security hole. Either we should accept this and move on or try and sanitize the HTML so that only certain tags are allowed with certain attributes?
Most podcasts seem to use huge cover art. This is nice for the feed page but is probably overkill for the index page which lists all podcasts.
I noticed the Title element is missing from the generated feed.xml. This is important to podcast apps, as this is what it (often? always? sometimes?) uses to describe as the title for the channel when it subscribes.
Science Friday rss:
https://feeds.simplecast.com/h18ZIZD_
The graphical logo elements are missing as well, though this is less critical IMHO.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.