diff --git a/lib/Core/EpisodeAction/EpisodeActionExtraData.php b/lib/Core/EpisodeAction/EpisodeActionExtraData.php
index a3bb7af..ed86c8b 100644
--- a/lib/Core/EpisodeAction/EpisodeActionExtraData.php
+++ b/lib/Core/EpisodeAction/EpisodeActionExtraData.php
@@ -19,6 +19,7 @@ use OCA\GPodderSync\Core\EpisodeAction\EpisodeAction;
* episodeImage: ?string,
* episodeDescription: ?string,
* fetchedAtUnix: int,
+ * episodeGuid: string,
* episodePubDate: ?\DateTime,
* episodeFilesize: ?int,
* episodeDuration: ?int,
@@ -35,6 +36,7 @@ class EpisodeActionExtraData implements \JsonSerializable
private ?string $episodeImage,
private ?string $episodeDescription,
private int $fetchedAtUnix,
+ private string $episodeGuid,
private ?\DateTime $episodePubDate,
private ?int $episodeFilesize,
private ?int $episodeDuration,
@@ -47,6 +49,7 @@ class EpisodeActionExtraData implements \JsonSerializable
$this->episodeImage = $episodeImage;
$this->episodeDescription = $episodeDescription;
$this->fetchedAtUnix = $fetchedAtUnix;
+ $this->episodeGuid = $episodeGuid;
$this->episodePubDate = $episodePubDate;
$this->episodeFilesize = $episodeFilesize;
$this->episodeDuration = $episodeDuration;
@@ -58,6 +61,11 @@ class EpisodeActionExtraData implements \JsonSerializable
return $this->episodeUrl ?? '/no episodeUrl/';
}
+ public function getEpisodeGuid(): string
+ {
+ return $this->episodeGuid;
+ }
+
public function getEpisodePubDate(): ?\DateTime
{
return $this->episodePubDate;
@@ -97,6 +105,7 @@ class EpisodeActionExtraData implements \JsonSerializable
'episodeImage' => $this->episodeImage,
'episodeDescription' => $this->episodeDescription,
'fetchedAtUnix' => $this->fetchedAtUnix,
+ 'episodeGuid' => $this->episodeGuid,
'episodePubDate' => $this->episodePubDate,
'episodeFilesize' => $this->episodeFilesize,
'episodeDuration' => $this->episodeDuration,
diff --git a/lib/Core/EpisodeAction/EpisodeActionReader.php b/lib/Core/EpisodeAction/EpisodeActionReader.php
index c922a91..cbfb03a 100644
--- a/lib/Core/EpisodeAction/EpisodeActionReader.php
+++ b/lib/Core/EpisodeAction/EpisodeActionReader.php
@@ -30,6 +30,7 @@ class EpisodeActionReader extends GPodderSyncEpisodeActionReader
$episodeLink = null;
$episodeImage = null;
$episodeDescription = null;
+ $episodeGuid = null;
$episodeFilesize = null;
$episodeDuration = null;
$episodePubDate = null;
@@ -39,6 +40,9 @@ class EpisodeActionReader extends GPodderSyncEpisodeActionReader
foreach ($channel->item as $item) {
$episodeUrl = (string) $item->enclosure['url'];
+ // Get episode guid
+ $episodeGuid = (string) $item->guid;
+
// Get episode filesize
$episodeFilesize = (int) $item->enclosure['length'];
@@ -119,6 +123,7 @@ class EpisodeActionReader extends GPodderSyncEpisodeActionReader
$episodeImage,
$episodeDescription,
$fetchedAtUnix ?? (new \DateTime())->getTimestamp(),
+ $episodeGuid,
$episodePubDate,
$episodeFilesize,
$episodeDuration,
diff --git a/package-lock.json b/package-lock.json
index cd4958c..598f09f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3548,9 +3548,9 @@
"integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
},
"node_modules/@types/node": {
- "version": "20.5.6",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.6.tgz",
- "integrity": "sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ=="
+ "version": "20.5.7",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.7.tgz",
+ "integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA=="
},
"node_modules/@types/normalize-package-data": {
"version": "2.4.1",
@@ -3604,9 +3604,9 @@
"peer": true
},
"node_modules/@types/semver": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
- "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==",
"dev": true,
"peer": true
},
@@ -4117,19 +4117,19 @@
}
},
"node_modules/@vueuse/components": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/@vueuse/components/-/components-10.4.0.tgz",
- "integrity": "sha512-+ECAD4NcY6Rf/lLSQEyZapbjX9SE/QeEwINMVStvbMXusqPOB9Wpz9tv8i0QDtUKaFxdJ92X9uns4i6PqrtlRw==",
+ "version": "10.4.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/components/-/components-10.4.1.tgz",
+ "integrity": "sha512-hEWeumCfH394fkEYc/hng6T5VcjVkdqx7b75Sd6z4Uw3anjeo93Zp9qqtzFOv5bAmHls3Zy04Kowo1glrxDFRQ==",
"dependencies": {
- "@vueuse/core": "10.4.0",
- "@vueuse/shared": "10.4.0",
+ "@vueuse/core": "10.4.1",
+ "@vueuse/shared": "10.4.1",
"vue-demi": ">=0.14.5"
}
},
"node_modules/@vueuse/components/node_modules/vue-demi": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz",
- "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
+ "version": "0.14.6",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+ "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
@@ -4152,13 +4152,13 @@
}
},
"node_modules/@vueuse/core": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.4.0.tgz",
- "integrity": "sha512-8JnnTwiuzUqfiYIW8H4FKG/g5ZMKSE+9auoFUwUAkzhqUjy24VbMkNlDBWetQCimiptx7RAO6u1IS55H6+p1Tg==",
+ "version": "10.4.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.4.1.tgz",
+ "integrity": "sha512-DkHIfMIoSIBjMgRRvdIvxsyboRZQmImofLyOHADqiVbQVilP8VVHDhBX2ZqoItOgu7dWa8oXiNnScOdPLhdEXg==",
"dependencies": {
"@types/web-bluetooth": "^0.0.17",
- "@vueuse/metadata": "10.4.0",
- "@vueuse/shared": "10.4.0",
+ "@vueuse/metadata": "10.4.1",
+ "@vueuse/shared": "10.4.1",
"vue-demi": ">=0.14.5"
},
"funding": {
@@ -4166,9 +4166,9 @@
}
},
"node_modules/@vueuse/core/node_modules/vue-demi": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz",
- "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
+ "version": "0.14.6",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+ "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
@@ -4191,17 +4191,17 @@
}
},
"node_modules/@vueuse/metadata": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.4.0.tgz",
- "integrity": "sha512-JNf9IR7ZBTDxWPfQlHhqBOv1VLO6ReTZi9HGY7RABjYHVpaEpjlHU7HpZDVOJGDa0gKITAbA2zMkNSBjKMcdaw==",
+ "version": "10.4.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.4.1.tgz",
+ "integrity": "sha512-2Sc8X+iVzeuMGHr6O2j4gv/zxvQGGOYETYXEc41h0iZXIRnRbJZGmY/QP8dvzqUelf8vg0p/yEA5VpCEu+WpZg==",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vueuse/shared": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.4.0.tgz",
- "integrity": "sha512-52asvLf5cbAS/h6xWjqoY4MgjxmFjnVNf/nA8BP7RbeIrIGcf+BZbeOcVo+92byqArXEJiBxptXpufQvbwJL/w==",
+ "version": "10.4.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.4.1.tgz",
+ "integrity": "sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg==",
"dependencies": {
"vue-demi": ">=0.14.5"
},
@@ -4210,9 +4210,9 @@
}
},
"node_modules/@vueuse/shared/node_modules/vue-demi": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz",
- "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
+ "version": "0.14.6",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+ "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
@@ -8357,6 +8357,19 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -12825,15 +12838,15 @@
}
},
"node_modules/object.values": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
- "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
+ "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
"dev": true,
"peer": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
},
"engines": {
"node": ">= 0.4"
diff --git a/src/components/Feed/List.vue b/src/components/Feed/List.vue
index c932744..cab8515 100644
--- a/src/components/Feed/List.vue
+++ b/src/components/Feed/List.vue
@@ -3,7 +3,7 @@