diff --git a/data/apps.json b/data/apps.json
index 553261827217e59b674686480870ee8d47191266..9ce08ae87f1ff14ae6290d2badcbf6233848a21f 100644
--- a/data/apps.json
+++ b/data/apps.json
@@ -8545,16 +8545,16 @@
         "phpVersionSpec": "*",
         "platformVersionSpec": ">=18.0.0 <100.0.0",
         "minIntSize": 32,
-        "download": "https://gitlab.com/ethernet.zero/nextcloud-cpanelmailsync/-/jobs/6680301612/artifacts/raw/build/artifacts/appstore/cpanelmailsync.tar.gz",
-        "created": "2024-04-21T18:10:08.871207Z",
+        "download": "https://gitlab.com/ethernet.zero/nextcloud-cpanelmailsync/-/jobs/2129524508/artifacts/raw/build/artifacts/appstore/cpanelmailsync.tar.gz",
+        "created": "2022-02-23T19:25:14.232829Z",
         "licenses": [
           "mpl"
         ],
-        "lastModified": "2024-04-21T18:10:09.133113Z",
-        "isNightly": true,
+        "lastModified": "2022-02-23T19:25:15.773405Z",
+        "isNightly": false,
         "rawPhpVersionSpec": "*",
         "rawPlatformVersionSpec": ">=18 <=99",
-        "signature": "DZ7PzudXfltJDdgmsdhwJGkhWJ5jg6FbAgZVuAc9/2ozRfhwV1TJGaapsgSukQbTBvTwH2R/C1OBXsNfYWLx/tsbL5yyGWPlT/7aSU5v4p1GkjsL+sZ+EbxjwMftKZY2m4Ym4J0OS+dDbAH9tq7cOjbO9k1Lnd1ZrtXfKPmS3TohWmcumkcfyGpaj7VqcyXxiU3a9qA/zTAnh6qx5yo+hBV6siyPjbtyenOyKTtlvoNZgR7VjsPJKqa0/ADAQGXBCecWUXGH1uSMZnCDUQH9uQZV8GMBfBiNqEqrrcS65avzgaEdjfpqWi6Na5bQclaKFid8jqim8yHkvWwvagkMR04pSsdFYVhysPTGUQN52M9/nB58sfVrQYf4+TRzFeByokkk2tAqK1ul2hA/YUe2Vr2bpAWreFpDKCQ50fMyKWxIPmHjMrfC9K24NIZmgrE+NRIY6y8UEeeo8U9bQHAPpUowHc4UmQDyYLl8jsgj6myaQSCGWnuZdHOfrSysTXBAiGu2Lg2L1BipKTQhwQxfwx1BG7QvnSi1M0Fsu5AG84p/D4zEzf4Vwqg4Ff62naK610/shol826POLLf4zh80fM2ELmvPmMP4DzU67SgcYcbx0N5rjzOwGD2qZ8B+2wgvHStIKzBYX+fDbLIGZQdsV6nBJOmiAUTO6vlq5IVhXbY=",
+        "signature": "w9wev2GhXjw/qevdVdpyrWAcMthuTnaQqEeVXaot6ZZ/nWhpycs8H1kEGtZanqM1bH/5hE7lokjk69C9n0dpHoRwZIguzqVjtMDvwytGF/VoiUcNMzrM7bqMwNDJMrwc8b+2GguNSo7Jh7CC5RV9OEZzVrjgI/4abnOxUOE56Fxxym6Zb+jwQAKbI2Bs5YmzWb/0KCc0BdGi5FSBEKw6PTf5S4y5HZsPaf4kLuKpEbqIQY67/hVZ8poItIbI+fd5WoAfU6B7m/mNDcsINcAlDpHeE8D173OdyM9i96bdAYRI01qVZl5h9SnkyTHeDY47eolmpN500T2v4QaR1KS7/PoQv6hHWMYKAWHY5xwCl/AP0FYfNOqHeBJA/XFViwpdTjGE87wI+Gmy89Vu2p9vMoclEaj6/Xh0Ge2lDFaz+JuS3+tlYD/PDqHWQNcmoMsxxzm/g7Lp2B7gN3q6EgYLNZu6xtYCPmypgNQyl6f10a9rr0KWrILMkRVZQABCiOZA/XUUGmmDGBWlvy1QLEygmjNJsk9xAuYEoGGXDdrzLH2h9g9XA1MfwzM8hK5IyD6k1C9OIL/+X8iYIHqMxANYgNuvFfM13o86FGVirC2Yd6DM+FiO/G0YPmsmxL+bMFj5rhtnUkOTvj+BujuScBTiboxYYuRD6tPi4KgFMQ01gWk=",
         "translations": {
           "en": {
             "changelog": ""
@@ -8570,16 +8570,16 @@
         "phpVersionSpec": "*",
         "platformVersionSpec": ">=18.0.0 <100.0.0",
         "minIntSize": 32,
-        "download": "https://gitlab.com/ethernet.zero/nextcloud-cpanelmailsync/-/jobs/2129524508/artifacts/raw/build/artifacts/appstore/cpanelmailsync.tar.gz",
-        "created": "2022-02-23T19:25:14.232829Z",
+        "download": "https://gitlab.com/ethernet.zero/nextcloud-cpanelmailsync/-/jobs/6680301612/artifacts/raw/build/artifacts/appstore/cpanelmailsync.tar.gz",
+        "created": "2024-04-21T18:10:08.871207Z",
         "licenses": [
           "mpl"
         ],
-        "lastModified": "2022-02-23T19:25:15.773405Z",
-        "isNightly": false,
+        "lastModified": "2024-04-21T18:10:09.133113Z",
+        "isNightly": true,
         "rawPhpVersionSpec": "*",
         "rawPlatformVersionSpec": ">=18 <=99",
-        "signature": "w9wev2GhXjw/qevdVdpyrWAcMthuTnaQqEeVXaot6ZZ/nWhpycs8H1kEGtZanqM1bH/5hE7lokjk69C9n0dpHoRwZIguzqVjtMDvwytGF/VoiUcNMzrM7bqMwNDJMrwc8b+2GguNSo7Jh7CC5RV9OEZzVrjgI/4abnOxUOE56Fxxym6Zb+jwQAKbI2Bs5YmzWb/0KCc0BdGi5FSBEKw6PTf5S4y5HZsPaf4kLuKpEbqIQY67/hVZ8poItIbI+fd5WoAfU6B7m/mNDcsINcAlDpHeE8D173OdyM9i96bdAYRI01qVZl5h9SnkyTHeDY47eolmpN500T2v4QaR1KS7/PoQv6hHWMYKAWHY5xwCl/AP0FYfNOqHeBJA/XFViwpdTjGE87wI+Gmy89Vu2p9vMoclEaj6/Xh0Ge2lDFaz+JuS3+tlYD/PDqHWQNcmoMsxxzm/g7Lp2B7gN3q6EgYLNZu6xtYCPmypgNQyl6f10a9rr0KWrILMkRVZQABCiOZA/XUUGmmDGBWlvy1QLEygmjNJsk9xAuYEoGGXDdrzLH2h9g9XA1MfwzM8hK5IyD6k1C9OIL/+X8iYIHqMxANYgNuvFfM13o86FGVirC2Yd6DM+FiO/G0YPmsmxL+bMFj5rhtnUkOTvj+BujuScBTiboxYYuRD6tPi4KgFMQ01gWk=",
+        "signature": "DZ7PzudXfltJDdgmsdhwJGkhWJ5jg6FbAgZVuAc9/2ozRfhwV1TJGaapsgSukQbTBvTwH2R/C1OBXsNfYWLx/tsbL5yyGWPlT/7aSU5v4p1GkjsL+sZ+EbxjwMftKZY2m4Ym4J0OS+dDbAH9tq7cOjbO9k1Lnd1ZrtXfKPmS3TohWmcumkcfyGpaj7VqcyXxiU3a9qA/zTAnh6qx5yo+hBV6siyPjbtyenOyKTtlvoNZgR7VjsPJKqa0/ADAQGXBCecWUXGH1uSMZnCDUQH9uQZV8GMBfBiNqEqrrcS65avzgaEdjfpqWi6Na5bQclaKFid8jqim8yHkvWwvagkMR04pSsdFYVhysPTGUQN52M9/nB58sfVrQYf4+TRzFeByokkk2tAqK1ul2hA/YUe2Vr2bpAWreFpDKCQ50fMyKWxIPmHjMrfC9K24NIZmgrE+NRIY6y8UEeeo8U9bQHAPpUowHc4UmQDyYLl8jsgj6myaQSCGWnuZdHOfrSysTXBAiGu2Lg2L1BipKTQhwQxfwx1BG7QvnSi1M0Fsu5AG84p/D4zEzf4Vwqg4Ff62naK610/shol826POLLf4zh80fM2ELmvPmMP4DzU67SgcYcbx0N5rjzOwGD2qZ8B+2wgvHStIKzBYX+fDbLIGZQdsV6nBJOmiAUTO6vlq5IVhXbY=",
         "translations": {
           "en": {
             "changelog": ""
@@ -29298,9 +29298,9 @@
       }
     ],
     "ratingRecent": 0.5,
-    "ratingOverall": 0.9545454545454546,
+    "ratingOverall": 0.9583333333333334,
     "ratingNumRecent": 0,
-    "ratingNumOverall": 11,
+    "ratingNumOverall": 12,
     "certificate": "-----BEGIN CERTIFICATE-----\nMIIEBDCCAuwCAhF4MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD\nVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI\nMTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB\ndXRob3JpdHkwHhcNMjEwMzA0MTk1NzQ1WhcNMzEwNjEwMTk1NzQ1WjAUMRIwEAYD\nVQQDDAlsaWJyZXNpZ24wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDq\nNU7W4kX445A4yMlADzxuNCouzzIYJBDRZXrKuz5OtbApKY5mPqfXGEpc8N04+eAJ\n5EJz5f9r0WxVcWGtyFN1sPObAsoMGyhOzNvAGaveL40xBsc7LdQgCR2JraInHH/e\nMNtkgHQcWL5nihqYIEWvMeVt3uMTiI05F3SjW4+u/NaRRw/5y5l5W4Fy6VPzPW0P\n22Wmllkb3BFG16C6hHG/+qE8pf12AcxQZ3B21MbPkHjOjxSz6NS74jGIVRtcn6dO\ny26XZ1XoeNUPZDyLFluYCBw5fgTIIU+721mkkA7EjP9RighygVGk4WII7l9Pc+Sf\nNwcxQykNdEnZ67ETSr4v1CpArAeXZ2dEZ/b9QqI/MCGw0Aa/Pv2vDc8McFFBBTrt\nPDvn0TG0RdfuFAkYdOpFjH3urGUEvcJ/+lFvRVUu203PHLfx72zNI3XVXui/slf3\noK4LsQrbvj+heYnNXyr5UQAzgXW9JDiXE0sBxfzUz2XKlbuuNpLLE9EkFFQ5LyZJ\nG3l1f/yO3CvGLancbhCvRjo6Lts38GjmkWQT+0BNBpwYhoAd4wopnMYphI9qldbp\n1XPWBqb+0w1p6bkIHmci8D/whC0/BEHoCs+DpRciRZM0FqW7frZcEGeO6YOoDWJ2\nCAhwXGodT4iV8RtVUC6/arGGUal/YqBk2M/9zK6eMwIDAQABMA0GCSqGSIb3DQEB\nCwUAA4IBAQBWMFEq++xjRqFsWNPpoTtkfuj0PUajfRHBGzSUXccz0hw8kdR4C2xx\nhkYlJ9kqyWNxO1h4urQL5cM1sbl4xf5CI9xf7iuOcB06/kn3umLmruRec32WG2bS\nqAWnnljGCX4sVY8oSbdaUopXE9o9pl966XQ5858c+w9ydkjMDnfOmzrCpgHrJefN\n94hIttjJsV8te15VcKoNUxsrZBlPIrpueUQRc13Z9CWp8eRXl4J4CZfVFSY7T4ho\nBlNtdPas2R9HJJDYEGS+fg5dfLLvTL4qPSxLjm753pJprfrDxfE9qQl0xtIe8aaw\nKFJ/AK3JTRBkBwsgAE5OYEXTUV9oNS2j\n-----END CERTIFICATE-----",
     "discussion": "https://t.me/libresign"
   },
@@ -52468,6 +52468,68 @@
     "certificate": "-----BEGIN CERTIFICATE-----\nMIIDBTCCAe0CAhBnMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD\nVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI\nMTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB\ndXRob3JpdHkwHhcNMTcwODI4MDg1MzE0WhcNMjcxMjA0MDg1MzE0WjAVMRMwEQYD\nVQQDDApwaG9uZXRyYWNrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\no+LDMeoXTJp1d81zrcU7X7MPKKL0egtn8oaBNxPPYuEKA40Q8dVfBatjEtfawykx\nkmf1VVTAOISmMKfpNkWWgQEHMnyQ3G/OMp5hHOonoumMk+EuPWqT5WUw21BypxmR\n572T8XAHdJvhRjxjkGdX8RW6q9uL0aIp2A0Vcv7jLMxHh6L3VHy7WsvOrhG+gCdn\ny45jqxgBDcenlLf0aV/GskotCmgnWlDCIr+40KgiYvQ3o6kSHMOjmY7F6eIuq/qo\nq6RkDP+gKOz3c9j+Mt/7RZhPw4RMCxLy4j+QBcfrXRdbcrdj1BVUVw/3aWlASrur\nlBgetCuaeB2Iv/XL2nyNnQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQASmARbJHNX\n7mcReQkNHnzd+Xr96pu/ydTqMTfT3kAHJBGbXNreFyO/aEYyEKNM20LTs9askTiL\n5au4G372o3uRoqMpVsWQTcjr8MjUTXMavxpf+AqebdTSUfxxFyovo+j6WljuiaFO\nTiWKC1G/SenH+99c16eWtDWSIPDnAouuPZdp9+f6k2PJkXeKN3uLKGSY7QAKK/66\nIFiwtYNPvI/UeImZnVI1YLItDTlF7Zz53OtVL8VIbdUP8V+LHBpXVS4OX0rXQP+4\nKnhz1IB+8Tyoc5Y3eeLsiAg7ZwYvVqizp9abl0IcQ6C0YZ7GnTNKrBx/CIMI4yVw\nuBKC+tvsqeC+\n-----END CERTIFICATE-----",
     "discussion": "https://help.nextcloud.com"
   },
+  {
+    "id": "photo_frames",
+    "categories": [
+      "multimedia"
+    ],
+    "userDocs": "",
+    "adminDocs": "",
+    "developerDocs": "",
+    "issueTracker": "https://github.com/jeppester/nextcloud-photo-frames/issues",
+    "website": "",
+    "created": "2025-04-06T19:05:40.889473Z",
+    "lastModified": "2025-04-20T18:11:04.769428Z",
+    "releases": [
+      {
+        "version": "1.0.2",
+        "phpExtensions": [],
+        "databases": [],
+        "shellCommands": [],
+        "phpVersionSpec": "*",
+        "platformVersionSpec": ">=29.0.0 <33.0.0",
+        "minIntSize": 32,
+        "download": "https://github.com/jeppester/nextcloud-photo-frames/releases/download/v1.0.2/photo_frames.tar.gz",
+        "created": "2025-04-20T18:11:04.761392Z",
+        "licenses": [
+          "agpl"
+        ],
+        "lastModified": "2025-04-20T18:11:04.824703Z",
+        "isNightly": false,
+        "rawPhpVersionSpec": "*",
+        "rawPlatformVersionSpec": ">=29 <=32",
+        "signature": "EklDab4HM7sKaVLiR4I8mHphNuhPg+hr8IHEiLK85Jy04zpMW27jvY6DEEE+DGgO\n6VH4PvU96B7XFNRNS0XX2CTiMZA2FIQAeBDemcYhmQZbuGsMDICWzmOFidV/QHGY\nfeGaArGZh36GTafjnQNGgxg/ELw/KsuRYoYhWJsYs1syfjvwQVo5k+da6WNzNGBc\n/h1NJH2h41CnXNzlNAr3FhnLKYwLqkhh5v0WSXr8ATboduE6w3lO/xxXJV0YObtq\n8Xf4v7MYN8QS7pDHix8KAc2zHBDEEWSLyIl2paAb5n+IfToo8tv++sHFrAjO+7Lt\n+v+placSxvY1S/83ME0808rJePN9mdoCHufdaSM1LsuE7vj79zZZmbRawdBhj/QF\ntNi9WimddcAxfZp2nF/FFF4931ud+4vPJ1flwoL9YtS30DR3MQNZpYzmKYfo8fyo\n5PscbSuCethLmjhZLbQQR22Tcac9q5Tp7LC+e0Zl+9n5Zw26X9XcDh+ELkJlsGVI\nOyyoIedfHb8N+UAlobuaRDdALXEGNdaY0bcYqayCfx5gUNZ2coIu0BYIYNrVD0l/\n8KjrCZHkSPUdrL3UguHWCPQ9s3uIU/UqGKwisJuUTPZ4fXfnuUQ2tnSe57UqZB/l\nFO857G3qDNdDJuY9XvuFZkXpu0Hz0/a9vD6ZP7mEp9M=",
+        "translations": {
+          "en": {
+            "changelog": ""
+          }
+        },
+        "signatureDigest": "sha512"
+      }
+    ],
+    "screenshots": [],
+    "translations": {
+      "en": {
+        "name": "Photo Frames",
+        "summary": "Turn any screen with a browser into a neat photo frame",
+        "description": "Generate easily sharable photo frame URLs for your Nextcloud albums.\n\nThe possiblities are endless:\n\n- Turn any android device into a smart photo frame (with the help of a kiosk browser)\n- Co-create photo frames with Nextcloud's collaborative albums\n- Share photo frames across households"
+      }
+    },
+    "isFeatured": false,
+    "authors": [
+      {
+        "name": "Jesper Sørensen",
+        "mail": "jeppester1@gmail.com",
+        "homepage": "https://jsorensen.dk"
+      }
+    ],
+    "ratingRecent": 0.5,
+    "ratingOverall": 0.5,
+    "ratingNumRecent": 0,
+    "ratingNumOverall": 0,
+    "certificate": "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu8CAhKeMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD\nVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI\nMTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB\ndXRob3JpdHkwHhcNMjUwNDA0MDczMTIxWhcNMzUwNzExMDczMTIxWjAXMRUwEwYD\nVQQDDAxwaG90b19mcmFtZXMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC\nAQCWUqSmYsAADmxVf1MtpAmPqr4qKp9trwJ/lO0x9O6KKQkWY4Achts7MUyFHKg1\nI9tElGaBftyYhz8QTc7lc68FN0eLeOGqWxwVYSeNCN/pp0o0be4hDCqskyQcYPzQ\nc6Mpc1AKqkH9eShEsj6z4zpje7qhslnyO95JRebIE65zDuLZ8G3knhAWkZVzmoKM\n9N+/tchftlvqjNWMzuNPoxFFmEFsh5FlPN3KLGwO62dicOCD915vno/Lg0r6R3jJ\nLj2LtryeUfo/ExmpzFDVML1jRfu+bApqTMVSB6zq50IlO0UbmsTSAubGwScTfKIa\nRKsDZf9PdqSXmtqdnFoui6mR4QPimjjE8w0CMX/XWat8UHkZp+Rzoh7BPUUsxIGV\n22hch0JyyfUmdAwKy2PbT88ls/Z5jY2Jfsc2jivRRme/1XJSOFBnW8os/kei0oHn\nVWBMLAJzTooKc1vy559dLXnDu9aP1QtD1Fm4Hk1qejZPZ9xjnO0OOUreUPhpVLAI\na5TDfw90IJOWd0bg4t8uAQZUOQnWw6m0NAX2omymynz0RLjks1Q3ZIZcjY8ThaqQ\nxhFH1NLhHoiJhc3U7DYHvSU9/HRs/IMO9JgnML85EU8wp0zMXnQTVx2+AICiSUUH\nHquPdWXbcsuVXEt0ZNG+NLyHD9fF3qUB76zB6WV5Xt7cRwIDAQABMA0GCSqGSIb3\nDQEBCwUAA4IBAQBUY9siI5BU2fU9uWw5HkAZr5wR3kcY7LR8FaUkOtH0M6hGVKEu\nAXRj3+Bwx+XQ0bWoq2Wm2Abi9xF1hoowbi4NpfiTWUCRr7lHtNCPT+kcBqlyjI9D\nM4r697qnNsVxxZL3Ntcp/5+ESCZcNuVexIgJv/+Lyv15zC9fWs0NUIbfNw0OhlsN\nHWEMlnT3XrCuMqe5GgA6rcwAW5RYKKfxqV7DAil2Y+dfl2D/bm89ZV0NE+pjtWV7\noDfbp+EARUOX54yl+1mjxSP2Kv+PA3AT+N1RpRYZJld60m3+wdPVHdEA3lMd30Dz\nGeKG3ZHXNxucEUGwYC885nG4xaAX2le061lH\n-----END CERTIFICATE-----",
+    "discussion": "https://help.nextcloud.com"
+  },
   {
     "id": "picker",
     "categories": [
@@ -70667,7 +70729,7 @@
     "issueTracker": "https://github.com/relisiuol/nextcloud-2048/issues",
     "website": "https://github.com/relisiuol/nextcloud-2048",
     "created": "2025-02-10T17:16:10.324967Z",
-    "lastModified": "2025-02-10T20:27:54.004233Z",
+    "lastModified": "2025-04-20T13:58:09.064524Z",
     "releases": [
       {
         "version": "1.0.1",