diff --git a/apps/website/src/pages/compare/computer-vs-tv-box.astro b/apps/website/src/pages/compare/computer-vs-tv-box.astro
index 054a42daf..cf3f2e6cb 100644
--- a/apps/website/src/pages/compare/computer-vs-tv-box.astro
+++ b/apps/website/src/pages/compare/computer-vs-tv-box.astro
@@ -8,6 +8,7 @@ import RelatedPosts from '../../components/download/RelatedPosts.astro';
import CompareHero from '../../components/compare/CompareHero.astro';
import ComparisonTable from '../../components/compare/ComparisonTable.astro';
import CompareSwitcher from '../../components/compare/CompareSwitcher.astro';
+import ThirdPartyNote from '../../components/compare/ThirdPartyNote.astro';
import type { FaqEntry } from '../../lib/download-schema';
import { buildComparisonPageSchema } from '../../lib/comparison-schema';
import { comparisonBySlug } from '../../lib/comparisons';
@@ -17,7 +18,7 @@ const comparison = comparisonBySlug('computer-vs-tv-box');
const pageUrl = absoluteUrl('/compare/computer-vs-tv-box/');
const title = 'IPTV on a Computer vs on a TV Box – Which Room Does What';
const description =
- 'A set-top box is unbeatable in front of the TV, and hopeless the moment you have to type a server URL or work out why a guide shows the wrong programme. What each place is good at, and how IPTVnator fits the computer half.';
+ 'A set-top box is unbeatable in front of the TV, and hopeless the moment you have to type a server URL or work out why a guide shows the wrong programme. What each place is good at, why an Android-only app has no PC version, and how IPTVnator fits the computer half.';
const columns = ['TV box or smart TV', 'Computer'];
@@ -46,6 +47,29 @@ const practicalRows = [
{ label: 'Runs IPTVnator', cells: [false, true], note: 'IPTVnator is a desktop app for Windows, macOS and Linux, plus a browser version you host yourself. There is no TV build.' },
];
+const apps = [
+ {
+ title: 'They read the same sources you already have',
+ description:
+ 'The Android TV players people name — TiviMate, Televizo, OTT Navigator and the rest — take M3U links, Xtream Codes logins and Stalker portals, the same three things IPTVnator takes. TiviMate’s own Google Play listing says it plainly: it is a media player and provides no content. That is why a subscription is never tied to one app.',
+ },
+ {
+ title: 'Android-only is common, but it is not a rule',
+ description:
+ 'TiviMate is published for Android and Android TV and has no desktop build, which is why “TiviMate for PC” is such a common search. Others do ship desktop versions — IPTV Smarters publishes Windows and macOS builds alongside its mobile ones. Check the developer’s own page rather than a reseller’s before believing either answer.',
+ },
+ {
+ title: 'On a computer, the equivalent is a desktop player — not an emulator',
+ description:
+ 'Running an Android TV app in an emulator gets you a phone interface in a window, with the remote-control navigation still in the way. If the app you like is Android-only, what you actually want on a computer is a player built for one. IPTVnator reads the same three source types, so the provider details you already have are all it needs.',
+ },
+ {
+ title: 'Be careful what you search for',
+ description:
+ 'These names are heavily abused. The app stores carry near-identical copycat listings, and a large share of the search results for any of them are sites selling “subscriptions” under the app’s brand. The developers are player authors; they do not sell channels — exactly what IPTVnator says about itself.',
+ },
+];
+
const guidance = [
{
title: 'Set it up on the computer, watch wherever you like',
@@ -90,6 +114,18 @@ const faq: FaqEntry[] = [
q: 'Does IPTVnator run on a Raspberry Pi?',
a: 'Yes, on a Pi running a desktop Linux: arm64 and armv7l AppImage and .deb builds ship with every release. It is still the desktop app, with a desktop interface — a Pi behind the TV will want a keyboard, or the phone remote.',
},
+ {
+ q: 'Is there a PC version of TiviMate?',
+ a: 'No. It is published for Android and Android TV, and there is no desktop build. Running it inside an Android emulator is not the same thing: you get a remote-driven interface in a window. On a computer the equivalent is a player built for a computer, and since TiviMate reads M3U links, Xtream Codes logins and Stalker portals, the same provider details work in IPTVnator without buying anything again.',
+ },
+ {
+ q: 'Do all the TV apps lack a desktop version?',
+ a: 'No, and it is worth checking rather than assuming. IPTV Smarters, for example, publishes Windows and macOS builds next to its mobile ones. Look at the developer’s own page; the search results for these names are full of resellers who will tell you whatever sells a subscription.',
+ },
+ {
+ q: 'If I switch app, do I have to buy my channels again?',
+ a: 'No. The subscription belongs to your provider, not to the player. Any app that speaks the same source type — an M3U link, an Xtream Codes login, a Stalker portal — can use the details you already have. The only real limit is how many streams your account allows at once.',
+ },
{
q: 'Can I run the same subscription in both places?',
a: 'That is your provider’s decision, not the app’s. Accounts carry a maximum number of simultaneous connections, often one or two. The account dialog in IPTVnator shows the active and maximum connections for an Xtream account.',
@@ -122,7 +158,7 @@ const jsonLd = buildComparisonPageSchema({ comparison, pageUrl, description, faq
columns={columns}
rows={setupRows}
rowHeader="Task"
- caption="Rows describe the ordinary experience of each kind of device rather than any particular application; individual apps differ."
+ caption="Rows describe the ordinary experience of each kind of device rather than any particular application; individual apps differ, and the section below names the ones people usually mean."
/>
@@ -134,6 +170,11 @@ const jsonLd = buildComparisonPageSchema({ comparison, pageUrl, description, faq
+
+
+
+
+
@@ -145,7 +186,7 @@ const jsonLd = buildComparisonPageSchema({ comparison, pageUrl, description, faq
-
+
diff --git a/tools/testing/website-compare-pages.test.mjs b/tools/testing/website-compare-pages.test.mjs
index 7c0b93b9d..fa312e476 100644
--- a/tools/testing/website-compare-pages.test.mjs
+++ b/tools/testing/website-compare-pages.test.mjs
@@ -19,7 +19,11 @@ const COMPARISONS = [
'computer-vs-tv-box',
];
/** Pages that name other software must say they are not affiliated with it, and date their claims. */
-const NAMES_THIRD_PARTY_SOFTWARE = new Set(['iptvnator-vs-vlc', 'iptvnator-vs-kodi']);
+const NAMES_THIRD_PARTY_SOFTWARE = new Set([
+ 'iptvnator-vs-vlc',
+ 'iptvnator-vs-kodi',
+ 'computer-vs-tv-box',
+]);
const readDist = (relativePath) => readFile(new URL(relativePath, distRoot), 'utf8');