From 0c531276a0e62c938f1ad94c7e573bc92593345a Mon Sep 17 00:00:00 2001 From: 4gray Date: Fri, 11 Sep 2026 21:42:55 +0200 Subject: [PATCH] feat(website): name the Android TV players on the computer vs TV box page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "TiviMate for PC" is the query behind most of this page's traffic, so the page now names the apps people mean instead of describing a category. What it says about them is what could actually be verified: TiviMate's Google Play listing (Android and Android TV, reads M3U, Xtream Codes and Stalker, "a media player that provides no content"), and IPTV Smarters publishing Windows and macOS builds — which is why the page does not claim TV apps have no desktop version. The useful half is the part no affiliate site writes: these names are heavily abused, the stores carry copycat listings, and much of the search result for any of them is someone selling "subscriptions" under the app's brand. The developers are player authors who do not sell channels, which is exactly what IPTVnator says about itself — the page links to our own unofficial-websites post for the same reason. Three FAQ entries answer the query directly, and the page joins the NAMES_THIRD_PARTY_SOFTWARE set so the test requires its dated disclaimer. Co-Authored-By: Claude Opus 5 --- .../pages/compare/computer-vs-tv-box.astro | 47 +++++++++++++++++-- tools/testing/website-compare-pages.test.mjs | 6 ++- 2 files changed, 49 insertions(+), 4 deletions(-) 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');