diff --git a/apps/website/README.md b/apps/website/README.md index ff9c1ba61..881715a72 100644 --- a/apps/website/README.md +++ b/apps/website/README.md @@ -167,7 +167,8 @@ screenshots that show real channel names. `/compare/` plus one page per decision the app asks users to make (`m3u-vs-xtream-vs-stalker`, `playback-engines`, `desktop-vs-browser`, -`iptvnator-vs-vlc`, `iptvnator-vs-kodi`) live in `apps/website/src/pages/compare/`; the registry is +`iptvnator-vs-vlc`, `iptvnator-vs-kodi`, `computer-vs-tv-box`) live in +`apps/website/src/pages/compare/`; the registry is `src/lib/comparisons.ts`. Most of them compare IPTVnator's own options against each other, so every claim is checkable against this repository. diff --git a/apps/website/public/llms.txt b/apps/website/public/llms.txt index 5e7ffce72..f9df7f5ba 100644 --- a/apps/website/public/llms.txt +++ b/apps/website/public/llms.txt @@ -35,6 +35,7 @@ - Compare, desktop app vs self-hosted browser version: https://4gray.github.io/iptvnator/compare/desktop-vs-browser/ - Compare, IPTVnator vs VLC (when a general media player is enough): https://4gray.github.io/iptvnator/compare/iptvnator-vs-vlc/ - Compare, IPTVnator vs Kodi (media center with a PVR add-on vs dedicated player): https://4gray.github.io/iptvnator/compare/iptvnator-vs-kodi/ +- Compare, IPTV on a computer vs on a TV box (which room does what): https://4gray.github.io/iptvnator/compare/computer-vs-tv-box/ - Release Notes (v0.18): https://4gray.github.io/iptvnator/blog/v0-18-release-notes/ - Troubleshooting (macOS app damaged fix): https://4gray.github.io/iptvnator/blog/macos-arm-app-damaged-fix/ - Source Code: https://github.com/4gray/iptvnator diff --git a/apps/website/src/lib/comparisons.ts b/apps/website/src/lib/comparisons.ts index 01c8a49a7..2894d1360 100644 --- a/apps/website/src/lib/comparisons.ts +++ b/apps/website/src/lib/comparisons.ts @@ -15,7 +15,8 @@ export type ComparisonSlug = | 'playback-engines' | 'desktop-vs-browser' | 'iptvnator-vs-vlc' - | 'iptvnator-vs-kodi'; + | 'iptvnator-vs-kodi' + | 'computer-vs-tv-box'; export interface ComparisonEntry { slug: ComparisonSlug; @@ -75,7 +76,16 @@ export const COMPARISONS: readonly ComparisonEntry[] = [ question: 'Kodi is a whole media center and reaches IPTV through a PVR add-on. When is that the right shape, and when do you want a player that only does IPTV?', href: '/iptvnator/compare/iptvnator-vs-kodi/', - icon: 'M4 6a2 2 0 012-2h12a2 2 0 012 2v8a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM8 20h8M10 16v4M14 16v4', + icon: 'M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6zM13.5 15.75a2.25 2.25 0 012.25-2.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-2.25A2.25 2.25 0 0113.5 18v-2.25z', + }, + { + slug: 'computer-vs-tv-box', + label: 'Computer vs TV box', + eyebrow: 'Compare · Where you watch', + question: + 'A set-top box in the living room or a computer at a desk: where should IPTV actually run, and what does each make easy?', + href: '/iptvnator/compare/computer-vs-tv-box/', + icon: 'M9.348 14.651a3.75 3.75 0 010-5.303m5.304 0a3.75 3.75 0 010 5.303m-7.425 2.122a6.75 6.75 0 010-9.546m9.546 0a6.75 6.75 0 010 9.546M5.106 18.894c-3.808-3.807-3.808-9.98 0-13.788m13.788 0c3.808 3.807 3.808 9.98 0 13.788M12 12h.008v.008H12V12z', }, ]; diff --git a/apps/website/src/pages/compare/computer-vs-tv-box.astro b/apps/website/src/pages/compare/computer-vs-tv-box.astro new file mode 100644 index 000000000..054a42daf --- /dev/null +++ b/apps/website/src/pages/compare/computer-vs-tv-box.astro @@ -0,0 +1,155 @@ +--- +import BaseLayout from '../../layouts/BaseLayout.astro'; +import FaqAccordion from '../../components/blog/FaqAccordion.astro'; +import DownloadSection from '../../components/download/DownloadSection.astro'; +import FeatureList from '../../components/download/FeatureList.astro'; +import OfficialSourcesNote from '../../components/download/OfficialSourcesNote.astro'; +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 type { FaqEntry } from '../../lib/download-schema'; +import { buildComparisonPageSchema } from '../../lib/comparison-schema'; +import { comparisonBySlug } from '../../lib/comparisons'; +import { absoluteUrl } from '../../lib/site'; + +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.'; + +const columns = ['TV box or smart TV', 'Computer']; + +const setupRows = [ + { label: 'Typing a server URL, username and password', cells: ['On-screen keyboard, one letter per click', 'A real keyboard'] }, + { label: 'Pasting a long playlist link', cells: ['Usually needs a phone or a companion app', 'Paste from the clipboard'] }, + { label: 'Entering a MAC address for a portal', cells: ['Same on-screen keyboard', 'Paste it, or let the app read it out of the provider’s message'] }, + { label: 'Trying several providers before you settle', cells: ['One at a time, re-typed each time', 'Add them all and switch'] }, + { label: 'Fixing a guide that shows the wrong programme', cells: ['Rarely more than an on/off switch', 'Map the channel by hand, or shift the guide’s clock'] }, + { label: 'Working out why one stream refuses to play', cells: ['A generic error', 'Diagnostics, and the same stream in another player'] }, +]; + +const watchRows = [ + { label: 'On the big screen', cells: [true, 'Through an HDMI cable or casting'] }, + { label: 'From the couch, with a remote', cells: [true, 'A phone as the remote'] }, + { label: 'Turn it on and it is already the TV', cells: [true, false] }, + { label: 'Searching a catalog of thousands of titles', cells: ['Slow with a d-pad', true] }, + { label: 'Several sources open side by side', cells: ['One at a time on most boxes', true] }, + { label: 'Saving a film for a flight', cells: ['Limited by the box’s storage', 'Whatever your disk holds'] }, +]; + +const practicalRows = [ + { label: 'Hardware', cells: ['A box, a stick or the TV itself', 'A machine you already own'] }, + { label: 'Decoding', cells: ['What the chip supports, in hardware', 'What the machine supports, plus MPV or VLC for the rest'] }, + { label: 'Updates', cells: ['When the app store offers one', 'When you install one'] }, + { 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 guidance = [ + { + title: 'Set it up on the computer, watch wherever you like', + description: + 'The painful part of IPTV is the first twenty minutes: the login, the guide source, the channels that will not match. All of it is a keyboard job. Once the source works, the box in the living room usually only needs the same credentials.', + }, + { + title: 'The couch problem has an answer', + description: + 'A laptop on the TV is awkward only until you stop using its keyboard. IPTVnator serves a small web remote to any phone on the same Wi-Fi: channel up and down, a number pad, volume and what is on now, with nothing to install.', + }, + { + title: 'Two rooms, one subscription', + description: + 'Nothing about IPTV ties you to one device. The limit is your provider’s connection count, not the app: most accounts allow one or two streams at a time, so check before assuming both rooms can watch at once.', + }, + { + title: 'When the box cannot decode it, the computer can', + description: + 'Set-top hardware decodes a fixed set of formats. A computer can fall back to MPV or VLC, which decode almost anything, so a stream that stutters on the box is worth a second try at the desk before you blame the provider.', + }, +]; + +const faq: FaqEntry[] = [ + { + q: 'Is there an IPTVnator app for Android TV, Fire TV or an Apple TV?', + a: 'No. IPTVnator is a desktop application for Windows, macOS and Linux, plus a browser version you can host yourself. There is no build for a television or a set-top box, and its interface assumes a keyboard and a mouse rather than a d-pad.', + }, + { + q: 'So how do I watch it on the television?', + a: 'Connect the computer to the TV with an HDMI cable, which is what most people do, and use the app full screen. A phone then works as the remote through the built-in web remote. Casting works too, though it depends on your operating system rather than on IPTVnator.', + }, + { + q: 'Why bother with a computer if the box already works?', + a: 'For the things a remote makes slow: adding a provider, trying a second one, searching a large catalog, mapping a channel to the right guide entry, checking why a stream fails, or downloading a film before a trip. Many people do the setup at the desk and the watching on the box.', + }, + { + q: 'Can I use my phone as a remote for the computer?', + a: 'Yes. Enable the remote in Settings, scan the QR code with a phone on the same Wi-Fi, and the page gives you channel up and down, a number pad, volume for the built-in player, and the current programme. It is a web page, so nothing is installed.', + }, + { + 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: '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.', + }, + { + q: 'Which one is better for the programme guide?', + a: 'Both can show one. A computer is better at fixing one: when a channel shows the wrong schedule or every programme is off by hours, the desktop app lets you map the channel by hand or shift the guide’s clock, which a set-top app rarely offers.', + }, +]; + +const jsonLd = buildComparisonPageSchema({ comparison, pageUrl, description, faq }); +--- + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + +
+ +
+
+ + +
diff --git a/apps/website/src/pages/compare/index.astro b/apps/website/src/pages/compare/index.astro index 2edaa1e5a..3575e8521 100644 --- a/apps/website/src/pages/compare/index.astro +++ b/apps/website/src/pages/compare/index.astro @@ -51,8 +51,10 @@ const jsonLd = [ Which option is right for you

- IPTVnator asks you to choose a few times: how to connect your provider, which engine plays a stream, and which - edition to install. Each page below answers one of those with a short verdict and a table you can check. + Some of these are choices IPTVnator asks you to make — how to connect your provider, which engine plays a + stream, which edition to install. The rest are the questions people ask before installing anything: whether a + media player is already enough, and where IPTV should run at all. Each page opens with a short verdict and a + table you can check.

diff --git a/tools/testing/website-compare-pages.test.mjs b/tools/testing/website-compare-pages.test.mjs index df2c8a7c7..7c0b93b9d 100644 --- a/tools/testing/website-compare-pages.test.mjs +++ b/tools/testing/website-compare-pages.test.mjs @@ -16,6 +16,7 @@ const COMPARISONS = [ 'desktop-vs-browser', 'iptvnator-vs-vlc', 'iptvnator-vs-kodi', + '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']);