SamTV12345 / PodFetch

A sleek and efficient podcast downloader.
https://samtv12345.github.io/PodFetch
Apache License 2.0
357 stars 26 forks source link

Empty subscriptions thumbnails in dashboard #823

Closed janaxhell closed 3 months ago

janaxhell commented 4 months ago

Describe the bug

I have Podfecth installed as docker container on a OVM6 server. Version is v4.6.2-57dbec71 (HEAD)

I haven't used Podfetch from web browser for a while. Today I opened it and all the subscriptions thumbnails are missing, but only those of the podcast title. If I go inside the page of each, the episodes do have the thumbnail. Only the main one is missing. I've looked around the UI to see if there is a switch to change view, but couldn't find any, so I guess it's a graphic glitch. Also cannot find other issues here mentioning "pictures, images, thumbnails or preview". I have added a new podcast and it did the same: no podcast thumbnail, but all episodes with thumbnail.

Dashboard with no thumbnails vivaldi_GwyS5nCS00

A podcast page showing episode thumbnails vivaldi_VRZzU940Gp

Reproduction

I have just restarted the container, I'm not a dev.

System Info

System:
    OS: Linux 6.1 Debian GNU/Linux 11 (bullseye) 11 (bullseye)
    CPU: (4) x64 Intel(R) Core(TM) i3-6300T CPU @ 3.30GHz
    Memory: 6.28 GB / 31.20 GB
    Container: Yes
    Shell: 5.1.4 - /bin/bash
  Binaries:
    Node: 21.7.1 - /usr/bin/node
    npm: 10.5.0 - /usr/bin/npm

Used Package Manager

n/a

Validations

SamTV12345 commented 4 months ago

Describe the bug

I have Podfecth installed as docker container on a OVM6 server. Version is v4.6.2-57dbec71 (HEAD)

I haven't used Podfetch from web browser for a while. Today I opened it and all the subscriptions thumbnails are missing, but only those of the podcast title. If I go inside the page of each, the episodes do have the thumbnail. Only the main one is missing. I've looked around the UI to see if there is a switch to change view, but couldn't find any, so I guess it's a graphic glitch. Also cannot find other issues here mentioning "pictures, images, thumbnails or preview". I have added a new podcast and it did the same: no podcast thumbnail, but all episodes with thumbnail.

Dashboard with no thumbnails vivaldi_GwyS5nCS00

A podcast page showing episode thumbnails vivaldi_VRZzU940Gp

Reproduction

I have just restarted the container, I'm not a dev.

System Info

System:
    OS: Linux 6.1 Debian GNU/Linux 11 (bullseye) 11 (bullseye)
    CPU: (4) x64 Intel(R) Core(TM) i3-6300T CPU @ 3.30GHz
    Memory: 6.28 GB / 31.20 GB
    Container: Yes
    Shell: 5.1.4 - /bin/bash
  Binaries:
    Node: 21.7.1 - /usr/bin/node
    npm: 10.5.0 - /usr/bin/npm

Used Package Manager

n/a

Validations

  • [x] Follow our Code of Conduct
  • [x] Read the Contributing Guide.
  • [x] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
  • [x] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
  • [x] The provided reproduction is a minimal reproducible of the bug.

Most of the times this is related to a wrong SERVER_URL so the images are loaded from a non existing host.

janaxhell commented 4 months ago

Not in my case. When something works, I set it and forget it, and Podfecth did work fine. Now those images do not appear neither from local IP, nor public domain.

SamTV12345 commented 4 months ago

Can you check the dev console? What does the network tab say?

janaxhell commented 4 months ago

You mean the log? For some reason it says it contains "null" characters and I cannot copy it, so I took a screenshot, then restarted the container. That part of log could be copied and it's below the pic.

TextPad_sGyTy6ubDE

2024-07-10T19:00:03 ℹ️ - SIGTERM received; starting graceful shutdown
2024-07-10T19:00:03 ℹ️ - shutting down idle worker
2024-07-10T19:00:03 ℹ️ - accept thread stopped
2024-07-10T19:00:03 ℹ️ - shutting down idle worker
2024-07-10T19:00:03 ℹ️ - shutting down idle worker
2024-07-10T19:00:03 ℹ️ - shutting down idle worker
Debug file located at /home/rust/src/target/x86_64-unknown-linux-musl/release/build/podfetch-e0e3a3e660462a5a/out/built.rs
  ____           _ _____    _       _
 |  _ \ ___   __| |  ___|__| |_ ___| |__
 | |_) / _ \ / _` | |_ / _ \ __/ __| '_ \
 |  __/ (_) | (_| |  _|  __/ || (__| | | |
 |_|   \___/ \__,_|_|  \___|\__\___|_| |_|

2024-07-10T19:00:06 ℹ️ - Settings already present
2024-07-10T19:00:06 ℹ️ - starting 4 workers
2024-07-10T19:00:06 ℹ️ - Actix runtime found; starting in Actix runtime
2024-07-10T19:00:06 ℹ️ - Starting with the following environment variables:
2024-07-10T19:00:06 ℹ️ - Public server url: https://xxx.xxx.xxx/
2024-07-10T19:00:06 ℹ️ - Polling interval for new episodes: 60 minutes
2024-07-10T19:00:06 ℹ️ - Developer specifications available at https://xxx.xxx.xxx/swagger-ui/index.html#/
2024-07-10T19:00:06 ℹ️ - GPodder integration enabled: true
2024-07-10T19:00:06 ℹ️ - Podindex API key&secret configured: true

After restart, it's the same as explained. For context, I use Nginx Proxy Manager to forward it to my cloudflare domian.

EDIT The swagger-ui says:

Errors

Resolver error at components.schemas.User.properties.createdAt.$ref
Could not resolve reference: Could not resolve pointer: /components/schemas/NaiveDateTime does not exist in document
SamTV12345 commented 4 months ago

You mean the log? For some reason it says it contains "null" characters and I cannot copy it, so I took a screenshot, then restarted the container. That part of log could be copied and it's below the pic.

TextPad_sGyTy6ubDE

2024-07-10T19:00:03 ℹ� - SIGTERM received; starting graceful shutdown
2024-07-10T19:00:03 ℹ� - shutting down idle worker
2024-07-10T19:00:03 ℹ� - accept thread stopped
2024-07-10T19:00:03 ℹ� - shutting down idle worker
2024-07-10T19:00:03 ℹ� - shutting down idle worker
2024-07-10T19:00:03 ℹ� - shutting down idle worker
Debug file located at /home/rust/src/target/x86_64-unknown-linux-musl/release/build/podfetch-e0e3a3e660462a5a/out/built.rs
  ____           _ _____    _       _
 |  _ \ ___   __| |  ___|__| |_ ___| |__
 | |_) / _ \ / _` | |_ / _ \ __/ __| '_ \
 |  __/ (_) | (_| |  _|  __/ || (__| | | |
 |_|   \___/ \__,_|_|  \___|\__\___|_| |_|

2024-07-10T19:00:06 ℹ� - Settings already present
2024-07-10T19:00:06 ℹ� - starting 4 workers
2024-07-10T19:00:06 ℹ� - Actix runtime found; starting in Actix runtime
2024-07-10T19:00:06 ℹ� - Starting with the following environment variables:
2024-07-10T19:00:06 ℹ� - Public server url: https://xxx.xxx.xxx/
2024-07-10T19:00:06 ℹ� - Polling interval for new episodes: 60 minutes
2024-07-10T19:00:06 ℹ� - Developer specifications available at https://xxx.xxx.xxx/swagger-ui/index.html#/
2024-07-10T19:00:06 ℹ� - GPodder integration enabled: true
2024-07-10T19:00:06 ℹ� - Podindex API key&secret configured: true

After restart, it's the same as explained. For context, I use Nginx Proxy Manager to forward it to my cloudflare domian.

Oh seems like your podcast is gone. It returns html. Can you paste the link to the podcast? Maybe a 404 or so. You can rightclick in your Chrome browser. Go to inspect. Then a new menu should open and there is a tab network. When you click that and refresh the page you should see the original download url.

janaxhell commented 4 months ago

Mmm actually I've just clicked a couple of random episodes and the log said this. 2024-07-10T19:11:32 ❌ - Response payload stream error: actix_http::Error { kind: Body, cause: Some(Os { code: 21, kind: IsADirectory, message: "Is a directory" }) } But I don't understand what page you want me to do that? Any subscription page?

EDIT Like this? image

EDIT 2 It appears to be completely broken, I cannot download nor listen to any episode. It's strange because I haven't touched this basically since I deployed it, maybe more that a year ago.

While I'm here, I'll paste my compose:

version: '3'
services:
  podfetch:
    image: samuel19982/podfetch:latest
    ports:
      - "6656:8000"
    volumes:
      - /srv/dev-disk-by-uuid-BAF04088F0404D37/data/media/podfetch:/app/podcasts
      - /srv/dev-disk-by-uuid-5b67514d-485e-4306-873e-b1cbb54ccf99/Config/Podfetch:/app/db
    environment:
      - POLLING_INTERVAL=60
      - SERVER_URL=https://xxx.xxx.xxx
      - BASIC_AUTH=true
      - USERNAME=xxxxxxxx
      - PASSWORD=xxxxxxxx
      - PODINDEX_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      - PODINDEX_API_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      - GPODDER_INTEGRATION_ENABLED=true
    networks:
      omv1:

networks:
  omv1:
    driver: bridge
SamTV12345 commented 4 months ago

Mmm actually I've just clicked a couple of random episodes and the log said this. 2024-07-10T19:11:32 ❌ - Response payload stream error: actix_http::Error { kind: Body, cause: Some(Os { code: 21, kind: IsADirectory, message: "Is a directory" }) } But I don't understand what page you want me to do that? Any subscription page?

EDIT Like this? image

EDIT 2 It appears to be completely broken, I cannot download nor listen to any episode. It's strange because I haven't touched this basically since I deployed it, maybe more that a year ago.

While I'm here, I'll paste my compose:

version: '3'
services:
  podfetch:
    image: samuel19982/podfetch:latest
    ports:
      - "6656:8000"
    volumes:
      - /srv/dev-disk-by-uuid-BAF04088F0404D37/data/media/podfetch:/app/podcasts
      - /srv/dev-disk-by-uuid-5b67514d-485e-4306-873e-b1cbb54ccf99/Config/Podfetch:/app/db
    environment:
      - POLLING_INTERVAL=60
      - SERVER_URL=https://xxx.xxx.xxx
      - BASIC_AUTH=true
      - USERNAME=xxxxxxxx
      - PASSWORD=xxxxxxxx
      - PODINDEX_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      - PODINDEX_API_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      - GPODDER_INTEGRATION_ENABLED=true
    networks:
      omv1:

networks:
  omv1:
    driver: bridge

Mmm actually I've just clicked a couple of random episodes and the log said this. 2024-07-10T19:11:32 ❌ - Response payload stream error: actix_http::Error { kind: Body, cause: Some(Os { code: 21, kind: IsADirectory, message: "Is a directory" }) } But I don't understand what page you want me to do that? Any subscription page?

EDIT Like this? image

EDIT 2 It appears to be completely broken, I cannot download nor listen to any episode. It's strange because I haven't touched this basically since I deployed it, maybe more that a year ago.

While I'm here, I'll paste my compose:

version: '3'
services:
  podfetch:
    image: samuel19982/podfetch:latest
    ports:
      - "6656:8000"
    volumes:
      - /srv/dev-disk-by-uuid-BAF04088F0404D37/data/media/podfetch:/app/podcasts
      - /srv/dev-disk-by-uuid-5b67514d-485e-4306-873e-b1cbb54ccf99/Config/Podfetch:/app/db
    environment:
      - POLLING_INTERVAL=60
      - SERVER_URL=https://xxx.xxx.xxx
      - BASIC_AUTH=true
      - USERNAME=xxxxxxxx
      - PASSWORD=xxxxxxxx
      - PODINDEX_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      - PODINDEX_API_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      - GPODDER_INTEGRATION_ENABLED=true
    networks:
      omv1:

networks:
  omv1:
    driver: bridge

You just need to find a page where the images aren't loaded. You can filter by Img and then click an entry in the table. What does the url say there? Edit 2 sounds like somehow the folder structure gone bad. Are the files still there? Normally PodFetch memoizes where the files were downloaded to. That the audio file is now a directory is somehow strange

janaxhell commented 4 months ago

Ok, it says:

Request URL:
https://xxx.xxx.xxx/podcasts/The%20GeekBits%20Podcast/image.jpg
Request Method:
GET
Status Code:
401 Unauthorized
Referrer Policy:
strict-origin-when-cross-origin

That the audio file is now a directory is somehow strange

I don't understand this sentence

Also, the files are there:

image

EDIT going offline, will check back tomorrow.

SamTV12345 commented 4 months ago

Ok, it says:

Request URL:
https://xxx.xxx.xxx/podcasts/The%20GeekBits%20Podcast/image.jpg
Request Method:
GET
Status Code:
401 Unauthorized
Referrer Policy:
strict-origin-when-cross-origin

That the audio file is now a directory is somehow strange

I don't understand this sentence

Also, the files are there:

image

EDIT going offline, will check back tomorrow.

Did you generate an APIKey for your user? That is done in the user profile settings

janaxhell commented 4 months ago

Although redacted, you can see from my compose that I did create an API key. Nevertheless I've tried now to make a new one, but I receive the error: Cannot update admin user I am the only user and admin.

SamTV12345 commented 4 months ago

Although redacted, you can see from my compose that I did create an API key. Nevertheless I've tried now to make a new one, but I receive the error: Cannot update admin user I am the only user and admin.

Oh seems like thhe username is same as the admin username. This is unfortunately not possible

janaxhell commented 4 months ago

Ah, yes, I checked and I have created a different admin user with the invite, but I'm a bit confused: in the compose I have the user/pass/apikey I've always used and the new admin user I've created from UI, but the one in the compose does not appear in the User Administration tab. What do I keep/do I need to keep both/why one is in the compose but not in the UI?

SamTV12345 commented 3 months ago

Ah, yes, I checked and I have created a different admin user with the invite, but I'm a bit confused: in the compose I have the user/pass/apikey I've always used and the new admin user I've created from UI, but the one in the compose does not appear in the User Administration tab. What do I keep/do I need to keep both/why one is in the compose but not in the UI?

The thing is that the compose variant can be changed. You can assign it another username or password and my service wouldn't get that it was changed between restarts. That is why there are different users. It's a technical issue. I could allow access with an admin user but it could break installations.