From 55023af40e3866a785020e904b4db77b20bd05fb Mon Sep 17 00:00:00 2001 From: Pirates IRC <98669745+PiratesIRC@users.noreply.github.com> Date: Thu, 27 Nov 2025 14:37:24 -0600 Subject: [PATCH] v0.6.0b # Stream-Mapparr Plugin Changelog (v0.6.0a -> v0.6.0b) ## New Features * **Smart Analysis & Recommendations:** * Added "What-if" analysis: Automatically tests matching at lower fuzzy thresholds (down to 65) to identify potential matches missed by current settings. * Added Token Mismatch detection: Analyzes unmatched streams to suggest specific prefixes or suffixes (e.g., "US:", "HD") to add to the "Ignore Tags" list. * **Enhanced CSV Export:** * CSV files now include a detailed header section containing active settings, version info, and specific optimization recommendations based on the Smart Analysis. * Rows now include data on potential matches found at lower thresholds. * **Rate Limiting:** Added a "None (Disabled)" option to remove all artificial delays for faster processing on local networks. * **Notifications:** Implemented WebSocket-based frontend notifications to display progress bars and success/error toasts during long-running operations. ## Improvements * **Matching Logic:** Improved fuzzy matching algorithm to handle token overlap, better detecting matches where word order differs (e.g., "Channel Name US" vs "US Channel Name"). * **Maintenance:** Added a "Cleanup Orphaned Tasks" action to remove stale Celery Beat schedules left behind by older plugin versions. * **Scheduling:** Updated schedule saving logic to provide immediate feedback on the next calculated run times in the local timezone. ## Internal * Added `_get_matches_at_thresholds` and `_analyze_token_mismatch` methods to power the new recommendation engine. * Refined `_clean_channel_name` to support optional country prefix removal. --- Stream-Mapparr/BR_channels.json | 2 +- Stream-Mapparr/CA_channels.json | 279 +- Stream-Mapparr/FR_channels.json | 2 +- Stream-Mapparr/US_channels.json | 40329 +++++++++++++++--------------- Stream-Mapparr/__init__.py | 10 +- Stream-Mapparr/fuzzy_matcher.py | 99 +- Stream-Mapparr/plugin.py | 3067 +-- 7 files changed, 22160 insertions(+), 21628 deletions(-) diff --git a/Stream-Mapparr/BR_channels.json b/Stream-Mapparr/BR_channels.json index 14f6b94..975526b 100644 --- a/Stream-Mapparr/BR_channels.json +++ b/Stream-Mapparr/BR_channels.json @@ -609,4 +609,4 @@ "type": "National" } ] -} +} \ No newline at end of file diff --git a/Stream-Mapparr/CA_channels.json b/Stream-Mapparr/CA_channels.json index 949169a..3e92ff3 100644 --- a/Stream-Mapparr/CA_channels.json +++ b/Stream-Mapparr/CA_channels.json @@ -1,13 +1,23 @@ { "country_code": "CA", "country_name": "Canada", - "version": "2025-11-11", + "version": "2025-11-10", "channels": [ { "channel_name": "CBC", "category": "Entertainment", "type": "National" }, + { + "channel_name": "CBC Toronto", + "category": "Entertainment", + "type": "Local" + }, + { + "channel_name": "CBC Vancouver", + "category": "Entertainment", + "type": "Local" + }, { "channel_name": "CBC News Network", "category": "News", @@ -18,28 +28,128 @@ "category": "Entertainment", "type": "National" }, + { + "channel_name": "CTV Toronto", + "category": "Entertainment", + "type": "Local" + }, + { + "channel_name": "CTV Vancouver", + "category": "Entertainment", + "type": "Local" + }, + { + "channel_name": "CTV2", + "category": "Entertainment", + "type": "National" + }, { "channel_name": "CTV News Channel", "category": "News", "type": "National" }, + { + "channel_name": "CP24", + "category": "News", + "type": "Regional" + }, + { + "channel_name": "BNN Bloomberg", + "category": "News", + "type": "National" + }, { "channel_name": "Global", "category": "Entertainment", "type": "National" }, + { + "channel_name": "Global Toronto", + "category": "Entertainment", + "type": "Local" + }, { "channel_name": "Citytv", "category": "Entertainment", "type": "National" }, + { + "channel_name": "Ici Radio-Canada Télé", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Ici RDI", + "category": "News", + "type": "National" + }, + { + "channel_name": "Ici ARTV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Ici Explora", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "TVA", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "LCN", + "category": "News", + "type": "National" + }, + { + "channel_name": "TVA Sports", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Noovo", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "APTN", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "OMNI", + "category": "Entertainment", + "type": "National" + }, { "channel_name": "TSN", "category": "Sports", "type": "National" }, { - "channel_name": "The Sports Network", + "channel_name": "TSN1", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "TSN2", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "TSN3", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "TSN4", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "TSN5", "category": "Sports", "type": "National" }, @@ -49,13 +159,93 @@ "type": "National" }, { - "channel_name": "TVA", + "channel_name": "Sportsnet One", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Sportsnet 360", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Sportsnet East", + "category": "Sports", + "type": "Regional" + }, + { + "channel_name": "Sportsnet Ontario", + "category": "Sports", + "type": "Regional" + }, + { + "channel_name": "Sportsnet West", + "category": "Sports", + "type": "Regional" + }, + { + "channel_name": "Sportsnet Pacific", + "category": "Sports", + "type": "Regional" + }, + { + "channel_name": "RDS", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "RDS2", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Showcase", "category": "Entertainment", "type": "National" }, { - "channel_name": "Ici Radio-Canada", - "category": "Entertainment", + "channel_name": "W Network", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "History", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Discovery", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Food Network", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "HGTV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "YTV", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Treehouse", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Teletoon", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Family Channel", + "category": "Kids", "type": "National" }, { @@ -69,39 +259,74 @@ "type": "National" }, { - "channel_name": "Discovery Channel", + "channel_name": "CTV Sci-Fi Channel", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Much", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Crave", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Super Channel", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Super Écran", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Canal D", "category": "Documentary", "type": "National" }, { - "channel_name": "History", + "channel_name": "Canal Vie", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "SériesPlus", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Z", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Évasion", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "TVO", "category": "Documentary", - "type": "National" + "type": "Regional" }, { - "channel_name": "Food Network Canada", - "category": "Entertainment", - "type": "National" + "channel_name": "TFO", + "category": "Documentary", + "type": "Regional" }, { - "channel_name": "HGTV Canada", - "category": "Entertainment", - "type": "National" + "channel_name": "Knowledge Network", + "category": "Documentary", + "type": "Regional" }, { - "channel_name": "W Network", + "channel_name": "Télé-Québec", "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Showcase", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Space", - "category": "Entertainment", - "type": "National" + "type": "Regional" } ] -} +} \ No newline at end of file diff --git a/Stream-Mapparr/FR_channels.json b/Stream-Mapparr/FR_channels.json index 9a10314..2817dae 100644 --- a/Stream-Mapparr/FR_channels.json +++ b/Stream-Mapparr/FR_channels.json @@ -654,4 +654,4 @@ "type": "National" } ] -} +} \ No newline at end of file diff --git a/Stream-Mapparr/US_channels.json b/Stream-Mapparr/US_channels.json index ead67f2..b46c79d 100644 --- a/Stream-Mapparr/US_channels.json +++ b/Stream-Mapparr/US_channels.json @@ -1,20162 +1,20167 @@ -[ - { - "channel_name": "3ABN", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "3ABN Francais", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "3ABN International", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "3ABN Kids Network", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "3ABN Latino", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "3ABN Praise Him Music Network", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "3ABN Proclaim!", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "3ABN Russia", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "4 Adventure", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "4 Emergency", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "5StarMax", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "A&E", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "A&E Crime 360", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "A&E Crime Central", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "A&E en Espanol", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "AABC TV", - "category": "Other", - "type": "National" - }, - { - "channel_name": "ABC", - "category": "Broadcast", - "type": "National" - }, - { - "channel_name": "ABC News Live", - "category": "News", - "type": "National" - }, - { - "channel_name": "ACC Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "AccuWeather Network", - "category": "Weather", - "type": "National" - }, - { - "channel_name": "Acme Crime Net", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Action-Packed TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "ActionMax", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Ad-Sport", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Africa News", - "category": "News", - "type": "National" - }, - { - "channel_name": "Afro", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Afro Kiddos", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Afrotainment", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Afrotainment Music", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Aham TV", - "category": "Other", - "type": "National" - }, - { - "channel_name": "AIT", - "category": "News", - "type": "National" - }, - { - "channel_name": "Al Jazeera English", - "category": "News", - "type": "National" - }, - { - "channel_name": "ALL ACTION", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "All Reality WE tv", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "All Weddings WE tv", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Allblk", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Altice USA News", - "category": "News", - "type": "National" - }, - { - "channel_name": "Altitude Sports and Entertainment", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Always Funny Videos", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "AMC", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "America TeVe", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "America's Test Kitchen", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "America's Voice", - "category": "News", - "type": "National" - }, - { - "channel_name": "American Classics", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "American Heroes Channel", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "American Pickers by History", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "American Voices", - "category": "News", - "type": "National" - }, - { - "channel_name": "America’s Auction Channel", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "AMGA TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Anger Management", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Animal Planet", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Animax", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Aniplus", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Answers in Genesis TV", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Antena 3 Internacional", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Antenna TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Antiques Roadshow UK", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Architectural Digest", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Are We There Yet", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Arirang TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Arizona Capitol Television", - "category": "News", - "type": "National" - }, - { - "channel_name": "Arizona NewsChannel", - "category": "News", - "type": "National" - }, - { - "channel_name": "ART", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "ARTN", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Aspire", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "AspireTV Life", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "At Questo Mondo", - "category": "Other", - "type": "National" - }, - { - "channel_name": "At the Movies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Atreseries", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "AWE", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Ax Men", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "AXS TV", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Azteca América", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "BabyFirst", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "BabyTV", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Backstage", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Bad Girls Club", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Bally Sports Detroit", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports Florida", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports Great Lakes", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports Indiana", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports Kansas City", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports Midwest", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports North", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports Ohio", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports San Diego", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports SoCal", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports South", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports Southeast", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports Southwest", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports Sun", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports West", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bally Sports Wisconsin", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bandamax", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Barney and Friends", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Bay News 9", - "category": "News", - "type": "National" - }, - { - "channel_name": "Baywatch", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "BBC America", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "BBC Drama", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "BBC Earth", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "BBC Food", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "BBC Home & Garden", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "BBC News", - "category": "News", - "type": "National" - }, - { - "channel_name": "BBC World News", - "category": "News", - "type": "National" - }, - { - "channel_name": "Beauty Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "BeIN Sports", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "beIN Sports en Espanol", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "beIN Sports en Español", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Bein Sports Xtra", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Believer’s Voice of Victory Network", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Best of Pawn Stars by History", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "BET", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "BET Gospel", - "category": "Music", - "type": "National" - }, - { - "channel_name": "BET Her", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "BET Hip-Hop", - "category": "Music", - "type": "National" - }, - { - "channel_name": "BET Jams", - "category": "Music", - "type": "National" - }, - { - "channel_name": "BET Pluto TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "BET Soul", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Big Ten Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Big Ten Network (BTN)", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Billiard TV", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Black News Channel", - "category": "News", - "type": "National" - }, - { - "channel_name": "BlackPix", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Bloomberg Originals", - "category": "News", - "type": "National" - }, - { - "channel_name": "Bloomberg Television", - "category": "News", - "type": "National" - }, - { - "channel_name": "Bloomberg TV+ UHD", - "category": "News", - "type": "National" - }, - { - "channel_name": "Bob the Builder", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Bon Appetit", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Bonjour America", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Boomerang", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Bostel", - "category": "Other", - "type": "National" - }, - { - "channel_name": "Bounce TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Bounce XL", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Brat TV", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Bravo", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Bravo Vault", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Bring It!", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "BritBox Mysteries", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "BUZZR", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Buzzr", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "BYU TV", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "C-SPAN", - "category": "News", - "type": "National" - }, - { - "channel_name": "C-SPAN 2", - "category": "News", - "type": "National" - }, - { - "channel_name": "C-SPAN 3", - "category": "News", - "type": "National" - }, - { - "channel_name": "C-SPAN2", - "category": "News", - "type": "National" - }, - { - "channel_name": "C-SPAN3", - "category": "News", - "type": "National" - }, - { - "channel_name": "Cable 11 Northern Lancaster County", - "category": "News", - "type": "National" - }, - { - "channel_name": "Caillou", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Canal 22 Internacional", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Canal Once", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Caracol TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "CaribVision Inc.", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Cars.TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Cartoon Network", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Cartoon Network", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Catchy Comedy", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Catholic Faith Network", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "CatholicTV", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "CBC News", - "category": "News", - "type": "National" - }, - { - "channel_name": "CBeebies", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "CBS", - "category": "Broadcast", - "type": "National" - }, - { - "channel_name": "CBS News", - "category": "News", - "type": "National" - }, - { - "channel_name": "CBS Sports Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Centroamerica TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Centroamérica TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "CGTN", - "category": "News", - "type": "National" - }, - { - "channel_name": "CGTN-America", - "category": "News", - "type": "National" - }, - { - "channel_name": "Charge!", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Cheaters", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Cheddar", - "category": "News", - "type": "National" - }, - { - "channel_name": "Cheddar News", - "category": "News", - "type": "National" - }, - { - "channel_name": "China Global Network", - "category": "News", - "type": "National" - }, - { - "channel_name": "China Global Network Espanol", - "category": "News", - "type": "National" - }, - { - "channel_name": "Christian Television Network", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Cine Estelar", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cine Life", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cine Mexicano", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cine Nostalgia", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cine Sony Television", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cinelatino", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cinemax", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cinemax 5Starmax", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cinemax Action", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cinemax Actionmax", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cinemax Classics", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cinemax Hits", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cinemax Moremax", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cinemáx", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "CINEVAULT", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "CINEVAULT: Classics", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "CINEVAULT: Westerns", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cinémoi", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Circle", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Circle Country", - "category": "Music", - "type": "National" - }, - { - "channel_name": "City", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Classic Arts Showcase", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Classic Cinema", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Cleo TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "CMT", - "category": "Music", - "type": "National" - }, - { - "channel_name": "CMT Music", - "category": "Music", - "type": "National" - }, - { - "channel_name": "CNBC", - "category": "News", - "type": "National" - }, - { - "channel_name": "CNBC World", - "category": "News", - "type": "National" - }, - { - "channel_name": "CNN", - "category": "News", - "type": "National" - }, - { - "channel_name": "CNN en Espanol", - "category": "News", - "type": "National" - }, - { - "channel_name": "CNN en Español", - "category": "News", - "type": "National" - }, - { - "channel_name": "CNN International", - "category": "News", - "type": "National" - }, - { - "channel_name": "Cold Case Files", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Comedy Central", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Comedy Central Pluto TV", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Comedy Dynamics", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Comedy.TV", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Comet", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "CONtv", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Cooking Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Cosmos", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Court TV", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Cowboy", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Cowboy Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Cox Sports Television", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Cozi TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Cracked", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Create", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Crime & Investigation", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Crime 24/7", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Crime Cults Killers", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Crime Thriller", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Crime Zone", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "CTGN", - "category": "News", - "type": "National" - }, - { - "channel_name": "CTN", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "CTNi", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "CubaMAX", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "CubaPlay+", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Dabl", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Dance Moms", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Dare to Dream Network", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Dark Matter TV", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Dateline 24/7", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Daystar", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Daystar en Espanol", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "De Pelicula", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "De Pelicula Clasico", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "De Película", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "De Película Clásico", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Deal or No Deal", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Degrassi", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Destination America", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Deutsche Welle", - "category": "News", - "type": "National" - }, - { - "channel_name": "DFH Network", - "category": "Other", - "type": "National" - }, - { - "channel_name": "Discovery Channel", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Discovery en Espanol", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Discovery en Español", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Discovery Familia", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Discovery Family", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Discovery Life", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Disney Channel", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Disney Junior", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Disney XD", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Divorce Court", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Doctor Who Classic", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Dog the Bounty Hunter", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Dog TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Dove", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Dove Channel", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Dr. G: Medical Examiner", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Drama Life", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Duck Dynasty", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Dust", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "DUST Sci-Fi", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "E!", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "E! Keeping Up", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "EarthX TV", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Ebony TV by Lionsgate", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Ecuador TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Ecuavisa Internacional", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "ElectricNOW", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Eleven Sports Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Emanate TV", - "category": "Other", - "type": "National" - }, - { - "channel_name": "Enlace", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Epic TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Epix", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Epix 2", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Epix Drive-in", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Epix Hits", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "ES.TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "eScapes", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Esperanza TV", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "ESPN", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "ESPN College Extra", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "ESPN Deportes", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "ESPN2", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "ESPNews", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "ESPNU", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Estrella News", - "category": "News", - "type": "National" - }, - { - "channel_name": "Estrella TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "ET Live", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Euronews English", - "category": "News", - "type": "National" - }, - { - "channel_name": "EWTN", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "EWTN Espanol", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "EWTN Español", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "FailArmy", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Family Affair Channel", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Family Entertainment Television", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Family Feud", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Family Movie Classics", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Fandango at Home", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Fawesome", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Fear Factor", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "FETV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "FilmRise", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "FilmRise Anime", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "FilmRise Black TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "FilmRise Free Movies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "FilmRise Kids", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "FilmRise Sci-Fi", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "FilmRise Western", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Flipping Nation by A&E", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Flix", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "FM", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Folk TV", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Food Network", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Food52", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Forensic Files", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "FOROtv", - "category": "News", - "type": "National" - }, - { - "channel_name": "Fox", - "category": "Broadcast", - "type": "National" - }, - { - "channel_name": "Fox Business", - "category": "News", - "type": "National" - }, - { - "channel_name": "Fox Business Network", - "category": "News", - "type": "National" - }, - { - "channel_name": "Fox Deportes", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Fox Life", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Fox News", - "category": "News", - "type": "National" - }, - { - "channel_name": "Fox News Channel", - "category": "News", - "type": "National" - }, - { - "channel_name": "Fox Soccer Plus", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Fox Sports 1", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Fox Sports 2", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "France 24", - "category": "News", - "type": "National" - }, - { - "channel_name": "Free Speech TV", - "category": "News", - "type": "National" - }, - { - "channel_name": "Freeform", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Fubo Sports Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Funny or Die", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Fuse", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Fuse Backstage", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Fuse Beat", - "category": "Music", - "type": "National" - }, - { - "channel_name": "FX", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "FX Movie Channel", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "FXM", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "FXX", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "FYI", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "GAC Family", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "GAC Living", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Galavision", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Galavisión", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Game Show A Go-Go", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Game Show Central", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Game Show Network", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Gardening with Monty Don", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "GEB America", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Gem Shopping Network", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "German Kino Plus", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Get TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "GetTV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "GlewedTV Sci-Fi", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Global Got Talent", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "GMA Network", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "GOD TV", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "God’s Learning Channel", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "GOL TV", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Golf Channel", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "GoTraveler", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "GoUSA TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Gran Cine", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Gravitas Movies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Great American Adventures", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Great American Faith & Living", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Great American Family", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Grit", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Grit Xtra", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "GSN", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Gusto TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Hallmark Channel", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Hallmark Drama", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Hallmark Movies & More", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Hallmark Movies & Mysteries", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "HappyKids", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Haystack News", - "category": "News", - "type": "National" - }, - { - "channel_name": "HBO", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "HBO Comedy", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "HBO Drama", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "HBO Family", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "HBO Hits", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "HBO Latino", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "HBO Movies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "HBO Signature", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "HBO Zone", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "HBO2", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "HDNet Movies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Heartland", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Hell's Kitchen", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Her Free Movies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Heroes & Icons", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "HGTV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Hi-YAH!", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "High Vision", - "category": "Other", - "type": "National" - }, - { - "channel_name": "Highway through Hell", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Highway to Heaven", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "History", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "History en Espanol", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "History en Español", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "HITN", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "HLN", - "category": "News", - "type": "National" - }, - { - "channel_name": "Hoarders by A&E", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Hogar de HGTV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Hola! TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Home.Made.Nation.", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Homeful", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Hope Channel", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Horizon TV", - "category": "Other", - "type": "National" - }, - { - "channel_name": "Horror by ALTER", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Hot Ones", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "HSN", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "HSN2", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "HTV", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Hungry", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "I Survived…", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "i24NEWS", - "category": "News", - "type": "National" - }, - { - "channel_name": "Ice Road Truckers", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Idaho's Very Own 24/7", - "category": "News", - "type": "National" - }, - { - "channel_name": "IFC", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Impact Television", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "In Depth Graham Bensinger", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "In the Garage", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "IndiePlex", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "INSP", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Intervention by A&E", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Investigation Discovery", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "ION Mystery", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "ION Plus", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "ION Television", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Ion Television", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "ITV Gold", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Jadeworld", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Jamie Oliver", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Jewelry Television", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "Jewish Broadcasting Service", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Jewish Life Television", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Journy", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "JTV", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "JTV Jewelry Love", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "Judge Nosey", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "JUS One", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "JUS Punjabi", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Just for Laughs Gags", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Justice Central", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Kanopy", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Kartoon Channel!", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Kevin Hart's LOL Network", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Kitchen Nightmares", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "KO-AM TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Kriminal Presented by A&E", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Laff", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Lassie", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "LATV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Law & Crime", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Law & Order", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "LEGO Channel", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "LeSEA", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Lidia's Kitchen", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Lifetime", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Lifetime Movie Network", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Lifetime Movies Love & Drama", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Lifetime Real Women", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Link TV", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Liquidation Channel", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "Little House on the Prairie", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Little Women: LA", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Live Well Network", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "LiveNOW from FOX", - "category": "News", - "type": "National" - }, - { - "channel_name": "LMN", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Local Now", - "category": "News", - "type": "National" - }, - { - "channel_name": "Localish", - "category": "News", - "type": "National" - }, - { - "channel_name": "Logo TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "LOL! Network", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Longhorn Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Love & Hip Hop", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Love Nature", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Love Quest: Powered by Banijay", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Loveworld USA", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "LRW", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Luxe.tv", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Lx News", - "category": "News", - "type": "National" - }, - { - "channel_name": "Made in Chelsea", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Magnolia Network", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Marquee Sports Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Matched Married Meet", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Maverick Black Cinema", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MavTV", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "MAVTV", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Max", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Mega TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "MeTV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "MeTV Toons", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "MeTV+", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Mexicanal", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "MGM", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MGM HD", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MGM+", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MGM+ Drive In", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MGM+ East", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MGM+ Hits", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MGM+ Marquee", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MHz Now", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Mid-Atlantic Sports Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Midnight Pulp", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Midsomer Murders", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Military History", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Million Dollar Dream Home", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Million Dollar Listing Vault", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Mixible", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "MKTV", - "category": "Other", - "type": "National" - }, - { - "channel_name": "MLB Extra Innings", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "MLB Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "MLB Strike Zone", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "MLS Direct Kick", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Modern Marvels", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Moonbug", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "MoreMax", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Motor Trend", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "MotorTrend FAST TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Movie Favorites by Lifetime", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Movie Hub", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Movie Hub Action", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Movie Hub West", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MovieMax", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MoviePlex", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MovieSphere", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MovieSphere by Lionsgate", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "MrBeast", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "MSG", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "MSG 2", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "MSG Sportsnet", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "MSG Sportsnet 2 HD", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "MSG Western New York", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "MSNBC", - "category": "News", - "type": "National" - }, - { - "channel_name": "MSNBC World", - "category": "News", - "type": "National" - }, - { - "channel_name": "MTV", - "category": "Music", - "type": "National" - }, - { - "channel_name": "MTV Biggest Pop", - "category": "Music", - "type": "National" - }, - { - "channel_name": "MTV Block Party", - "category": "Music", - "type": "National" - }, - { - "channel_name": "MTV Classic", - "category": "Music", - "type": "National" - }, - { - "channel_name": "MTV Live", - "category": "Music", - "type": "National" - }, - { - "channel_name": "MTV Pluto TV", - "category": "Music", - "type": "National" - }, - { - "channel_name": "MTV Tres", - "category": "Music", - "type": "National" - }, - { - "channel_name": "MTV2", - "category": "Music", - "type": "National" - }, - { - "channel_name": "MTVU", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Multimedios Television", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Multimedios Televisión", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Murder, She Wrote", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "MyDestination.TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "MyNetworkTV", - "category": "Broadcast", - "type": "National" - }, - { - "channel_name": "Mystery Science Theater 3000", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "MyTime Movie Network", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Myx TV", - "category": "Music", - "type": "National" - }, - { - "channel_name": "N+ Foro", - "category": "News", - "type": "National" - }, - { - "channel_name": "NASA TV", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Nashville", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Nat Geo Mundo", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Nat Geo Wild", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "National Geographic", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "NBA League Pass", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NBA TV", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NBC", - "category": "Broadcast", - "type": "National" - }, - { - "channel_name": "NBC News Now", - "category": "News", - "type": "National" - }, - { - "channel_name": "NBC Sports Bay Area", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NBC Sports Boston", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NBC Sports California", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NBC Sports Chicago", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NBC Sports Philadelphia", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NBC Sports Washington", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "New England Cable News", - "category": "News", - "type": "National" - }, - { - "channel_name": "New England Sports Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "New Greek TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "New KPop", - "category": "Music", - "type": "National" - }, - { - "channel_name": "News 12", - "category": "News", - "type": "National" - }, - { - "channel_name": "News 12 New York", - "category": "News", - "type": "National" - }, - { - "channel_name": "News 12+ Brooklyn", - "category": "News", - "type": "National" - }, - { - "channel_name": "News 12+ Connecticut", - "category": "News", - "type": "National" - }, - { - "channel_name": "News 12+ Hudson Valley", - "category": "News", - "type": "National" - }, - { - "channel_name": "News 12+ Long Island", - "category": "News", - "type": "National" - }, - { - "channel_name": "News 12+ New Jersey", - "category": "News", - "type": "National" - }, - { - "channel_name": "News 12+ The Bronx", - "category": "News", - "type": "National" - }, - { - "channel_name": "News 12+ Westchester", - "category": "News", - "type": "National" - }, - { - "channel_name": "News 13", - "category": "News", - "type": "National" - }, - { - "channel_name": "News 9 Now", - "category": "News", - "type": "National" - }, - { - "channel_name": "News Channel Nebraska", - "category": "News", - "type": "National" - }, - { - "channel_name": "News on 6 Now", - "category": "News", - "type": "National" - }, - { - "channel_name": "Newsmax TV", - "category": "News", - "type": "National" - }, - { - "channel_name": "NewsNation", - "category": "News", - "type": "National" - }, - { - "channel_name": "NewsWatch 15", - "category": "News", - "type": "National" - }, - { - "channel_name": "Newsy", - "category": "News", - "type": "National" - }, - { - "channel_name": "NFL Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NFL RedZone", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NFL Sunday Ticket", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NFL Sunday Ticket Fantasy Zone", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NFL Sunday Ticket Multiview Fan", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NFL Sunday Ticket RedZone", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NHK World Japan", - "category": "News", - "type": "National" - }, - { - "channel_name": "NHL Center Ice", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "NHL Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Nick Jr.", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Nick Pluto TV", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Nickelodeon", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "NickMusic", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Nicktoons", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Nikita", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Nosey", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "NRB Network", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Nuestra Tele", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "NY1", - "category": "News", - "type": "National" - }, - { - "channel_name": "NYCTV", - "category": "News", - "type": "National" - }, - { - "channel_name": "OAN Plus", - "category": "News", - "type": "National" - }, - { - "channel_name": "Oc 16", - "category": "News", - "type": "National" - }, - { - "channel_name": "Olympic Channel", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Omni Television", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "One America News Network", - "category": "News", - "type": "National" - }, - { - "channel_name": "Operation Repo", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Oprah Winfrey Network", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Outdoor Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "OuterMax", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "OuterSphere", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Outside TV", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Ovation", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Oxygen", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Oxygen True Crimes Archive", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Pac-12 Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "PanArmenian TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Paramount Movie Channel", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Paramount Network", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Paranormal File", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Pasiones", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Pattrn", - "category": "Weather", - "type": "National" - }, - { - "channel_name": "PBS", - "category": "Public Broadcasting", - "type": "National" - }, - { - "channel_name": "PBS Antiques Roadshow", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "PBS Food", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "PBS Kids", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "PeopleTV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Perform", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Pets.TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "PFL MMA", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Pittsburgh Cable News Channel", - "category": "News", - "type": "National" - }, - { - "channel_name": "PixL", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Playboy TV en Espanol", - "category": "Adult", - "type": "National" - }, - { - "channel_name": "Playboy TV en Español", - "category": "Adult", - "type": "National" - }, - { - "channel_name": "Pluto TV Action", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Pluto TV Comedy", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Pluto TV Documentaries", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Pluto TV Drama", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Pluto TV Family", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Pluto TV Fantastic", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Pluto TV Her", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Pluto TV Horror", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Pluto TV Indies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Pluto TV Movies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Pluto TV Movies 2", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Pluto TV Romance", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Pluto TV Spotlight", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Pluto TV Thrillers", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Pluto TV Westerns", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "PokerGO", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Pop", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Positiv", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Power Rangers", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Primo TV", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Pursuit Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Pursuit Up", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "PXTV", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "QVC", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "QVC2", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "QVC3", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "RCN Nuestra Tele", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Real America's Voice", - "category": "News", - "type": "National" - }, - { - "channel_name": "Real America’s Voice", - "category": "News", - "type": "National" - }, - { - "channel_name": "Real Disaster Channel", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Real Housewives Vault", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Recipe.TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Reelz", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "REELZ Famous & Infamous", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Retro Plex", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Retro TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "RetroCrush", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "RetroPlex", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Reuters", - "category": "News", - "type": "National" - }, - { - "channel_name": "Rev & Roll", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Revolt", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Revry", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Rewind TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "RFD-TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Rifftrax", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Ritmoson Latino", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Road Renegades", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Roku Fireside", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Roku Spooktacular", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Root Sports Northwest", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "RSC", - "category": "Other", - "type": "National" - }, - { - "channel_name": "Saigon Broadcasting Television Network", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Samuel Goldwyn Classics", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Samuel Goldwyn Films", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Science Channel", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Scientology Network", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "ScreenPix", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "ScreenPix Action", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "ScreenPix Action US", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "ScreenPix US", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "ScreenPix Voices", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "ScreenPix Voices US", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "ScreenPix Westerns", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "ScreenPix Westerns US", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Scripps News", - "category": "News", - "type": "National" - }, - { - "channel_name": "SEC Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Sensical Jr", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Shades of Black", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Shark Tank", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Shaun the Sheep", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Shop LC", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "ShopHQ", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "ShopLC", - "category": "Shopping", - "type": "National" - }, - { - "channel_name": "Shorts TV", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "ShortsHD", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Shout! Factory TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Shout! TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Showtime", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Showtime 2", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Showtime BET", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Showtime Extreme", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Showtime Family Zone", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Showtime HD East", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Showtime Next", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Showtime Showcase", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Showtime Women", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "SHOxBET", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Sino TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Sky Link TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Sky News", - "category": "News", - "type": "National" - }, - { - "channel_name": "Slightly Off IFC", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "SLING Freestream", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Smile", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Smithsonian Channel", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "SNL Vault", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Sonlife Broadcasting Network", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Sonlife Broadcasting Network (SBN)", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "Sony Canal Comedias", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Sony Canal Competencias", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Sony Cine", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Sony Movies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Sorpresa!", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "So… Real", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Space City Home Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Spectrum News 1", - "category": "News", - "type": "National" - }, - { - "channel_name": "Spectrum News 1 Austin", - "category": "News", - "type": "National" - }, - { - "channel_name": "Spectrum News 1 Buffalo", - "category": "News", - "type": "National" - }, - { - "channel_name": "Spectrum News 1 Capital Region", - "category": "News", - "type": "National" - }, - { - "channel_name": "Spectrum News 1 Central New York", - "category": "News", - "type": "National" - }, - { - "channel_name": "Spectrum News 1 Dallas-Fort Worth", - "category": "News", - "type": "National" - }, - { - "channel_name": "Spectrum News 1 North Carolina", - "category": "News", - "type": "National" - }, - { - "channel_name": "Spectrum News 1 Rochester", - "category": "News", - "type": "National" - }, - { - "channel_name": "Spectrum Sports", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Spectrum SportsNet", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Spectrum SportsNet LA", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Sportsman Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "SportsNet New York", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "SportsNet Pittsburgh", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "SPT TV", - "category": "Other", - "type": "National" - }, - { - "channel_name": "Stadium", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Stadium College Sports Atlantic", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Stadium College Sports Central", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Stadium College Sports Pacific", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Stand-Up TV", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Start TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Starz", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Cinema", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Comedy", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Edge", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Encore", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Encore Action", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Encore Black", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Encore Classic", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Encore Espanol", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Encore Español", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Encore Family", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Encore Suspense", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Encore Westerns", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz in Black", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Kids & Family", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Starz Kids West", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Stories By AMC", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Story Television", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Sundance TV", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "SundanceTV", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Supermarket Sweep", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Swamp People", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Sweet Escapes", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Syfy", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "Tai Seng Sat TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Tapesh TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Tastemade", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Tastemade en Espanol", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Tastemade Home", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Tastemade Travel Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "TBN", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "TBN Inspire", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "TBS", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "TCM", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "TCM Movies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "TED", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "TeenNick", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "TELE N", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Telefe Internacional", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "TeleFormula", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "TeleFórmula", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "TeleHit", - "category": "Music", - "type": "National" - }, - { - "channel_name": "TeleHit Musica", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Telemundo", - "category": "Broadcast", - "type": "National" - }, - { - "channel_name": "Teletubbies", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "TeleXitos", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Tennis Channel", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "The Africa Channel", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "The Arabic Channel", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "The Archive", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "The Asylum", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "The Biggest Loser", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "The Bob Ross Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "The Carol Burnett Show", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "The Comedy Shop", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "The Comedy Store", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "The Cowboy Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "The Curse of Oak Island", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "The CW", - "category": "Broadcast", - "type": "National" - }, - { - "channel_name": "The Design Network", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "The Emeril Lagasse Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "The Filipino Channel", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "The First", - "category": "News", - "type": "National" - }, - { - "channel_name": "The First 48 & Beyond", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "The Girls Next Door Channel", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "The Hill", - "category": "News", - "type": "National" - }, - { - "channel_name": "The Jack Hanna Channel", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "The Jamie Oliver Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "The Johnny Carson Show", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "The Korean Channel", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "The Martha Stewart Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "The Masked Singer", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "The Movie Channel", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "The Movie Channel Xtra", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "The New Detectives", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "The Pet Collective", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "The Price Is Right: The Barker Era", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "The Red Green Channel", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "The Rifleman", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "The Rotten Tomatoes Channel", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "The UnXplained with William Shatner", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "The Walking Dead Universe", - "category": "Sci-Fi", - "type": "National" - }, - { - "channel_name": "The Weather Channel", - "category": "Weather", - "type": "National" - }, - { - "channel_name": "The Weather Channel en Espanol", - "category": "Weather", - "type": "National" - }, - { - "channel_name": "The Word Network", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "The Worship Network", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "TheBlaze", - "category": "News", - "type": "National" - }, - { - "channel_name": "This Old House", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "This TV", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "ThrillerMax", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Tiny House Nation", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "TLC", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "TNT", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Today All Day", - "category": "News", - "type": "National" - }, - { - "channel_name": "Top Chef Vault: Las Vegas", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Top Cine", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Top Rank Classics", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Total Crime", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Transformers", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Travel + Adventure", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Travel Channel", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Tri-State Christian Television", - "category": "Religious", - "type": "National" - }, - { - "channel_name": "TRN", - "category": "Other", - "type": "National" - }, - { - "channel_name": "TruBlu", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "True Crime Network", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "TruTV", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "TUDN", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Turner Classic Movies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "TV 13 The Poconos", - "category": "News", - "type": "National" - }, - { - "channel_name": "TV Asia", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "TV Chile", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "TV Japan", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "TV Land", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "TV Land Drama", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "TV One", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "TV One Crime & Justice", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "TV Venezuela", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "TV503 Crossing TV", - "category": "Other", - "type": "National" - }, - { - "channel_name": "TVE Internacional", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "TVG", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "TVG Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "TVG2", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "tvK", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "TyC Sports", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "TYT Network", - "category": "News", - "type": "National" - }, - { - "channel_name": "Ultra Banda", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Ultra Cine", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Ultra Clasico", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Ultra Docu", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Ultra Familia", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Ultra Fiesta", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Ultra Film", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Ultra Kidz", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Ultra Luna", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Ultra Macho", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Ultra Mex", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Ultratainment", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Unidentified", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "UniMas", - "category": "Broadcast", - "type": "National" - }, - { - "channel_name": "UniMás", - "category": "Broadcast", - "type": "National" - }, - { - "channel_name": "Universal Action", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Universal Kids", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "Universal Monsters", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Universo", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Univision", - "category": "Broadcast", - "type": "National" - }, - { - "channel_name": "Univision tlnovelas", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Unsolved Mysteries", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Untamed Sports TV", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "UnXplained Zone", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Up TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "UP TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "USA Network", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "USA Today", - "category": "News", - "type": "National" - }, - { - "channel_name": "USArmenia TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "V-me", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "VePlus", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "VH1", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Vice", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Viceland", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "Vien Thao TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "ViendoMovies", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Vivaldi", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Vix Cine Club", - "category": "Movies", - "type": "National" - }, - { - "channel_name": "Vix Novelas De Oro", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Vix Novelas en Familia", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "Vogue", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Wanted: Dead or Alive", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Watchlist", - "category": "Other", - "type": "National" - }, - { - "channel_name": "Waypoint TV", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "WE tv", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "We TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "WeatherNation", - "category": "Weather", - "type": "National" - }, - { - "channel_name": "WeatherNation TV", - "category": "Weather", - "type": "National" - }, - { - "channel_name": "WeatherSpy", - "category": "Weather", - "type": "National" - }, - { - "channel_name": "Welcome Home", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "WGN America", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "Whistle TV", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Wild'N Out", - "category": "Comedy", - "type": "National" - }, - { - "channel_name": "Wipeout Xtra", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "WIRED", - "category": "Documentary", - "type": "National" - }, - { - "channel_name": "WJLA 24/7 News", - "category": "News", - "type": "National" - }, - { - "channel_name": "Women's Sports Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "World Fishing Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "World's Most Evil Killers", - "category": "Crime", - "type": "National" - }, - { - "channel_name": "Wu Tang Collection TV", - "category": "Entertainment", - "type": "National" - }, - { - "channel_name": "XITE", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Xplore", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Yahoo Finance", - "category": "News", - "type": "National" - }, - { - "channel_name": "YES Network", - "category": "Sports", - "type": "National" - }, - { - "channel_name": "Yo! MTV", - "category": "Music", - "type": "National" - }, - { - "channel_name": "Z Living", - "category": "Lifestyle", - "type": "National" - }, - { - "channel_name": "Zee TV", - "category": "Spanish", - "type": "National" - }, - { - "channel_name": "ZooMoo", - "category": "Kids", - "type": "National" - }, - { - "channel_name": "¡Sorpresa!", - "category": "Kids", - "type": "National" - }, - { - "callsign": "KFCT", - "community_served_city": "FORT COLLINS", - "community_served_state": "CO", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDVR", - "community_served_city": "DENVER", - "community_served_state": "CO", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOTF-TV", - "community_served_city": "DAYTONA BEACH", - "community_served_state": "FL", - "network_affiliation": "Grit", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNVA", - "community_served_city": "AUSTIN", - "community_served_state": "TX", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXIN", - "community_served_city": "INDIANAPOLIS", - "community_served_state": "IN", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTIC-TV", - "community_served_city": "HARTFORD", - "community_served_state": "CT", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAKW-DT", - "community_served_city": "KILLEEN", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWLM-CD", - "community_served_city": "WASHINGTON", - "community_served_state": "PA", - "network_affiliation": "TIMELESS TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KABC-TV", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRBC-TV", - "community_served_city": "ABILENE", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSAN-TV", - "community_served_city": "SAN ANGELO", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTXS-TV", - "community_served_city": "SWEETWATER", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K20JX-D", - "community_served_city": "SACRAMENTO", - "community_served_state": "CA", - "network_affiliation": "Three Angels Broadcasting Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WACY-TV", - "community_served_city": "APPLETON", - "community_served_state": "WI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCAV", - "community_served_city": "CHARLOTTESVILLE", - "community_served_state": "VA", - "network_affiliation": "CBS FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRGT-TV", - "community_served_city": "DAYTON", - "community_served_state": "OH", - "network_affiliation": "DABL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRLH-TV", - "community_served_city": "RICHMOND", - "community_served_state": "VA", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUHF", - "community_served_city": "ROCHESTER", - "community_served_state": "NY", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXLV-TV", - "community_served_city": "WINSTON-SALEM", - "community_served_state": "NC", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUTV", - "community_served_city": "BUFFALO", - "community_served_state": "NY", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTAT-TV", - "community_served_city": "CHARLESTON", - "community_served_state": "SC", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVAH-TV", - "community_served_city": "CHARLESTON", - "community_served_state": "WV", - "network_affiliation": "Catchy", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WZTV", - "community_served_city": "NASHVILLE", - "community_served_state": "TN", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WADL", - "community_served_city": "MOUNT CLEMENS", - "community_served_state": "MI", - "network_affiliation": "MyNetworkTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAFB", - "community_served_city": "BATON ROUGE", - "community_served_state": "LA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTOC-TV", - "community_served_city": "SAVANNAH", - "community_served_state": "GA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAFF", - "community_served_city": "HUNTSVILLE", - "community_served_state": "AL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFVS-TV", - "community_served_city": "CAPE GIRARDEAU", - "community_served_state": "MO", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWWL", - "community_served_city": "WATERLOO", - "community_served_state": "IA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WITN-TV", - "community_served_city": "WASHINGTON", - "community_served_state": "NC", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVM", - "community_served_city": "COLUMBUS", - "community_served_state": "GA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVTN-DT", - "community_served_city": "PINE BLUFF", - "community_served_state": "AR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVTH-DT", - "community_served_city": "HOT SPRINGS", - "community_served_state": "AR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVU-CD", - "community_served_city": "SYRACUSE", - "community_served_state": "NY", - "network_affiliation": "Cornerstone TeleVision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHSU-CD", - "community_served_city": "SYRACUSE", - "community_served_state": "NY", - "network_affiliation": "The Walk Television Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFVE", - "community_served_city": "KAILUA-KONA", - "community_served_state": "HI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAKA", - "community_served_city": "SELMA", - "community_served_state": "AL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAIQ", - "community_served_city": "MONTGOMERY", - "community_served_state": "AL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGIQ", - "community_served_city": "LOUISVILLE", - "community_served_state": "AL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCIQ", - "community_served_city": "MOUNT CHEAHA", - "community_served_state": "AL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHIQ", - "community_served_city": "HUNTSVILLE", - "community_served_state": "AL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDIQ", - "community_served_city": "DOZIER", - "community_served_state": "AL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFIQ", - "community_served_city": "FLORENCE", - "community_served_state": "AL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBIQ", - "community_served_city": "BIRMINGHAM", - "community_served_state": "AL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIIQ", - "community_served_city": "DEMOPOLIS", - "community_served_state": "AL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEIQ", - "community_served_city": "MOBILE", - "community_served_state": "AL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLRN", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAKM", - "community_served_city": "ANCHORAGE", - "community_served_state": "AK", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNAT-TV", - "community_served_city": "ALBUQUERQUE", - "community_served_state": "NM", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWTO-TV", - "community_served_city": "NAPERVILLE", - "community_served_state": "IL", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTAJ-TV", - "community_served_city": "ST. JOSEPH", - "community_served_state": "MO", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTJP-TV", - "community_served_city": "GADSDEN", - "community_served_state": "AL", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDOR-TV", - "community_served_city": "BARTLESVILLE", - "community_served_state": "OK", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJLA-TV", - "community_served_city": "WASHINGTON", - "community_served_state": "DC", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUCW", - "community_served_city": "OGDEN", - "community_served_state": "UT", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAZQ", - "community_served_city": "ALBUQUERQUE", - "community_served_state": "NM", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLMA", - "community_served_city": "LIMA", - "community_served_state": "OH", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KACV-TV", - "community_served_city": "AMARILLO", - "community_served_state": "TX", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXTF", - "community_served_city": "TWIN FALLS", - "community_served_state": "ID", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPVI-DT", - "community_served_city": "POCATELLO", - "community_served_state": "ID", - "network_affiliation": "NBC, Catchy Comedy, Movies", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDPN-TV", - "community_served_city": "WILMINGTON", - "community_served_state": "DE", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WABC-TV", - "community_served_city": "NEW YORK", - "community_served_state": "NY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMTJ", - "community_served_city": "FAJARDO", - "community_served_state": "PR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQTO", - "community_served_city": "PONCE", - "community_served_state": "PR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXJ-TV", - "community_served_city": "BATAVIA", - "community_served_state": "NY", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSVI", - "community_served_city": "CHRISTIANSTED", - "community_served_state": "VI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBTV-CD", - "community_served_city": "SACRAMENTO", - "community_served_state": "CA", - "network_affiliation": "SONLIFE BROADCASTING NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCYB-TV", - "community_served_city": "BRISTOL", - "community_served_state": "VA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVEW", - "community_served_city": "KENNEWICK", - "community_served_state": "WA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAPP", - "community_served_city": "YAKIMA", - "community_served_state": "WA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOPX-TV", - "community_served_city": "OKLAHOMA CITY", - "community_served_state": "OK", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGBA-TV", - "community_served_city": "GREEN BAY", - "community_served_state": "WI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEUX", - "community_served_city": "CHIPPEWA FALLS", - "community_served_state": "WI", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLAX", - "community_served_city": "LA CROSSE", - "community_served_state": "WI", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUAS-TV", - "community_served_city": "TUCSON", - "community_served_state": "AZ", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAET", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUAT-TV", - "community_served_city": "TUCSON", - "community_served_state": "AZ", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFPH-CD", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "UniMas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAFT", - "community_served_city": "FAYETTEVILLE", - "community_served_state": "AR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KETG", - "community_served_city": "ARKADELPHIA", - "community_served_state": "AR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTEJ", - "community_served_city": "JONESBORO", - "community_served_state": "AR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KETS", - "community_served_city": "LITTLE ROCK", - "community_served_state": "AR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEMV", - "community_served_city": "MOUNTAIN VIEW", - "community_served_state": "AR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVTJ-DT", - "community_served_city": "JONESBORO", - "community_served_state": "AR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTHV", - "community_served_city": "LITTLE ROCK", - "community_served_state": "AR", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPGX", - "community_served_city": "PANAMA CITY", - "community_served_state": "FL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCCV-TV", - "community_served_city": "ARECIBO", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUVN", - "community_served_city": "HARTFORD", - "community_served_state": "CT", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVXF", - "community_served_city": "CHARLOTTE AMALIE", - "community_served_state": "VI", - "network_affiliation": "Cozi TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWMB", - "community_served_city": "FLORENCE", - "community_served_state": "SC", - "network_affiliation": "DABL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNET-CD", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFXG", - "community_served_city": "AUGUSTA", - "community_served_state": "GA", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAAH-TV", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCLO-TV", - "community_served_city": "AGUADA", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRBL", - "community_served_city": "COLUMBUS", - "community_served_state": "GA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIPB", - "community_served_city": "MUNCIE", - "community_served_state": "IN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KARD", - "community_served_city": "WEST MONROE", - "community_served_state": "LA", - "network_affiliation": "FOX Television Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOZL-TV", - "community_served_city": "SPRINGFIELD", - "community_served_state": "MO", - "network_affiliation": "MyNetworkTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLBK-TV", - "community_served_city": "LUBBOCK", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVW", - "community_served_city": "EVANSVILLE", - "community_served_state": "IN", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVII-TV", - "community_served_city": "BANGOR", - "community_served_state": "ME", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLWC", - "community_served_city": "NEW BEDFORD", - "community_served_state": "MA", - "network_affiliation": "Court TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBNT-CD", - "community_served_city": "SAN DIEGO", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DDWSJU-TV", - "community_served_city": "SAN JUAN", - "community_served_state": "PR", - "network_affiliation": "SBS/MEGA", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTTA", - "community_served_city": "ST. PETERSBURG", - "community_served_state": "FL", - "network_affiliation": "The CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDWL", - "community_served_city": "BAYAMON", - "community_served_state": "PR", - "network_affiliation": "Enlace", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WALA-TV", - "community_served_city": "MOBILE", - "community_served_state": "AL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHON-TV", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "FOX/CW/GRIT/REWIND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAII-TV", - "community_served_city": "WAILUKU", - "community_served_state": "HI", - "network_affiliation": "FOX/CW/GRIT/REWIND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHAW-TV", - "community_served_city": "HILO", - "community_served_state": "HI", - "network_affiliation": "FOX/CW/GRIT/REWIND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBAK-TV", - "community_served_city": "BAKERSFIELD", - "community_served_state": "CA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVUE-DT", - "community_served_city": "NEW ORLEANS", - "community_served_state": "LA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLUK-TV", - "community_served_city": "GREEN BAY", - "community_served_state": "WI", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVY", - "community_served_city": "DOTHAN", - "community_served_state": "AL", - "network_affiliation": "CBS, NBC, CW, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WABE-TV", - "community_served_city": "ATLANTA", - "community_served_state": "GA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSIU-TV", - "community_served_city": "CARBONDALE", - "community_served_state": "IL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUSI-TV", - "community_served_city": "OLNEY", - "community_served_state": "IL", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNMU", - "community_served_city": "MARQUETTE", - "community_served_state": "MI", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMOS-TV", - "community_served_city": "SEDALIA", - "community_served_state": "MO", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOCE-TV", - "community_served_city": "HUNTINGTON BEACH", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVUT", - "community_served_city": "VINCENNES", - "community_served_state": "IN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPCT", - "community_served_city": "PANAMA CITY BEACH", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTJR", - "community_served_city": "QUINCY", - "community_served_state": "IL", - "network_affiliation": "CTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUNS-TV", - "community_served_city": "BELLEVUE", - "community_served_state": "WA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTAP-TV", - "community_served_city": "PARKERSBURG", - "community_served_state": "WV", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTOK-TV", - "community_served_city": "MERIDIAN", - "community_served_state": "MS", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHSV-TV", - "community_served_city": "HARRISONBURG", - "community_served_state": "VA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWIFR", - "community_served_city": "FREEPORT", - "community_served_state": "IL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHQA-TV", - "community_served_city": "HANNIBAL", - "community_served_state": "MO", - "network_affiliation": "KHQA D1 - CBS; KHQA D2 - ABC; KHQA D3 - Comet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDLH", - "community_served_city": "DULUTH", - "community_served_state": "MN", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBKO", - "community_served_city": "BOWLING GREEN", - "community_served_state": "KY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYTV", - "community_served_city": "YOUNGSTOWN", - "community_served_state": "OH", - "network_affiliation": "ABC / MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBSV", - "community_served_city": "CERES", - "community_served_state": "CA", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYUS-TV", - "community_served_city": "MILES CITY", - "community_served_state": "MT", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSVI", - "community_served_city": "BILLINGS", - "community_served_state": "MT", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVH-DT", - "community_served_city": "HELENA", - "community_served_state": "MT", - "network_affiliation": "NBC KTVH 12.1, MTN KTVH-D2 12.2, Cozi 12.3, Court TV 12.4, Mystery 12.5, HSN 12.6", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUVN-CD", - "community_served_city": "FORT WORTH", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIAT", - "community_served_city": "BIRMINGHAM", - "community_served_state": "AL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQPT-TV", - "community_served_city": "MOLINE", - "community_served_state": "IL", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQIN", - "community_served_city": "DAVENPORT", - "community_served_state": "IA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXD-TV", - "community_served_city": "ANN ARBOR", - "community_served_state": "MI", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPXG-TV", - "community_served_city": "SALEM", - "community_served_state": "OR", - "network_affiliation": "ION, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, QVC, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVEN-TV", - "community_served_city": "MELBOURNE", - "community_served_state": "FL", - "network_affiliation": "UNIVISION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYZZ-TV", - "community_served_city": "BLOOMINGTON", - "community_served_state": "IL", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBRA-TV", - "community_served_city": "ROANOKE", - "community_served_state": "VA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWMSY-TV", - "community_served_city": "MARION", - "community_served_state": "VA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWSBN-TV", - "community_served_city": "NORTON", - "community_served_state": "VA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNYE-TV", - "community_served_city": "NEW YORK", - "community_served_state": "NY", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFSG", - "community_served_city": "PANAMA CITY", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHA-TV", - "community_served_city": "MADISON", - "community_served_state": "WI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKAR-TV", - "community_served_city": "EAST LANSING", - "community_served_state": "MI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPBS", - "community_served_city": "SAN DIEGO", - "community_served_state": "CA", - "network_affiliation": "PUBLIC BROADCASTING SERVICE", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSL-TV", - "community_served_city": "SALT LAKE CITY", - "community_served_state": "UT", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFXT", - "community_served_city": "BOSTON", - "community_served_state": "MA", - "network_affiliation": "FOX (25.1); Comet TV (25.2) & Laff TV (25.3)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDPX-TV", - "community_served_city": "WOBURN", - "community_served_state": "MA", - "network_affiliation": "Grit", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFGX", - "community_served_city": "FORT WALTON BEACH", - "community_served_state": "FL", - "network_affiliation": "MyNetworkTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBGU-TV", - "community_served_city": "BOWLING GREEN", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXPX-TV", - "community_served_city": "BRADENTON", - "community_served_state": "FL", - "network_affiliation": "ION, Court TV, Grit Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBTX-TV", - "community_served_city": "BRYAN", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKDYW", - "community_served_city": "WACO", - "community_served_state": "TX", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEFS", - "community_served_city": "COCOA", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBYU-TV", - "community_served_city": "PROVO", - "community_served_state": "UT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WILX-TV", - "community_served_city": "ONONDAGA", - "community_served_state": "MI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAUZ-TV", - "community_served_city": "WICHITA FALLS", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOSA-TV", - "community_served_city": "ODESSA", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHOI", - "community_served_city": "PEORIA", - "community_served_state": "IL", - "network_affiliation": "TBD", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSAW-TV", - "community_served_city": "WAUSAU", - "community_served_state": "WI", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWLP", - "community_served_city": "SPRINGFIELD", - "community_served_state": "MA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTRF-TV", - "community_served_city": "WHEELING", - "community_served_state": "WV", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMTV", - "community_served_city": "MADISON", - "community_served_state": "WI", - "network_affiliation": "NBC, CW, METV, START TV, WEATHERNATION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWQC-TV", - "community_served_city": "DAVENPORT", - "community_served_state": "IA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUPA", - "community_served_city": "ATLANTA", - "community_served_state": "GA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTPX-TV", - "community_served_city": "OKMULGEE", - "community_served_state": "OK", - "network_affiliation": "ION, KJRH, Court TV, Grit, Mystery, Jewelry TV, QVC, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KASW", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGTW-TV", - "community_served_city": "MILLVILLE", - "community_served_state": "NJ", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJFB", - "community_served_city": "LEBANON", - "community_served_state": "TN", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KJTL", - "community_served_city": "WICHITA FALLS", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBPX-TV", - "community_served_city": "BOSTON", - "community_served_state": "MA", - "network_affiliation": "ION, Mystery, SCRIPPS News, Bounce, IONPlus, Jewlery TV, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUVI-DT", - "community_served_city": "BAKERSFIELD", - "community_served_state": "CA", - "network_affiliation": "Quest", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGFL", - "community_served_city": "HIGH SPRINGS", - "community_served_state": "FL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIVB-TV", - "community_served_city": "BUFFALO", - "community_served_state": "NY", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGCW", - "community_served_city": "BURLINGTON", - "community_served_state": "IA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOLN", - "community_served_city": "LINCOLN", - "community_served_state": "NE", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEAU", - "community_served_city": "EAU CLAIRE", - "community_served_state": "WI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGIN", - "community_served_city": "GRAND ISLAND", - "community_served_state": "NE", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDTI", - "community_served_city": "INDIANAPOLIS", - "community_served_state": "IN", - "network_affiliation": "IND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNUV", - "community_served_city": "BALTIMORE", - "community_served_state": "MD", - "network_affiliation": "The CW Baltimore", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUJA", - "community_served_city": "CAGUAS", - "community_served_state": "PR", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQET", - "community_served_city": "WATSONVILLE", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOBI", - "community_served_city": "MEDFORD", - "community_served_state": "OR", - "network_affiliation": "NBC and COZI", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAEF-TV", - "community_served_city": "ARCATA", - "community_served_state": "CA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOTI", - "community_served_city": "KLAMATH FALLS", - "community_served_state": "OR", - "network_affiliation": "NBC and COZI", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRCR-TV", - "community_served_city": "REDDING", - "community_served_state": "CA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLSR-TV", - "community_served_city": "EUGENE", - "community_served_state": "OR", - "network_affiliation": "FOX & MYNET", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQSL", - "community_served_city": "FORT BRAGG", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAMR-TV", - "community_served_city": "AMARILLO", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUAB", - "community_served_city": "LORAIN", - "community_served_state": "OH", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLRU", - "community_served_city": "AUSTIN", - "community_served_state": "TX", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPVI-TV", - "community_served_city": "PHILADELPHIA", - "community_served_state": "PA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVD", - "community_served_city": "DURHAM", - "community_served_state": "NC", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFSN-TV", - "community_served_city": "FRESNO", - "community_served_state": "CA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTOO-TV", - "community_served_city": "JUNEAU", - "community_served_state": "AK", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOI-DT", - "community_served_city": "AMES", - "community_served_state": "IA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRAL-TV", - "community_served_city": "RALEIGH", - "community_served_state": "NC", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCIV", - "community_served_city": "CHARLESTON", - "community_served_state": "SC", - "network_affiliation": "My Network TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFXB", - "community_served_city": "MYRTLE BEACH", - "community_served_state": "SC", - "network_affiliation": "Fox/MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGGS-TV", - "community_served_city": "GREENVILLE", - "community_served_state": "SC", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBBZ-TV", - "community_served_city": "SPRINGVILLE", - "community_served_state": "NY", - "network_affiliation": "METV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCBS-TV", - "community_served_city": "NEW YORK", - "community_served_state": "NY", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBBM-TV", - "community_served_city": "CHICAGO", - "community_served_state": "IL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCBS-TV", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCCO-TV", - "community_served_city": "MINNEAPOLIS", - "community_served_state": "MN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJMN-TV", - "community_served_city": "ESCANABA", - "community_served_state": "MI", - "network_affiliation": "MyTV Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKCCO-TV", - "community_served_city": "ALEXANDRIA", - "community_served_state": "MN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFRV-TV", - "community_served_city": "GREEN BAY", - "community_served_state": "WI", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCCW-TV", - "community_served_city": "WALKER", - "community_served_state": "MN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCRG-TV", - "community_served_city": "CEDAR RAPIDS", - "community_served_state": "IA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMCN-TV", - "community_served_city": "PRINCETON", - "community_served_state": "NJ", - "network_affiliation": "Shop LC to 6-30-24, IND beginning 7-1-24 - 12-31-24", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNCT", - "community_served_city": "BELTON", - "community_served_state": "TX", - "network_affiliation": "CW / StartTV / DABL / H & I", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGNT", - "community_served_city": "PORTSMOUTH", - "community_served_state": "VA", - "network_affiliation": "CW, Antenna TV, Grit, DABL, QVC2, HSN2", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBTS-CD", - "community_served_city": "NASHUA", - "community_served_state": "NH", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXXV", - "community_served_city": "WACO", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTGL", - "community_served_city": "LEESBURG", - "community_served_state": "FL", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCMU-TV", - "community_served_city": "MOUNT PLEASANT", - "community_served_state": "MI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCMW", - "community_served_city": "MANISTEE", - "community_served_state": "MI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCML", - "community_served_city": "ALPENA", - "community_served_state": "MI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCMV", - "community_served_city": "CADILLAC", - "community_served_state": "MI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUXP-TV", - "community_served_city": "NASHVILLE", - "community_served_state": "TN", - "network_affiliation": "MYTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCVE-TV", - "community_served_city": "RICHMOND", - "community_served_state": "VA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCVW", - "community_served_city": "RICHMOND", - "community_served_state": "VA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHTJ", - "community_served_city": "CHARLOTTESVILLE", - "community_served_state": "VA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNVC", - "community_served_city": "CULPEPER", - "community_served_state": "VA", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNVT", - "community_served_city": "SPOTSYLVANIA", - "community_served_state": "VA", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWYP-DT", - "community_served_city": "LARAMIE", - "community_served_state": "WY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCWC-DT", - "community_served_city": "LANDER", - "community_served_state": "WY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGNS-TV", - "community_served_city": "LAREDO", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFFF-TV", - "community_served_city": "BURLINGTON", - "community_served_state": "VT", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRAY-TV", - "community_served_city": "WAKE FOREST", - "community_served_state": "NC", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBMT", - "community_served_city": "BEAUMONT", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRDM-CD", - "community_served_city": "HARTFORD", - "community_served_state": "CT", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTUU-TV", - "community_served_city": "ANCHORAGE", - "community_served_state": "AK", - "network_affiliation": "NBC, H&I", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTMW", - "community_served_city": "SALT LAKE CITY", - "community_served_state": "UT", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSNV", - "community_served_city": "LAS VEGAS", - "community_served_state": "NV", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIII", - "community_served_city": "CORPUS CHRISTI", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRCW-TV", - "community_served_city": "SALEM", - "community_served_state": "OR", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVCW", - "community_served_city": "LAS VEGAS", - "community_served_state": "NV", - "network_affiliation": "The CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSCE", - "community_served_city": "EL PASO", - "community_served_state": "TX", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSFL-TV", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "CW, Court TV, Antenna TV, Defy, ION Plus, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTXL", - "community_served_city": "SACRAMENTO", - "community_served_state": "CA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOTV", - "community_served_city": "BATTLE CREEK", - "community_served_state": "MI", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPMT", - "community_served_city": "YORK", - "community_served_state": "PA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMSN-TV", - "community_served_city": "MADISON", - "community_served_state": "WI", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNPB", - "community_served_city": "RENO", - "community_served_state": "NV", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUSI-TV", - "community_served_city": "SAN DIEGO", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQCA", - "community_served_city": "STOCKTON", - "community_served_state": "CA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCEN-TV", - "community_served_city": "TEMPLE", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIPX-TV", - "community_served_city": "BLOOMINGTON", - "community_served_state": "IN", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJAL", - "community_served_city": "SILVER SPRING", - "community_served_state": "MD", - "network_affiliation": "Merit Street", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXYZ-TV", - "community_served_city": "DETROIT", - "community_served_state": "MI", - "network_affiliation": "ABC; Bounce TV; Laff; Court TV; Shop LC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPSP-CD", - "community_served_city": "CATHEDRAL CITY", - "community_served_state": "CA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRET-CD", - "community_served_city": "PALM SPRINGS", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCBD-TV", - "community_served_city": "CHARLESTON", - "community_served_state": "SC", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVI", - "community_served_city": "CHARLOTTE", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBFF", - "community_served_city": "BALTIMORE", - "community_served_state": "MD", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTTW", - "community_served_city": "CHICAGO", - "community_served_state": "IL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHBR", - "community_served_city": "PENSACOLA", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUPV", - "community_served_city": "ASHLAND", - "community_served_state": "VA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVFX", - "community_served_city": "CLARKSBURG", - "community_served_state": "WV", - "network_affiliation": "FOX, CW, START TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCPX-TV", - "community_served_city": "CHICAGO", - "community_served_state": "IL", - "network_affiliation": "ION, Bounce, Court TV, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGGN-TV", - "community_served_city": "SANDUSKY", - "community_served_state": "OH", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLLA", - "community_served_city": "KALAMAZOO", - "community_served_state": "MI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K20DN-D", - "community_served_city": "WICHITA FALLS", - "community_served_state": "TX", - "network_affiliation": "NRB", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGBP-TV", - "community_served_city": "OPELIKA", - "community_served_state": "AL", - "network_affiliation": "Merit Street", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHTN", - "community_served_city": "MURFREESBORO", - "community_served_state": "TN", - "network_affiliation": "Christian Television Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSFJ-TV", - "community_served_city": "LONDON", - "community_served_state": "OH", - "network_affiliation": "SCRIPPS News, Bounce, ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFGC", - "community_served_city": "PALM BEACH", - "community_served_state": "FL", - "network_affiliation": "CTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCLF", - "community_served_city": "CLEARWATER", - "community_served_state": "FL", - "network_affiliation": "CTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSTR-TV", - "community_served_city": "CINCINNATI", - "community_served_state": "OH", - "network_affiliation": "MyNet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVNY", - "community_served_city": "BURLINGTON", - "community_served_state": "VT", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIVT", - "community_served_city": "BINGHAMTON", - "community_served_state": "NY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLKN", - "community_served_city": "LINCOLN", - "community_served_state": "NE", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCAU-TV", - "community_served_city": "SIOUX CITY", - "community_served_state": "IA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKRC-TV", - "community_served_city": "CINCINNATI", - "community_served_state": "OH", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTSP", - "community_served_city": "ST. PETERSBURG", - "community_served_state": "FL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDAF-TV", - "community_served_city": "KANSAS CITY", - "community_served_state": "MO", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLVX", - "community_served_city": "LAS VEGAS", - "community_served_state": "NV", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KETF-CD", - "community_served_city": "LAREDO", - "community_served_state": "TX", - "network_affiliation": "Unimas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJXX", - "community_served_city": "ORANGE PARK", - "community_served_state": "FL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPMI-TV", - "community_served_city": "MOBILE", - "community_served_state": "AL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WATN-TV", - "community_served_city": "MEMPHIS", - "community_served_state": "TN", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTTU-TV", - "community_served_city": "TUCSON", - "community_served_state": "AZ", - "network_affiliation": "MYNET (1/1-8/31); CW (beginning 9/1)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFOX-TV", - "community_served_city": "JACKSONVILLE", - "community_served_state": "FL", - "network_affiliation": "FOX/ME-TV/HEROES & ICONS/TELEMUNDO", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOKI-TV", - "community_served_city": "TULSA", - "community_served_state": "OK", - "network_affiliation": "FOX (23.1), METV (23.2), Dabl (23.3)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSAS-TV", - "community_served_city": "WICHITA", - "community_served_state": "KS", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAAS-TV", - "community_served_city": "SALINA", - "community_served_state": "KS", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFTC", - "community_served_city": "MINNEAPOLIS", - "community_served_state": "MN", - "network_affiliation": "MNT", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLRT-TV", - "community_served_city": "LITTLE ROCK", - "community_served_state": "AR", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXXA-TV", - "community_served_city": "ALBANY", - "community_served_state": "NY", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWAY", - "community_served_city": "WILMINGTON", - "community_served_state": "NC", - "network_affiliation": "ABC,CBS,CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPMR", - "community_served_city": "SANTA BARBARA", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDSC-TV", - "community_served_city": "NEW SMYRNA BEACH", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DDWYCC", - "community_served_city": "CHICAGO", - "community_served_state": "IL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNDO", - "community_served_city": "YAKIMA", - "community_served_state": "WA", - "network_affiliation": "NBC; SWX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNDU", - "community_served_city": "RICHLAND", - "community_served_state": "WA", - "network_affiliation": "NBC; SWX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXTX", - "community_served_city": "COLUMBUS", - "community_served_state": "GA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCBI-TV", - "community_served_city": "COLUMBUS", - "community_served_state": "MS", - "network_affiliation": "CBS, FOX, MNT", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBFS-TV", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGBO-DT", - "community_served_city": "JOLIET", - "community_served_state": "IL", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPSG", - "community_served_city": "PHILADELPHIA", - "community_served_state": "PA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOCO-TV", - "community_served_city": "OKLAHOMA CITY", - "community_served_state": "OK", - "network_affiliation": "ABC, Me-TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGMB-TV", - "community_served_city": "BATON ROUGE", - "community_served_state": "LA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHBQ-TV", - "community_served_city": "MEMPHIS", - "community_served_state": "TN", - "network_affiliation": "FOX (13.1), Heroes & Icons (13.2), and ION Mystery (13.3)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWKT-TV", - "community_served_city": "WACO", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVEO-TV", - "community_served_city": "BROWNSVILLE", - "community_served_state": "TX", - "network_affiliation": "NBC and CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPEJ-TV", - "community_served_city": "ODESSA", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMSS-TV", - "community_served_city": "SHREVEPORT", - "community_served_state": "LA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFFX-TV", - "community_served_city": "PENDLETON", - "community_served_state": "OR", - "network_affiliation": "FOX, Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAXN-TV", - "community_served_city": "KANNAPOLIS", - "community_served_state": "NC", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUCF-TV", - "community_served_city": "ORLANDO", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KETH-TV", - "community_served_city": "HOUSTON", - "community_served_state": "TX", - "network_affiliation": "TRINITY BROADCASTING NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KITU-TV", - "community_served_city": "BEAUMONT", - "community_served_state": "TX", - "network_affiliation": "TRINITY BROADCASTING NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLUJ-TV", - "community_served_city": "HARLINGEN", - "community_served_state": "TX", - "network_affiliation": "TRINITY BROADCASTING NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTAS", - "community_served_city": "SAN LUIS OBISPO", - "community_served_state": "CA", - "network_affiliation": "Telexitos", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUVM-CD", - "community_served_city": "MISSOURI CITY", - "community_served_state": "TX", - "network_affiliation": "NEW TANG DYNASTY", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WATC-DT", - "community_served_city": "ATLANTA", - "community_served_state": "GA", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPBT", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEDW", - "community_served_city": "STAMFORD", - "community_served_state": "CT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEDY", - "community_served_city": "NEW HAVEN", - "community_served_state": "CT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEDH", - "community_served_city": "HARTFORD", - "community_served_state": "CT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEDN", - "community_served_city": "NORWICH", - "community_served_state": "CT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KJJC-TV", - "community_served_city": "GREAT FALLS", - "community_served_state": "MT", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KATN", - "community_served_city": "FAIRBANKS", - "community_served_state": "AK", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KJUD", - "community_served_city": "JUNEAU", - "community_served_state": "AK", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYUR", - "community_served_city": "ANCHORAGE", - "community_served_state": "AK", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPCB-TV", - "community_served_city": "GREENSBURG", - "community_served_state": "PA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKBS-TV", - "community_served_city": "ALTOONA", - "community_served_state": "PA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYPX-TV", - "community_served_city": "AMSTERDAM", - "community_served_state": "NY", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUPL", - "community_served_city": "SLIDELL", - "community_served_state": "LA", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHBF-TV", - "community_served_city": "ROCK ISLAND", - "community_served_state": "IL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WISE-TV", - "community_served_city": "FORT WAYNE", - "community_served_state": "IN", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAIT", - "community_served_city": "JONESBORO", - "community_served_state": "AR", - "network_affiliation": "ABC, NBC, CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAVE", - "community_served_city": "LOUISVILLE", - "community_served_state": "KY", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIS", - "community_served_city": "COLUMBIA", - "community_served_state": "SC", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFIE", - "community_served_city": "EVANSVILLE", - "community_served_state": "IN", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTOL", - "community_served_city": "TOLEDO", - "community_served_state": "OH", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSFA", - "community_served_city": "MONTGOMERY", - "community_served_state": "AL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPLC", - "community_served_city": "LAKE CHARLES", - "community_served_state": "LA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLOX", - "community_served_city": "BILOXI", - "community_served_state": "MS", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KJLA", - "community_served_city": "VENTURA", - "community_served_state": "CA", - "network_affiliation": "Vision Latina", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRMA-TV", - "community_served_city": "DENVER", - "community_served_state": "CO", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRMJ", - "community_served_city": "GRAND JUNCTION", - "community_served_state": "CO", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCCT-TV", - "community_served_city": "WATERBURY", - "community_served_state": "CT", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMJQ-CD", - "community_served_city": "SYRACUSE", - "community_served_state": "NY", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WONO-CD", - "community_served_city": "SYRACUSE, ETC.", - "community_served_state": "NY", - "network_affiliation": "AMG TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWYB", - "community_served_city": "BUTTE", - "community_served_state": "MT", - "network_affiliation": "ABC; SWX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTMF", - "community_served_city": "MISSOULA", - "community_served_state": "MT", - "network_affiliation": "ABC; SWX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWJE-DT", - "community_served_city": "DERRY", - "community_served_state": "NH", - "network_affiliation": "True Crime", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCBA", - "community_served_city": "SALINAS", - "community_served_state": "CA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRUA", - "community_served_city": "FAJARDO", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DDWDHS", - "community_served_city": "IRON MOUNTAIN", - "community_served_state": "MI", - "network_affiliation": "N/A", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WZBJ", - "community_served_city": "DANVILLE", - "community_served_state": "VA", - "network_affiliation": "MyNetwork, DABL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBUI", - "community_served_city": "DECATUR", - "community_served_state": "IL", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMDT", - "community_served_city": "SALISBURY", - "community_served_state": "MD", - "network_affiliation": "ABC/CW/MeTV/ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUVC-DT", - "community_served_city": "FAYETTEVILLE", - "community_served_state": "NC", - "network_affiliation": "UNIVISION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDCQ-TV", - "community_served_city": "BAD AXE", - "community_served_state": "MI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNTZ-TV", - "community_served_city": "NATCHEZ", - "community_served_state": "MS", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVMD", - "community_served_city": "TWENTYNINE PALMS", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWTI", - "community_served_city": "WATERTOWN", - "community_served_state": "NY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMIR-TV", - "community_served_city": "PALM SPRINGS", - "community_served_state": "CA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFTT-TV", - "community_served_city": "VENICE", - "community_served_state": "FL", - "network_affiliation": "The Church of Scientology", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVS", - "community_served_city": "DETROIT", - "community_served_state": "MI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WABM", - "community_served_city": "BIRMINGHAM", - "community_served_state": "AL", - "network_affiliation": "My Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLEG-CD", - "community_served_city": "DALLAS", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBCA", - "community_served_city": "ALEXANDRIA", - "community_served_state": "LA", - "network_affiliation": "Heroes and Icons", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIFR", - "community_served_city": "VISALIA", - "community_served_state": "CA", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCJB-TV", - "community_served_city": "GAINESVILLE", - "community_served_state": "FL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WABI-TV", - "community_served_city": "BANGOR", - "community_served_state": "ME", - "network_affiliation": "CBS; CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYOU", - "community_served_city": "SCRANTON", - "community_served_state": "PA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPDE-TV", - "community_served_city": "FLORENCE", - "community_served_state": "SC", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDFI", - "community_served_city": "DALLAS", - "community_served_state": "TX", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLMB", - "community_served_city": "TOLEDO", - "community_served_state": "OH", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAZD", - "community_served_city": "LAKE DALLAS", - "community_served_state": "TX", - "network_affiliation": "Spectrum News 1", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSRE", - "community_served_city": "PENSACOLA", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFXB-TV", - "community_served_city": "DUBUQUE", - "community_served_state": "IA", - "network_affiliation": "CTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSGW-TV", - "community_served_city": "SHERIDAN", - "community_served_state": "WY", - "network_affiliation": "ABC/FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNEP", - "community_served_city": "SIDNEY", - "community_served_state": "NE", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQME", - "community_served_city": "LEAD", - "community_served_state": "SD", - "network_affiliation": "MeTV/Heroes and Icons/StartTV/Catchy Comedy/Oxygen", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHME", - "community_served_city": "RAPID CITY", - "community_served_state": "SD", - "network_affiliation": "MeTV/Heroes and Icons/StartTV/Catchy Comedy/Oxygen", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDSE", - "community_served_city": "DULUTH", - "community_served_state": "MN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGMM-CD", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "Merit Street", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVM-TV", - "community_served_city": "BUTTE", - "community_served_state": "MT", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCFW-TV", - "community_served_city": "KALISPELL", - "community_served_state": "MT", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KECI-TV", - "community_served_city": "MISSOULA", - "community_served_state": "MT", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDTV-CD", - "community_served_city": "SANTA ROSA", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WETP-TV", - "community_served_city": "SNEEDVILLE", - "community_served_state": "TN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKOP-TV", - "community_served_city": "KNOXVILLE", - "community_served_state": "TN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KODE-TV", - "community_served_city": "JOPLIN", - "community_served_state": "MO", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAAL", - "community_served_city": "AUSTIN", - "community_served_state": "MN", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTWO-TV", - "community_served_city": "CASPER", - "community_served_state": "WY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQCK", - "community_served_city": "CHEYENNE", - "community_served_state": "WY", - "network_affiliation": "CTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEIU-TV", - "community_served_city": "CHARLESTON", - "community_served_state": "IL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCTI-TV", - "community_served_city": "NEW BERN", - "community_served_state": "NC", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KENW", - "community_served_city": "PORTALES", - "community_served_state": "NM", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIDP", - "community_served_city": "GUAYAMA", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMUM-CD", - "community_served_city": "SACRAMENTO", - "community_served_state": "CA", - "network_affiliation": "TELEMUNDO", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KZMM-CD", - "community_served_city": "FRESNO", - "community_served_state": "CA", - "network_affiliation": "CRTV NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVMM-CD", - "community_served_city": "SANTA BARBARA", - "community_served_state": "CA", - "network_affiliation": "COZI TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KABE-CD", - "community_served_city": "BAKERSFIELD", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVIZ", - "community_served_city": "CLEVELAND", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHLA-TV", - "community_served_city": "LA CROSSE", - "community_served_state": "WI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYDN", - "community_served_city": "LOWELL", - "community_served_state": "MA", - "network_affiliation": "IND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHWC-TV", - "community_served_city": "MENOMONIE", - "community_served_state": "WI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNET", - "community_served_city": "NEWARK", - "community_served_state": "NJ", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPNE-TV", - "community_served_city": "GREEN BAY", - "community_served_state": "WI", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLAE-TV", - "community_served_city": "NEW ORLEANS", - "community_served_state": "LA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCOS", - "community_served_city": "EL PASO", - "community_served_state": "TX", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WZVN-TV", - "community_served_city": "NAPLES", - "community_served_state": "FL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMC-TV", - "community_served_city": "MEMPHIS", - "community_served_state": "TN", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUPW", - "community_served_city": "TOLEDO", - "community_served_state": "OH", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNSN-TV", - "community_served_city": "RENO", - "community_served_state": "NV", - "network_affiliation": "MyNet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WACH", - "community_served_city": "COLUMBIA", - "community_served_state": "SC", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTNZ", - "community_served_city": "KNOXVILLE", - "community_served_state": "TN", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WECN", - "community_served_city": "NARANJITO", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBSI", - "community_served_city": "CAPE GIRARDEAU", - "community_served_state": "MO", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSBW", - "community_served_city": "SALINAS", - "community_served_state": "CA", - "network_affiliation": "NBC, ABC, ESTV, Story TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSBY", - "community_served_city": "SAN LUIS OBISPO", - "community_served_state": "CA", - "network_affiliation": "NBC; LAFF; GRIT; Court TV; Scripps News; ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFXP", - "community_served_city": "ERIE", - "community_served_state": "PA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSUR-DT", - "community_served_city": "PONCE", - "community_served_state": "PR", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLII-DT", - "community_served_city": "CAGUAS", - "community_served_state": "PR", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVEA", - "community_served_city": "CORONA", - "community_served_state": "CA", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KJNP-TV", - "community_served_city": "NORTH POLE", - "community_served_state": "AK", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WATM-TV", - "community_served_city": "ALTOONA", - "community_served_state": "PA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWCP-TV", - "community_served_city": "JOHNSTOWN", - "community_served_state": "PA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRMZ", - "community_served_city": "STEAMBOAT SPRINGS", - "community_served_state": "CO", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTWO", - "community_served_city": "TERRE HAUTE", - "community_served_state": "IN", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQTV", - "community_served_city": "ST. JOSEPH", - "community_served_state": "MO", - "network_affiliation": "ION TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRMT", - "community_served_city": "DENVER", - "community_served_state": "CO", - "network_affiliation": "IND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRPX-TV", - "community_served_city": "ROCKY MOUNT", - "community_served_state": "NC", - "network_affiliation": "ION, Court TV, IONPlus, Bounce, CRIME, Jewelry TV, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMYT-TV", - "community_served_city": "ROCK HILL", - "community_served_state": "SC", - "network_affiliation": "MyNet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWNYJ-TV", - "community_served_city": "WEST MILFORD", - "community_served_state": "NJ", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTFK-DT", - "community_served_city": "STOCKTON", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPXR-TV", - "community_served_city": "CEDAR RAPIDS", - "community_served_state": "IA", - "network_affiliation": "ION, Grit, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWHO", - "community_served_city": "CHILLICOTHE", - "community_served_state": "OH", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHGI-TV", - "community_served_city": "KEARNEY", - "community_served_state": "NE", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSNB-TV", - "community_served_city": "YORK", - "community_served_state": "NE", - "network_affiliation": "NBC/MeMY/ION/Oxygen/Outlaw", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWNB-TV", - "community_served_city": "HAYES CENTER", - "community_served_state": "NE", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFPX-TV", - "community_served_city": "ARCHER LODGE", - "community_served_state": "NC", - "network_affiliation": "SCRIPPS News, Bounce, LAFF", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDAM-TV", - "community_served_city": "LAUREL", - "community_served_state": "MS", - "network_affiliation": "NBC, ABC, Bounce, True Crime, Grit", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVO", - "community_served_city": "KIRKSVILLE", - "community_served_state": "MO", - "network_affiliation": "KTVO D1 - ABC; KTVO D2 - CBS; KTVO D3 - Comet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSTM-TV", - "community_served_city": "SYRACUSE", - "community_served_state": "NY", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPBN-TV", - "community_served_city": "TRAVERSE CITY", - "community_served_state": "MI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTOM-TV", - "community_served_city": "CHEBOYGAN", - "community_served_state": "MI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSES", - "community_served_city": "TUSCALOOSA", - "community_served_state": "AL", - "network_affiliation": "Heroes and Icons, Catchy Comedy, Start TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLUC-TV", - "community_served_city": "MARQUETTE", - "community_served_state": "MI", - "network_affiliation": "NBC, FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCAL-TV", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKPC-TV", - "community_served_city": "LOUISVILLE", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAUU", - "community_served_city": "ANCHORAGE", - "community_served_state": "AK", - "network_affiliation": "My Network, CBS and Antenna", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTNC-TV", - "community_served_city": "CONCORD", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGWG", - "community_served_city": "CHARLESTON", - "community_served_state": "SC", - "network_affiliation": "Heroes and Icons, Decades, Antenna TV, Start TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFNR", - "community_served_city": "RAWLINS", - "community_served_state": "WY", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFNE", - "community_served_city": "RIVERTON", - "community_served_state": "WY", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KATU", - "community_served_city": "PORTLAND", - "community_served_state": "OR", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOMO-TV", - "community_served_city": "SEATTLE", - "community_served_state": "WA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXX-TV", - "community_served_city": "MEMPHIS", - "community_served_state": "TN", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXL-TV", - "community_served_city": "NEW ORLEANS", - "community_served_state": "LA", - "network_affiliation": "ION, Grit, Court TV, SCRIPPS News, Jewelry TV, HSN, QVC, HSN2", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJRT-TV", - "community_served_city": "FLINT", - "community_served_state": "MI", - "network_affiliation": "ABC(D1), MeTV(D2), theGRIO (D3), Start TV (D4), Heroes & Icons (D5), Bounce (D6), This TV/MeTV Toons (D7)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSMH", - "community_served_city": "FLINT", - "community_served_state": "MI", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFSU-TV", - "community_served_city": "TALLAHASSEE", - "community_served_state": "FL", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEDU", - "community_served_city": "TAMPA", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WINK-TV", - "community_served_city": "FORT MYERS", - "community_served_state": "FL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFWA", - "community_served_city": "FORT WAYNE", - "community_served_state": "IN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBMY", - "community_served_city": "BISMARCK", - "community_served_state": "ND", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDAZ-TV", - "community_served_city": "DEVIL'S LAKE", - "community_served_state": "ND", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMCY", - "community_served_city": "MINOT", - "community_served_state": "ND", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDAY-TV", - "community_served_city": "FARGO", - "community_served_state": "ND", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRCA", - "community_served_city": "RIVERSIDE", - "community_served_state": "CA", - "network_affiliation": "EstrellaTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDAF", - "community_served_city": "DALLAS", - "community_served_state": "TX", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRIV", - "community_served_city": "HOUSTON", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNYW", - "community_served_city": "NEW YORK", - "community_served_state": "NY", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTTG", - "community_served_city": "WASHINGTON", - "community_served_state": "DC", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTTV", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFLD", - "community_served_city": "CHICAGO", - "community_served_state": "IL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSTU", - "community_served_city": "SALT LAKE CITY", - "community_served_state": "UT", - "network_affiliation": "FOX, Antenna TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFXU", - "community_served_city": "LIVE OAK", - "community_served_state": "FL", - "network_affiliation": "My Net", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVL", - "community_served_city": "MEDFORD", - "community_served_state": "OR", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFDM", - "community_served_city": "BEAUMONT", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVC", - "community_served_city": "CHATTANOOGA", - "community_served_state": "TN", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLNE-TV", - "community_served_city": "NEW BEDFORD", - "community_served_state": "MA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KKPX-TV", - "community_served_city": "SAN JOSE", - "community_served_state": "CA", - "network_affiliation": "ION, Bounce, Court TV, IONPlus, Laff, SCRIPPS News, Jewelry TV, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBDI-TV", - "community_served_city": "BROOMFIELD", - "community_served_state": "CO", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WATL", - "community_served_city": "ATLANTA", - "community_served_state": "GA", - "network_affiliation": "MYNET", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUSA", - "community_served_city": "DENVER", - "community_served_state": "CO", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KARE", - "community_served_city": "MINNEAPOLIS", - "community_served_state": "MN", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUPX-TV", - "community_served_city": "RICHMOND", - "community_served_state": "KY", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWSI", - "community_served_city": "MOUNT LAUREL", - "community_served_state": "NJ", - "network_affiliation": "TELEMUNDO", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWPX-TV", - "community_served_city": "MARTINSBURG", - "community_served_state": "WV", - "network_affiliation": "ION, Bounce, Court TV, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXVO", - "community_served_city": "OMAHA", - "community_served_state": "NE", - "network_affiliation": "TBD", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNSO", - "community_served_city": "CLOVIS", - "community_served_state": "CA", - "network_affiliation": "TELEMUNDO", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBNG-TV", - "community_served_city": "BINGHAMTON", - "community_served_state": "NY", - "network_affiliation": "CBS (12.1), CW (12.2), MeTV (12.3)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXBU", - "community_served_city": "LANCASTER", - "community_served_state": "PA", - "network_affiliation": "TelevisaUnivision, Inc", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTAJ-TV", - "community_served_city": "ALTOONA", - "community_served_state": "PA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOWK-TV", - "community_served_city": "HUNTINGTON", - "community_served_state": "WV", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIAH", - "community_served_city": "HOUSTON", - "community_served_state": "TX", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVT", - "community_served_city": "FORT WORTH", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSTW", - "community_served_city": "TACOMA", - "community_served_state": "WA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTLH", - "community_served_city": "BAINBRIDGE", - "community_served_state": "GA", - "network_affiliation": "Heroes & Icons", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWDP", - "community_served_city": "NORWELL", - "community_served_state": "MA", - "network_affiliation": "Shop LC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WABW-TV", - "community_served_city": "PELHAM", - "community_served_state": "GA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJSP-TV", - "community_served_city": "COLUMBUS", - "community_served_state": "GA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXGA-TV", - "community_served_city": "WAYCROSS", - "community_served_state": "GA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WACS-TV", - "community_served_city": "DAWSON", - "community_served_state": "GA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMUM-TV", - "community_served_city": "COCHRAN", - "community_served_state": "GA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCES-TV", - "community_served_city": "WRENS", - "community_served_state": "GA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNGH-TV", - "community_served_city": "CHATSWORTH", - "community_served_state": "GA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVAN-TV", - "community_served_city": "SAVANNAH", - "community_served_state": "GA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGTV", - "community_served_city": "ATHENS", - "community_served_state": "GA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSB-TV", - "community_served_city": "ATLANTA", - "community_served_state": "GA", - "network_affiliation": "ABC, Bounce, DABL, Comet, Scripps News (Ended 11/19/24), ION (Started 11/19/24)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEHT", - "community_served_city": "EVANSVILLE", - "community_served_state": "IN", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXGN-TV", - "community_served_city": "GLENDIVE", - "community_served_state": "MT", - "network_affiliation": "CBS/NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGBC", - "community_served_city": "MERIDIAN", - "community_served_state": "MS", - "network_affiliation": "FOX, NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCWX", - "community_served_city": "FREDERICKSBURG", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLTJ", - "community_served_city": "GALVESTON", - "community_served_state": "TX", - "network_affiliation": "IND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGEB", - "community_served_city": "TULSA", - "community_served_state": "OK", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHSL-TV", - "community_served_city": "CHICO", - "community_served_state": "CA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTFD-TV", - "community_served_city": "DENVER", - "community_served_state": "CO", - "network_affiliation": "Unimas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDOC-TV", - "community_served_city": "ANAHEIM", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K25OB-D", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "NEW TANG DYNASTY", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHLV-TV", - "community_served_city": "COCOA", - "community_served_state": "FL", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGNM", - "community_served_city": "MACON", - "community_served_state": "GA", - "network_affiliation": "CTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNAZ-TV", - "community_served_city": "FLAGSTAFF", - "community_served_state": "AZ", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMEE-TV", - "community_served_city": "KINGMAN", - "community_served_state": "AZ", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KKCO", - "community_served_city": "GRAND JUNCTION", - "community_served_state": "CO", - "network_affiliation": "KKCO", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGVK", - "community_served_city": "KALAMAZOO", - "community_served_state": "MI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGVU-TV", - "community_served_city": "GRAND RAPIDS", - "community_served_state": "MI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEEK-TV", - "community_served_city": "PEORIA", - "community_served_state": "IL", - "network_affiliation": "NBC, ABC, CW, ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWCW", - "community_served_city": "LYNCHBURG", - "community_served_state": "VA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFXR", - "community_served_city": "ROANOKE", - "community_served_state": "VA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKYT-TV", - "community_served_city": "LEXINGTON", - "community_served_state": "KY", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYMT-TV", - "community_served_city": "HAZARD", - "community_served_state": "KY", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WICU-TV", - "community_served_city": "ERIE", - "community_served_state": "PA", - "network_affiliation": "NBC (Main), MeTV (Multicast)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFFT-TV", - "community_served_city": "FORT WAYNE", - "community_served_state": "IN", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDVM-TV", - "community_served_city": "HAGERSTOWN", - "community_served_state": "MD", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXTV", - "community_served_city": "SACRAMENTO", - "community_served_state": "CA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPTO", - "community_served_city": "OXFORD", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPTD", - "community_served_city": "DAYTON", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYES-TV", - "community_served_city": "NEW ORLEANS", - "community_served_state": "LA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWBKI-TV", - "community_served_city": "CAMPBELLSVILLE", - "community_served_state": "KY", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDMD", - "community_served_city": "ANCHORAGE", - "community_served_state": "AK", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFXW", - "community_served_city": "GREENVILLE", - "community_served_state": "MS", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWTV-DT", - "community_served_city": "OKLAHOMA CITY", - "community_served_state": "OK", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFUP", - "community_served_city": "VANDERBILT", - "community_served_state": "MI", - "network_affiliation": "FOX Broadcasting Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFQX-TV", - "community_served_city": "CADILLAC", - "community_served_state": "MI", - "network_affiliation": "FOX Broadcasting Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPIX-TV", - "community_served_city": "SAN FRANCISCO", - "community_served_state": "CA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYW-TV", - "community_served_city": "PHILADELPHIA", - "community_served_state": "PA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDKA-TV", - "community_served_city": "PITTSBURGH", - "community_served_state": "PA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJZ-TV", - "community_served_city": "BALTIMORE", - "community_served_state": "MD", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBZ-TV", - "community_served_city": "BOSTON", - "community_served_state": "MA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGTF", - "community_served_city": "HAGATNA", - "community_served_state": "GU", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMYV", - "community_served_city": "GREENSBORO", - "community_served_state": "NC", - "network_affiliation": "My Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRIS-TV", - "community_served_city": "CORPUS CHRISTI", - "community_served_state": "TX", - "network_affiliation": "NBC, CW/LAFF, Grit TV, Court TV, ION, Newsy", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KESQ-TV", - "community_served_city": "PALM SPRINGS", - "community_served_state": "CA", - "network_affiliation": "ABC, CBS, FOX, CW, Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGGB-TV", - "community_served_city": "SPRINGFIELD", - "community_served_state": "MA", - "network_affiliation": "(40.1) ABC, (40.2) FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGME-TV", - "community_served_city": "PORTLAND", - "community_served_state": "ME", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WICD", - "community_served_city": "CHAMPAIGN", - "community_served_state": "IL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGAN", - "community_served_city": "CEDAR RAPIDS", - "community_served_state": "IA", - "network_affiliation": "CBS & FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WICS", - "community_served_city": "SPRINGFIELD", - "community_served_state": "IL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVOA", - "community_served_city": "TUCSON", - "community_served_state": "AZ", - "network_affiliation": "NBC, COZI", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WESH", - "community_served_city": "DAYTONA BEACH", - "community_served_state": "FL", - "network_affiliation": "NBC, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHRO-TV", - "community_served_city": "HAMPTON-NORFOLK", - "community_served_state": "VA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIFS", - "community_served_city": "JANESVILLE", - "community_served_state": "WI", - "network_affiliation": "Ion Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSCN-TV", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KION-TV", - "community_served_city": "MONTEREY", - "community_served_state": "CA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KENS", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMEB", - "community_served_city": "WAILUKU", - "community_served_state": "HI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHET", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WELU", - "community_served_city": "TOA BAJA", - "community_served_state": "PR", - "network_affiliation": "CTNI", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPPX-TV", - "community_served_city": "TOLLESON", - "community_served_state": "AZ", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWMEI", - "community_served_city": "ARECIBO", - "community_served_state": "PR", - "network_affiliation": "IND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTIN-TV", - "community_served_city": "PONCE", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWUP-TV", - "community_served_city": "SAULT STE. MARIE", - "community_served_state": "MI", - "network_affiliation": "CBS Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWTV", - "community_served_city": "CADILLAC", - "community_served_state": "MI", - "network_affiliation": "CBS Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJBF", - "community_served_city": "AUGUSTA", - "community_served_state": "GA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKTVG-TV", - "community_served_city": "GRAND ISLAND", - "community_served_state": "NE", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTGS", - "community_served_city": "HARDEEVILLE", - "community_served_state": "SC", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXP-TV", - "community_served_city": "LAKE WORTH", - "community_served_state": "FL", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHCE-TV", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "TRINITY BROADCASTING NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGEN-TV", - "community_served_city": "KEY WEST", - "community_served_state": "FL", - "network_affiliation": "EstrellaTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWBN", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "IND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUPT", - "community_served_city": "HOBBS", - "community_served_state": "NM", - "network_affiliation": "COZI", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKPT-TV", - "community_served_city": "KINGSPORT", - "community_served_state": "TN", - "network_affiliation": "COZI TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCBD", - "community_served_city": "LUBBOCK", - "community_served_state": "TX", - "network_affiliation": "NBC and DABL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLJC-TV", - "community_served_city": "BEATTYVILLE", - "community_served_state": "KY", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHUT-TV", - "community_served_city": "WASHINGTON", - "community_served_state": "DC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSTP-TV", - "community_served_city": "ST. PAUL", - "community_served_state": "MN", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WZDX", - "community_served_city": "HUNTSVILLE", - "community_served_state": "AL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSWG", - "community_served_city": "VALDOSTA", - "community_served_state": "GA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTRV-TV", - "community_served_city": "NAMPA", - "community_served_state": "ID", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTFV-CD", - "community_served_city": "MCALLEN", - "community_served_state": "TX", - "network_affiliation": "Unimas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVP", - "community_served_city": "PEORIA", - "community_served_state": "IL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTBU", - "community_served_city": "CONROE", - "community_served_state": "TX", - "network_affiliation": "QUEST", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNDY-TV", - "community_served_city": "MARION", - "community_served_state": "IN", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNPX-TV", - "community_served_city": "FRANKLIN", - "community_served_state": "TN", - "network_affiliation": "ION, Court TV, Grit, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDRB", - "community_served_city": "LOUISVILLE", - "community_served_state": "KY", - "network_affiliation": "FOX, Antenna TV, ION, Scripps News", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPPT", - "community_served_city": "PHILADELPHIA", - "community_served_state": "PA", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOLR", - "community_served_city": "SPRINGFIELD", - "community_served_state": "MO", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTTM", - "community_served_city": "HURON", - "community_served_state": "SD", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSMQ-TV", - "community_served_city": "AUSTIN", - "community_served_state": "MN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTTW", - "community_served_city": "SIOUX FALLS", - "community_served_state": "SD", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTCV", - "community_served_city": "SAN JUAN", - "community_served_state": "PR", - "network_affiliation": "MegaTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVOZ-TV", - "community_served_city": "PONCE", - "community_served_state": "PR", - "network_affiliation": "MegaTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFWD", - "community_served_city": "FORT WORTH", - "community_served_state": "TX", - "network_affiliation": "Shop LC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHIN", - "community_served_city": "RED OAK", - "community_served_state": "IA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYIN", - "community_served_city": "MASON CITY", - "community_served_state": "IA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIIN", - "community_served_city": "IOWA CITY", - "community_served_state": "IA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSIN-TV", - "community_served_city": "SIOUX CITY", - "community_served_state": "IA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTIN", - "community_served_city": "FORT DODGE", - "community_served_state": "IA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDIN-TV", - "community_served_city": "DES MOINES", - "community_served_state": "IA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBIN-TV", - "community_served_city": "COUNCIL BLUFFS", - "community_served_state": "IA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRIN", - "community_served_city": "WATERLOO", - "community_served_state": "IA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSFL-TV", - "community_served_city": "SIOUX FALLS", - "community_served_state": "SD", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTGM", - "community_served_city": "TAMUNING", - "community_served_state": "GU", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAZA-TV", - "community_served_city": "AVALON", - "community_served_state": "CA", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVW-CD", - "community_served_city": "FLAGSTAFF/DONEY PARK", - "community_served_state": "AZ", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNWA-TV", - "community_served_city": "ROGERS", - "community_served_state": "AR", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFTA-TV", - "community_served_city": "FORT SMITH", - "community_served_state": "AR", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWHTV", - "community_served_city": "JACKSON", - "community_served_state": "MI", - "network_affiliation": "MY NETWORK TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCWJ", - "community_served_city": "JACKSONVILLE", - "community_served_state": "FL", - "network_affiliation": "The CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTCE-TV", - "community_served_city": "FORT PIERCE", - "community_served_state": "FL", - "network_affiliation": "TRINITY BROADCASTING NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJEB-TV", - "community_served_city": "JACKSONVILLE", - "community_served_state": "FL", - "network_affiliation": "TRINITY BROADCASTING NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K32LT-D", - "community_served_city": "SAN LUIS OBISPO", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNYB", - "community_served_city": "JAMESTOWN", - "community_served_state": "NY", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEPT-CD", - "community_served_city": "PEEKSKILL", - "community_served_state": "NY", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDCW", - "community_served_city": "WASHINGTON", - "community_served_state": "DC", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUTF-TV", - "community_served_city": "WORCESTER", - "community_served_state": "MA", - "network_affiliation": "Unimas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHRR", - "community_served_city": "TUCSON", - "community_served_state": "AZ", - "network_affiliation": "Telemundo Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBTV", - "community_served_city": "CHARLOTTE", - "community_served_state": "NC", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWBT", - "community_served_city": "RICHMOND", - "community_served_state": "VA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLST", - "community_served_city": "SAN ANGELO", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTSB-CD", - "community_served_city": "SANTA MARIA", - "community_served_state": "CA", - "network_affiliation": "UNIMAS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSBO-CD", - "community_served_city": "SAN LUIS OBISPO", - "community_served_state": "CA", - "network_affiliation": "TIMELESS TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVC", - "community_served_city": "ROSEBURG", - "community_served_state": "OR", - "network_affiliation": "3ABN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPAN", - "community_served_city": "FORT WALTON BEACH", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCTV", - "community_served_city": "THOMASVILLE", - "community_served_state": "GA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFQX", - "community_served_city": "GRAND JUNCTION", - "community_served_state": "CO", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYAZ", - "community_served_city": "KATY", - "community_served_state": "TX", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRZG-CD", - "community_served_city": "MCALLEN", - "community_served_state": "TX", - "network_affiliation": "CRTV NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXOF-CD", - "community_served_city": "LAREDO", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXFX-CD", - "community_served_city": "BROWNSVILLE", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KASA-TV", - "community_served_city": "SANTA FE", - "community_served_state": "NM", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCNC-TV", - "community_served_city": "CHARLOTTE", - "community_served_state": "NC", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHAS-TV", - "community_served_city": "LOUISVILLE", - "community_served_state": "KY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJYS", - "community_served_city": "HAMMOND", - "community_served_state": "IN", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVAW", - "community_served_city": "EAGLE PASS", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDFX-TV", - "community_served_city": "OZARK", - "community_served_state": "AL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMVU-DT", - "community_served_city": "MEDFORD", - "community_served_state": "OR", - "network_affiliation": "FOX, Telemundo, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVTV", - "community_served_city": "LAREDO", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KZTV", - "community_served_city": "CORPUS CHRISTI", - "community_served_state": "TX", - "network_affiliation": "CBS, Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCTX", - "community_served_city": "NEW HAVEN", - "community_served_state": "CT", - "network_affiliation": "MyNet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KADN-TV", - "community_served_city": "LAFAYETTE", - "community_served_state": "LA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSMO-TV", - "community_served_city": "KANSAS CITY", - "community_served_state": "MO", - "network_affiliation": "My Net 62.1/Grio/H&I 62.2/Dabl 62.3/Cozi 62.4/Comet 62.5", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPXE-TV", - "community_served_city": "KANSAS CITY", - "community_served_state": "MO", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPTS", - "community_served_city": "HUTCHINSON", - "community_served_state": "KS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KARK-TV", - "community_served_city": "LITTLE ROCK", - "community_served_state": "AR", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KATC", - "community_served_city": "LAFAYETTE", - "community_served_state": "LA", - "network_affiliation": "ABC; CW; GRIT; COURT TV; BOUNCE", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KATV", - "community_served_city": "LITTLE ROCK", - "community_served_state": "AR", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYMA-DT", - "community_served_city": "YUMA", - "community_served_state": "AZ", - "network_affiliation": "CBS/NBC/Estrella/ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBJR-TV", - "community_served_city": "SUPERIOR", - "community_served_state": "WI", - "network_affiliation": "NBC, CBS, My9, H&I", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEYE-TV", - "community_served_city": "AUSTIN", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCCI", - "community_served_city": "DES MOINES", - "community_served_state": "IA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFOX-TV", - "community_served_city": "EL PASO", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCIT", - "community_served_city": "AMARILLO", - "community_served_state": "TX", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCOP-TV", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "MyNet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNVN", - "community_served_city": "CHICO", - "community_served_state": "CA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCTS-TV", - "community_served_city": "SEATTLE", - "community_served_state": "WA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYVE", - "community_served_city": "YAKIMA", - "community_served_state": "WA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBZK", - "community_served_city": "BOZEMAN", - "community_served_state": "MT", - "network_affiliation": "CBS, MTN, Grit, Ion, Court TV, Scripps News, Laff", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDBC-TV", - "community_served_city": "EL PASO", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDFW", - "community_served_city": "DALLAS", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDTV-DT", - "community_served_city": "SAN FRANCISCO", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KKFX-CD", - "community_served_city": "SAN LUIS OBISPO", - "community_served_state": "CA", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCRA-TV", - "community_served_city": "SACRAMENTO", - "community_served_state": "CA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCPQ", - "community_served_city": "TACOMA", - "community_served_state": "WA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBKI", - "community_served_city": "SALEM", - "community_served_state": "IN", - "network_affiliation": "CW, My Network, Cozi, Movies, Ion Plus, Ion Mystery", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKAS", - "community_served_city": "ASHLAND", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKMU", - "community_served_city": "MURRAY", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKGB-TV", - "community_served_city": "BOWLING GREEN", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKZT-TV", - "community_served_city": "ELIZABETHTOWN", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKMJ-TV", - "community_served_city": "LOUISVILLE", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKHA", - "community_served_city": "HAZARD", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKPI-TV", - "community_served_city": "PIKEVILLE", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKMR", - "community_served_city": "MOREHEAD", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCVN-TV", - "community_served_city": "COVINGTON", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKOH", - "community_served_city": "OWENSBORO", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKLE", - "community_served_city": "LEXINGTON", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKON", - "community_served_city": "OWENTON", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKMA-TV", - "community_served_city": "MADISONVILLE", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKSO-TV", - "community_served_city": "SOMERSET", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNYI", - "community_served_city": "ITHACA", - "community_served_state": "NY", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTKO-CD", - "community_served_city": "ONEIDA", - "community_served_state": "NY", - "network_affiliation": "Cornerstone TeleVision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWDG-CD", - "community_served_city": "UTICA", - "community_served_state": "NY", - "network_affiliation": "Cornerstone TeleVision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOTA-TV", - "community_served_city": "RAPID CITY", - "community_served_state": "SD", - "network_affiliation": "ABC/FOX/True Crime/Grit/Outlaw", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHSD-TV", - "community_served_city": "LEAD", - "community_served_state": "SD", - "network_affiliation": "ABC/FOX/True Crime/Grit/Outlaw", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEZI", - "community_served_city": "EUGENE", - "community_served_state": "OR", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFBB-TV", - "community_served_city": "GREAT FALLS", - "community_served_state": "MT", - "network_affiliation": "ABC; SWX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBTF-CD", - "community_served_city": "BAKERSFIELD", - "community_served_state": "CA", - "network_affiliation": "UNIMAS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFTV-DT", - "community_served_city": "HANFORD", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEMO-TV", - "community_served_city": "FREMONT", - "community_served_state": "CA", - "network_affiliation": "VISION LATINA", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGMB", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGBT-TV", - "community_served_city": "HARLINGEN", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGET-TV", - "community_served_city": "BAKERSFIELD", - "community_served_state": "CA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGO-TV", - "community_served_city": "SAN FRANCISCO", - "community_served_state": "CA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIKU", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHOU", - "community_served_city": "HOUSTON", - "community_served_state": "TX", - "network_affiliation": "QUEST", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHQ-TV", - "community_served_city": "SPOKANE", - "community_served_state": "WA", - "network_affiliation": "NBC; SWX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KICU-TV", - "community_served_city": "SAN JOSE", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRDT-CD", - "community_served_city": "REDDING", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSIX-TV", - "community_served_city": "HILO", - "community_served_state": "HI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KING-TV", - "community_served_city": "SEATTLE", - "community_served_state": "WA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVB", - "community_served_city": "BOISE", - "community_served_state": "ID", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOGG", - "community_served_city": "WAILUKU", - "community_served_state": "HI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHNL", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KREM", - "community_served_city": "SPOKANE", - "community_served_state": "WA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGW", - "community_served_city": "PORTLAND", - "community_served_state": "OR", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KKTV", - "community_served_city": "COLORADO SPRINGS", - "community_served_state": "CO", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLAS-TV", - "community_served_city": "LAS VEGAS", - "community_served_state": "NV", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLFY-TV", - "community_served_city": "LAFAYETTE", - "community_served_state": "LA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTFQ-TV", - "community_served_city": "ALBUQUERQUE", - "community_served_state": "NM", - "network_affiliation": "UniMas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWBA-TV", - "community_served_city": "SIERRA VISTA", - "community_served_state": "AZ", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWKB", - "community_served_city": "IOWA CITY", - "community_served_state": "IA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KKJB", - "community_served_city": "BOISE", - "community_served_state": "ID", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKBEO", - "community_served_city": "JACKSON", - "community_served_state": "WY", - "network_affiliation": "AMERICA ONE", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKCFG", - "community_served_city": "FLAGSTAFF", - "community_served_state": "AZ", - "network_affiliation": "AMER1", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMEX-DT", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMID", - "community_served_city": "MIDLAND", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMCB", - "community_served_city": "COOS BAY", - "community_served_state": "OR", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTCW", - "community_served_city": "ROSEBURG", - "community_served_state": "OR", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMTR", - "community_served_city": "EUGENE", - "community_served_state": "OR", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMTV-TV", - "community_served_city": "OMAHA", - "community_served_state": "NE", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMVT", - "community_served_city": "TWIN FALLS", - "community_served_state": "ID", - "network_affiliation": "CBS. FOX, CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNSD", - "community_served_city": "SAN DIEGO", - "community_served_state": "CA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNTV", - "community_served_city": "SAN JOSE", - "community_served_state": "CA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOB", - "community_served_city": "ALBUQUERQUE", - "community_served_state": "NM", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOBF", - "community_served_city": "FARMINGTON", - "community_served_state": "NM", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFXA", - "community_served_city": "CEDAR RAPIDS", - "community_served_state": "IA", - "network_affiliation": "DABL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOIN", - "community_served_city": "PORTLAND", - "community_served_state": "OR", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCWG", - "community_served_city": "LEXINGTON", - "community_served_state": "NC", - "network_affiliation": "WCWG/Bounce/Dabl", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOKH-TV", - "community_served_city": "OKLAHOMA CITY", - "community_served_state": "OK", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KONG", - "community_served_city": "EVERETT", - "community_served_state": "WA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPLR-TV", - "community_served_city": "ST. LOUIS", - "community_served_state": "MO", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWDK", - "community_served_city": "TACOMA", - "community_served_state": "WA", - "network_affiliation": "REL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOTV-DT", - "community_served_city": "TULSA", - "community_served_state": "OK", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPAX-TV", - "community_served_city": "MISSOULA", - "community_served_state": "MT", - "network_affiliation": "CBS, COURT TV, GRIT, ION, NEWSY, MTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPDX", - "community_served_city": "VANCOUVER", - "community_served_state": "WA", - "network_affiliation": "MyNetwork TV (D1), Ion Mystery (D2), Outlaw (D3), Court TV (D4)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPNX", - "community_served_city": "MESA", - "community_served_state": "AZ", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQED", - "community_served_city": "SAN FRANCISCO", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTFF-DT", - "community_served_city": "PORTERVILLE", - "community_served_state": "CA", - "network_affiliation": "UniMas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQDS-TV", - "community_served_city": "DULUTH", - "community_served_state": "MN", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRTV", - "community_served_city": "GREAT FALLS", - "community_served_state": "MT", - "network_affiliation": "CBS Ch 3.1, CW/MTN Ch 3.2, Grit CH 3.3, DEFY Ch 3.4, Newsy", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVX", - "community_served_city": "FORT PIERCE", - "community_served_state": "FL", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJAX-TV", - "community_served_city": "JACKSONVILLE", - "community_served_state": "FL", - "network_affiliation": "CBS/COZI TV/CATCHY COMEDY/ME TV TOONS (EFFECITVE 6/24/24)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYDO", - "community_served_city": "GREENVILLE", - "community_served_state": "NC", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSAX", - "community_served_city": "ALEXANDRIA", - "community_served_state": "MN", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRWF", - "community_served_city": "REDWOOD FALLS", - "community_served_state": "MN", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSAZ-TV", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSEE", - "community_served_city": "FRESNO", - "community_served_state": "CA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSKN", - "community_served_city": "SPOKANE", - "community_served_state": "WA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSCI", - "community_served_city": "LONG BEACH", - "community_served_state": "CA", - "network_affiliation": "Shop LC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSMS-TV", - "community_served_city": "MONTEREY", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKGHZ", - "community_served_city": "SPRINGFIELD", - "community_served_state": "MO", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSWO-TV", - "community_served_city": "LAWTON", - "community_served_state": "OK", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTAL-TV", - "community_served_city": "TEXARKANA", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTBC", - "community_served_city": "AUSTIN", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTBS-TV", - "community_served_city": "SHREVEPORT", - "community_served_state": "LA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTBY", - "community_served_city": "ANCHORAGE", - "community_served_state": "AK", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQEH", - "community_served_city": "SAN JOSE", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTEN", - "community_served_city": "ADA", - "community_served_state": "OK", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTLA", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTRK-TV", - "community_served_city": "HOUSTON", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTTC", - "community_served_city": "ROCHESTER", - "community_served_state": "MN", - "network_affiliation": "NBC, CW, Heroes & Icons", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTUL", - "community_served_city": "TULSA", - "community_served_state": "OK", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVE", - "community_served_city": "EL DORADO", - "community_served_state": "AR", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVI", - "community_served_city": "ST. LOUIS", - "community_served_state": "MO", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVQ", - "community_served_city": "BILLINGS", - "community_served_state": "MT", - "network_affiliation": "CBS Ch 2.1, CW/MTN Ch 2.2", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVU", - "community_served_city": "OAKLAND", - "community_served_state": "CA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVW-DT", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KULR-TV", - "community_served_city": "BILLINGS", - "community_served_state": "MT", - "network_affiliation": "NBC; SWX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAZT-TV", - "community_served_city": "PRESCOTT", - "community_served_state": "AZ", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMYU", - "community_served_city": "ST. GEORGE", - "community_served_state": "UT", - "network_affiliation": "My Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUTV", - "community_served_city": "SALT LAKE CITY", - "community_served_state": "UT", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUVN-DT", - "community_served_city": "GARLAND", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSTC-TV", - "community_served_city": "MINNEAPOLIS", - "community_served_state": "MN", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVCT", - "community_served_city": "VICTORIA", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVHP", - "community_served_city": "LAKE CHARLES", - "community_served_state": "LA", - "network_affiliation": "KVHP", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVIE", - "community_served_city": "SACRAMENTO", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVOS-TV", - "community_served_city": "BELLINGHAM", - "community_served_state": "WA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVUE", - "community_served_city": "AUSTIN", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVVU-TV", - "community_served_city": "HENDERSON", - "community_served_state": "NV", - "network_affiliation": "5.1 FOX, 5.2 SSSEN, 5.3 Court TV Mystery, 5.4 Dabl", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWEX-DT", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTFO-CD", - "community_served_city": "AUSTIN", - "community_served_state": "TX", - "network_affiliation": "Unimas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWGN-TV", - "community_served_city": "DENVER", - "community_served_state": "CO", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWTX-TV", - "community_served_city": "WACO", - "community_served_state": "TX", - "network_affiliation": "CBS / Telemundo / MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXLT-TV", - "community_served_city": "ROCHESTER", - "community_served_state": "MN", - "network_affiliation": "FOX, Me-TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPXM-TV", - "community_served_city": "ST. CLOUD", - "community_served_state": "MN", - "network_affiliation": "ION, Bounce, Grit, Mystery, Laff, SCRIPPS News, Jewelry TV, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVLT-TV", - "community_served_city": "KNOXVILLE", - "community_served_state": "TN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBVO", - "community_served_city": "LLANO", - "community_served_state": "TX", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHPZ-CD", - "community_served_city": "ROUND ROCK", - "community_served_state": "TX", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHPX-CD", - "community_served_city": "GEORGETOWN", - "community_served_state": "TX", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHPL-CD", - "community_served_city": "LA GRANGE", - "community_served_state": "TX", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBVO-CD", - "community_served_city": "AUSTIN", - "community_served_state": "TX", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXAN-TV", - "community_served_city": "AUSTIN", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHPM-CD", - "community_served_city": "SAN MARCOS", - "community_served_state": "TX", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHPF-CD", - "community_served_city": "FREDERICKSBURG", - "community_served_state": "TX", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXII", - "community_served_city": "SHERMAN", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXLF-TV", - "community_served_city": "BUTTE", - "community_served_state": "MT", - "network_affiliation": "CBS, MTN, Grit, Ion, Court TV, Scripps News, Laff", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXRM-TV", - "community_served_city": "COLORADO SPRINGS", - "community_served_state": "CO", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXTX-TV", - "community_served_city": "DALLAS", - "community_served_state": "TX", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYTV", - "community_served_city": "SPRINGFIELD", - "community_served_state": "MO", - "network_affiliation": "NBC, ABC, CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHME-TV", - "community_served_city": "SOUTH BEND", - "community_served_state": "IN", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVYE", - "community_served_city": "EL CENTRO", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUCW", - "community_served_city": "MINNEAPOLIS", - "community_served_state": "MN", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVF", - "community_served_city": "NASHVILLE", - "community_served_state": "TN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLAJ", - "community_served_city": "LANSING", - "community_served_state": "MI", - "network_affiliation": "ABC/CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KJZZ-TV", - "community_served_city": "SALT LAKE CITY", - "community_served_state": "UT", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSKJ-CD", - "community_served_city": "VAN NUYS", - "community_served_state": "CA", - "network_affiliation": "DAYSTAR TELEVISION NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOOD-TV", - "community_served_city": "GRAND RAPIDS", - "community_served_state": "MI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWHE", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSAZ-TV", - "community_served_city": "HUNTINGTON", - "community_served_state": "WV", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGMD-TV", - "community_served_city": "HILO", - "community_served_state": "HI", - "network_affiliation": "MyNet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTDO", - "community_served_city": "LAS CRUCES", - "community_served_state": "NM", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHII-TV", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "MyNet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGUN-TV", - "community_served_city": "TUCSON", - "community_served_state": "AZ", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGMV", - "community_served_city": "WAILUKU", - "community_served_state": "HI", - "network_affiliation": "MyNet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLVT-TV", - "community_served_city": "ALLENTOWN", - "community_served_state": "PA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KARZ-TV", - "community_served_city": "LITTLE ROCK", - "community_served_state": "AR", - "network_affiliation": "MyNetworkTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWHB", - "community_served_city": "TULSA", - "community_served_state": "OK", - "network_affiliation": "CTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KETD", - "community_served_city": "CASTLE ROCK", - "community_served_state": "CO", - "network_affiliation": "EstrellaTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHMB-TV", - "community_served_city": "INDIANAPOLIS", - "community_served_state": "IN", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXHI", - "community_served_city": "HILO", - "community_served_state": "HI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXE-TV", - "community_served_city": "KENOSHA", - "community_served_state": "WI", - "network_affiliation": "ION, Bounce, Court TV, Grit, IONPlus, SCRIPPS News, Jewelry TV, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLEI", - "community_served_city": "WAILUKU", - "community_served_state": "HI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHNO", - "community_served_city": "NEW ORLEANS", - "community_served_state": "LA", - "network_affiliation": "CTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJCL", - "community_served_city": "SAVANNAH", - "community_served_state": "GA", - "network_affiliation": "ABC, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLTX", - "community_served_city": "COLUMBIA", - "community_served_state": "SC", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLTZ", - "community_served_city": "COLUMBUS", - "community_served_state": "GA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLIO", - "community_served_city": "LIMA", - "community_served_state": "OH", - "network_affiliation": "NBC, FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTSF", - "community_served_city": "SAN FRANCISCO", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAXT-CD", - "community_served_city": "SAN FRANCISO, SAN JO", - "community_served_state": "CA", - "network_affiliation": "Catchy Comedy", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLOV-TV", - "community_served_city": "WEST POINT", - "community_served_state": "MS", - "network_affiliation": "CW, METV, THISTV, METV Toons", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLFB", - "community_served_city": "BLUEFIELD", - "community_served_state": "WV", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLFG", - "community_served_city": "GRUNDY", - "community_served_state": "VA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAGV", - "community_served_city": "HARLAN", - "community_served_state": "KY", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXU-TV", - "community_served_city": "JACKSONVILLE", - "community_served_state": "NC", - "network_affiliation": "ION, Court TV, Grit, Laff, IonPlus, SCRIPPS News, Jewelry TV, HSN, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWFXI", - "community_served_city": "MOREHEAD CITY", - "community_served_state": "NC", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSBI", - "community_served_city": "OKLAHOMA CITY", - "community_served_state": "OK", - "network_affiliation": "MyNetwork TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLIW", - "community_served_city": "GARDEN CITY", - "community_served_state": "NY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDEN-TV", - "community_served_city": "LONGMONT", - "community_served_state": "CO", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLCS", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGBS-CD", - "community_served_city": "AUSTIN", - "community_served_state": "TX", - "network_affiliation": "TBD NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMCT-TV", - "community_served_city": "WEST MONROE", - "community_served_state": "LA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLPB-TV", - "community_served_city": "BATON ROUGE", - "community_served_state": "LA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLTL-TV", - "community_served_city": "LAKE CHARLES", - "community_served_state": "LA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLPB-TV", - "community_served_city": "LAFAYETTE", - "community_served_state": "LA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLTM-TV", - "community_served_city": "MONROE", - "community_served_state": "LA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLPA-TV", - "community_served_city": "ALEXANDRIA", - "community_served_state": "LA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLTS-TV", - "community_served_city": "SHREVEPORT", - "community_served_state": "LA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBRZ-TV", - "community_served_city": "BATON ROUGE", - "community_served_state": "LA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WISH-TV", - "community_served_city": "INDIANAPOLIS", - "community_served_state": "IN", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WANE-TV", - "community_served_city": "FORT WAYNE", - "community_served_state": "IN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDKA", - "community_served_city": "PADUCAH", - "community_served_state": "KY", - "network_affiliation": "My Network TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLBZ", - "community_served_city": "BANGOR", - "community_served_state": "ME", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMEB-TV", - "community_served_city": "ORONO", - "community_served_state": "ME", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMED-TV", - "community_served_city": "CALAIS", - "community_served_state": "ME", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMEA-TV", - "community_served_city": "BIDDEFORD", - "community_served_state": "ME", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCBB", - "community_served_city": "AUGUSTA", - "community_served_state": "ME", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMEM-TV", - "community_served_city": "PRESQUE ISLE", - "community_served_state": "ME", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCSH", - "community_served_city": "PORTLAND", - "community_served_state": "ME", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMEG", - "community_served_city": "SIOUX CITY", - "community_served_state": "IA", - "network_affiliation": "Dabl", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFLX", - "community_served_city": "WEST PALM BEACH", - "community_served_state": "FL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXIX-TV", - "community_served_city": "NEWPORT", - "community_served_state": "KY", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOIO", - "community_served_city": "SHAKER HEIGHTS", - "community_served_state": "OH", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFMZ-TV", - "community_served_city": "ALLENTOWN", - "community_served_state": "PA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIRS", - "community_served_city": "YAUCO", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCWT-CD", - "community_served_city": "LA FERIA", - "community_served_state": "TX", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLWY", - "community_served_city": "CHEYENNE", - "community_served_state": "WY", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVII-TV", - "community_served_city": "AMARILLO", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVIH-TV", - "community_served_city": "CLOVIS", - "community_served_state": "NM", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAJB", - "community_served_city": "CALIPATRIA", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCPB", - "community_served_city": "SALISBURY", - "community_served_state": "MD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGPT", - "community_served_city": "OAKLAND", - "community_served_state": "MD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFPT", - "community_served_city": "FREDERICK", - "community_served_state": "MD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSYT", - "community_served_city": "SYRACUSE", - "community_served_state": "NY", - "network_affiliation": "FOX/COZI-TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVZ-TV", - "community_served_city": "NORFOLK", - "community_served_state": "VA", - "network_affiliation": "My Network TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEMT", - "community_served_city": "GREENEVILLE", - "community_served_state": "TN", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAMC", - "community_served_city": "LUBBOCK", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXS", - "community_served_city": "MOUNT VERNON", - "community_served_state": "IL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMGH-TV", - "community_served_city": "DENVER", - "community_served_state": "CO", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGTV", - "community_served_city": "SAN DIEGO", - "community_served_state": "CA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRTV", - "community_served_city": "INDIANAPOLIS", - "community_served_state": "IN", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KERO-TV", - "community_served_city": "BAKERSFIELD", - "community_served_state": "CA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKTC", - "community_served_city": "SUMTER", - "community_served_state": "SC", - "network_affiliation": "My Network TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVK", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTXL-TV", - "community_served_city": "TALLAHASSEE", - "community_served_state": "FL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRTD-CD", - "community_served_city": "RALEIGH", - "community_served_state": "NC", - "network_affiliation": "TELEMUNDO", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRCG", - "community_served_city": "JEFFERSON CITY", - "community_served_state": "MO", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K10OG-D", - "community_served_city": "LOMPOC", - "community_served_state": "CA", - "network_affiliation": "UNIMAS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLDF-CD", - "community_served_city": "LOMPOC", - "community_served_state": "CA", - "network_affiliation": "TIMELESS TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJTC", - "community_served_city": "PENSACOLA", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KASN", - "community_served_city": "PINE BLUFF", - "community_served_state": "AR", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNEM-TV", - "community_served_city": "BAY CITY", - "community_served_state": "MI", - "network_affiliation": "5.1 (CBS); 5.2 (MyNetwork); 5.3 (Cozi); 5.4 (Ion)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPHO-TV", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOFL", - "community_served_city": "ORLANDO", - "community_served_state": "FL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCTV", - "community_served_city": "KANSAS CITY", - "community_served_state": "MO", - "network_affiliation": "CBS 5.1/The 365 5.2/This TV & Start 5.3/Quest 5.4/The Outlaw5.5", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSMV-TV", - "community_served_city": "NASHVILLE", - "community_served_state": "TN", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMCC", - "community_served_city": "LAUGHLIN", - "community_served_state": "NV", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WINP-TV", - "community_served_city": "PITTSBURGH", - "community_served_state": "PA", - "network_affiliation": "ION, Bounce, Mystery, IONPlus, SCRIPPS News, Jewelry TV, QVC, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQED", - "community_served_city": "PITTSBURGH", - "community_served_state": "PA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFYI", - "community_served_city": "INDIANAPOLIS", - "community_served_state": "IN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNPT", - "community_served_city": "NASHVILLE", - "community_served_state": "TN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMOT", - "community_served_city": "MINOT", - "community_served_state": "ND", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFYR-TV", - "community_served_city": "BISMARCK", - "community_served_state": "ND", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUMV-TV", - "community_served_city": "WILLISTON", - "community_served_state": "ND", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQCD-TV", - "community_served_city": "DICKINSON", - "community_served_state": "ND", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMFP", - "community_served_city": "FOXBOROUGH", - "community_served_state": "MA", - "network_affiliation": "IND 1/1 - 3/31/24, Shop LC 4/1 - 12/31/24", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHIO-TV", - "community_served_city": "DAYTON", - "community_served_state": "OH", - "network_affiliation": "CBS Network (7.1), METV (7.2), Laff (7.3), METV Toons (7.4)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFPH-DT", - "community_served_city": "FLAGSTAFF", - "community_served_state": "AZ", - "network_affiliation": "UniMas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNIT", - "community_served_city": "SOUTH BEND", - "community_served_state": "IN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNDU-TV", - "community_served_city": "SOUTH BEND", - "community_served_state": "IN", - "network_affiliation": "NBC, AntennaTV, GetTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMFD-TV", - "community_served_city": "MANSFIELD", - "community_served_state": "OH", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPLO-TV", - "community_served_city": "RELIANCE", - "community_served_state": "SD", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCLO-TV", - "community_served_city": "RAPID CITY", - "community_served_state": "SD", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDLO-TV", - "community_served_city": "FLORENCE", - "community_served_state": "SD", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KELO-TV", - "community_served_city": "SIOUX FALLS", - "community_served_state": "SD", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWES-TV", - "community_served_city": "ODESSA", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCWO-TV", - "community_served_city": "BIG SPRING", - "community_served_state": "TX", - "network_affiliation": "CW PLUS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKNO", - "community_served_city": "MEMPHIS", - "community_served_state": "TN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCIX", - "community_served_city": "SPRINGFIELD", - "community_served_state": "IL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMBD-TV", - "community_served_city": "PEORIA", - "community_served_state": "IL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFMB-TV", - "community_served_city": "SAN DIEGO", - "community_served_state": "CA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCIA", - "community_served_city": "CHAMPAIGN", - "community_served_state": "IL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTXD-TV", - "community_served_city": "GREENVILLE", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMCI-TV", - "community_served_city": "LAWRENCE", - "community_served_state": "KS", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKJRW", - "community_served_city": "EUREKA", - "community_served_state": "CA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMVS", - "community_served_city": "MILWAUKEE", - "community_served_state": "WI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMVT", - "community_served_city": "MILWAUKEE", - "community_served_state": "WI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMTP-TV", - "community_served_city": "SAN FRANCISCO", - "community_served_state": "CA", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMPN-TV", - "community_served_city": "JACKSON", - "community_served_state": "MS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMAW-TV", - "community_served_city": "MERIDIAN", - "community_served_state": "MS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMAE-TV", - "community_served_city": "BOONEVILLE", - "community_served_state": "MS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMAO-TV", - "community_served_city": "GREENWOOD", - "community_served_state": "MS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMAU-TV", - "community_served_city": "BUDE", - "community_served_state": "MS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMAB-TV", - "community_served_city": "MISSISSIPPI STATE", - "community_served_state": "MS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMAV-TV", - "community_served_city": "OXFORD", - "community_served_state": "MS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMAH-TV", - "community_served_city": "BILOXI", - "community_served_state": "MS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WABG-TV", - "community_served_city": "GREENWOOD", - "community_served_state": "MS", - "network_affiliation": "ABC and FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRGV-TV", - "community_served_city": "WESLACO", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFXV", - "community_served_city": "UTICA", - "community_served_state": "NY", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUSM-TV", - "community_served_city": "BOZEMAN", - "community_served_state": "MT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDHN", - "community_served_city": "DOTHAN", - "community_served_state": "AL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMGT-TV", - "community_served_city": "MACON", - "community_served_state": "GA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRLM", - "community_served_city": "CANTON", - "community_served_state": "OH", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMBC-TV", - "community_served_city": "NEWTON", - "community_served_state": "NJ", - "network_affiliation": "Merit Street Media", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMSB", - "community_served_city": "TUCSON", - "community_served_state": "AZ", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCAX-TV", - "community_served_city": "BURLINGTON", - "community_served_state": "VT", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDIT-CD", - "community_served_city": "Des Moines", - "community_served_state": "IA", - "network_affiliation": "Catchy Comedy", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCFE-TV", - "community_served_city": "PLATTSBURGH", - "community_served_state": "NY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLWT", - "community_served_city": "CINCINNATI", - "community_served_state": "OH", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSDK", - "community_served_city": "ST. LOUIS", - "community_served_state": "MO", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBIR-TV", - "community_served_city": "KNOXVILLE", - "community_served_state": "TN", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMAZ-TV", - "community_served_city": "MACON", - "community_served_state": "GA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIXE-TV", - "community_served_city": "REDDING", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTKR", - "community_served_city": "NORFOLK", - "community_served_state": "VA", - "network_affiliation": "CBS, Court TV, Bounce, HSN, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPRI-TV", - "community_served_city": "PROVIDENCE", - "community_served_state": "RI", - "network_affiliation": "CBS, myNetwork, Dabl", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNBC", - "community_served_city": "NEW YORK", - "community_served_state": "NY", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHMT", - "community_served_city": "HARDIN", - "community_served_state": "MT", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVIR-CD", - "community_served_city": "CHARLOTTESVILLE", - "community_served_state": "VA", - "network_affiliation": "NBC, CW, TRUE CRIME", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNMT", - "community_served_city": "PORTLAND", - "community_served_state": "OR", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFOR-TV", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCNC-TV", - "community_served_city": "DENVER", - "community_served_state": "CO", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRC-TV", - "community_served_city": "WASHINGTON", - "community_served_state": "DC", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMAQ-TV", - "community_served_city": "CHICAGO", - "community_served_state": "IL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNBC", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVIA-TV", - "community_served_city": "SCRANTON", - "community_served_state": "PA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRNE-TV", - "community_served_city": "MERRIMAN", - "community_served_state": "NE", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPNE-TV", - "community_served_city": "NORTH PLATTE", - "community_served_state": "NE", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYNE-TV", - "community_served_city": "OMAHA", - "community_served_state": "NE", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLNE-TV", - "community_served_city": "LEXINGTON", - "community_served_state": "NE", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMNE-TV", - "community_served_city": "BASSETT", - "community_served_state": "NE", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHNE-TV", - "community_served_city": "HASTINGS", - "community_served_state": "NE", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXNE-TV", - "community_served_city": "NORFOLK", - "community_served_state": "NE", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTNE-TV", - "community_served_city": "ALLIANCE", - "community_served_state": "NE", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNHL", - "community_served_city": "HASTINGS", - "community_served_state": "NE", - "network_affiliation": "METV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSJN-CD", - "community_served_city": "SAN JUAN", - "community_served_state": "PR", - "network_affiliation": "CTNI", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAGM-TV", - "community_served_city": "PRESQUE ISLE", - "community_served_state": "ME", - "network_affiliation": "CBS, FOX, CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRXI-TV", - "community_served_city": "RENO", - "community_served_state": "NV", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXG-TV", - "community_served_city": "CONCORD", - "community_served_state": "NH", - "network_affiliation": "ION, Mystery, SCRIPPS News, Bounce, IonPlus, Jewlery TV, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIPL", - "community_served_city": "LEWISTON", - "community_served_state": "ME", - "network_affiliation": "ION, Court TV Bounce Grit IONPlus", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNJB", - "community_served_city": "NEW BRUNSWICK", - "community_served_state": "NJ", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNJT", - "community_served_city": "TRENTON", - "community_served_state": "NJ", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNJN", - "community_served_city": "MONTCLAIR", - "community_served_state": "NJ", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNJS", - "community_served_city": "CAMDEN", - "community_served_state": "NJ", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFDR", - "community_served_city": "JEFFERSON CITY", - "community_served_state": "MO", - "network_affiliation": "CTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNLC", - "community_served_city": "ST. LOUIS", - "community_served_state": "MO", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBIM-TV", - "community_served_city": "ROSWELL", - "community_served_state": "NM", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRQE", - "community_served_city": "ALBUQUERQUE", - "community_served_state": "NM", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KREZ-TV", - "community_served_city": "DURANGO", - "community_served_state": "CO", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXM-TV", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "ION, Bounce, Grit, Laff, SCRIPPS News, HSN, Jewelry TV, Mystery", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSFY-TV", - "community_served_city": "SIOUX FALLS", - "community_served_state": "SD", - "network_affiliation": "ABC/MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKABY-TV", - "community_served_city": "ABERDEEN", - "community_served_state": "SD", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPRY-TV", - "community_served_city": "PIERRE", - "community_served_state": "SD", - "network_affiliation": "NBC/ABC/FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSAV-TV", - "community_served_city": "SAVANNAH", - "community_served_state": "GA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOLD-TV", - "community_served_city": "TUCSON", - "community_served_state": "AZ", - "network_affiliation": "CBS, MeTV, Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WECT", - "community_served_city": "WILMINGTON", - "community_served_state": "NC", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJTV", - "community_served_city": "JACKSON", - "community_served_state": "MS", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHLT", - "community_served_city": "HATTIESBURG", - "community_served_state": "MS", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHNT-TV", - "community_served_city": "HUNTSVILLE", - "community_served_state": "AL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPWR-TV", - "community_served_city": "GARY", - "community_served_state": "IN", - "network_affiliation": "FOX PLUS/MY NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUVG-DT", - "community_served_city": "ATHENS", - "community_served_state": "GA", - "network_affiliation": "UNIVISION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCRP-CD", - "community_served_city": "CORPUS CHRISTI", - "community_served_state": "TX", - "network_affiliation": "Unimas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXLK-CD", - "community_served_city": "AUSTIN", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCOR-CD", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNOE-TV", - "community_served_city": "MONROE", - "community_served_state": "LA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRDK-TV", - "community_served_city": "VALLEY CITY", - "community_served_state": "ND", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTLN-TV", - "community_served_city": "PALO ALTO", - "community_served_state": "CA", - "network_affiliation": "Heroes & Icons", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCCB", - "community_served_city": "CHARLOTTE", - "community_served_state": "NC", - "network_affiliation": "The CW (primary channel); MeTV (subchannel)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDGA-CD", - "community_served_city": "DALTON", - "community_served_state": "GA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDNN-CD", - "community_served_city": "CHATTANOOGA", - "community_served_state": "TN", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFFV", - "community_served_city": "SEATTLE", - "community_served_state": "WA", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNOP-TV", - "community_served_city": "NORTH PLATTE", - "community_served_state": "NE", - "network_affiliation": "NBC/FOX/ION/Outlaw/The 365", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KERA-TV", - "community_served_city": "DALLAS", - "community_served_state": "TX", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDTN", - "community_served_city": "DENTON", - "community_served_state": "TX", - "network_affiliation": "IND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXAS-TV", - "community_served_city": "FORT WORTH", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTKA-TV", - "community_served_city": "TOPEKA", - "community_served_state": "KS", - "network_affiliation": "ABC -CW Plus", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEAO", - "community_served_city": "AKRON", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNEO", - "community_served_city": "ALLIANCE", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAWE", - "community_served_city": "BEMIDJI", - "community_served_state": "MN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAWB", - "community_served_city": "BRAINERD", - "community_served_state": "MN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVF", - "community_served_city": "FAIRBANKS", - "community_served_state": "AK", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVA", - "community_served_city": "ANCHORAGE", - "community_served_state": "AK", - "network_affiliation": "Rewind TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJFW-TV", - "community_served_city": "RHINELANDER", - "community_served_state": "WI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSEE-TV", - "community_served_city": "ERIE", - "community_served_state": "PA", - "network_affiliation": "CBS, The CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAPT", - "community_served_city": "JACKSON", - "community_served_state": "MS", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WZZM", - "community_served_city": "GRAND RAPIDS", - "community_served_state": "MI", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCBY-TV", - "community_served_city": "COOS BAY", - "community_served_state": "OR", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBOI-TV", - "community_served_city": "BOISE", - "community_served_state": "ID", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVAL-TV", - "community_served_city": "EUGENE", - "community_served_state": "OR", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYIN", - "community_served_city": "GARY", - "community_served_state": "IN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVIA-TV", - "community_served_city": "EL PASO", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPBT-TV", - "community_served_city": "ODESSA", - "community_served_state": "TX", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXQ-TV", - "community_served_city": "NEWPORT", - "community_served_state": "RI", - "network_affiliation": "ION, Laff, SCRIPPS News, Bounce, Jewelry TV, HSN, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOUC-TV", - "community_served_city": "CAMBRIDGE", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOUB-TV", - "community_served_city": "ATHENS", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOCB", - "community_served_city": "OKLAHOMA CITY", - "community_served_state": "OK", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAUT-TV", - "community_served_city": "OKLAHOMA CITY", - "community_served_state": "OK", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWET", - "community_served_city": "CHEYENNE", - "community_served_state": "OK", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOET", - "community_served_city": "EUFAULA", - "community_served_state": "OK", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KETA-TV", - "community_served_city": "OKLAHOMA CITY", - "community_served_state": "OK", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WZDC-CD", - "community_served_city": "WASHINGTON", - "community_served_state": "DC", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOAB-TV", - "community_served_city": "BEND", - "community_served_state": "OR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOPB-TV", - "community_served_city": "PORTLAND", - "community_served_state": "OR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOAC-TV", - "community_served_city": "CORVALLIS", - "community_served_state": "OR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEPB-TV", - "community_served_city": "EUGENE", - "community_served_state": "OR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVR", - "community_served_city": "LA GRANDE", - "community_served_state": "OR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPTV", - "community_served_city": "PORTLAND", - "community_served_state": "OR", - "network_affiliation": "FOX (D1), COZI TV (D2), DABL (D3), OXYGEN (D4)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJAR", - "community_served_city": "PROVIDENCE", - "community_served_state": "RI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCMH-TV", - "community_served_city": "COLUMBUS", - "community_served_state": "OH", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNCN", - "community_served_city": "GOLDSBORO", - "community_served_state": "NC", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOZJ", - "community_served_city": "JOPLIN", - "community_served_state": "MO", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOZK", - "community_served_city": "SPRINGFIELD", - "community_served_state": "MO", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXIA-TV", - "community_served_city": "ATLANTA", - "community_served_state": "GA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOFY-TV", - "community_served_city": "SAN FRANCISCO", - "community_served_state": "CA", - "network_affiliation": "Merit Street, Grit, PosiTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDFX-CD", - "community_served_city": "INDIO/PALM SPRINGS", - "community_served_state": "CA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KECY-TV", - "community_served_city": "EL CENTRO", - "community_served_state": "CA", - "network_affiliation": "FOX/ABC/CW/TELEMUNDO/NOSEY/CONFESS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUAM-TV", - "community_served_city": "HAGATNA", - "community_served_state": "GU", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KALO", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "IND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBEC-TV", - "community_served_city": "BOCA RATON", - "community_served_state": "FL", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K09YZ-D", - "community_served_city": "BEEVILLE-REFUGIO", - "community_served_state": "TX", - "network_affiliation": "Telemundo, Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K31KK-D", - "community_served_city": "KINGSVILLE-ALICE", - "community_served_state": "TX", - "network_affiliation": "Telemundo, Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K22JA-D", - "community_served_city": "CORPUS CHRISTI", - "community_served_state": "TX", - "network_affiliation": "Telemundo, Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFSF-DT", - "community_served_city": "VALLEJO", - "community_served_state": "CA", - "network_affiliation": "UniMas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFDA-TV", - "community_served_city": "AMARILLO", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KZBZ-CD", - "community_served_city": "CLOVIS", - "community_served_state": "NM", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLDO-TV", - "community_served_city": "LAREDO", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMPH-TV", - "community_served_city": "VISALIA", - "community_served_state": "CA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPTM", - "community_served_city": "OMAHA", - "community_served_state": "NE", - "network_affiliation": "KPTM D1 - FOX; KPTM D2 - DABL/MyNet; KPTM D3 - The CW; KPTM D4 - Comet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KREN-TV", - "community_served_city": "RENO", - "community_served_state": "NV", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMAX-TV", - "community_served_city": "SACRAMENTO", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBFX-CD", - "community_served_city": "BAKERSFIELD", - "community_served_state": "CA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCWI-TV", - "community_served_city": "AMES", - "community_served_state": "IA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTXA", - "community_served_city": "FORT WORTH", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMYS", - "community_served_city": "KERRVILLE", - "community_served_state": "TX", - "network_affiliation": "DABL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDCA", - "community_served_city": "WASHINGTON", - "community_served_state": "DC", - "network_affiliation": "MNT", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTXF-TV", - "community_served_city": "PHILADELPHIA", - "community_served_state": "PA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTXH", - "community_served_city": "HOUSTON", - "community_served_state": "TX", - "network_affiliation": "MY NET", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKBD-TV", - "community_served_city": "DETROIT", - "community_served_state": "MI", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVQ-DT", - "community_served_city": "LEXINGTON", - "community_served_state": "KY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KALB-TV", - "community_served_city": "ALEXANDRIA", - "community_served_state": "LA", - "network_affiliation": "KALB/NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEVC-CD", - "community_served_city": "INDIO", - "community_served_state": "CA", - "network_affiliation": "UniMas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KINT-TV", - "community_served_city": "EL PASO", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNEU", - "community_served_city": "MERRIMACK", - "community_served_state": "NH", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMNT-CD", - "community_served_city": "TOLEDO", - "community_served_state": "OH", - "network_affiliation": "My Network TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KKPM-CD", - "community_served_city": "YUBA CITY", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXA-TV", - "community_served_city": "ROME", - "community_served_state": "GA", - "network_affiliation": "ION, Court TV, Laff, Mystery, IONPlus, SCRIPPS News, Jewelry TV, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHPX-TV", - "community_served_city": "NEW LONDON", - "community_served_state": "CT", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPPX-TV", - "community_served_city": "WILMINGTON", - "community_served_state": "DE", - "network_affiliation": "ION, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, QVC, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPBF", - "community_served_city": "TEQUESTA", - "community_served_state": "FL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPSD-TV", - "community_served_city": "PADUCAH", - "community_served_state": "KY", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMLU", - "community_served_city": "COLUMBIA", - "community_served_state": "LA", - "network_affiliation": "MeTV, Heroes & Icons, Movies, Start TV, MeTV Toons,", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAPA-TV", - "community_served_city": "SAN JUAN", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQMY", - "community_served_city": "WILLIAMSPORT", - "community_served_state": "PA", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVK", - "community_served_city": "OSWEGO", - "community_served_state": "IL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQRF-TV", - "community_served_city": "ROCKFORD", - "community_served_state": "IL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPEC", - "community_served_city": "WEST PALM BEACH", - "community_served_state": "FL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRDO-TV", - "community_served_city": "COLORADO SPRINGS", - "community_served_state": "CO", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLML", - "community_served_city": "GRAND JUNCTION", - "community_served_state": "CO", - "network_affiliation": "Court TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXK-TV", - "community_served_city": "JELLICO", - "community_served_state": "TN", - "network_affiliation": "ION, Court TV, Laff, Mystery, SCRIPPS News, Jewelry TV, QVC, HSN, QVC2", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCNZ-CD", - "community_served_city": "SAN FRANCISCO", - "community_served_state": "CA", - "network_affiliation": "LATV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDJT-CD", - "community_served_city": "SALINAS/MONTEREY,ETC", - "community_served_state": "CA", - "network_affiliation": "UNIMAS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEZT-CD", - "community_served_city": "SACRAMENTO", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLAX-TV", - "community_served_city": "ALEXANDRIA", - "community_served_state": "LA", - "network_affiliation": "MeTV and ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSPX-TV", - "community_served_city": "SACRAMENTO", - "community_served_state": "CA", - "network_affiliation": "ION, Court TV, Laff, Bounce, IONPlus, SCRIPPS News, Jewelry TV, HSN, HSN2", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFTU-CD", - "community_served_city": "TUCSON", - "community_served_state": "AZ", - "network_affiliation": "Unimas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXT", - "community_served_city": "PORTLAND", - "community_served_state": "ME", - "network_affiliation": "Maine's CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPLG", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDIV-TV", - "community_served_city": "DETROIT", - "community_served_state": "MI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFSB", - "community_served_city": "HARTFORD", - "community_served_state": "CT", - "network_affiliation": "CBS (DT1 & DT4); ION MYSTERY (DT2); LAFF TV (DT3); WWAX (DT4)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJXT", - "community_served_city": "JACKSONVILLE", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPRC-TV", - "community_served_city": "HOUSTON", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSAT-TV", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSRE", - "community_served_city": "MINOT", - "community_served_state": "ND", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KJRE", - "community_served_city": "ELLENDALE", - "community_served_state": "ND", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWSE", - "community_served_city": "WILLISTON", - "community_served_state": "ND", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGFE", - "community_served_city": "GRAND FORKS", - "community_served_state": "ND", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFME", - "community_served_city": "FARGO", - "community_served_state": "ND", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBME-TV", - "community_served_city": "BISMARCK", - "community_served_state": "ND", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDSE", - "community_served_city": "DICKINSON", - "community_served_state": "ND", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIEM-TV", - "community_served_city": "EUREKA", - "community_served_state": "CA", - "network_affiliation": "NBC: ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKCF", - "community_served_city": "CLERMONT", - "community_served_state": "FL", - "network_affiliation": "CW, ESTRELLA, TRUE CRIME NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXXV-TV", - "community_served_city": "GULFPORT", - "community_served_state": "MS", - "network_affiliation": "FOX; NBC; CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRPV-DT", - "community_served_city": "ROSWELL", - "community_served_state": "NM", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMLM-DT", - "community_served_city": "ODESSA", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPTB-DT", - "community_served_city": "LUBBOCK", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBCB", - "community_served_city": "BELLINGHAM", - "community_served_state": "WA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQLN", - "community_served_city": "ERIE", - "community_served_state": "PA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCNY-TV", - "community_served_city": "SYRACUSE", - "community_served_state": "NY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMOR-TV", - "community_served_city": "LAKELAND", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYOU-TV", - "community_served_city": "OTTUMWA", - "community_served_state": "IA", - "network_affiliation": "FOX, NBC, CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCPT", - "community_served_city": "KANSAS CITY", - "community_served_state": "MO", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXLN-DT", - "community_served_city": "ROSENBERG", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIPR-TV", - "community_served_city": "SAN JUAN", - "community_served_state": "PR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIPM-TV", - "community_served_city": "MAYAGUEZ", - "community_served_state": "PR", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KETV", - "community_served_city": "OMAHA", - "community_served_state": "NE", - "network_affiliation": "ABC, Me-TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYFF", - "community_served_city": "GREENVILLE", - "community_served_state": "SC", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKOCT", - "community_served_city": "CARLSBAD", - "community_served_state": "NM", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKOVT", - "community_served_city": "SILVER CITY", - "community_served_state": "NM", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXII-TV", - "community_served_city": "WINSTON-SALEM", - "community_served_state": "NC", - "network_affiliation": "NBC/MeTV/Story", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOAT-TV", - "community_served_city": "ALBUQUERQUE", - "community_served_state": "NM", - "network_affiliation": "ABC, True Crime Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGAL", - "community_served_city": "LANCASTER", - "community_served_state": "PA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLKY", - "community_served_city": "LOUISVILLE", - "community_served_state": "KY", - "network_affiliation": "CBS, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLJB", - "community_served_city": "DAVENPORT", - "community_served_state": "IA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKBW-TV", - "community_served_city": "BUFFALO", - "community_served_state": "NY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGEM-TV", - "community_served_city": "QUINCY", - "community_served_state": "IL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNOL-TV", - "community_served_city": "NEW ORLEANS", - "community_served_state": "LA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDEF-TV", - "community_served_city": "CHATTANOOGA", - "community_served_state": "TN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMYT-TV", - "community_served_city": "TULSA", - "community_served_state": "OK", - "network_affiliation": "MY (41.1), Cozi TV (41.2), Start TV (41.3), Heroes & Icons (41.4), MeTV Toons (41.5)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRFB", - "community_served_city": "CAROLINA", - "community_served_state": "PR", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLXI", - "community_served_city": "GREENSBORO", - "community_served_state": "NC", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPGA-TV", - "community_served_city": "PERRY", - "community_served_state": "GA", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAWD", - "community_served_city": "FORT WALTON BEACH", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRBW", - "community_served_city": "ORLANDO", - "community_served_state": "FL", - "network_affiliation": "MYNET", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRDC", - "community_served_city": "DURHAM", - "community_served_state": "NC", - "network_affiliation": "My Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KJTV-TV", - "community_served_city": "LUBBOCK", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KASY-TV", - "community_served_city": "ALBUQUERQUE", - "community_served_state": "NM", - "network_affiliation": "MyNet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXTQ-CD", - "community_served_city": "LUBBOCK", - "community_served_state": "TX", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTEL-CD", - "community_served_city": "ALBUQUERQUE", - "community_served_state": "NM", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXLA", - "community_served_city": "RANCHO PALOS VERDES", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WARP-CD", - "community_served_city": "TAMPA-ST. PETERSBURG", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVE", - "community_served_city": "WILLOW GROVE", - "community_served_state": "PA", - "network_affiliation": "IND 1/1/24 - 6/30/24, SHOP LC 7/1/24 - 12/31/24", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLYH", - "community_served_city": "RED LION", - "community_served_state": "PA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNRR", - "community_served_city": "PEMBINA", - "community_served_state": "ND", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KJRR", - "community_served_city": "JAMESTOWN", - "community_served_state": "ND", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBRR", - "community_served_city": "THIEF RIVER FALLS", - "community_served_state": "MN", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVRR", - "community_served_city": "FARGO", - "community_served_state": "ND", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDLV-TV", - "community_served_city": "MITCHELL", - "community_served_state": "SD", - "network_affiliation": "NBC/ABC/FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDLT-TV", - "community_served_city": "SIOUX FALLS", - "community_served_state": "SD", - "network_affiliation": "NBC/ANTENNA/FOX/COZI & COURT TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEET", - "community_served_city": "EUREKA", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRDQ", - "community_served_city": "ORLANDO", - "community_served_state": "FL", - "network_affiliation": "Independent, Court TV, Telemundo, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRWG-TV", - "community_served_city": "LAS CRUCES", - "community_served_state": "NM", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNME-TV", - "community_served_city": "ALBUQUERQUE", - "community_served_state": "NM", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KETK-TV", - "community_served_city": "JACKSONVILLE", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYTX", - "community_served_city": "NACOGDOCHES", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXMD-TV", - "community_served_city": "WILLISTON", - "community_served_state": "ND", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXMA-TV", - "community_served_city": "DICKINSON", - "community_served_state": "ND", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXMC-TV", - "community_served_city": "MINOT", - "community_served_state": "ND", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXMB-TV", - "community_served_city": "BISMARCK", - "community_served_state": "ND", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYVV-TV", - "community_served_city": "DEL RIO", - "community_served_state": "TX", - "network_affiliation": "Merit Street", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVZ", - "community_served_city": "BEND", - "community_served_state": "OR", - "network_affiliation": "NBC, FOX, CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIDK", - "community_served_city": "IDAHO FALLS", - "community_served_state": "ID", - "network_affiliation": "DABL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEPR-TV", - "community_served_city": "PASCO", - "community_served_state": "WA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLEW-TV", - "community_served_city": "LEWISTON", - "community_served_state": "ID", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIMA-TV", - "community_served_city": "YAKIMA", - "community_served_state": "WA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGPE", - "community_served_city": "FRESNO", - "community_served_state": "CA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFXV", - "community_served_city": "HARLINGEN", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSBE-TV", - "community_served_city": "PROVIDENCE", - "community_served_state": "RI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWHY", - "community_served_city": "GARDEN GROVE", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTTV", - "community_served_city": "BLOOMINGTON", - "community_served_state": "IN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDNL-TV", - "community_served_city": "ST. LOUIS", - "community_served_state": "MO", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTTK", - "community_served_city": "KOKOMO", - "community_served_state": "IN", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDSM-TV", - "community_served_city": "DES MOINES", - "community_served_state": "IA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KABB", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLOS", - "community_served_city": "ASHEVILLE", - "community_served_state": "NC", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMYA-TV", - "community_served_city": "ANDERSON", - "community_served_state": "SC", - "network_affiliation": "DABL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSYX", - "community_served_city": "COLUMBUS", - "community_served_state": "OH", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOVR", - "community_served_city": "STOCKTON", - "community_served_state": "CA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGWW", - "community_served_city": "ANNISTON", - "community_served_state": "AL", - "network_affiliation": "Heroes and Icons", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWPX-TV", - "community_served_city": "BELLEVUE", - "community_served_state": "WA", - "network_affiliation": "ION, Court TV, Bounce, Grit, IONPlus, SCRIPPS News, Jewelry TV, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCEC", - "community_served_city": "BOULDER", - "community_served_state": "CO", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLUZ-TV", - "community_served_city": "ALBUQUERQUE", - "community_served_state": "NM", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRBU", - "community_served_city": "EAST ST. LOUIS", - "community_served_state": "IL", - "network_affiliation": "ION, Bounce, Laff, IONPlus, SCRIPPS News, JewelryTV, QVC, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXXI-TV", - "community_served_city": "ROCHESTER", - "community_served_state": "NY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAAY-TV", - "community_served_city": "HUNTSVILLE", - "community_served_state": "AL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRSU-TV", - "community_served_city": "CLAREMORE", - "community_served_state": "OK", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTLD-CD", - "community_served_city": "BAKERSFIELD", - "community_served_state": "CA", - "network_affiliation": "3 ANGELS BROADCASTING NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K17JI-D", - "community_served_city": "FRESNO", - "community_served_state": "CA", - "network_affiliation": "3 ANGELS BROADCASTING NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPTZ", - "community_served_city": "PLATTSBURGH", - "community_served_state": "NY", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KKYK-CD", - "community_served_city": "LITTLE ROCK", - "community_served_state": "AR", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJHL-TV", - "community_served_city": "JOHNSON CITY", - "community_served_state": "TN", - "network_affiliation": "CBS/ABC TRICITIES", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVR-TV", - "community_served_city": "RICHMOND", - "community_served_state": "VA", - "network_affiliation": "CBS, Antenna TV, Court TV, ION Television, Newsy, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUTR", - "community_served_city": "UTICA", - "community_served_state": "NY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNCT-TV", - "community_served_city": "GREENVILLE", - "community_served_state": "NC", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSLS-TV", - "community_served_city": "ROANOKE", - "community_served_state": "VA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUPX-TV", - "community_served_city": "PROVO", - "community_served_state": "UT", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRCB", - "community_served_city": "COTATI", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGXA", - "community_served_city": "MACON", - "community_served_state": "GA", - "network_affiliation": "WGXA D1 - FOX; WGXA D2 - ABC; WGXA D3 - Comet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KKAP", - "community_served_city": "LITTLE ROCK", - "community_served_state": "AR", - "network_affiliation": "IND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJPX", - "community_served_city": "SAN JUAN", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKPV", - "community_served_city": "PONCE", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJWN-TV", - "community_served_city": "SAN SEBASTIAN", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEDT", - "community_served_city": "CORPUS CHRISTI", - "community_served_state": "TX", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOAM-TV", - "community_served_city": "PITTSBURG", - "community_served_state": "KS", - "network_affiliation": "CBS, FOX, MeTV, and Heroes & Icons", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIDY", - "community_served_city": "SAN ANGELO", - "community_served_state": "TX", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCVU", - "community_served_city": "PARADISE", - "community_served_state": "CA", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGMC", - "community_served_city": "MERCED", - "community_served_state": "CA", - "network_affiliation": "Estrella TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUVS-DT", - "community_served_city": "MODESTO", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBVU", - "community_served_city": "EUREKA", - "community_served_state": "CA", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAYU-TV", - "community_served_city": "SPOKANE", - "community_served_state": "WA", - "network_affiliation": "FOX, Antenna TV,", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWNYS-TV", - "community_served_city": "SYRACUSE", - "community_served_state": "NY", - "network_affiliation": "MYTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVCR-DT", - "community_served_city": "SAN BERNARDINO", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSWB-TV", - "community_served_city": "SAN DIEGO", - "community_served_state": "CA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPXB-TV", - "community_served_city": "CONROE", - "community_served_state": "TX", - "network_affiliation": "ION, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, CourtTV, Grit", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPJK", - "community_served_city": "SAN MATEO", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSKT-CD", - "community_served_city": "SAN MARCOS", - "community_served_state": "CA", - "network_affiliation": "TIMELESS TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPXN-TV", - "community_served_city": "SAN BERNARDINO", - "community_served_state": "CA", - "network_affiliation": "ION, Court TV, IONPlus, Laff, Bounce, Jewelry TV, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFRE-TV", - "community_served_city": "SANGER", - "community_served_state": "CA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOAA-TV", - "community_served_city": "PUEBLO", - "community_served_state": "CO", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRCB", - "community_served_city": "CHATTANOOGA", - "community_served_state": "TN", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVN", - "community_served_city": "RENO", - "community_served_state": "NV", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIVI-TV", - "community_served_city": "NAMPA", - "community_served_state": "ID", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGTQ", - "community_served_city": "SAULT STE. MARIE", - "community_served_state": "MI", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGTU", - "community_served_city": "TRAVERSE CITY", - "community_served_state": "MI", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBUP", - "community_served_city": "ISHPEMING", - "community_served_state": "MI", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNIN-TV", - "community_served_city": "CALDWELL", - "community_served_state": "ID", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCPO-TV", - "community_served_city": "CINCINNATI", - "community_served_state": "OH", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KJRH-TV", - "community_served_city": "TULSA", - "community_served_state": "OK", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNXV-TV", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEWS-TV", - "community_served_city": "CLEVELAND", - "community_served_state": "OH", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMAR-TV", - "community_served_city": "BALTIMORE", - "community_served_state": "MD", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPTV-TV", - "community_served_city": "WEST PALM BEACH", - "community_served_state": "FL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSHB-TV", - "community_served_city": "KANSAS CITY", - "community_served_state": "MO", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCSG", - "community_served_city": "CEDAR CITY", - "community_served_state": "UT", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTAB-TV", - "community_served_city": "ABILENE", - "community_served_state": "TX", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WACX", - "community_served_city": "LEESBURG", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHTV-CD", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "MeTV Plus", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVPT", - "community_served_city": "STAUNTON", - "community_served_state": "VA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJAN-CD", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRNV-DT", - "community_served_city": "RENO", - "community_served_state": "NV", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSTE-DT", - "community_served_city": "PONCE", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHBS", - "community_served_city": "FORT SMITH", - "community_served_state": "AR", - "network_affiliation": "ABC, CW, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHOG-TV", - "community_served_city": "FAYETTEVILLE", - "community_served_state": "AR", - "network_affiliation": "ABC, CW, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOST", - "community_served_city": "MAYAGUEZ", - "community_served_state": "PR", - "network_affiliation": "CRTV NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYLE-TV", - "community_served_city": "BRYAN", - "community_served_state": "TX", - "network_affiliation": "MyNetwork", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVDF-CD", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "TIMELESS TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTNL-TV", - "community_served_city": "SITKA", - "community_served_state": "AK", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUBD", - "community_served_city": "KETCHIKAN", - "community_served_state": "AK", - "network_affiliation": "NBC, CBS, My Network,", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSTR-DT", - "community_served_city": "IRVING", - "community_served_state": "TX", - "network_affiliation": "UniMas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAMI-DT", - "community_served_city": "HOLLYWOOD", - "community_served_state": "FL", - "network_affiliation": "UNIMAS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFTH-DT", - "community_served_city": "ALVIN", - "community_served_state": "TX", - "network_affiliation": "UniMas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXFT-DT", - "community_served_city": "AURORA", - "community_served_state": "IL", - "network_affiliation": "UniMas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFTR-DT", - "community_served_city": "ONTARIO", - "community_served_state": "CA", - "network_affiliation": "Unimas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNI", - "community_served_city": "MARLBOROUGH", - "community_served_state": "MA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUTB", - "community_served_city": "BALTIMORE", - "community_served_state": "MD", - "network_affiliation": "TBD", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFTY-DT", - "community_served_city": "SMITHTOWN", - "community_served_state": "NY", - "network_affiliation": "TRUE CRIME NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFUT-DT", - "community_served_city": "NEWARK", - "community_served_state": "NJ", - "network_affiliation": "UNIMAS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQHS-DT", - "community_served_city": "CLEVELAND", - "community_served_state": "OH", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVEA-TV", - "community_served_city": "TAMPA", - "community_served_state": "FL", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUVP-DT", - "community_served_city": "VINELAND", - "community_served_state": "NJ", - "network_affiliation": "UNIVISION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIWN", - "community_served_city": "FOND DU LAC", - "community_served_state": "WI", - "network_affiliation": "Cozi TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEYT-TV", - "community_served_city": "SANTA BARBARA", - "community_served_state": "CA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSBB-CD", - "community_served_city": "SANTA BARBARA", - "community_served_state": "CA", - "network_affiliation": "MyNet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WETM-TV", - "community_served_city": "ELMIRA", - "community_served_state": "NY", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKTV", - "community_served_city": "UTICA", - "community_served_state": "NY", - "network_affiliation": "NBC, CBS, METV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOOD", - "community_served_city": "HAYS", - "community_served_state": "KS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSWK", - "community_served_city": "LAKIN", - "community_served_state": "KS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCSD-TV", - "community_served_city": "SIOUX FALLS", - "community_served_state": "SD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDRV", - "community_served_city": "MEDFORD", - "community_served_state": "OR", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDKF", - "community_served_city": "KLAMATH FALLS", - "community_served_state": "OR", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCHF", - "community_served_city": "SANTA FE", - "community_served_state": "NM", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KYNM-CD", - "community_served_city": "ALBUQUERQUE", - "community_served_state": "NM", - "network_affiliation": "The Family Channel; JTV; NTD; Heartland TV; KCHF TV - Son Broadcasting Inc; IJN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPGD-TV", - "community_served_city": "HENDERSONVILLE", - "community_served_state": "TN", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WELF-TV", - "community_served_city": "DALTON", - "community_served_state": "GA", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMPV-TV", - "community_served_city": "MOBILE", - "community_served_state": "AL", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMCF-TV", - "community_served_city": "MONTGOMERY", - "community_served_state": "AL", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBUY-TV", - "community_served_city": "HOLLY SPRINGS", - "community_served_state": "MS", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBPH-TV", - "community_served_city": "BETHLEHEM", - "community_served_state": "PA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNEH", - "community_served_city": "GREENWOOD", - "community_served_state": "SC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOLO-TV", - "community_served_city": "COLUMBIA", - "community_served_state": "SC", - "network_affiliation": "ABC, MeTV, H&I, QVC, Start-TV, DABL, HSN, Story TV, MeTV Toons", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEBA-TV", - "community_served_city": "ALLENDALE", - "community_served_state": "SC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHMC", - "community_served_city": "CONWAY", - "community_served_state": "SC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WITV", - "community_served_city": "CHARLESTON", - "community_served_state": "SC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJWJ-TV", - "community_served_city": "BEAUFORT", - "community_served_state": "SC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJPM-TV", - "community_served_city": "FLORENCE", - "community_served_state": "SC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNSC-TV", - "community_served_city": "ROCK HILL", - "community_served_state": "SC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNTV", - "community_served_city": "GREENVILLE", - "community_served_state": "SC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRET-TV", - "community_served_city": "SPARTANBURG", - "community_served_state": "SC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRJA-TV", - "community_served_city": "SUMTER", - "community_served_state": "SC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRLK-TV", - "community_served_city": "COLUMBIA", - "community_served_state": "SC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KZSD-TV", - "community_served_city": "MARTIN", - "community_served_state": "SD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQSD-TV", - "community_served_city": "LOWRY", - "community_served_state": "SD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDSD-TV", - "community_served_city": "ABERDEEN", - "community_served_state": "SD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTSD-TV", - "community_served_city": "PIERRE", - "community_served_state": "SD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KESD-TV", - "community_served_city": "BROOKINGS", - "community_served_state": "SD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBHE-TV", - "community_served_city": "RAPID CITY", - "community_served_state": "SD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPSD-TV", - "community_served_city": "EAGLE BUTTE", - "community_served_state": "SD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUSD-TV", - "community_served_city": "VERMILLION", - "community_served_state": "SD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXEL-TV", - "community_served_city": "BOYNTON BEACH", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMGM-TV", - "community_served_city": "WILDWOOD", - "community_served_state": "NJ", - "network_affiliation": "TRUE CRIME NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPXL-TV", - "community_served_city": "UVALDE", - "community_served_state": "TX", - "network_affiliation": "ION, Court TV, Laff, Mystery, IONPlus, SCRIPPS News, Jewelry TV, HSN, HSN2", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBTV-TV", - "community_served_city": "PORT ARTHUR", - "community_served_state": "TX", - "network_affiliation": "DABL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHIZ-TV", - "community_served_city": "ZANESVILLE", - "community_served_state": "OH", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNKY", - "community_served_city": "BOWLING GREEN", - "community_served_state": "KY", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWSB", - "community_served_city": "SARASOTA", - "community_served_state": "FL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFTS", - "community_served_city": "KLAMATH FALLS", - "community_served_state": "OR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSYS", - "community_served_city": "MEDFORD", - "community_served_state": "OR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXCW", - "community_served_city": "NAPLES", - "community_served_state": "FL", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPIC", - "community_served_city": "ROSEBURG", - "community_served_state": "OR", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVEO", - "community_served_city": "AGUADILLA", - "community_served_state": "PR", - "network_affiliation": "MegaTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSPS-TV", - "community_served_city": "SPOKANE", - "community_served_state": "WA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVLY-TV", - "community_served_city": "FARGO", - "community_served_state": "ND", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXLY-TV", - "community_served_city": "SPOKANE", - "community_served_state": "WA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRSP-TV", - "community_served_city": "SPRINGFIELD", - "community_served_state": "IL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPBS-TV", - "community_served_city": "WATERTOWN", - "community_served_state": "NY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNPI-DT", - "community_served_city": "NORWOOD", - "community_served_state": "NY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KETC", - "community_served_city": "ST. LOUIS", - "community_served_state": "MO", - "network_affiliation": "ETV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIYC", - "community_served_city": "TROY", - "community_served_state": "AL", - "network_affiliation": "COZI", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WICZ-TV", - "community_served_city": "BINGHAMTON", - "community_served_state": "NY", - "network_affiliation": "FOX, MyNetwork, ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYDC", - "community_served_city": "CORNING", - "community_served_state": "NY", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOBR", - "community_served_city": "ROSWELL", - "community_served_state": "NM", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXVA", - "community_served_city": "ABILENE", - "community_served_state": "TX", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTLM", - "community_served_city": "RIO GRANDE CITY", - "community_served_state": "TX", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUID-TV", - "community_served_city": "MOSCOW", - "community_served_state": "ID", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGCU", - "community_served_city": "FORT MYERS", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCDT", - "community_served_city": "COEUR D'ALENE", - "community_served_state": "ID", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIPT", - "community_served_city": "TWIN FALLS", - "community_served_state": "ID", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KISU-TV", - "community_served_city": "POCATELLO", - "community_served_state": "ID", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAID", - "community_served_city": "BOISE", - "community_served_state": "ID", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCKA", - "community_served_city": "CENTRALIA", - "community_served_state": "WA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBTC-TV", - "community_served_city": "TACOMA", - "community_served_state": "WA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLEF-TV", - "community_served_city": "PARK FALLS", - "community_served_state": "WI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCAU", - "community_served_city": "PHILADELPHIA", - "community_served_state": "PA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVJ", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCDO-TV", - "community_served_city": "STERLING", - "community_served_state": "CO", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIBW-TV", - "community_served_city": "TOPEKA", - "community_served_state": "KS", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGWL-TV", - "community_served_city": "LANDER", - "community_served_state": "WY", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMIZ", - "community_served_city": "COLUMBIA", - "community_served_state": "MO", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCOY-TV", - "community_served_city": "SANTA MARIA", - "community_served_state": "CA", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGWN-TV", - "community_served_city": "CHEYENNE", - "community_served_state": "WY", - "network_affiliation": "CBS / NBC / CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGWR-TV", - "community_served_city": "ROCK SPRINGS", - "community_served_state": "WY", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGWC-TV", - "community_served_city": "CASPER", - "community_served_state": "WY", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSTF", - "community_served_city": "SCOTTSBLUFF", - "community_served_state": "NE", - "network_affiliation": "CBS / NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGTA", - "community_served_city": "TOCCOA", - "community_served_state": "GA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOLO-TV", - "community_served_city": "RENO", - "community_served_state": "NV", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBLR", - "community_served_city": "PARADISE", - "community_served_state": "NV", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSVN", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KENV-DT", - "community_served_city": "ELKO", - "community_served_state": "NV", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKWNV", - "community_served_city": "WINNEMUCCA", - "community_served_state": "NV", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KILM", - "community_served_city": "INGLEWOOD", - "community_served_state": "CA", - "network_affiliation": "SCRIPPS News, Bounce, LAFF", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSST-TV", - "community_served_city": "CORDELE", - "community_served_state": "GA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUVE-DT", - "community_served_city": "GREEN VALLEY", - "community_served_state": "AZ", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDKY-TV", - "community_served_city": "DANVILLE", - "community_served_state": "KY", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPCH-TV", - "community_served_city": "ATLANTA", - "community_served_state": "GA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSPX-TV", - "community_served_city": "SYRACUSE", - "community_served_state": "NY", - "network_affiliation": "ION, Court TV, Grit, Mystery, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCWE", - "community_served_city": "KANSAS CITY", - "community_served_state": "MO", - "network_affiliation": "CW/True Crime Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHVO", - "community_served_city": "HILO", - "community_served_state": "HI", - "network_affiliation": "ABC (D1), METV (D2)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKOW", - "community_served_city": "MADISON", - "community_served_state": "WI", - "network_affiliation": "ABC (27.1), Catchy Comedy (27.2), MeTV Toons (27.3), Court TV (27.4), CRIME (27.5)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAOW", - "community_served_city": "WAUSAU", - "community_served_state": "WI", - "network_affiliation": "ABC 9.1, Catchy Comedy 9.2, MeTV Toons 9.3, Court TV 9.4, True Crime 9.5", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGRZ", - "community_served_city": "BUFFALO", - "community_served_state": "NY", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KITV", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "ABC (D1), METV (D2)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXOW", - "community_served_city": "LA CROSSE", - "community_served_state": "WI", - "network_affiliation": "ABC, Catchy TV, This TV thru 5/24/24, then MeTV Toons Eff 5/29/24, Court TV, Justice Networks, The Grio", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQOW", - "community_served_city": "EAU CLAIRE", - "community_served_state": "WI", - "network_affiliation": "ABC, Catchy TV, This TV thru 5/24/24, MeTV Toons Eff 5/29/24, Court TV, Justice Networks, The Grio", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMAU", - "community_served_city": "WAILUKU", - "community_served_state": "HI", - "network_affiliation": "ABC (D1), METV (D2)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFTS-TV", - "community_served_city": "TAMPA", - "community_served_state": "FL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFLA-TV", - "community_served_city": "TAMPA", - "community_served_state": "FL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKFYF", - "community_served_city": "FAIRBANKS", - "community_served_state": "AK", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRAZ", - "community_served_city": "RALEIGH", - "community_served_state": "NC", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQPX-TV", - "community_served_city": "SCRANTON", - "community_served_state": "PA", - "network_affiliation": "ION, Bounce, Court TV, Grit, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WORA-TV", - "community_served_city": "MAYAGUEZ", - "community_served_state": "PR", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KORO", - "community_served_city": "CORPUS CHRISTI", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVDA", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSCV", - "community_served_city": "FORT LAUDERDALE", - "community_served_state": "FL", - "network_affiliation": "TELEMUNDO", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEJT-CD", - "community_served_city": "SALT LAKE CITY", - "community_served_state": "UT", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKAQ-TV", - "community_served_city": "SAN JUAN", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTMD", - "community_served_city": "GALVESTON", - "community_served_state": "TX", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSTS", - "community_served_city": "SAN JOSE", - "community_served_state": "CA", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTLV", - "community_served_city": "JACKSONVILLE", - "community_served_state": "FL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGPX-TV", - "community_served_city": "BURLINGTON", - "community_served_state": "NC", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHDF", - "community_served_city": "FLORENCE", - "community_served_state": "AL", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQCW", - "community_served_city": "PORTSMOUTH", - "community_served_state": "OH", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WISC-TV", - "community_served_city": "MADISON", - "community_served_state": "WI", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBBJ-TV", - "community_served_city": "JACKSON", - "community_served_state": "TN", - "network_affiliation": "ABC (main) CBS (multicast)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAWV-TV", - "community_served_city": "TERRE HAUTE", - "community_served_state": "IN", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAMU-TV", - "community_served_city": "COLLEGE STATION", - "community_served_state": "TX", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTTZ-TV", - "community_served_city": "LUBBOCK", - "community_served_state": "TX", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFDX-TV", - "community_served_city": "WICHITA FALLS", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVBT", - "community_served_city": "VIRGINIA BEACH", - "community_served_state": "VA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBFD-DT", - "community_served_city": "HONOLULU", - "community_served_state": "HI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAKE", - "community_served_city": "WICHITA", - "community_served_state": "KS", - "network_affiliation": "ABC, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLBY", - "community_served_city": "COLBY", - "community_served_state": "KS", - "network_affiliation": "ABC, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRON-TV", - "community_served_city": "SAN FRANCISCO", - "community_served_state": "CA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOWT", - "community_served_city": "OMAHA", - "community_served_state": "NE", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUPK", - "community_served_city": "GARDEN CITY", - "community_served_state": "KS", - "network_affiliation": "ABC, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOMU-TV", - "community_served_city": "COLUMBIA", - "community_served_state": "MO", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUSA", - "community_served_city": "WASHINGTON", - "community_served_state": "DC", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCET", - "community_served_city": "CINCINNATI", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTCI", - "community_served_city": "CHATTANOOGA", - "community_served_state": "TN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WETA-TV", - "community_served_city": "WASHINGTON", - "community_served_state": "DC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WISN-TV", - "community_served_city": "MILWAUKEE", - "community_served_state": "WI", - "network_affiliation": "ABC/ True Crime Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTAE-TV", - "community_served_city": "PITTSBURGH", - "community_served_state": "PA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCVB-TV", - "community_served_city": "BOSTON", - "community_served_state": "MA", - "network_affiliation": "ABC, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMBC-TV", - "community_served_city": "KANSAS CITY", - "community_served_state": "MO", - "network_affiliation": "ABC/ME-TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDTN", - "community_served_city": "DAYTON", - "community_served_state": "OH", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBAL-TV", - "community_served_city": "BALTIMORE", - "community_served_state": "MD", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJET-TV", - "community_served_city": "ERIE", - "community_served_state": "PA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKPD", - "community_served_city": "PADUCAH", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWJS", - "community_served_city": "HICKORY", - "community_served_state": "NC", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMPT", - "community_served_city": "ANNAPOLIS", - "community_served_state": "MD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWPB", - "community_served_city": "HAGERSTOWN", - "community_served_state": "MD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMPB", - "community_served_city": "BALTIMORE", - "community_served_state": "MD", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTIV", - "community_served_city": "SIOUX CITY", - "community_served_state": "IA", - "network_affiliation": "NBC, CW, Me-TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WREG-TV", - "community_served_city": "MEMPHIS", - "community_served_state": "TN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOSU-TV", - "community_served_city": "COLUMBUS", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWPBO", - "community_served_city": "PORTSMOUTH", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOED-TV", - "community_served_city": "TULSA", - "community_served_state": "OK", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPSU-TV", - "community_served_city": "CLEARFIELD", - "community_served_state": "PA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHO-DT", - "community_served_city": "DES MOINES", - "community_served_state": "IA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFOR-TV", - "community_served_city": "OKLAHOMA CITY", - "community_served_state": "OK", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIFI-TV", - "community_served_city": "IDAHO FALLS", - "community_served_state": "ID", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGTE-TV", - "community_served_city": "TOLEDO", - "community_served_state": "OH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLRN-TV", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVPY", - "community_served_city": "NEW MARKET", - "community_served_state": "VA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSPA-TV", - "community_served_city": "SPARTANBURG", - "community_served_state": "SC", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMBB", - "community_served_city": "PANAMA CITY", - "community_served_state": "FL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIMT", - "community_served_city": "MASON CITY", - "community_served_state": "IA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBTW", - "community_served_city": "FLORENCE", - "community_served_state": "SC", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWCH-DT", - "community_served_city": "HUTCHINSON", - "community_served_state": "KS", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBSD-DT", - "community_served_city": "ENSIGN", - "community_served_state": "KS", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBSH-DT", - "community_served_city": "HAYS", - "community_served_state": "KS", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBSL-DT", - "community_served_city": "GOODLAND", - "community_served_state": "KS", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFSM-TV", - "community_served_city": "FORT SMITH", - "community_served_state": "AR", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTIU", - "community_served_city": "BLOOMINGTON", - "community_served_state": "IN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUON-TV", - "community_served_city": "LINCOLN", - "community_served_state": "NE", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUFM-TV", - "community_served_city": "MISSOULA", - "community_served_state": "MT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KIRO-TV", - "community_served_city": "SEATTLE", - "community_served_state": "WA", - "network_affiliation": "CBS (7.1), COZITV (7.2), LAFF (7.3), TELEMUNDO (7.4)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUGB-CD", - "community_served_city": "HOUSTON", - "community_served_state": "TX", - "network_affiliation": "CRTV NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOAY-TV", - "community_served_city": "OAK HILL", - "community_served_state": "WV", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTWC-TV", - "community_served_city": "TALLAHASSEE", - "community_served_state": "FL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K21DO-D", - "community_served_city": "PALM SPRINGS", - "community_served_state": "CA", - "network_affiliation": "TIMELESS TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBKB-TV", - "community_served_city": "ALPENA", - "community_served_state": "MI", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXV-TV", - "community_served_city": "NORFOLK", - "community_served_state": "VA", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KINC", - "community_served_city": "LAS VEGAS", - "community_served_state": "NV", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVSN", - "community_served_city": "HUMACAO", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSNT", - "community_served_city": "TOPEKA", - "community_served_state": "KS", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWOG", - "community_served_city": "SPRINGDALE", - "community_served_state": "AR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAIL", - "community_served_city": "FRESNO", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOPX-TV", - "community_served_city": "MELBOURNE", - "community_served_state": "FL", - "network_affiliation": "ION, Bounce, Grit, IONPlus, SCRIPPS News, Jewelry TV, QVC, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTSM-TV", - "community_served_city": "EL PASO", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSNF", - "community_served_city": "JOPLIN", - "community_served_state": "MO", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTLJ", - "community_served_city": "MUSKEGON", - "community_served_state": "MI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNYO-TV", - "community_served_city": "BUFFALO", - "community_served_state": "NY", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTCT", - "community_served_city": "MARION", - "community_served_state": "IL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WINM", - "community_served_city": "ANGOLA", - "community_served_state": "IN", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAQP", - "community_served_city": "SAGINAW", - "community_served_state": "MI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTSF", - "community_served_city": "ASHLAND", - "community_served_state": "KY", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNIN", - "community_served_city": "EVANSVILLE", - "community_served_state": "IN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNDT-CD", - "community_served_city": "MANHATTAN", - "community_served_state": "NY", - "network_affiliation": "First Nations Experience", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPAZ-TV", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKOI-TV", - "community_served_city": "RICHMOND", - "community_served_state": "IN", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTBN-TV", - "community_served_city": "SANTA ANA", - "community_served_state": "CA", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDLI-TV", - "community_served_city": "CANTON", - "community_served_state": "OH", - "network_affiliation": "Bounce/Scripps News/Laff", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDTX-TV", - "community_served_city": "DALLAS", - "community_served_state": "TX", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTBW-TV", - "community_served_city": "TACOMA", - "community_served_state": "WA", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHFT-TV", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTBY-TV", - "community_served_city": "JERSEY CITY", - "community_served_state": "NJ", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTBO-TV", - "community_served_city": "OKLAHOMA CITY", - "community_served_state": "OK", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCLJ-TV", - "community_served_city": "BLOOMINGTON", - "community_served_state": "IN", - "network_affiliation": "Bounce/Scripps News/Court TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHSG-TV", - "community_served_city": "MONROE", - "community_served_state": "GA", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJMB-CD", - "community_served_city": "BUTLER", - "community_served_state": "PA", - "network_affiliation": "TIMELESS TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMVH-CD", - "community_served_city": "CHARLEROI", - "community_served_state": "PA", - "network_affiliation": "TIMELESS TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKHU-CD", - "community_served_city": "KITTANNING", - "community_served_state": "PA", - "network_affiliation": "TIMELESS TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KKDJ-CD", - "community_served_city": "VISALIA", - "community_served_state": "CA", - "network_affiliation": "Family TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWKH-CD", - "community_served_city": "UNIONTOWN", - "community_served_state": "PA", - "network_affiliation": "MAGNIFICENT MOVIES NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBMM", - "community_served_city": "TUSKEGEE", - "community_served_state": "AL", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXMI", - "community_served_city": "GRAND RAPIDS", - "community_served_state": "MI", - "network_affiliation": "FOX; Antenna TV; Bounce TV; ION PLUS; GetTV; QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLMT", - "community_served_city": "MEMPHIS", - "community_served_state": "TN", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJKT", - "community_served_city": "JACKSON", - "community_served_state": "TN", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRHD-CD", - "community_served_city": "BRYAN", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLTV", - "community_served_city": "TYLER", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTRE", - "community_served_city": "LUFKIN", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLBT", - "community_served_city": "JACKSON", - "community_served_state": "MS", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMLW-TV", - "community_served_city": "RACINE", - "community_served_state": "WI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWRS-TV", - "community_served_city": "MAYVILLE", - "community_served_state": "WI", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOHL-CD", - "community_served_city": "LIMA", - "community_served_state": "OH", - "network_affiliation": "ABC, CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVT", - "community_served_city": "TAMPA", - "community_served_state": "FL", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVD", - "community_served_city": "DENVER", - "community_served_state": "CO", - "network_affiliation": "My Network TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTCA-TV", - "community_served_city": "ST. PAUL", - "community_served_state": "MN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTCI-TV", - "community_served_city": "ST. PAUL", - "community_served_state": "MN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K17GD-D", - "community_served_city": "PASO ROBLES", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPXC-TV", - "community_served_city": "DENVER", - "community_served_state": "CO", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCWY-DT", - "community_served_city": "CASPER", - "community_served_state": "WY", - "network_affiliation": "NBC, CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUHM-TV", - "community_served_city": "HELENA", - "community_served_state": "MT", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTFN", - "community_served_city": "EL PASO", - "community_served_state": "TX", - "network_affiliation": "Unimas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPXD-TV", - "community_served_city": "ARLINGTON", - "community_served_state": "TX", - "network_affiliation": "ION, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN2, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWNY-TV", - "community_served_city": "CARTHAGE", - "community_served_state": "NY", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEYC-TV", - "community_served_city": "MANKATO", - "community_served_state": "MN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMSP-TV", - "community_served_city": "MINNEAPOLIS", - "community_served_state": "MN", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUTP", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "MNT", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTVX", - "community_served_city": "SALT LAKE CITY", - "community_served_state": "UT", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WILL-TV", - "community_served_city": "URBANA", - "community_served_state": "IL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNC-TV", - "community_served_city": "CHAPEL HILL", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNE-TV", - "community_served_city": "LINVILLE", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNG-TV", - "community_served_city": "CONCORD", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNK-TV", - "community_served_city": "GREENVILLE", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTSC", - "community_served_city": "PUEBLO", - "community_served_state": "CO", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WENH-TV", - "community_served_city": "DURHAM", - "community_served_state": "NH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUHT", - "community_served_city": "HOUSTON", - "community_served_state": "TX", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEKW-TV", - "community_served_city": "KEENE", - "community_served_state": "NH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWCMZ-TV", - "community_served_city": "FLINT", - "community_served_state": "MI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUND-TV", - "community_served_city": "EDENTON", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNF-TV", - "community_served_city": "ASHEVILLE", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUAC-TV", - "community_served_city": "FAIRBANKS", - "community_served_state": "AK", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLED-TV", - "community_served_city": "LITTLETON", - "community_served_state": "NH", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNJ-TV", - "community_served_city": "WILMINGTON", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEDQ", - "community_served_city": "TAMPA", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNL-TV", - "community_served_city": "WINSTON-SALEM", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUED", - "community_served_city": "SALT LAKE CITY", - "community_served_state": "UT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNP-TV", - "community_served_city": "ROANOKE RAPIDS", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNU", - "community_served_city": "LUMBERTON", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUFT", - "community_served_city": "GAINESVILLE", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNM-TV", - "community_served_city": "JACKSONVILLE", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSCG", - "community_served_city": "BAXLEY", - "community_served_state": "GA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCTE", - "community_served_city": "COOKEVILLE", - "community_served_state": "TN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KZJL", - "community_served_city": "HOUSTON", - "community_served_state": "TX", - "network_affiliation": "EstrellaTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFDC-DT", - "community_served_city": "ARLINGTON", - "community_served_state": "VA", - "network_affiliation": "UNIVISION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCCU", - "community_served_city": "URBANA", - "community_served_state": "IL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KZJO", - "community_served_city": "SEATTLE", - "community_served_state": "WA", - "network_affiliation": "My Network TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUEN", - "community_served_city": "OGDEN", - "community_served_state": "UT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOAI-TV", - "community_served_city": "SAN ANTONIO", - "community_served_state": "TX", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPYX", - "community_served_city": "SAN FRANCISCO", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KHSV", - "community_served_city": "LAS VEGAS", - "community_served_state": "NV", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNVO", - "community_served_city": "MCALLEN", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUTF", - "community_served_city": "LOGAN", - "community_served_state": "UT", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVPT", - "community_served_city": "FRESNO", - "community_served_state": "CA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBBV-CD", - "community_served_city": "BAKERSFIELD", - "community_served_state": "CA", - "network_affiliation": "TELEXITOS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVER-CD", - "community_served_city": "INDIO", - "community_served_state": "CA", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPKD-TV", - "community_served_city": "JEANNETTE", - "community_served_state": "PA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVTB", - "community_served_city": "ST. JOHNSBURY", - "community_served_state": "VT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DDWVTA", - "community_served_city": "WINDSOR", - "community_served_state": "VT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WETK", - "community_served_city": "BURLINGTON", - "community_served_state": "VT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVER", - "community_served_city": "RUTLAND", - "community_served_state": "VT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVLA-TV", - "community_served_city": "BATON ROUGE", - "community_served_state": "LA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMOV", - "community_served_city": "ST. LOUIS", - "community_served_state": "MO", - "network_affiliation": "D1-CBS, D2- MyNet, D-2 First Alert Weather Now , D3- COZI TV, D4- ION MYSTERY", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHEC-TV", - "community_served_city": "ROCHESTER", - "community_served_state": "NY", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSNS-TV", - "community_served_city": "CHICAGO", - "community_served_state": "IL", - "network_affiliation": "TELEMUNDO", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBDT", - "community_served_city": "SPRINGFIELD", - "community_served_state": "OH", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYCW", - "community_served_city": "ASHEVILLE", - "community_served_state": "NC", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTHR", - "community_served_city": "INDIANAPOLIS", - "community_served_state": "IN", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRIW-CD", - "community_served_city": "PROVIDENCE", - "community_served_state": "RI", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXR-TV", - "community_served_city": "ROANOKE", - "community_served_state": "VA", - "network_affiliation": "ION, Court TV, Laff, Mystery, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTJX-TV", - "community_served_city": "CHARLOTTE AMALIE", - "community_served_state": "VI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVIR-TV", - "community_served_city": "CHARLOTTESVILLE", - "community_served_state": "VA", - "network_affiliation": "NBC, CW, TRUE CRIME", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSLA", - "community_served_city": "SHREVEPORT", - "community_served_state": "LA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVPX-TV", - "community_served_city": "AKRON", - "community_served_state": "OH", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUBE-TV", - "community_served_city": "BAYTOWN", - "community_served_state": "TX", - "network_affiliation": "Shop LC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WZME", - "community_served_city": "BRIDGEPORT", - "community_served_state": "CT", - "network_affiliation": "Story Television", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSEC", - "community_served_city": "JACKSONVILLE", - "community_served_state": "IL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMEC", - "community_served_city": "MACOMB", - "community_served_state": "IL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KREG-TV", - "community_served_city": "GLENWOOD SPRINGS", - "community_served_state": "CO", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KREY-TV", - "community_served_city": "MONTROSE", - "community_served_state": "CO", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDTV", - "community_served_city": "WESTON", - "community_served_state": "WV", - "network_affiliation": "CBS,CW, H&I", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KREX-TV", - "community_served_city": "GRAND JUNCTION", - "community_served_state": "CO", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFTX-TV", - "community_served_city": "CAPE CORAL", - "community_served_state": "FL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOGX", - "community_served_city": "OCALA", - "community_served_state": "FL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTHI-TV", - "community_served_city": "TERRE HAUTE", - "community_served_state": "IN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAGA-TV", - "community_served_city": "ATLANTA", - "community_served_state": "GA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWAGT", - "community_served_city": "AUGUSTA", - "community_served_state": "GA", - "network_affiliation": "NBC/CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WALB", - "community_served_city": "ALBANY", - "community_served_state": "GA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFXL", - "community_served_city": "ALBANY", - "community_served_state": "GA", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAND", - "community_served_city": "DECATUR", - "community_served_state": "IL", - "network_affiliation": "NBC, COZI TV, DEFY TV, ION PLUS, ION TV, AND MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFXK-TV", - "community_served_city": "LONGVIEW", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTWU", - "community_served_city": "TOPEKA", - "community_served_state": "KS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTNW", - "community_served_city": "RICHLAND", - "community_served_state": "WA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWSU-TV", - "community_served_city": "PULLMAN", - "community_served_state": "WA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WATE-TV", - "community_served_city": "KNOXVILLE", - "community_served_state": "TN", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBBH-TV", - "community_served_city": "FORT MYERS", - "community_served_state": "FL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNGT-CD", - "community_served_city": "RALEIGH", - "community_served_state": "NC", - "network_affiliation": "Catchy Comedy", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WAVY-TV", - "community_served_city": "PORTSMOUTH", - "community_served_state": "VA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBNS-TV", - "community_served_city": "COLUMBUS", - "community_served_state": "OH", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBOC-TV", - "community_served_city": "SALISBURY", - "community_served_state": "MD", - "network_affiliation": "CBS/FOX/Antenna TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBOY-TV", - "community_served_city": "CLARKSBURG", - "community_served_state": "WV", - "network_affiliation": "NBC, ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBRC", - "community_served_city": "BIRMINGHAM", - "community_served_state": "AL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBRE-TV", - "community_served_city": "WILKES-BARRE", - "community_served_state": "PA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXC-TV", - "community_served_city": "BRUNSWICK", - "community_served_state": "GA", - "network_affiliation": "ION, Court TV, Mystery, Grit, Laff, SCRIPPS News, Jewelry TV, QVC, QVC2", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWCGV-TV", - "community_served_city": "MILWAUKEE", - "community_served_state": "WI", - "network_affiliation": "MYTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCHS-TV", - "community_served_city": "CHARLESTON", - "community_served_state": "WV", - "network_affiliation": "WCHS D1 - ABC; WCHS D2 -FOX: WCHS D3 - Antenna TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKMG-TV", - "community_served_city": "ORLANDO", - "community_served_state": "FL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCSC-TV", - "community_served_city": "CHARLESTON", - "community_served_state": "SC", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDBB", - "community_served_city": "BESSEMER", - "community_served_state": "AL", - "network_affiliation": "The CW Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDBD", - "community_served_city": "JACKSON", - "community_served_state": "MS", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDBJ", - "community_served_city": "ROANOKE", - "community_served_state": "VA", - "network_affiliation": "CBS, H&I, True Crime Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WIRT-DT", - "community_served_city": "HIBBING", - "community_served_state": "MN", - "network_affiliation": "DT.1 ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDIO-DT", - "community_served_city": "DULUTH", - "community_served_state": "MN", - "network_affiliation": "DT.1 ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDSI-TV", - "community_served_city": "CHATTANOOGA", - "community_served_state": "TN", - "network_affiliation": "TRUECRIME TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDSU", - "community_served_city": "NEW ORLEANS", - "community_served_state": "LA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEAR-TV", - "community_served_city": "PENSACOLA", - "community_served_state": "FL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDJT-TV", - "community_served_city": "MILWAUKEE", - "community_served_state": "WI", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCIU-TV", - "community_served_city": "CHICAGO", - "community_served_state": "IL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WENY-TV", - "community_served_city": "ELMIRA", - "community_served_state": "NY", - "network_affiliation": "ABC (Main), CBS (Multicast)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWCM-TV", - "community_served_city": "APPLETON", - "community_served_state": "MN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSMN", - "community_served_city": "WORTHINGTON", - "community_served_state": "MN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQEC", - "community_served_city": "QUINCY", - "community_served_state": "IL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRXY-TV", - "community_served_city": "TICE", - "community_served_state": "FL", - "network_affiliation": "Network Affiliation CTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCNS", - "community_served_city": "SAN FRANCISCO", - "community_served_state": "CA", - "network_affiliation": "Shop LC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLJT", - "community_served_city": "LEXINGTON", - "community_served_state": "TN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVPB-TV", - "community_served_city": "HUNTINGTON", - "community_served_state": "WV", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNPB-TV", - "community_served_city": "MORGANTOWN", - "community_served_state": "WV", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSWP-TV", - "community_served_city": "GRANDVIEW", - "community_served_state": "WV", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOLE-DT", - "community_served_city": "AGUADILLA", - "community_served_state": "PR", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKYU-TV", - "community_served_city": "BOWLING GREEN", - "community_served_state": "KY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WZPX-TV", - "community_served_city": "BATTLE CREEK", - "community_served_state": "MI", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNLO", - "community_served_city": "BUFFALO", - "community_served_state": "NY", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNED-TV", - "community_served_city": "BUFFALO", - "community_served_state": "NY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEVV-TV", - "community_served_city": "EVANSVILLE", - "community_served_state": "IN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEYI-TV", - "community_served_city": "SAGINAW", - "community_served_state": "MI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSBS-TV", - "community_served_city": "KEY WEST", - "community_served_state": "FL", - "network_affiliation": "MegaTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFAA", - "community_served_city": "DALLAS", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFLI-TV", - "community_served_city": "CLEVELAND", - "community_served_state": "TN", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFMJ-TV", - "community_served_city": "YOUNGSTOWN", - "community_served_state": "OH", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFMY-TV", - "community_served_city": "GREENSBORO", - "community_served_state": "NC", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFTV", - "community_served_city": "ORLANDO", - "community_served_state": "FL", - "network_affiliation": "ABC, Laff, Ion Mystery", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGBY-TV", - "community_served_city": "SPRINGFIELD", - "community_served_state": "MA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGBX-TV", - "community_served_city": "BOSTON", - "community_served_state": "MA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGBH-TV", - "community_served_city": "BOSTON", - "community_served_state": "MA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGHP", - "community_served_city": "HIGH POINT", - "community_served_state": "NC", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGN-TV", - "community_served_city": "CHICAGO", - "community_served_state": "IL", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WGNO", - "community_served_city": "NEW ORLEANS", - "community_served_state": "LA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WANF", - "community_served_city": "ATLANTA", - "community_served_state": "GA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWJ-TV", - "community_served_city": "DETROIT", - "community_served_state": "MI", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHDH", - "community_served_city": "BOSTON", - "community_served_state": "MA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHNS", - "community_served_city": "GREENVILLE", - "community_served_state": "SC", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNCF", - "community_served_city": "MONTGOMERY", - "community_served_state": "AL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHP-TV", - "community_served_city": "HARRISBURG", - "community_served_state": "PA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHTM-TV", - "community_served_city": "HARRISBURG", - "community_served_state": "PA", - "network_affiliation": "ABC Television Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDPB", - "community_served_city": "SEAFORD", - "community_served_state": "DE", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHYY-TV", - "community_served_city": "WILMINGTON", - "community_served_state": "DE", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVCY-TV", - "community_served_city": "MILWAUKEE", - "community_served_state": "WI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSCW-DT", - "community_served_city": "WICHITA", - "community_served_state": "KS", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSNW", - "community_served_city": "WICHITA", - "community_served_state": "KS", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSNC", - "community_served_city": "GREAT BEND", - "community_served_state": "KS", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSNG", - "community_served_city": "GARDEN CITY", - "community_served_state": "KS", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSNK", - "community_served_city": "MCCOOK", - "community_served_state": "NE", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAZT-CD", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSFX-TV", - "community_served_city": "WILMINGTON", - "community_served_state": "NC", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVO", - "community_served_city": "ROCKFORD", - "community_served_state": "IL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBNX-TV", - "community_served_city": "AKRON", - "community_served_state": "OH", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBXX-TV", - "community_served_city": "CROSSVILLE", - "community_served_state": "TN", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHRM-TV", - "community_served_city": "WAUSAU", - "community_served_state": "WI", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCWF", - "community_served_city": "SURING", - "community_served_state": "WI", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WITF-TV", - "community_served_city": "HARRISBURG", - "community_served_state": "PA", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KAVU-TV", - "community_served_city": "VICTORIA", - "community_served_state": "TX", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WITI", - "community_served_city": "MILWAUKEE", - "community_served_state": "WI", - "network_affiliation": "Fox", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSYR-TV", - "community_served_city": "SYRACUSE", - "community_served_state": "NY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJAC-TV", - "community_served_city": "JOHNSTOWN", - "community_served_state": "PA", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJBK", - "community_served_city": "DETROIT", - "community_served_state": "MI", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJCT", - "community_served_city": "JACKSONVILLE", - "community_served_state": "FL", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJHG-TV", - "community_served_city": "PANAMA CITY", - "community_served_state": "FL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJW", - "community_served_city": "CLEVELAND", - "community_served_state": "OH", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJZY", - "community_served_city": "BELMONT", - "community_served_state": "NC", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKBN-TV", - "community_served_city": "YOUNGSTOWN", - "community_served_state": "OH", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKEF", - "community_served_city": "DAYTON", - "community_served_state": "OH", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKRG-TV", - "community_served_city": "MOBILE", - "community_served_state": "AL", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKRN-TV", - "community_served_city": "NASHVILLE", - "community_served_state": "TN", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLPX-TV", - "community_served_city": "CHARLESTON", - "community_served_state": "WV", - "network_affiliation": "ION,Court TV, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKYC", - "community_served_city": "CLEVELAND", - "community_served_state": "OH", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLEX-TV", - "community_served_city": "LEXINGTON", - "community_served_state": "KY", - "network_affiliation": "NBC; Grit; Bounce; Court TV; QVC2", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLFI-TV", - "community_served_city": "LAFAYETTE", - "community_served_state": "IN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLFL", - "community_served_city": "RALEIGH", - "community_served_state": "NC", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLNY-TV", - "community_served_city": "RIVERHEAD", - "community_served_state": "NY", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLS-TV", - "community_served_city": "CHICAGO", - "community_served_state": "IL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLTV-DT", - "community_served_city": "MIAMI", - "community_served_state": "FL", - "network_affiliation": "UNIVISION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLVI", - "community_served_city": "CAMBRIDGE", - "community_served_state": "MA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMDN", - "community_served_city": "MERIDIAN", - "community_served_state": "MS", - "network_affiliation": "CBS, Bounce, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMHT", - "community_served_city": "SCHENECTADY", - "community_served_state": "NY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCWN", - "community_served_city": "SCHENECTADY", - "community_served_state": "NY", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMTW", - "community_served_city": "POLAND SPRING", - "community_served_state": "ME", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMUR-TV", - "community_served_city": "MANCHESTER", - "community_served_state": "NH", - "network_affiliation": "ABC, MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNAB", - "community_served_city": "NASHVILLE", - "community_served_state": "TN", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNAC-TV", - "community_served_city": "PROVIDENCE", - "community_served_state": "RI", - "network_affiliation": "FOX, CW, Antenna TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXH-TV", - "community_served_city": "HOOVER", - "community_served_state": "AL", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNEP-TV", - "community_served_city": "SCRANTON", - "community_served_state": "PA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WQAD-TV", - "community_served_city": "MOLINE", - "community_served_state": "IL", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNJU", - "community_served_city": "LINDEN", - "community_served_state": "NJ", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNJX-TV", - "community_served_city": "MAYAGUEZ", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNNE", - "community_served_city": "MONTPELIER", - "community_served_state": "VT", - "network_affiliation": "CW NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNWO-TV", - "community_served_city": "TOLEDO", - "community_served_state": "OH", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXN-TV", - "community_served_city": "NEW YORK", - "community_served_state": "NY", - "network_affiliation": "ION, Bounce, Grit, Laff, IONPlus, Court TV, Jewelry TV, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNYT", - "community_served_city": "ALBANY", - "community_served_state": "NY", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHAM-TV", - "community_served_city": "ROCHESTER", - "community_served_state": "NY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSWB", - "community_served_city": "SCRANTON", - "community_served_state": "PA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WOLF-TV", - "community_served_city": "HAZLETON", - "community_served_state": "PA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCOV-TV", - "community_served_city": "MONTGOMERY", - "community_served_state": "AL", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBNA", - "community_served_city": "LOUISVILLE", - "community_served_state": "KY", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFAA-TV", - "community_served_city": "DECATUR", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSHV-TV", - "community_served_city": "SHREVEPORT", - "community_served_state": "LA", - "network_affiliation": "MNT", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPDF-CD", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "VISION LATINA", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPGH-TV", - "community_served_city": "PITTSBURGH", - "community_served_state": "PA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPHL-TV", - "community_served_city": "PHILADELPHIA", - "community_served_state": "PA", - "network_affiliation": "The CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPIX", - "community_served_city": "NEW YORK", - "community_served_state": "NY", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WORO-DT", - "community_served_city": "FAJARDO", - "community_served_state": "PR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPTA", - "community_served_city": "FORT WAYNE", - "community_served_state": "IN", - "network_affiliation": "ABC, NBC, MyTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPNT", - "community_served_city": "PITTSBURGH", - "community_served_state": "PA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXI", - "community_served_city": "PITTSBURGH", - "community_served_state": "PA", - "network_affiliation": "NBC, Me-TV, Laff-TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRDW-TV", - "community_served_city": "AUGUSTA", - "community_served_state": "GA", - "network_affiliation": "CBS, MyNet, True Crime Network, Cozi", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WREX", - "community_served_city": "ROCKFORD", - "community_served_state": "IL", - "network_affiliation": "NBC(13.1), MeTV Toons(13.2 as of 08/07/2024), MeTV(13.3), CourtTV(13.4), True Crime Network(13.5), CBS(23.10)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRGB", - "community_served_city": "SCHENECTADY", - "community_served_state": "NY", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WROC-TV", - "community_served_city": "ROCHESTER", - "community_served_state": "NY", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSBK-TV", - "community_served_city": "BOSTON", - "community_served_state": "MA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSBT-TV", - "community_served_city": "SOUTH BEND", - "community_served_state": "IN", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSET-TV", - "community_served_city": "LYNCHBURG", - "community_served_state": "VA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPOB-TV", - "community_served_city": "POPLAR BLUFF", - "community_served_state": "MO", - "network_affiliation": "ABC, Heroes & Icons, True Crime, Court, ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSIL-TV", - "community_served_city": "HARRISBURG", - "community_served_state": "IL", - "network_affiliation": "ABC, Heroes & Icons, True Crime, Court, ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSJV", - "community_served_city": "ELKHART", - "community_served_state": "IN", - "network_affiliation": "Heroes & Icons, True Crime, Quest, Dabl", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSKG-TV", - "community_served_city": "BINGHAMTON", - "community_served_state": "NY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSOC-TV", - "community_served_city": "CHARLOTTE", - "community_served_state": "NC", - "network_affiliation": "ABC (9.1), Telemundo (9.2), GetTV (9.3). Comet (9.4)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPXW-TV", - "community_served_city": "MANASSAS", - "community_served_state": "VA", - "network_affiliation": "ION, Bounce, Court TV, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSYM-TV", - "community_served_city": "LANSING", - "community_served_state": "MI", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTMJ-TV", - "community_served_city": "MILWAUKEE", - "community_served_state": "WI", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTNV-TV", - "community_served_city": "LAS VEGAS", - "community_served_state": "NV", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTNH", - "community_served_city": "NEW HAVEN", - "community_served_state": "CT", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTOG", - "community_served_city": "ST. PETERSBURG", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTOV-TV", - "community_served_city": "STEUBENVILLE", - "community_served_state": "OH", - "network_affiliation": "WTOV D1 - NBC; WTOV D2 - FOX; WTOV D3 - Comet", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTTE", - "community_served_city": "COLUMBUS", - "community_served_state": "OH", - "network_affiliation": "TBD", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTTO", - "community_served_city": "HOMEWOOD", - "community_served_state": "AL", - "network_affiliation": "The CW Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVA", - "community_served_city": "TUPELO", - "community_served_state": "MS", - "network_affiliation": "NBC, ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVG", - "community_served_city": "TOLEDO", - "community_served_state": "OH", - "network_affiliation": "abc", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTVH", - "community_served_city": "SYRACUSE", - "community_served_state": "NY", - "network_affiliation": "CBS, Charge, TBD", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRNN-TV", - "community_served_city": "NEW ROCHELLE", - "community_served_state": "NY", - "network_affiliation": "Shop LC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVEC", - "community_served_city": "HAMPTON", - "community_served_state": "VA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVNS-TV", - "community_served_city": "LEWISBURG", - "community_served_state": "WV", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVIT", - "community_served_city": "NEW BRITAIN", - "community_served_state": "CT", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVTM-TV", - "community_served_city": "BIRMINGHAM", - "community_served_state": "AL", - "network_affiliation": "NBC/MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVTV", - "community_served_city": "MILWAUKEE", - "community_served_state": "WI", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVVA", - "community_served_city": "BLUEFIELD", - "community_served_state": "WV", - "network_affiliation": "NBC CW METV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWL-TV", - "community_served_city": "NEW ORLEANS", - "community_served_state": "LA", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWMT", - "community_served_city": "KALAMAZOO", - "community_served_state": "MI", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWOR-TV", - "community_served_city": "SECAUCUS", - "community_served_state": "NJ", - "network_affiliation": "MyNetworkTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMYD", - "community_served_city": "DETROIT", - "community_served_state": "MI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WXTV-DT", - "community_served_city": "PATERSON", - "community_served_state": "NJ", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFNB", - "community_served_city": "CASPER", - "community_served_state": "WY", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRIC-TV", - "community_served_city": "PETERSBURG", - "community_served_state": "VA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBAY-TV", - "community_served_city": "GREEN BAY", - "community_served_state": "WI", - "network_affiliation": "ABC, Catchy Comedy", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWCDC-TV", - "community_served_city": "ADAMS", - "community_served_state": "MA", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLNS-TV", - "community_served_city": "LANSING", - "community_served_state": "MI", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTEN", - "community_served_city": "ALBANY", - "community_served_state": "NY", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKBT-DT", - "community_served_city": "LA CROSSE", - "community_served_state": "WI", - "network_affiliation": "CBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKSWT", - "community_served_city": "YUMA", - "community_served_state": "AZ", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPHY-CD", - "community_served_city": "TRENTON", - "community_served_state": "NJ", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DDWAZE-TV", - "community_served_city": "MADISONVILLE", - "community_served_state": "KY", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBKP", - "community_served_city": "CALUMET", - "community_served_state": "MI", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWBQ", - "community_served_city": "SANTA FE", - "community_served_state": "NM", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSKY-TV", - "community_served_city": "MANTEO", - "community_served_state": "NC", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMTW", - "community_served_city": "HUTCHINSON", - "community_served_state": "KS", - "network_affiliation": "Dabl & TBD", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPTH", - "community_served_city": "SIOUX CITY", - "community_served_state": "IA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPCB-DT", - "community_served_city": "SNYDER", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTUZ-TV", - "community_served_city": "SHAWNEE", - "community_served_state": "OK", - "network_affiliation": "TELEMUNDO", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPXO-TV", - "community_served_city": "KANEOHE", - "community_served_state": "HI", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVUA", - "community_served_city": "TUSCALOOSA", - "community_served_state": "AL", - "network_affiliation": "COZI TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPNZ", - "community_served_city": "OGDEN", - "community_served_state": "UT", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYCI", - "community_served_city": "SARANAC LAKE", - "community_served_state": "NY", - "network_affiliation": "MYNET", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLCW-TV", - "community_served_city": "WOLFFORTH", - "community_served_state": "TX", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WYOW", - "community_served_city": "EAGLE RIVER", - "community_served_state": "WI", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUVE-CD", - "community_served_city": "TUCSON", - "community_served_state": "AZ", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWBM", - "community_served_city": "HARRISON", - "community_served_state": "AR", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQCW-DT", - "community_served_city": "MUSKOGEE", - "community_served_state": "OK", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSKA", - "community_served_city": "CORNING", - "community_served_state": "NY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVUI", - "community_served_city": "POCATELLO", - "community_served_state": "ID", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDMI", - "community_served_city": "DES MOINES", - "community_served_state": "IA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQUP", - "community_served_city": "PULLMAN", - "community_served_state": "WA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDCK", - "community_served_city": "DODGE CITY", - "community_served_state": "KS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFTU-DT", - "community_served_city": "DOUGLAS", - "community_served_state": "AZ", - "network_affiliation": "Unimas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPTF-DT", - "community_served_city": "FARWELL", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUNP", - "community_served_city": "LA GRANDE", - "community_served_state": "OR", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WZMQ", - "community_served_city": "MARQUETTE", - "community_served_state": "MI", - "network_affiliation": "MeTV (Main), CBS (Multicast)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUTH-DT", - "community_served_city": "PROVO", - "community_served_state": "UT", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTAZ", - "community_served_city": "PHOENIX", - "community_served_state": "AZ", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNBN", - "community_served_city": "RAPID CITY", - "community_served_state": "SD", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMOW", - "community_served_city": "CRANDON", - "community_served_state": "WI", - "network_affiliation": "ABC 4.1, Catchy Comedy 4.2, MeTV Toons 4.3, CourtTV 4.4, and True Crime 4.5", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPXJ", - "community_served_city": "MINDEN", - "community_served_state": "LA", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WEPX-TV", - "community_served_city": "GREENVILLE", - "community_served_state": "NC", - "network_affiliation": "ION, Court TV, Grit, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFPX-TV", - "community_served_city": "NEWTON", - "community_served_state": "IA", - "network_affiliation": "ION, Court TV, Laff, Mystery, IONPlus, SCRIPPS News, Jewelry TV, HSN, HSN2", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KXNW", - "community_served_city": "EUREKA SPRINGS", - "community_served_state": "AR", - "network_affiliation": "My Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBIF", - "community_served_city": "MARIANNA", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKWWF", - "community_served_city": "WATERLOO", - "community_served_state": "IA", - "network_affiliation": "RTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFBD", - "community_served_city": "DESTIN", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTWV", - "community_served_city": "MEMPHIS", - "community_served_state": "TN", - "network_affiliation": "REL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGPX-TV", - "community_served_city": "SPOKANE", - "community_served_state": "WA", - "network_affiliation": "ION", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WVLR", - "community_served_city": "TAZEWELL", - "community_served_state": "TN", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMWC-TV", - "community_served_city": "GALESBURG", - "community_served_state": "IL", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KLWB", - "community_served_city": "NEW IBERIA", - "community_served_state": "LA", - "network_affiliation": "MeTV Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTPC-TV", - "community_served_city": "VIRGINIA BEACH", - "community_served_state": "VA", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPTW", - "community_served_city": "CASPER", - "community_served_state": "WY", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUES", - "community_served_city": "RICHFIELD", - "community_served_state": "UT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUEW", - "community_served_city": "ST. GEORGE", - "community_served_state": "UT", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNDB", - "community_served_city": "BISMARCK", - "community_served_state": "ND", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRTN-TV", - "community_served_city": "DURANGO", - "community_served_state": "CO", - "network_affiliation": "TBD", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNDM", - "community_served_city": "MINOT", - "community_served_state": "ND", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKEFB", - "community_served_city": "AMES", - "community_served_state": "IA", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBSF", - "community_served_city": "BAY CITY", - "community_served_state": "MI", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRII", - "community_served_city": "CHISHOLM", - "community_served_state": "MN", - "network_affiliation": "NBC, CBS, My9, H&I", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTLF", - "community_served_city": "TALLAHASSEE", - "community_served_state": "FL", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSCC", - "community_served_city": "CORPUS CHRISTI", - "community_served_state": "TX", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KKAI", - "community_served_city": "KAILUA", - "community_served_state": "HI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOCW", - "community_served_city": "HOISINGTON", - "community_served_state": "KS", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WZVI", - "community_served_city": "CHARLOTTE AMALIE", - "community_served_state": "VI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WCVI-TV", - "community_served_city": "CHRISTIANSTED", - "community_served_state": "VI", - "network_affiliation": "CBS (Main), ABC (Multicast)", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KBLN-TV", - "community_served_city": "GRANTS PASS", - "community_served_state": "OR", - "network_affiliation": "3ABN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWKDH", - "community_served_city": "HOUSTON", - "community_served_state": "MS", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDTP", - "community_served_city": "HOLBROOK", - "community_served_state": "AZ", - "network_affiliation": "IND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KTEL-TV", - "community_served_city": "CARLSBAD", - "community_served_state": "NM", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFTC", - "community_served_city": "BEMIDJI", - "community_served_state": "MN", - "network_affiliation": "MNT", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KEYU", - "community_served_city": "BORGER", - "community_served_state": "TX", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WDPM-DT", - "community_served_city": "MOBILE", - "community_served_state": "AL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WUNW", - "community_served_city": "CANTON", - "community_served_state": "NC", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVME-TV", - "community_served_city": "BISHOP", - "community_served_state": "CA", - "network_affiliation": "JTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCEB", - "community_served_city": "LONGVIEW", - "community_served_state": "TX", - "network_affiliation": "CRTV NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WHDT", - "community_served_city": "STUART", - "community_served_state": "FL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WKNX-TV", - "community_served_city": "KNOXVILLE", - "community_served_state": "TN", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WFNA", - "community_served_city": "GULF SHORES", - "community_served_state": "AL", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KGLA-DT", - "community_served_city": "HAMMOND", - "community_served_state": "LA", - "network_affiliation": "Telemundo", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNBW-DT", - "community_served_city": "GAINESVILLE", - "community_served_state": "FL", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMBF-TV", - "community_served_city": "MYRTLE BEACH", - "community_served_state": "SC", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFJX", - "community_served_city": "PITTSBURG", - "community_served_state": "KS", - "network_affiliation": "FOX, CW, START TV, DABL", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPFO", - "community_served_city": "WATERVILLE", - "community_served_state": "ME", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRWB-TV", - "community_served_city": "ROSWELL", - "community_served_state": "NM", - "network_affiliation": "CW", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKEJB", - "community_served_city": "EL DORADO", - "community_served_state": "AR", - "network_affiliation": "MY NETWORK TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNMD-TV", - "community_served_city": "SANTA FE", - "community_served_state": "NM", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRMU", - "community_served_city": "DURANGO", - "community_served_state": "CO", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOCM", - "community_served_city": "NORMAN", - "community_served_state": "OK", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WLOO", - "community_served_city": "VICKSBURG", - "community_served_state": "MS", - "network_affiliation": "MY Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKCBU", - "community_served_city": "PRICE", - "community_served_state": "UT", - "network_affiliation": "DAYSTAR", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWVIF", - "community_served_city": "CHRISTIANSTED", - "community_served_state": "VI", - "network_affiliation": "IND", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWWT", - "community_served_city": "ODESSA", - "community_served_state": "TX", - "network_affiliation": "MY NETWORK TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KFXL-TV", - "community_served_city": "LINCOLN", - "community_served_state": "NE", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WBIH", - "community_served_city": "SELMA", - "community_served_state": "AL", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKOBG-TV", - "community_served_city": "SILVER CITY", - "community_served_state": "NM", - "network_affiliation": "NBC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DWFXS-DT", - "community_served_city": "WITTENBERG", - "community_served_state": "WI", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPIF", - "community_served_city": "POCATELLO", - "community_served_state": "ID", - "network_affiliation": "Grit", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKCPM", - "community_served_city": "GRAND FORKS", - "community_served_state": "ND", - "network_affiliation": "MYTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUPB", - "community_served_city": "MIDLAND", - "community_served_state": "TX", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WTPX-TV", - "community_served_city": "ANTIGO", - "community_served_state": "WI", - "network_affiliation": "ION, Grit, Mystery, Laff, Bounce, SCRIPPS News, Jewelry TV, HSN, QVC2", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUOK", - "community_served_city": "WOODWARD", - "community_served_state": "OK", - "network_affiliation": "UNIVISION/UNIMAS/", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMYA-DT", - "community_served_city": "CAMDEN", - "community_served_state": "AR", - "network_affiliation": "ME-TV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WJLP", - "community_served_city": "MIDDLETOWN TOWNSHIP", - "community_served_state": "NJ", - "network_affiliation": "MeTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KUPU", - "community_served_city": "WAIMANALO", - "community_served_state": "HI", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KETZ", - "community_served_city": "EL DORADO", - "community_served_state": "AR", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNIC-DT", - "community_served_city": "BLANCO", - "community_served_state": "TX", - "network_affiliation": "Unimas", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCGE", - "community_served_city": "CROOKSTON", - "community_served_state": "MN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "DKTUW", - "community_served_city": "SCOTTSBLUFF", - "community_served_state": "NE", - "network_affiliation": "RTN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRBJ-TV", - "community_served_city": "MAGEE", - "community_served_state": "MS", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WZRB", - "community_served_city": "COLUMBIA", - "community_served_state": "SC", - "network_affiliation": "ION, Court TV, Mystery, Grit, IONPlus, SCRIPPS News, Jewelry TV, QVC2, HSN2", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WNYA", - "community_served_city": "PITTSFIELD", - "community_served_state": "MA", - "network_affiliation": "My Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WRPT", - "community_served_city": "HIBBING", - "community_served_state": "MN", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMDE", - "community_served_city": "DEVILS LAKE", - "community_served_state": "ND", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KWKS", - "community_served_city": "COLBY", - "community_served_state": "KS", - "network_affiliation": "PBS", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KRBK", - "community_served_city": "OSAGE BEACH", - "community_served_state": "MO", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KVSN-DT", - "community_served_city": "PUEBLO", - "community_served_state": "CO", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KDCU-DT", - "community_served_city": "DERBY", - "community_served_state": "KS", - "network_affiliation": "Univision", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPJR-TV", - "community_served_city": "GREELEY", - "community_served_state": "CO", - "network_affiliation": "TBN", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KCWV", - "community_served_city": "DULUTH", - "community_served_state": "MN", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WWJX", - "community_served_city": "JACKSON", - "community_served_state": "MS", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KOHD", - "community_served_city": "BEND", - "community_served_state": "OR", - "network_affiliation": "ABC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSQA", - "community_served_city": "TOPEKA", - "community_served_state": "KS", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KNLA-CD", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPSJ-CD", - "community_served_city": "HAMMONTON", - "community_served_state": "NJ", - "network_affiliation": "LATV NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMMD-CD", - "community_served_city": "SALINAS", - "community_served_state": "CA", - "network_affiliation": "CourtTV, Grit, LAFF, Mistery", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KQMM-CD", - "community_served_city": "SANTA MARIA", - "community_served_state": "CA", - "network_affiliation": "CRTV NETWORK", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KJTV-CD", - "community_served_city": "WOLFFORTH", - "community_served_state": "TX", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WPVN-CD", - "community_served_city": "CHICAGO", - "community_served_state": "IL", - "network_affiliation": "VISION LATINA", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KMPH-CD", - "community_served_city": "MERCED-MARIPOSA", - "community_served_state": "CA", - "network_affiliation": "FOX", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K04QP-D", - "community_served_city": "CASAS ADOBES", - "community_served_state": "AZ", - "network_affiliation": "NBC, COZI", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPLE-CD", - "community_served_city": "KILLEEN", - "community_served_state": "TX", - "network_affiliation": "TCT Network", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "K24HH-D", - "community_served_city": "WICHITA FALLS", - "community_served_state": "TX", - "network_affiliation": "NRB", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSBS-CD", - "community_served_city": "DENVER", - "community_served_state": "CO", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WMDE", - "community_served_city": "DOVER", - "community_served_state": "DE", - "network_affiliation": "Shop LC", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WACP", - "community_served_city": "ATLANTIC CITY", - "community_served_state": "NJ", - "network_affiliation": "Independent", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KSFV-CD", - "community_served_city": "LOS ANGELES", - "community_served_state": "CA", - "network_affiliation": "JTV", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "KPOM-CD", - "community_served_city": "ONTARIO", - "community_served_state": "CA", - "network_affiliation": "Catchy Comedy", - "category": "Broadcast", - "type": "Broadcast (OTA)" - }, - { - "callsign": "WSLN", - "community_served_city": "FREEPORT", - "community_served_state": "IL", - "network_affiliation": "CW Plus", - "category": "Broadcast", - "type": "Broadcast (OTA)" - } -] \ No newline at end of file +{ + "country_code": "US", + "country_name": "United States", + "version": "2025-10-30", + "channels": [ + { + "channel_name": "3ABN", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "3ABN Francais", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "3ABN International", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "3ABN Kids Network", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "3ABN Latino", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "3ABN Praise Him Music Network", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "3ABN Proclaim!", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "3ABN Russia", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "4 Adventure", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "4 Emergency", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "5StarMax", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "A&E", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "A&E Crime 360", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "A&E Crime Central", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "A&E en Espanol", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "AABC TV", + "category": "Other", + "type": "National" + }, + { + "channel_name": "ABC", + "category": "Broadcast", + "type": "National" + }, + { + "channel_name": "ABC News Live", + "category": "News", + "type": "National" + }, + { + "channel_name": "ACC Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "AccuWeather Network", + "category": "Weather", + "type": "National" + }, + { + "channel_name": "Acme Crime Net", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Action-Packed TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "ActionMax", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Ad-Sport", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Africa News", + "category": "News", + "type": "National" + }, + { + "channel_name": "Afro", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Afro Kiddos", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Afrotainment", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Afrotainment Music", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Aham TV", + "category": "Other", + "type": "National" + }, + { + "channel_name": "AIT", + "category": "News", + "type": "National" + }, + { + "channel_name": "Al Jazeera English", + "category": "News", + "type": "National" + }, + { + "channel_name": "ALL ACTION", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "All Reality WE tv", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "All Weddings WE tv", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Allblk", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Altice USA News", + "category": "News", + "type": "National" + }, + { + "channel_name": "Altitude Sports and Entertainment", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Always Funny Videos", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "AMC", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "America TeVe", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "America's Test Kitchen", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "America's Voice", + "category": "News", + "type": "National" + }, + { + "channel_name": "American Classics", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "American Heroes Channel", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "American Pickers by History", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "American Voices", + "category": "News", + "type": "National" + }, + { + "channel_name": "America’s Auction Channel", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "AMGA TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Anger Management", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Animal Planet", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Animax", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Aniplus", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Answers in Genesis TV", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Antena 3 Internacional", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Antenna TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Antiques Roadshow UK", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Architectural Digest", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Are We There Yet", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Arirang TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Arizona Capitol Television", + "category": "News", + "type": "National" + }, + { + "channel_name": "Arizona NewsChannel", + "category": "News", + "type": "National" + }, + { + "channel_name": "ART", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "ARTN", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Aspire", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "AspireTV Life", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "At Questo Mondo", + "category": "Other", + "type": "National" + }, + { + "channel_name": "At the Movies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Atreseries", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "AWE", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Ax Men", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "AXS TV", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Azteca América", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "BabyFirst", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "BabyTV", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Backstage", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Bad Girls Club", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Bally Sports Detroit", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports Florida", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports Great Lakes", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports Indiana", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports Kansas City", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports Midwest", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports North", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports Ohio", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports San Diego", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports SoCal", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports South", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports Southeast", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports Southwest", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports Sun", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports West", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bally Sports Wisconsin", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bandamax", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Barney and Friends", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Bay News 9", + "category": "News", + "type": "National" + }, + { + "channel_name": "Baywatch", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "BBC America", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "BBC Drama", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "BBC Earth", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "BBC Food", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "BBC Home & Garden", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "BBC News", + "category": "News", + "type": "National" + }, + { + "channel_name": "BBC World News", + "category": "News", + "type": "National" + }, + { + "channel_name": "Beauty Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "BeIN Sports", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "beIN Sports en Espanol", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "beIN Sports en Español", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Bein Sports Xtra", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Believer’s Voice of Victory Network", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Best of Pawn Stars by History", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "BET", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "BET Gospel", + "category": "Music", + "type": "National" + }, + { + "channel_name": "BET Her", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "BET Hip-Hop", + "category": "Music", + "type": "National" + }, + { + "channel_name": "BET Jams", + "category": "Music", + "type": "National" + }, + { + "channel_name": "BET Pluto TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "BET Soul", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Big Ten Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Big Ten Network (BTN)", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Billiard TV", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Black News Channel", + "category": "News", + "type": "National" + }, + { + "channel_name": "BlackPix", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Bloomberg Originals", + "category": "News", + "type": "National" + }, + { + "channel_name": "Bloomberg Television", + "category": "News", + "type": "National" + }, + { + "channel_name": "Bloomberg TV+ UHD", + "category": "News", + "type": "National" + }, + { + "channel_name": "Bob the Builder", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Bon Appetit", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Bonjour America", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Boomerang", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Bostel", + "category": "Other", + "type": "National" + }, + { + "channel_name": "Bounce TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Bounce XL", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Brat TV", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Bravo", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Bravo Vault", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Bring It!", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "BritBox Mysteries", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "BUZZR", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Buzzr", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "BYU TV", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "C-SPAN", + "category": "News", + "type": "National" + }, + { + "channel_name": "C-SPAN 2", + "category": "News", + "type": "National" + }, + { + "channel_name": "C-SPAN 3", + "category": "News", + "type": "National" + }, + { + "channel_name": "C-SPAN2", + "category": "News", + "type": "National" + }, + { + "channel_name": "C-SPAN3", + "category": "News", + "type": "National" + }, + { + "channel_name": "Cable 11 Northern Lancaster County", + "category": "News", + "type": "National" + }, + { + "channel_name": "Caillou", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Canal 22 Internacional", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Canal Once", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Caracol TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "CaribVision Inc.", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Cars.TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Cartoon Network", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Cartoon Network", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Catchy Comedy", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Catholic Faith Network", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "CatholicTV", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "CBC News", + "category": "News", + "type": "National" + }, + { + "channel_name": "CBeebies", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "CBS", + "category": "Broadcast", + "type": "National" + }, + { + "channel_name": "CBS News", + "category": "News", + "type": "National" + }, + { + "channel_name": "CBS Sports Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Centroamerica TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Centroamérica TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "CGTN", + "category": "News", + "type": "National" + }, + { + "channel_name": "CGTN-America", + "category": "News", + "type": "National" + }, + { + "channel_name": "Charge!", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Cheaters", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Cheddar", + "category": "News", + "type": "National" + }, + { + "channel_name": "Cheddar News", + "category": "News", + "type": "National" + }, + { + "channel_name": "China Global Network", + "category": "News", + "type": "National" + }, + { + "channel_name": "China Global Network Espanol", + "category": "News", + "type": "National" + }, + { + "channel_name": "Christian Television Network", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Cine Estelar", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cine Life", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cine Mexicano", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cine Nostalgia", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cine Sony Television", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cinelatino", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cinemax", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cinemax 5Starmax", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cinemax Action", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cinemax Actionmax", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cinemax Classics", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cinemax Hits", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cinemax Moremax", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cinemáx", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "CINEVAULT", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "CINEVAULT: Classics", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "CINEVAULT: Westerns", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cinémoi", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Circle", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Circle Country", + "category": "Music", + "type": "National" + }, + { + "channel_name": "City", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Classic Arts Showcase", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Classic Cinema", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Cleo TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "CMT", + "category": "Music", + "type": "National" + }, + { + "channel_name": "CMT Music", + "category": "Music", + "type": "National" + }, + { + "channel_name": "CNBC", + "category": "News", + "type": "National" + }, + { + "channel_name": "CNBC World", + "category": "News", + "type": "National" + }, + { + "channel_name": "CNN", + "category": "News", + "type": "National" + }, + { + "channel_name": "CNN en Espanol", + "category": "News", + "type": "National" + }, + { + "channel_name": "CNN en Español", + "category": "News", + "type": "National" + }, + { + "channel_name": "CNN International", + "category": "News", + "type": "National" + }, + { + "channel_name": "Cold Case Files", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Comedy Central", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Comedy Central Pluto TV", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Comedy Dynamics", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Comedy.TV", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Comet", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "CONtv", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Cooking Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Cosmos", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Court TV", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Cowboy", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Cowboy Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Cox Sports Television", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Cozi TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Cracked", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Create", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Crime & Investigation", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Crime 24/7", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Crime Cults Killers", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Crime Thriller", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Crime Zone", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "CTGN", + "category": "News", + "type": "National" + }, + { + "channel_name": "CTN", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "CTNi", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "CubaMAX", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "CubaPlay+", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Dabl", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Dance Moms", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Dare to Dream Network", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Dark Matter TV", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Dateline 24/7", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Daystar", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Daystar en Espanol", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "De Pelicula", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "De Pelicula Clasico", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "De Película", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "De Película Clásico", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Deal or No Deal", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Degrassi", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Destination America", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Deutsche Welle", + "category": "News", + "type": "National" + }, + { + "channel_name": "DFH Network", + "category": "Other", + "type": "National" + }, + { + "channel_name": "Discovery Channel", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Discovery en Espanol", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Discovery en Español", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Discovery Familia", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Discovery Family", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Discovery Life", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Disney Channel", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Disney Junior", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Disney XD", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Divorce Court", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Doctor Who Classic", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Dog the Bounty Hunter", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Dog TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Dove", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Dove Channel", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Dr. G: Medical Examiner", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Drama Life", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Duck Dynasty", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Dust", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "DUST Sci-Fi", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "E!", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "E! Keeping Up", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "EarthX TV", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Ebony TV by Lionsgate", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Ecuador TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Ecuavisa Internacional", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "ElectricNOW", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Eleven Sports Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Emanate TV", + "category": "Other", + "type": "National" + }, + { + "channel_name": "Enlace", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Epic TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Epix", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Epix 2", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Epix Drive-in", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Epix Hits", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "ES.TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "eScapes", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Esperanza TV", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "ESPN", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "ESPN College Extra", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "ESPN Deportes", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "ESPN2", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "ESPNews", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "ESPNU", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Estrella News", + "category": "News", + "type": "National" + }, + { + "channel_name": "Estrella TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "ET Live", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Euronews English", + "category": "News", + "type": "National" + }, + { + "channel_name": "EWTN", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "EWTN Espanol", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "EWTN Español", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "FailArmy", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Family Affair Channel", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Family Entertainment Television", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Family Feud", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Family Movie Classics", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Fandango at Home", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Fawesome", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Fear Factor", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "FETV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "FilmRise", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "FilmRise Anime", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "FilmRise Black TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "FilmRise Free Movies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "FilmRise Kids", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "FilmRise Sci-Fi", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "FilmRise Western", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Flipping Nation by A&E", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Flix", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "FM", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Folk TV", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Food Network", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Food52", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Forensic Files", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "FOROtv", + "category": "News", + "type": "National" + }, + { + "channel_name": "Fox", + "category": "Broadcast", + "type": "National" + }, + { + "channel_name": "Fox Business", + "category": "News", + "type": "National" + }, + { + "channel_name": "Fox Business Network", + "category": "News", + "type": "National" + }, + { + "channel_name": "Fox Deportes", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Fox Life", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Fox News", + "category": "News", + "type": "National" + }, + { + "channel_name": "Fox News Channel", + "category": "News", + "type": "National" + }, + { + "channel_name": "Fox Soccer Plus", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Fox Sports 1", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Fox Sports 2", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "France 24", + "category": "News", + "type": "National" + }, + { + "channel_name": "Free Speech TV", + "category": "News", + "type": "National" + }, + { + "channel_name": "Freeform", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Fubo Sports Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Funny or Die", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Fuse", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Fuse Backstage", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Fuse Beat", + "category": "Music", + "type": "National" + }, + { + "channel_name": "FX", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "FX Movie Channel", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "FXM", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "FXX", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "FYI", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "GAC Family", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "GAC Living", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Galavision", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Galavisión", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Game Show A Go-Go", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Game Show Central", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Game Show Network", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Gardening with Monty Don", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "GEB America", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Gem Shopping Network", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "German Kino Plus", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Get TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "GetTV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "GlewedTV Sci-Fi", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Global Got Talent", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "GMA Network", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "GOD TV", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "God’s Learning Channel", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "GOL TV", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Golf Channel", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "GoTraveler", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "GoUSA TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Gran Cine", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Gravitas Movies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Great American Adventures", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Great American Faith & Living", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Great American Family", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Grit", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Grit Xtra", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "GSN", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Gusto TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Hallmark Channel", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Hallmark Drama", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Hallmark Movies & More", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Hallmark Movies & Mysteries", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "HappyKids", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Haystack News", + "category": "News", + "type": "National" + }, + { + "channel_name": "HBO", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "HBO Comedy", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "HBO Drama", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "HBO Family", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "HBO Hits", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "HBO Latino", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "HBO Movies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "HBO Signature", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "HBO Zone", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "HBO2", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "HDNet Movies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Heartland", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Hell's Kitchen", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Her Free Movies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Heroes & Icons", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "HGTV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Hi-YAH!", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "High Vision", + "category": "Other", + "type": "National" + }, + { + "channel_name": "Highway through Hell", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Highway to Heaven", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "History", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "History en Espanol", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "History en Español", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "HITN", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "HLN", + "category": "News", + "type": "National" + }, + { + "channel_name": "Hoarders by A&E", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Hogar de HGTV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Hola! TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Home.Made.Nation.", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Homeful", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Hope Channel", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Horizon TV", + "category": "Other", + "type": "National" + }, + { + "channel_name": "Horror by ALTER", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Hot Ones", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "HSN", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "HSN2", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "HTV", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Hungry", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "I Survived…", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "i24NEWS", + "category": "News", + "type": "National" + }, + { + "channel_name": "Ice Road Truckers", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Idaho's Very Own 24/7", + "category": "News", + "type": "National" + }, + { + "channel_name": "IFC", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Impact Television", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "In Depth Graham Bensinger", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "In the Garage", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "IndiePlex", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "INSP", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Intervention by A&E", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Investigation Discovery", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "ION Mystery", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "ION Plus", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "ION Television", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Ion Television", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "ITV Gold", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Jadeworld", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Jamie Oliver", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Jewelry Television", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "Jewish Broadcasting Service", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Jewish Life Television", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Journy", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "JTV", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "JTV Jewelry Love", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "Judge Nosey", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "JUS One", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "JUS Punjabi", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Just for Laughs Gags", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Justice Central", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Kanopy", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Kartoon Channel!", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Kevin Hart's LOL Network", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Kitchen Nightmares", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "KO-AM TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Kriminal Presented by A&E", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Laff", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Lassie", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "LATV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Law & Crime", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Law & Order", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "LEGO Channel", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "LeSEA", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Lidia's Kitchen", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Lifetime", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Lifetime Movie Network", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Lifetime Movies Love & Drama", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Lifetime Real Women", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Link TV", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Liquidation Channel", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "Little House on the Prairie", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Little Women: LA", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Live Well Network", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "LiveNOW from FOX", + "category": "News", + "type": "National" + }, + { + "channel_name": "LMN", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Local Now", + "category": "News", + "type": "National" + }, + { + "channel_name": "Localish", + "category": "News", + "type": "National" + }, + { + "channel_name": "Logo TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "LOL! Network", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Longhorn Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Love & Hip Hop", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Love Nature", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Love Quest: Powered by Banijay", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Loveworld USA", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "LRW", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Luxe.tv", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Lx News", + "category": "News", + "type": "National" + }, + { + "channel_name": "Made in Chelsea", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Magnolia Network", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Marquee Sports Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Matched Married Meet", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Maverick Black Cinema", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MavTV", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "MAVTV", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Max", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Mega TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "MeTV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "MeTV Toons", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "MeTV+", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Mexicanal", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "MGM", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MGM HD", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MGM+", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MGM+ Drive In", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MGM+ East", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MGM+ Hits", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MGM+ Marquee", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MHz Now", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Mid-Atlantic Sports Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Midnight Pulp", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Midsomer Murders", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Military History", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Million Dollar Dream Home", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Million Dollar Listing Vault", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Mixible", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "MKTV", + "category": "Other", + "type": "National" + }, + { + "channel_name": "MLB Extra Innings", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "MLB Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "MLB Strike Zone", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "MLS Direct Kick", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Modern Marvels", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Moonbug", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "MoreMax", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Motor Trend", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "MotorTrend FAST TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Movie Favorites by Lifetime", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Movie Hub", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Movie Hub Action", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Movie Hub West", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MovieMax", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MoviePlex", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MovieSphere", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MovieSphere by Lionsgate", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "MrBeast", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "MSG", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "MSG 2", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "MSG Sportsnet", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "MSG Sportsnet 2 HD", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "MSG Western New York", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "MSNBC", + "category": "News", + "type": "National" + }, + { + "channel_name": "MSNBC World", + "category": "News", + "type": "National" + }, + { + "channel_name": "MTV", + "category": "Music", + "type": "National" + }, + { + "channel_name": "MTV Biggest Pop", + "category": "Music", + "type": "National" + }, + { + "channel_name": "MTV Block Party", + "category": "Music", + "type": "National" + }, + { + "channel_name": "MTV Classic", + "category": "Music", + "type": "National" + }, + { + "channel_name": "MTV Live", + "category": "Music", + "type": "National" + }, + { + "channel_name": "MTV Pluto TV", + "category": "Music", + "type": "National" + }, + { + "channel_name": "MTV Tres", + "category": "Music", + "type": "National" + }, + { + "channel_name": "MTV2", + "category": "Music", + "type": "National" + }, + { + "channel_name": "MTVU", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Multimedios Television", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Multimedios Televisión", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Murder, She Wrote", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "MyDestination.TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "MyNetworkTV", + "category": "Broadcast", + "type": "National" + }, + { + "channel_name": "Mystery Science Theater 3000", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "MyTime Movie Network", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Myx TV", + "category": "Music", + "type": "National" + }, + { + "channel_name": "N+ Foro", + "category": "News", + "type": "National" + }, + { + "channel_name": "NASA TV", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Nashville", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Nat Geo Mundo", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Nat Geo Wild", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "National Geographic", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "NBA League Pass", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NBA TV", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NBC", + "category": "Broadcast", + "type": "National" + }, + { + "channel_name": "NBC News Now", + "category": "News", + "type": "National" + }, + { + "channel_name": "NBC Sports Bay Area", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NBC Sports Boston", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NBC Sports California", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NBC Sports Chicago", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NBC Sports Philadelphia", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NBC Sports Washington", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "New England Cable News", + "category": "News", + "type": "National" + }, + { + "channel_name": "New England Sports Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "New Greek TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "New KPop", + "category": "Music", + "type": "National" + }, + { + "channel_name": "News 12", + "category": "News", + "type": "National" + }, + { + "channel_name": "News 12 New York", + "category": "News", + "type": "National" + }, + { + "channel_name": "News 12+ Brooklyn", + "category": "News", + "type": "National" + }, + { + "channel_name": "News 12+ Connecticut", + "category": "News", + "type": "National" + }, + { + "channel_name": "News 12+ Hudson Valley", + "category": "News", + "type": "National" + }, + { + "channel_name": "News 12+ Long Island", + "category": "News", + "type": "National" + }, + { + "channel_name": "News 12+ New Jersey", + "category": "News", + "type": "National" + }, + { + "channel_name": "News 12+ The Bronx", + "category": "News", + "type": "National" + }, + { + "channel_name": "News 12+ Westchester", + "category": "News", + "type": "National" + }, + { + "channel_name": "News 13", + "category": "News", + "type": "National" + }, + { + "channel_name": "News 9 Now", + "category": "News", + "type": "National" + }, + { + "channel_name": "News Channel Nebraska", + "category": "News", + "type": "National" + }, + { + "channel_name": "News on 6 Now", + "category": "News", + "type": "National" + }, + { + "channel_name": "Newsmax TV", + "category": "News", + "type": "National" + }, + { + "channel_name": "NewsNation", + "category": "News", + "type": "National" + }, + { + "channel_name": "NewsWatch 15", + "category": "News", + "type": "National" + }, + { + "channel_name": "Newsy", + "category": "News", + "type": "National" + }, + { + "channel_name": "NFL Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NFL RedZone", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NFL Sunday Ticket", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NFL Sunday Ticket Fantasy Zone", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NFL Sunday Ticket Multiview Fan", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NFL Sunday Ticket RedZone", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NHK World Japan", + "category": "News", + "type": "National" + }, + { + "channel_name": "NHL Center Ice", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "NHL Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Nick Jr.", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Nick Pluto TV", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Nickelodeon", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "NickMusic", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Nicktoons", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Nikita", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Nosey", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "NRB Network", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Nuestra Tele", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "NY1", + "category": "News", + "type": "National" + }, + { + "channel_name": "NYCTV", + "category": "News", + "type": "National" + }, + { + "channel_name": "OAN Plus", + "category": "News", + "type": "National" + }, + { + "channel_name": "Oc 16", + "category": "News", + "type": "National" + }, + { + "channel_name": "Olympic Channel", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Omni Television", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "One America News Network", + "category": "News", + "type": "National" + }, + { + "channel_name": "Operation Repo", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Oprah Winfrey Network", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Outdoor Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "OuterMax", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "OuterSphere", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Outside TV", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Ovation", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Oxygen", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Oxygen True Crimes Archive", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Pac-12 Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "PanArmenian TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Paramount Movie Channel", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Paramount Network", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Paranormal File", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Pasiones", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Pattrn", + "category": "Weather", + "type": "National" + }, + { + "channel_name": "PBS", + "category": "Public Broadcasting", + "type": "National" + }, + { + "channel_name": "PBS Antiques Roadshow", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "PBS Food", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "PBS Kids", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "PeopleTV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Perform", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Pets.TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "PFL MMA", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Pittsburgh Cable News Channel", + "category": "News", + "type": "National" + }, + { + "channel_name": "PixL", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Playboy TV en Espanol", + "category": "Adult", + "type": "National" + }, + { + "channel_name": "Playboy TV en Español", + "category": "Adult", + "type": "National" + }, + { + "channel_name": "Pluto TV Action", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Pluto TV Comedy", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Pluto TV Documentaries", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Pluto TV Drama", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Pluto TV Family", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Pluto TV Fantastic", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Pluto TV Her", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Pluto TV Horror", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Pluto TV Indies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Pluto TV Movies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Pluto TV Movies 2", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Pluto TV Romance", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Pluto TV Spotlight", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Pluto TV Thrillers", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Pluto TV Westerns", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "PokerGO", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Pop", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Positiv", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Power Rangers", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Primo TV", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Pursuit Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Pursuit Up", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "PXTV", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "QVC", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "QVC2", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "QVC3", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "RCN Nuestra Tele", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Real America's Voice", + "category": "News", + "type": "National" + }, + { + "channel_name": "Real America’s Voice", + "category": "News", + "type": "National" + }, + { + "channel_name": "Real Disaster Channel", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Real Housewives Vault", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Recipe.TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Reelz", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "REELZ Famous & Infamous", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Retro Plex", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Retro TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "RetroCrush", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "RetroPlex", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Reuters", + "category": "News", + "type": "National" + }, + { + "channel_name": "Rev & Roll", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Revolt", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Revry", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Rewind TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "RFD-TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Rifftrax", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Ritmoson Latino", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Road Renegades", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Roku Fireside", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Roku Spooktacular", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Root Sports Northwest", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "RSC", + "category": "Other", + "type": "National" + }, + { + "channel_name": "Saigon Broadcasting Television Network", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Samuel Goldwyn Classics", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Samuel Goldwyn Films", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Science Channel", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Scientology Network", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "ScreenPix", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "ScreenPix Action", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "ScreenPix Action US", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "ScreenPix US", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "ScreenPix Voices", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "ScreenPix Voices US", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "ScreenPix Westerns", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "ScreenPix Westerns US", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Scripps News", + "category": "News", + "type": "National" + }, + { + "channel_name": "SEC Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Sensical Jr", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Shades of Black", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Shark Tank", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Shaun the Sheep", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Shop LC", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "ShopHQ", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "ShopLC", + "category": "Shopping", + "type": "National" + }, + { + "channel_name": "Shorts TV", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "ShortsHD", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Shout! Factory TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Shout! TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Showtime", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Showtime 2", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Showtime BET", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Showtime Extreme", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Showtime Family Zone", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Showtime HD East", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Showtime Next", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Showtime Showcase", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Showtime Women", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "SHOxBET", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Sino TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Sky Link TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Sky News", + "category": "News", + "type": "National" + }, + { + "channel_name": "Slightly Off IFC", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "SLING Freestream", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Smile", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Smithsonian Channel", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "SNL Vault", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Sonlife Broadcasting Network", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Sonlife Broadcasting Network (SBN)", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "Sony Canal Comedias", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Sony Canal Competencias", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Sony Cine", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Sony Movies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Sorpresa!", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "So… Real", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Space City Home Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Spectrum News 1", + "category": "News", + "type": "National" + }, + { + "channel_name": "Spectrum News 1 Austin", + "category": "News", + "type": "National" + }, + { + "channel_name": "Spectrum News 1 Buffalo", + "category": "News", + "type": "National" + }, + { + "channel_name": "Spectrum News 1 Capital Region", + "category": "News", + "type": "National" + }, + { + "channel_name": "Spectrum News 1 Central New York", + "category": "News", + "type": "National" + }, + { + "channel_name": "Spectrum News 1 Dallas-Fort Worth", + "category": "News", + "type": "National" + }, + { + "channel_name": "Spectrum News 1 North Carolina", + "category": "News", + "type": "National" + }, + { + "channel_name": "Spectrum News 1 Rochester", + "category": "News", + "type": "National" + }, + { + "channel_name": "Spectrum Sports", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Spectrum SportsNet", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Spectrum SportsNet LA", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Sportsman Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "SportsNet New York", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "SportsNet Pittsburgh", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "SPT TV", + "category": "Other", + "type": "National" + }, + { + "channel_name": "Stadium", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Stadium College Sports Atlantic", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Stadium College Sports Central", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Stadium College Sports Pacific", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Stand-Up TV", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Start TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Starz", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Cinema", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Comedy", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Edge", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Encore", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Encore Action", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Encore Black", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Encore Classic", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Encore Espanol", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Encore Español", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Encore Family", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Encore Suspense", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Encore Westerns", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz in Black", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Kids & Family", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Starz Kids West", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Stories By AMC", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Story Television", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Sundance TV", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "SundanceTV", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Supermarket Sweep", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Swamp People", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Sweet Escapes", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Syfy", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "Tai Seng Sat TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Tapesh TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Tastemade", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Tastemade en Espanol", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Tastemade Home", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Tastemade Travel Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "TBN", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "TBN Inspire", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "TBS", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "TCM", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "TCM Movies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "TED", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "TeenNick", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "TELE N", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Telefe Internacional", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "TeleFormula", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "TeleFórmula", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "TeleHit", + "category": "Music", + "type": "National" + }, + { + "channel_name": "TeleHit Musica", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Telemundo", + "category": "Broadcast", + "type": "National" + }, + { + "channel_name": "Teletubbies", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "TeleXitos", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Tennis Channel", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "The Africa Channel", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "The Arabic Channel", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "The Archive", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "The Asylum", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "The Biggest Loser", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "The Bob Ross Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "The Carol Burnett Show", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "The Comedy Shop", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "The Comedy Store", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "The Cowboy Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "The Curse of Oak Island", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "The CW", + "category": "Broadcast", + "type": "National" + }, + { + "channel_name": "The Design Network", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "The Emeril Lagasse Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "The Filipino Channel", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "The First", + "category": "News", + "type": "National" + }, + { + "channel_name": "The First 48 & Beyond", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "The Girls Next Door Channel", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "The Hill", + "category": "News", + "type": "National" + }, + { + "channel_name": "The Jack Hanna Channel", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "The Jamie Oliver Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "The Johnny Carson Show", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "The Korean Channel", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "The Martha Stewart Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "The Masked Singer", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "The Movie Channel", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "The Movie Channel Xtra", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "The New Detectives", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "The Pet Collective", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "The Price Is Right: The Barker Era", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "The Red Green Channel", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "The Rifleman", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "The Rotten Tomatoes Channel", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "The UnXplained with William Shatner", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "The Walking Dead Universe", + "category": "Sci-Fi", + "type": "National" + }, + { + "channel_name": "The Weather Channel", + "category": "Weather", + "type": "National" + }, + { + "channel_name": "The Weather Channel en Espanol", + "category": "Weather", + "type": "National" + }, + { + "channel_name": "The Word Network", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "The Worship Network", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "TheBlaze", + "category": "News", + "type": "National" + }, + { + "channel_name": "This Old House", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "This TV", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "ThrillerMax", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Tiny House Nation", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "TLC", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "TNT", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Today All Day", + "category": "News", + "type": "National" + }, + { + "channel_name": "Top Chef Vault: Las Vegas", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Top Cine", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Top Rank Classics", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Total Crime", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Transformers", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Travel + Adventure", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Travel Channel", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Tri-State Christian Television", + "category": "Religious", + "type": "National" + }, + { + "channel_name": "TRN", + "category": "Other", + "type": "National" + }, + { + "channel_name": "TruBlu", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "True Crime Network", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "TruTV", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "TUDN", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Turner Classic Movies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "TV 13 The Poconos", + "category": "News", + "type": "National" + }, + { + "channel_name": "TV Asia", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "TV Chile", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "TV Japan", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "TV Land", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "TV Land Drama", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "TV One", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "TV One Crime & Justice", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "TV Venezuela", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "TV503 Crossing TV", + "category": "Other", + "type": "National" + }, + { + "channel_name": "TVE Internacional", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "TVG", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "TVG Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "TVG2", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "tvK", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "TyC Sports", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "TYT Network", + "category": "News", + "type": "National" + }, + { + "channel_name": "Ultra Banda", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Ultra Cine", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Ultra Clasico", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Ultra Docu", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Ultra Familia", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Ultra Fiesta", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Ultra Film", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Ultra Kidz", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Ultra Luna", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Ultra Macho", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Ultra Mex", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Ultratainment", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Unidentified", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "UniMas", + "category": "Broadcast", + "type": "National" + }, + { + "channel_name": "UniMás", + "category": "Broadcast", + "type": "National" + }, + { + "channel_name": "Universal Action", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Universal Kids", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "Universal Monsters", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Universo", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Univision", + "category": "Broadcast", + "type": "National" + }, + { + "channel_name": "Univision tlnovelas", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Unsolved Mysteries", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Untamed Sports TV", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "UnXplained Zone", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Up TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "UP TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "USA Network", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "USA Today", + "category": "News", + "type": "National" + }, + { + "channel_name": "USArmenia TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "V-me", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "VePlus", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "VH1", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Vice", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Viceland", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "Vien Thao TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "ViendoMovies", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Vivaldi", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Vix Cine Club", + "category": "Movies", + "type": "National" + }, + { + "channel_name": "Vix Novelas De Oro", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Vix Novelas en Familia", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "Vogue", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Wanted: Dead or Alive", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Watchlist", + "category": "Other", + "type": "National" + }, + { + "channel_name": "Waypoint TV", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "WE tv", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "We TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "WeatherNation", + "category": "Weather", + "type": "National" + }, + { + "channel_name": "WeatherNation TV", + "category": "Weather", + "type": "National" + }, + { + "channel_name": "WeatherSpy", + "category": "Weather", + "type": "National" + }, + { + "channel_name": "Welcome Home", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "WGN America", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "Whistle TV", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Wild'N Out", + "category": "Comedy", + "type": "National" + }, + { + "channel_name": "Wipeout Xtra", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "WIRED", + "category": "Documentary", + "type": "National" + }, + { + "channel_name": "WJLA 24/7 News", + "category": "News", + "type": "National" + }, + { + "channel_name": "Women's Sports Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "World Fishing Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "World's Most Evil Killers", + "category": "Crime", + "type": "National" + }, + { + "channel_name": "Wu Tang Collection TV", + "category": "Entertainment", + "type": "National" + }, + { + "channel_name": "XITE", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Xplore", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Yahoo Finance", + "category": "News", + "type": "National" + }, + { + "channel_name": "YES Network", + "category": "Sports", + "type": "National" + }, + { + "channel_name": "Yo! MTV", + "category": "Music", + "type": "National" + }, + { + "channel_name": "Z Living", + "category": "Lifestyle", + "type": "National" + }, + { + "channel_name": "Zee TV", + "category": "Spanish", + "type": "National" + }, + { + "channel_name": "ZooMoo", + "category": "Kids", + "type": "National" + }, + { + "channel_name": "¡Sorpresa!", + "category": "Kids", + "type": "National" + }, + { + "callsign": "KFCT", + "community_served_city": "FORT COLLINS", + "community_served_state": "CO", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDVR", + "community_served_city": "DENVER", + "community_served_state": "CO", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOTF-TV", + "community_served_city": "DAYTONA BEACH", + "community_served_state": "FL", + "network_affiliation": "Grit", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNVA", + "community_served_city": "AUSTIN", + "community_served_state": "TX", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXIN", + "community_served_city": "INDIANAPOLIS", + "community_served_state": "IN", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTIC-TV", + "community_served_city": "HARTFORD", + "community_served_state": "CT", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAKW-DT", + "community_served_city": "KILLEEN", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWLM-CD", + "community_served_city": "WASHINGTON", + "community_served_state": "PA", + "network_affiliation": "TIMELESS TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KABC-TV", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRBC-TV", + "community_served_city": "ABILENE", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSAN-TV", + "community_served_city": "SAN ANGELO", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTXS-TV", + "community_served_city": "SWEETWATER", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K20JX-D", + "community_served_city": "SACRAMENTO", + "community_served_state": "CA", + "network_affiliation": "Three Angels Broadcasting Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WACY-TV", + "community_served_city": "APPLETON", + "community_served_state": "WI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCAV", + "community_served_city": "CHARLOTTESVILLE", + "community_served_state": "VA", + "network_affiliation": "CBS FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRGT-TV", + "community_served_city": "DAYTON", + "community_served_state": "OH", + "network_affiliation": "DABL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRLH-TV", + "community_served_city": "RICHMOND", + "community_served_state": "VA", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUHF", + "community_served_city": "ROCHESTER", + "community_served_state": "NY", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXLV-TV", + "community_served_city": "WINSTON-SALEM", + "community_served_state": "NC", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUTV", + "community_served_city": "BUFFALO", + "community_served_state": "NY", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTAT-TV", + "community_served_city": "CHARLESTON", + "community_served_state": "SC", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVAH-TV", + "community_served_city": "CHARLESTON", + "community_served_state": "WV", + "network_affiliation": "Catchy", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WZTV", + "community_served_city": "NASHVILLE", + "community_served_state": "TN", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WADL", + "community_served_city": "MOUNT CLEMENS", + "community_served_state": "MI", + "network_affiliation": "MyNetworkTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAFB", + "community_served_city": "BATON ROUGE", + "community_served_state": "LA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTOC-TV", + "community_served_city": "SAVANNAH", + "community_served_state": "GA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAFF", + "community_served_city": "HUNTSVILLE", + "community_served_state": "AL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFVS-TV", + "community_served_city": "CAPE GIRARDEAU", + "community_served_state": "MO", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWWL", + "community_served_city": "WATERLOO", + "community_served_state": "IA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WITN-TV", + "community_served_city": "WASHINGTON", + "community_served_state": "NC", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVM", + "community_served_city": "COLUMBUS", + "community_served_state": "GA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVTN-DT", + "community_served_city": "PINE BLUFF", + "community_served_state": "AR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVTH-DT", + "community_served_city": "HOT SPRINGS", + "community_served_state": "AR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVU-CD", + "community_served_city": "SYRACUSE", + "community_served_state": "NY", + "network_affiliation": "Cornerstone TeleVision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHSU-CD", + "community_served_city": "SYRACUSE", + "community_served_state": "NY", + "network_affiliation": "The Walk Television Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFVE", + "community_served_city": "KAILUA-KONA", + "community_served_state": "HI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAKA", + "community_served_city": "SELMA", + "community_served_state": "AL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAIQ", + "community_served_city": "MONTGOMERY", + "community_served_state": "AL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGIQ", + "community_served_city": "LOUISVILLE", + "community_served_state": "AL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCIQ", + "community_served_city": "MOUNT CHEAHA", + "community_served_state": "AL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHIQ", + "community_served_city": "HUNTSVILLE", + "community_served_state": "AL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDIQ", + "community_served_city": "DOZIER", + "community_served_state": "AL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFIQ", + "community_served_city": "FLORENCE", + "community_served_state": "AL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBIQ", + "community_served_city": "BIRMINGHAM", + "community_served_state": "AL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIIQ", + "community_served_city": "DEMOPOLIS", + "community_served_state": "AL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEIQ", + "community_served_city": "MOBILE", + "community_served_state": "AL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLRN", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAKM", + "community_served_city": "ANCHORAGE", + "community_served_state": "AK", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNAT-TV", + "community_served_city": "ALBUQUERQUE", + "community_served_state": "NM", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWTO-TV", + "community_served_city": "NAPERVILLE", + "community_served_state": "IL", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTAJ-TV", + "community_served_city": "ST. JOSEPH", + "community_served_state": "MO", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTJP-TV", + "community_served_city": "GADSDEN", + "community_served_state": "AL", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDOR-TV", + "community_served_city": "BARTLESVILLE", + "community_served_state": "OK", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJLA-TV", + "community_served_city": "WASHINGTON", + "community_served_state": "DC", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUCW", + "community_served_city": "OGDEN", + "community_served_state": "UT", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAZQ", + "community_served_city": "ALBUQUERQUE", + "community_served_state": "NM", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLMA", + "community_served_city": "LIMA", + "community_served_state": "OH", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KACV-TV", + "community_served_city": "AMARILLO", + "community_served_state": "TX", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXTF", + "community_served_city": "TWIN FALLS", + "community_served_state": "ID", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPVI-DT", + "community_served_city": "POCATELLO", + "community_served_state": "ID", + "network_affiliation": "NBC, Catchy Comedy, Movies", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDPN-TV", + "community_served_city": "WILMINGTON", + "community_served_state": "DE", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WABC-TV", + "community_served_city": "NEW YORK", + "community_served_state": "NY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMTJ", + "community_served_city": "FAJARDO", + "community_served_state": "PR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQTO", + "community_served_city": "PONCE", + "community_served_state": "PR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXJ-TV", + "community_served_city": "BATAVIA", + "community_served_state": "NY", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSVI", + "community_served_city": "CHRISTIANSTED", + "community_served_state": "VI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBTV-CD", + "community_served_city": "SACRAMENTO", + "community_served_state": "CA", + "network_affiliation": "SONLIFE BROADCASTING NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCYB-TV", + "community_served_city": "BRISTOL", + "community_served_state": "VA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVEW", + "community_served_city": "KENNEWICK", + "community_served_state": "WA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAPP", + "community_served_city": "YAKIMA", + "community_served_state": "WA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOPX-TV", + "community_served_city": "OKLAHOMA CITY", + "community_served_state": "OK", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGBA-TV", + "community_served_city": "GREEN BAY", + "community_served_state": "WI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEUX", + "community_served_city": "CHIPPEWA FALLS", + "community_served_state": "WI", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLAX", + "community_served_city": "LA CROSSE", + "community_served_state": "WI", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUAS-TV", + "community_served_city": "TUCSON", + "community_served_state": "AZ", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAET", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUAT-TV", + "community_served_city": "TUCSON", + "community_served_state": "AZ", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFPH-CD", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "UniMas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAFT", + "community_served_city": "FAYETTEVILLE", + "community_served_state": "AR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KETG", + "community_served_city": "ARKADELPHIA", + "community_served_state": "AR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTEJ", + "community_served_city": "JONESBORO", + "community_served_state": "AR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KETS", + "community_served_city": "LITTLE ROCK", + "community_served_state": "AR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEMV", + "community_served_city": "MOUNTAIN VIEW", + "community_served_state": "AR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVTJ-DT", + "community_served_city": "JONESBORO", + "community_served_state": "AR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTHV", + "community_served_city": "LITTLE ROCK", + "community_served_state": "AR", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPGX", + "community_served_city": "PANAMA CITY", + "community_served_state": "FL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCCV-TV", + "community_served_city": "ARECIBO", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUVN", + "community_served_city": "HARTFORD", + "community_served_state": "CT", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVXF", + "community_served_city": "CHARLOTTE AMALIE", + "community_served_state": "VI", + "network_affiliation": "Cozi TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWMB", + "community_served_city": "FLORENCE", + "community_served_state": "SC", + "network_affiliation": "DABL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNET-CD", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFXG", + "community_served_city": "AUGUSTA", + "community_served_state": "GA", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAAH-TV", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCLO-TV", + "community_served_city": "AGUADA", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRBL", + "community_served_city": "COLUMBUS", + "community_served_state": "GA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIPB", + "community_served_city": "MUNCIE", + "community_served_state": "IN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KARD", + "community_served_city": "WEST MONROE", + "community_served_state": "LA", + "network_affiliation": "FOX Television Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOZL-TV", + "community_served_city": "SPRINGFIELD", + "community_served_state": "MO", + "network_affiliation": "MyNetworkTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLBK-TV", + "community_served_city": "LUBBOCK", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVW", + "community_served_city": "EVANSVILLE", + "community_served_state": "IN", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVII-TV", + "community_served_city": "BANGOR", + "community_served_state": "ME", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLWC", + "community_served_city": "NEW BEDFORD", + "community_served_state": "MA", + "network_affiliation": "Court TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBNT-CD", + "community_served_city": "SAN DIEGO", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DDWSJU-TV", + "community_served_city": "SAN JUAN", + "community_served_state": "PR", + "network_affiliation": "SBS/MEGA", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTTA", + "community_served_city": "ST. PETERSBURG", + "community_served_state": "FL", + "network_affiliation": "The CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDWL", + "community_served_city": "BAYAMON", + "community_served_state": "PR", + "network_affiliation": "Enlace", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WALA-TV", + "community_served_city": "MOBILE", + "community_served_state": "AL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHON-TV", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "FOX/CW/GRIT/REWIND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAII-TV", + "community_served_city": "WAILUKU", + "community_served_state": "HI", + "network_affiliation": "FOX/CW/GRIT/REWIND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHAW-TV", + "community_served_city": "HILO", + "community_served_state": "HI", + "network_affiliation": "FOX/CW/GRIT/REWIND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBAK-TV", + "community_served_city": "BAKERSFIELD", + "community_served_state": "CA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVUE-DT", + "community_served_city": "NEW ORLEANS", + "community_served_state": "LA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLUK-TV", + "community_served_city": "GREEN BAY", + "community_served_state": "WI", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVY", + "community_served_city": "DOTHAN", + "community_served_state": "AL", + "network_affiliation": "CBS, NBC, CW, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WABE-TV", + "community_served_city": "ATLANTA", + "community_served_state": "GA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSIU-TV", + "community_served_city": "CARBONDALE", + "community_served_state": "IL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUSI-TV", + "community_served_city": "OLNEY", + "community_served_state": "IL", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNMU", + "community_served_city": "MARQUETTE", + "community_served_state": "MI", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMOS-TV", + "community_served_city": "SEDALIA", + "community_served_state": "MO", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOCE-TV", + "community_served_city": "HUNTINGTON BEACH", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVUT", + "community_served_city": "VINCENNES", + "community_served_state": "IN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPCT", + "community_served_city": "PANAMA CITY BEACH", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTJR", + "community_served_city": "QUINCY", + "community_served_state": "IL", + "network_affiliation": "CTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUNS-TV", + "community_served_city": "BELLEVUE", + "community_served_state": "WA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTAP-TV", + "community_served_city": "PARKERSBURG", + "community_served_state": "WV", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTOK-TV", + "community_served_city": "MERIDIAN", + "community_served_state": "MS", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHSV-TV", + "community_served_city": "HARRISONBURG", + "community_served_state": "VA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWIFR", + "community_served_city": "FREEPORT", + "community_served_state": "IL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHQA-TV", + "community_served_city": "HANNIBAL", + "community_served_state": "MO", + "network_affiliation": "KHQA D1 - CBS; KHQA D2 - ABC; KHQA D3 - Comet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDLH", + "community_served_city": "DULUTH", + "community_served_state": "MN", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBKO", + "community_served_city": "BOWLING GREEN", + "community_served_state": "KY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYTV", + "community_served_city": "YOUNGSTOWN", + "community_served_state": "OH", + "network_affiliation": "ABC / MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBSV", + "community_served_city": "CERES", + "community_served_state": "CA", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYUS-TV", + "community_served_city": "MILES CITY", + "community_served_state": "MT", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSVI", + "community_served_city": "BILLINGS", + "community_served_state": "MT", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVH-DT", + "community_served_city": "HELENA", + "community_served_state": "MT", + "network_affiliation": "NBC KTVH 12.1, MTN KTVH-D2 12.2, Cozi 12.3, Court TV 12.4, Mystery 12.5, HSN 12.6", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUVN-CD", + "community_served_city": "FORT WORTH", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIAT", + "community_served_city": "BIRMINGHAM", + "community_served_state": "AL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQPT-TV", + "community_served_city": "MOLINE", + "community_served_state": "IL", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQIN", + "community_served_city": "DAVENPORT", + "community_served_state": "IA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXD-TV", + "community_served_city": "ANN ARBOR", + "community_served_state": "MI", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPXG-TV", + "community_served_city": "SALEM", + "community_served_state": "OR", + "network_affiliation": "ION, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, QVC, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVEN-TV", + "community_served_city": "MELBOURNE", + "community_served_state": "FL", + "network_affiliation": "UNIVISION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYZZ-TV", + "community_served_city": "BLOOMINGTON", + "community_served_state": "IL", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBRA-TV", + "community_served_city": "ROANOKE", + "community_served_state": "VA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWMSY-TV", + "community_served_city": "MARION", + "community_served_state": "VA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWSBN-TV", + "community_served_city": "NORTON", + "community_served_state": "VA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNYE-TV", + "community_served_city": "NEW YORK", + "community_served_state": "NY", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFSG", + "community_served_city": "PANAMA CITY", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHA-TV", + "community_served_city": "MADISON", + "community_served_state": "WI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKAR-TV", + "community_served_city": "EAST LANSING", + "community_served_state": "MI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPBS", + "community_served_city": "SAN DIEGO", + "community_served_state": "CA", + "network_affiliation": "PUBLIC BROADCASTING SERVICE", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSL-TV", + "community_served_city": "SALT LAKE CITY", + "community_served_state": "UT", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFXT", + "community_served_city": "BOSTON", + "community_served_state": "MA", + "network_affiliation": "FOX (25.1); Comet TV (25.2) & Laff TV (25.3)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDPX-TV", + "community_served_city": "WOBURN", + "community_served_state": "MA", + "network_affiliation": "Grit", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFGX", + "community_served_city": "FORT WALTON BEACH", + "community_served_state": "FL", + "network_affiliation": "MyNetworkTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBGU-TV", + "community_served_city": "BOWLING GREEN", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXPX-TV", + "community_served_city": "BRADENTON", + "community_served_state": "FL", + "network_affiliation": "ION, Court TV, Grit Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBTX-TV", + "community_served_city": "BRYAN", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKDYW", + "community_served_city": "WACO", + "community_served_state": "TX", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEFS", + "community_served_city": "COCOA", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBYU-TV", + "community_served_city": "PROVO", + "community_served_state": "UT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WILX-TV", + "community_served_city": "ONONDAGA", + "community_served_state": "MI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAUZ-TV", + "community_served_city": "WICHITA FALLS", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOSA-TV", + "community_served_city": "ODESSA", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHOI", + "community_served_city": "PEORIA", + "community_served_state": "IL", + "network_affiliation": "TBD", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSAW-TV", + "community_served_city": "WAUSAU", + "community_served_state": "WI", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWLP", + "community_served_city": "SPRINGFIELD", + "community_served_state": "MA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTRF-TV", + "community_served_city": "WHEELING", + "community_served_state": "WV", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMTV", + "community_served_city": "MADISON", + "community_served_state": "WI", + "network_affiliation": "NBC, CW, METV, START TV, WEATHERNATION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWQC-TV", + "community_served_city": "DAVENPORT", + "community_served_state": "IA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUPA", + "community_served_city": "ATLANTA", + "community_served_state": "GA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTPX-TV", + "community_served_city": "OKMULGEE", + "community_served_state": "OK", + "network_affiliation": "ION, KJRH, Court TV, Grit, Mystery, Jewelry TV, QVC, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KASW", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGTW-TV", + "community_served_city": "MILLVILLE", + "community_served_state": "NJ", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJFB", + "community_served_city": "LEBANON", + "community_served_state": "TN", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KJTL", + "community_served_city": "WICHITA FALLS", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBPX-TV", + "community_served_city": "BOSTON", + "community_served_state": "MA", + "network_affiliation": "ION, Mystery, SCRIPPS News, Bounce, IONPlus, Jewlery TV, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUVI-DT", + "community_served_city": "BAKERSFIELD", + "community_served_state": "CA", + "network_affiliation": "Quest", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGFL", + "community_served_city": "HIGH SPRINGS", + "community_served_state": "FL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIVB-TV", + "community_served_city": "BUFFALO", + "community_served_state": "NY", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGCW", + "community_served_city": "BURLINGTON", + "community_served_state": "IA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOLN", + "community_served_city": "LINCOLN", + "community_served_state": "NE", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEAU", + "community_served_city": "EAU CLAIRE", + "community_served_state": "WI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGIN", + "community_served_city": "GRAND ISLAND", + "community_served_state": "NE", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDTI", + "community_served_city": "INDIANAPOLIS", + "community_served_state": "IN", + "network_affiliation": "IND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNUV", + "community_served_city": "BALTIMORE", + "community_served_state": "MD", + "network_affiliation": "The CW Baltimore", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUJA", + "community_served_city": "CAGUAS", + "community_served_state": "PR", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQET", + "community_served_city": "WATSONVILLE", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOBI", + "community_served_city": "MEDFORD", + "community_served_state": "OR", + "network_affiliation": "NBC and COZI", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAEF-TV", + "community_served_city": "ARCATA", + "community_served_state": "CA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOTI", + "community_served_city": "KLAMATH FALLS", + "community_served_state": "OR", + "network_affiliation": "NBC and COZI", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRCR-TV", + "community_served_city": "REDDING", + "community_served_state": "CA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLSR-TV", + "community_served_city": "EUGENE", + "community_served_state": "OR", + "network_affiliation": "FOX & MYNET", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQSL", + "community_served_city": "FORT BRAGG", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAMR-TV", + "community_served_city": "AMARILLO", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUAB", + "community_served_city": "LORAIN", + "community_served_state": "OH", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLRU", + "community_served_city": "AUSTIN", + "community_served_state": "TX", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPVI-TV", + "community_served_city": "PHILADELPHIA", + "community_served_state": "PA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVD", + "community_served_city": "DURHAM", + "community_served_state": "NC", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFSN-TV", + "community_served_city": "FRESNO", + "community_served_state": "CA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTOO-TV", + "community_served_city": "JUNEAU", + "community_served_state": "AK", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOI-DT", + "community_served_city": "AMES", + "community_served_state": "IA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRAL-TV", + "community_served_city": "RALEIGH", + "community_served_state": "NC", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCIV", + "community_served_city": "CHARLESTON", + "community_served_state": "SC", + "network_affiliation": "My Network TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFXB", + "community_served_city": "MYRTLE BEACH", + "community_served_state": "SC", + "network_affiliation": "Fox/MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGGS-TV", + "community_served_city": "GREENVILLE", + "community_served_state": "SC", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBBZ-TV", + "community_served_city": "SPRINGVILLE", + "community_served_state": "NY", + "network_affiliation": "METV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCBS-TV", + "community_served_city": "NEW YORK", + "community_served_state": "NY", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBBM-TV", + "community_served_city": "CHICAGO", + "community_served_state": "IL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCBS-TV", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCCO-TV", + "community_served_city": "MINNEAPOLIS", + "community_served_state": "MN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJMN-TV", + "community_served_city": "ESCANABA", + "community_served_state": "MI", + "network_affiliation": "MyTV Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKCCO-TV", + "community_served_city": "ALEXANDRIA", + "community_served_state": "MN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFRV-TV", + "community_served_city": "GREEN BAY", + "community_served_state": "WI", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCCW-TV", + "community_served_city": "WALKER", + "community_served_state": "MN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCRG-TV", + "community_served_city": "CEDAR RAPIDS", + "community_served_state": "IA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMCN-TV", + "community_served_city": "PRINCETON", + "community_served_state": "NJ", + "network_affiliation": "Shop LC to 6-30-24, IND beginning 7-1-24 - 12-31-24", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNCT", + "community_served_city": "BELTON", + "community_served_state": "TX", + "network_affiliation": "CW / StartTV / DABL / H & I", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGNT", + "community_served_city": "PORTSMOUTH", + "community_served_state": "VA", + "network_affiliation": "CW, Antenna TV, Grit, DABL, QVC2, HSN2", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBTS-CD", + "community_served_city": "NASHUA", + "community_served_state": "NH", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXXV", + "community_served_city": "WACO", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTGL", + "community_served_city": "LEESBURG", + "community_served_state": "FL", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCMU-TV", + "community_served_city": "MOUNT PLEASANT", + "community_served_state": "MI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCMW", + "community_served_city": "MANISTEE", + "community_served_state": "MI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCML", + "community_served_city": "ALPENA", + "community_served_state": "MI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCMV", + "community_served_city": "CADILLAC", + "community_served_state": "MI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUXP-TV", + "community_served_city": "NASHVILLE", + "community_served_state": "TN", + "network_affiliation": "MYTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCVE-TV", + "community_served_city": "RICHMOND", + "community_served_state": "VA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCVW", + "community_served_city": "RICHMOND", + "community_served_state": "VA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHTJ", + "community_served_city": "CHARLOTTESVILLE", + "community_served_state": "VA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNVC", + "community_served_city": "CULPEPER", + "community_served_state": "VA", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNVT", + "community_served_city": "SPOTSYLVANIA", + "community_served_state": "VA", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWYP-DT", + "community_served_city": "LARAMIE", + "community_served_state": "WY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCWC-DT", + "community_served_city": "LANDER", + "community_served_state": "WY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGNS-TV", + "community_served_city": "LAREDO", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFFF-TV", + "community_served_city": "BURLINGTON", + "community_served_state": "VT", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRAY-TV", + "community_served_city": "WAKE FOREST", + "community_served_state": "NC", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBMT", + "community_served_city": "BEAUMONT", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRDM-CD", + "community_served_city": "HARTFORD", + "community_served_state": "CT", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTUU-TV", + "community_served_city": "ANCHORAGE", + "community_served_state": "AK", + "network_affiliation": "NBC, H&I", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTMW", + "community_served_city": "SALT LAKE CITY", + "community_served_state": "UT", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSNV", + "community_served_city": "LAS VEGAS", + "community_served_state": "NV", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIII", + "community_served_city": "CORPUS CHRISTI", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRCW-TV", + "community_served_city": "SALEM", + "community_served_state": "OR", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVCW", + "community_served_city": "LAS VEGAS", + "community_served_state": "NV", + "network_affiliation": "The CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSCE", + "community_served_city": "EL PASO", + "community_served_state": "TX", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSFL-TV", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "CW, Court TV, Antenna TV, Defy, ION Plus, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTXL", + "community_served_city": "SACRAMENTO", + "community_served_state": "CA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOTV", + "community_served_city": "BATTLE CREEK", + "community_served_state": "MI", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPMT", + "community_served_city": "YORK", + "community_served_state": "PA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMSN-TV", + "community_served_city": "MADISON", + "community_served_state": "WI", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNPB", + "community_served_city": "RENO", + "community_served_state": "NV", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUSI-TV", + "community_served_city": "SAN DIEGO", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQCA", + "community_served_city": "STOCKTON", + "community_served_state": "CA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCEN-TV", + "community_served_city": "TEMPLE", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIPX-TV", + "community_served_city": "BLOOMINGTON", + "community_served_state": "IN", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJAL", + "community_served_city": "SILVER SPRING", + "community_served_state": "MD", + "network_affiliation": "Merit Street", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXYZ-TV", + "community_served_city": "DETROIT", + "community_served_state": "MI", + "network_affiliation": "ABC; Bounce TV; Laff; Court TV; Shop LC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPSP-CD", + "community_served_city": "CATHEDRAL CITY", + "community_served_state": "CA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRET-CD", + "community_served_city": "PALM SPRINGS", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCBD-TV", + "community_served_city": "CHARLESTON", + "community_served_state": "SC", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVI", + "community_served_city": "CHARLOTTE", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBFF", + "community_served_city": "BALTIMORE", + "community_served_state": "MD", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTTW", + "community_served_city": "CHICAGO", + "community_served_state": "IL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHBR", + "community_served_city": "PENSACOLA", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUPV", + "community_served_city": "ASHLAND", + "community_served_state": "VA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVFX", + "community_served_city": "CLARKSBURG", + "community_served_state": "WV", + "network_affiliation": "FOX, CW, START TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCPX-TV", + "community_served_city": "CHICAGO", + "community_served_state": "IL", + "network_affiliation": "ION, Bounce, Court TV, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGGN-TV", + "community_served_city": "SANDUSKY", + "community_served_state": "OH", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLLA", + "community_served_city": "KALAMAZOO", + "community_served_state": "MI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K20DN-D", + "community_served_city": "WICHITA FALLS", + "community_served_state": "TX", + "network_affiliation": "NRB", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGBP-TV", + "community_served_city": "OPELIKA", + "community_served_state": "AL", + "network_affiliation": "Merit Street", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHTN", + "community_served_city": "MURFREESBORO", + "community_served_state": "TN", + "network_affiliation": "Christian Television Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSFJ-TV", + "community_served_city": "LONDON", + "community_served_state": "OH", + "network_affiliation": "SCRIPPS News, Bounce, ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFGC", + "community_served_city": "PALM BEACH", + "community_served_state": "FL", + "network_affiliation": "CTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCLF", + "community_served_city": "CLEARWATER", + "community_served_state": "FL", + "network_affiliation": "CTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSTR-TV", + "community_served_city": "CINCINNATI", + "community_served_state": "OH", + "network_affiliation": "MyNet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVNY", + "community_served_city": "BURLINGTON", + "community_served_state": "VT", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIVT", + "community_served_city": "BINGHAMTON", + "community_served_state": "NY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLKN", + "community_served_city": "LINCOLN", + "community_served_state": "NE", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCAU-TV", + "community_served_city": "SIOUX CITY", + "community_served_state": "IA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKRC-TV", + "community_served_city": "CINCINNATI", + "community_served_state": "OH", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTSP", + "community_served_city": "ST. PETERSBURG", + "community_served_state": "FL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDAF-TV", + "community_served_city": "KANSAS CITY", + "community_served_state": "MO", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLVX", + "community_served_city": "LAS VEGAS", + "community_served_state": "NV", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KETF-CD", + "community_served_city": "LAREDO", + "community_served_state": "TX", + "network_affiliation": "Unimas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJXX", + "community_served_city": "ORANGE PARK", + "community_served_state": "FL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPMI-TV", + "community_served_city": "MOBILE", + "community_served_state": "AL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WATN-TV", + "community_served_city": "MEMPHIS", + "community_served_state": "TN", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTTU-TV", + "community_served_city": "TUCSON", + "community_served_state": "AZ", + "network_affiliation": "MYNET (1/1-8/31); CW (beginning 9/1)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFOX-TV", + "community_served_city": "JACKSONVILLE", + "community_served_state": "FL", + "network_affiliation": "FOX/ME-TV/HEROES & ICONS/TELEMUNDO", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOKI-TV", + "community_served_city": "TULSA", + "community_served_state": "OK", + "network_affiliation": "FOX (23.1), METV (23.2), Dabl (23.3)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSAS-TV", + "community_served_city": "WICHITA", + "community_served_state": "KS", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAAS-TV", + "community_served_city": "SALINA", + "community_served_state": "KS", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFTC", + "community_served_city": "MINNEAPOLIS", + "community_served_state": "MN", + "network_affiliation": "MNT", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLRT-TV", + "community_served_city": "LITTLE ROCK", + "community_served_state": "AR", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXXA-TV", + "community_served_city": "ALBANY", + "community_served_state": "NY", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWAY", + "community_served_city": "WILMINGTON", + "community_served_state": "NC", + "network_affiliation": "ABC,CBS,CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPMR", + "community_served_city": "SANTA BARBARA", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDSC-TV", + "community_served_city": "NEW SMYRNA BEACH", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DDWYCC", + "community_served_city": "CHICAGO", + "community_served_state": "IL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNDO", + "community_served_city": "YAKIMA", + "community_served_state": "WA", + "network_affiliation": "NBC; SWX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNDU", + "community_served_city": "RICHLAND", + "community_served_state": "WA", + "network_affiliation": "NBC; SWX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXTX", + "community_served_city": "COLUMBUS", + "community_served_state": "GA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCBI-TV", + "community_served_city": "COLUMBUS", + "community_served_state": "MS", + "network_affiliation": "CBS, FOX, MNT", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBFS-TV", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGBO-DT", + "community_served_city": "JOLIET", + "community_served_state": "IL", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPSG", + "community_served_city": "PHILADELPHIA", + "community_served_state": "PA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOCO-TV", + "community_served_city": "OKLAHOMA CITY", + "community_served_state": "OK", + "network_affiliation": "ABC, Me-TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGMB-TV", + "community_served_city": "BATON ROUGE", + "community_served_state": "LA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHBQ-TV", + "community_served_city": "MEMPHIS", + "community_served_state": "TN", + "network_affiliation": "FOX (13.1), Heroes & Icons (13.2), and ION Mystery (13.3)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWKT-TV", + "community_served_city": "WACO", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVEO-TV", + "community_served_city": "BROWNSVILLE", + "community_served_state": "TX", + "network_affiliation": "NBC and CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPEJ-TV", + "community_served_city": "ODESSA", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMSS-TV", + "community_served_city": "SHREVEPORT", + "community_served_state": "LA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFFX-TV", + "community_served_city": "PENDLETON", + "community_served_state": "OR", + "network_affiliation": "FOX, Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAXN-TV", + "community_served_city": "KANNAPOLIS", + "community_served_state": "NC", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUCF-TV", + "community_served_city": "ORLANDO", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KETH-TV", + "community_served_city": "HOUSTON", + "community_served_state": "TX", + "network_affiliation": "TRINITY BROADCASTING NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KITU-TV", + "community_served_city": "BEAUMONT", + "community_served_state": "TX", + "network_affiliation": "TRINITY BROADCASTING NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLUJ-TV", + "community_served_city": "HARLINGEN", + "community_served_state": "TX", + "network_affiliation": "TRINITY BROADCASTING NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTAS", + "community_served_city": "SAN LUIS OBISPO", + "community_served_state": "CA", + "network_affiliation": "Telexitos", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUVM-CD", + "community_served_city": "MISSOURI CITY", + "community_served_state": "TX", + "network_affiliation": "NEW TANG DYNASTY", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WATC-DT", + "community_served_city": "ATLANTA", + "community_served_state": "GA", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPBT", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEDW", + "community_served_city": "STAMFORD", + "community_served_state": "CT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEDY", + "community_served_city": "NEW HAVEN", + "community_served_state": "CT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEDH", + "community_served_city": "HARTFORD", + "community_served_state": "CT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEDN", + "community_served_city": "NORWICH", + "community_served_state": "CT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KJJC-TV", + "community_served_city": "GREAT FALLS", + "community_served_state": "MT", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KATN", + "community_served_city": "FAIRBANKS", + "community_served_state": "AK", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KJUD", + "community_served_city": "JUNEAU", + "community_served_state": "AK", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYUR", + "community_served_city": "ANCHORAGE", + "community_served_state": "AK", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPCB-TV", + "community_served_city": "GREENSBURG", + "community_served_state": "PA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKBS-TV", + "community_served_city": "ALTOONA", + "community_served_state": "PA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYPX-TV", + "community_served_city": "AMSTERDAM", + "community_served_state": "NY", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUPL", + "community_served_city": "SLIDELL", + "community_served_state": "LA", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHBF-TV", + "community_served_city": "ROCK ISLAND", + "community_served_state": "IL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WISE-TV", + "community_served_city": "FORT WAYNE", + "community_served_state": "IN", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAIT", + "community_served_city": "JONESBORO", + "community_served_state": "AR", + "network_affiliation": "ABC, NBC, CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAVE", + "community_served_city": "LOUISVILLE", + "community_served_state": "KY", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIS", + "community_served_city": "COLUMBIA", + "community_served_state": "SC", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFIE", + "community_served_city": "EVANSVILLE", + "community_served_state": "IN", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTOL", + "community_served_city": "TOLEDO", + "community_served_state": "OH", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSFA", + "community_served_city": "MONTGOMERY", + "community_served_state": "AL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPLC", + "community_served_city": "LAKE CHARLES", + "community_served_state": "LA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLOX", + "community_served_city": "BILOXI", + "community_served_state": "MS", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KJLA", + "community_served_city": "VENTURA", + "community_served_state": "CA", + "network_affiliation": "Vision Latina", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRMA-TV", + "community_served_city": "DENVER", + "community_served_state": "CO", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRMJ", + "community_served_city": "GRAND JUNCTION", + "community_served_state": "CO", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCCT-TV", + "community_served_city": "WATERBURY", + "community_served_state": "CT", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMJQ-CD", + "community_served_city": "SYRACUSE", + "community_served_state": "NY", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WONO-CD", + "community_served_city": "SYRACUSE, ETC.", + "community_served_state": "NY", + "network_affiliation": "AMG TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWYB", + "community_served_city": "BUTTE", + "community_served_state": "MT", + "network_affiliation": "ABC; SWX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTMF", + "community_served_city": "MISSOULA", + "community_served_state": "MT", + "network_affiliation": "ABC; SWX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWJE-DT", + "community_served_city": "DERRY", + "community_served_state": "NH", + "network_affiliation": "True Crime", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCBA", + "community_served_city": "SALINAS", + "community_served_state": "CA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRUA", + "community_served_city": "FAJARDO", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DDWDHS", + "community_served_city": "IRON MOUNTAIN", + "community_served_state": "MI", + "network_affiliation": "N/A", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WZBJ", + "community_served_city": "DANVILLE", + "community_served_state": "VA", + "network_affiliation": "MyNetwork, DABL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBUI", + "community_served_city": "DECATUR", + "community_served_state": "IL", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMDT", + "community_served_city": "SALISBURY", + "community_served_state": "MD", + "network_affiliation": "ABC/CW/MeTV/ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUVC-DT", + "community_served_city": "FAYETTEVILLE", + "community_served_state": "NC", + "network_affiliation": "UNIVISION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDCQ-TV", + "community_served_city": "BAD AXE", + "community_served_state": "MI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNTZ-TV", + "community_served_city": "NATCHEZ", + "community_served_state": "MS", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVMD", + "community_served_city": "TWENTYNINE PALMS", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWTI", + "community_served_city": "WATERTOWN", + "community_served_state": "NY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMIR-TV", + "community_served_city": "PALM SPRINGS", + "community_served_state": "CA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFTT-TV", + "community_served_city": "VENICE", + "community_served_state": "FL", + "network_affiliation": "The Church of Scientology", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVS", + "community_served_city": "DETROIT", + "community_served_state": "MI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WABM", + "community_served_city": "BIRMINGHAM", + "community_served_state": "AL", + "network_affiliation": "My Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLEG-CD", + "community_served_city": "DALLAS", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBCA", + "community_served_city": "ALEXANDRIA", + "community_served_state": "LA", + "network_affiliation": "Heroes and Icons", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIFR", + "community_served_city": "VISALIA", + "community_served_state": "CA", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCJB-TV", + "community_served_city": "GAINESVILLE", + "community_served_state": "FL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WABI-TV", + "community_served_city": "BANGOR", + "community_served_state": "ME", + "network_affiliation": "CBS; CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYOU", + "community_served_city": "SCRANTON", + "community_served_state": "PA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPDE-TV", + "community_served_city": "FLORENCE", + "community_served_state": "SC", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDFI", + "community_served_city": "DALLAS", + "community_served_state": "TX", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLMB", + "community_served_city": "TOLEDO", + "community_served_state": "OH", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAZD", + "community_served_city": "LAKE DALLAS", + "community_served_state": "TX", + "network_affiliation": "Spectrum News 1", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSRE", + "community_served_city": "PENSACOLA", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFXB-TV", + "community_served_city": "DUBUQUE", + "community_served_state": "IA", + "network_affiliation": "CTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSGW-TV", + "community_served_city": "SHERIDAN", + "community_served_state": "WY", + "network_affiliation": "ABC/FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNEP", + "community_served_city": "SIDNEY", + "community_served_state": "NE", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQME", + "community_served_city": "LEAD", + "community_served_state": "SD", + "network_affiliation": "MeTV/Heroes and Icons/StartTV/Catchy Comedy/Oxygen", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHME", + "community_served_city": "RAPID CITY", + "community_served_state": "SD", + "network_affiliation": "MeTV/Heroes and Icons/StartTV/Catchy Comedy/Oxygen", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDSE", + "community_served_city": "DULUTH", + "community_served_state": "MN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGMM-CD", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "Merit Street", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVM-TV", + "community_served_city": "BUTTE", + "community_served_state": "MT", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCFW-TV", + "community_served_city": "KALISPELL", + "community_served_state": "MT", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KECI-TV", + "community_served_city": "MISSOULA", + "community_served_state": "MT", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDTV-CD", + "community_served_city": "SANTA ROSA", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WETP-TV", + "community_served_city": "SNEEDVILLE", + "community_served_state": "TN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKOP-TV", + "community_served_city": "KNOXVILLE", + "community_served_state": "TN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KODE-TV", + "community_served_city": "JOPLIN", + "community_served_state": "MO", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAAL", + "community_served_city": "AUSTIN", + "community_served_state": "MN", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTWO-TV", + "community_served_city": "CASPER", + "community_served_state": "WY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQCK", + "community_served_city": "CHEYENNE", + "community_served_state": "WY", + "network_affiliation": "CTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEIU-TV", + "community_served_city": "CHARLESTON", + "community_served_state": "IL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCTI-TV", + "community_served_city": "NEW BERN", + "community_served_state": "NC", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KENW", + "community_served_city": "PORTALES", + "community_served_state": "NM", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIDP", + "community_served_city": "GUAYAMA", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMUM-CD", + "community_served_city": "SACRAMENTO", + "community_served_state": "CA", + "network_affiliation": "TELEMUNDO", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KZMM-CD", + "community_served_city": "FRESNO", + "community_served_state": "CA", + "network_affiliation": "CRTV NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVMM-CD", + "community_served_city": "SANTA BARBARA", + "community_served_state": "CA", + "network_affiliation": "COZI TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KABE-CD", + "community_served_city": "BAKERSFIELD", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVIZ", + "community_served_city": "CLEVELAND", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHLA-TV", + "community_served_city": "LA CROSSE", + "community_served_state": "WI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYDN", + "community_served_city": "LOWELL", + "community_served_state": "MA", + "network_affiliation": "IND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHWC-TV", + "community_served_city": "MENOMONIE", + "community_served_state": "WI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNET", + "community_served_city": "NEWARK", + "community_served_state": "NJ", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPNE-TV", + "community_served_city": "GREEN BAY", + "community_served_state": "WI", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLAE-TV", + "community_served_city": "NEW ORLEANS", + "community_served_state": "LA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCOS", + "community_served_city": "EL PASO", + "community_served_state": "TX", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WZVN-TV", + "community_served_city": "NAPLES", + "community_served_state": "FL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMC-TV", + "community_served_city": "MEMPHIS", + "community_served_state": "TN", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUPW", + "community_served_city": "TOLEDO", + "community_served_state": "OH", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNSN-TV", + "community_served_city": "RENO", + "community_served_state": "NV", + "network_affiliation": "MyNet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WACH", + "community_served_city": "COLUMBIA", + "community_served_state": "SC", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTNZ", + "community_served_city": "KNOXVILLE", + "community_served_state": "TN", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WECN", + "community_served_city": "NARANJITO", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBSI", + "community_served_city": "CAPE GIRARDEAU", + "community_served_state": "MO", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSBW", + "community_served_city": "SALINAS", + "community_served_state": "CA", + "network_affiliation": "NBC, ABC, ESTV, Story TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSBY", + "community_served_city": "SAN LUIS OBISPO", + "community_served_state": "CA", + "network_affiliation": "NBC; LAFF; GRIT; Court TV; Scripps News; ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFXP", + "community_served_city": "ERIE", + "community_served_state": "PA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSUR-DT", + "community_served_city": "PONCE", + "community_served_state": "PR", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLII-DT", + "community_served_city": "CAGUAS", + "community_served_state": "PR", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVEA", + "community_served_city": "CORONA", + "community_served_state": "CA", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KJNP-TV", + "community_served_city": "NORTH POLE", + "community_served_state": "AK", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WATM-TV", + "community_served_city": "ALTOONA", + "community_served_state": "PA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWCP-TV", + "community_served_city": "JOHNSTOWN", + "community_served_state": "PA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRMZ", + "community_served_city": "STEAMBOAT SPRINGS", + "community_served_state": "CO", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTWO", + "community_served_city": "TERRE HAUTE", + "community_served_state": "IN", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQTV", + "community_served_city": "ST. JOSEPH", + "community_served_state": "MO", + "network_affiliation": "ION TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRMT", + "community_served_city": "DENVER", + "community_served_state": "CO", + "network_affiliation": "IND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRPX-TV", + "community_served_city": "ROCKY MOUNT", + "community_served_state": "NC", + "network_affiliation": "ION, Court TV, IONPlus, Bounce, CRIME, Jewelry TV, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMYT-TV", + "community_served_city": "ROCK HILL", + "community_served_state": "SC", + "network_affiliation": "MyNet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWNYJ-TV", + "community_served_city": "WEST MILFORD", + "community_served_state": "NJ", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTFK-DT", + "community_served_city": "STOCKTON", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPXR-TV", + "community_served_city": "CEDAR RAPIDS", + "community_served_state": "IA", + "network_affiliation": "ION, Grit, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWHO", + "community_served_city": "CHILLICOTHE", + "community_served_state": "OH", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHGI-TV", + "community_served_city": "KEARNEY", + "community_served_state": "NE", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSNB-TV", + "community_served_city": "YORK", + "community_served_state": "NE", + "network_affiliation": "NBC/MeMY/ION/Oxygen/Outlaw", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWNB-TV", + "community_served_city": "HAYES CENTER", + "community_served_state": "NE", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFPX-TV", + "community_served_city": "ARCHER LODGE", + "community_served_state": "NC", + "network_affiliation": "SCRIPPS News, Bounce, LAFF", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDAM-TV", + "community_served_city": "LAUREL", + "community_served_state": "MS", + "network_affiliation": "NBC, ABC, Bounce, True Crime, Grit", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVO", + "community_served_city": "KIRKSVILLE", + "community_served_state": "MO", + "network_affiliation": "KTVO D1 - ABC; KTVO D2 - CBS; KTVO D3 - Comet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSTM-TV", + "community_served_city": "SYRACUSE", + "community_served_state": "NY", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPBN-TV", + "community_served_city": "TRAVERSE CITY", + "community_served_state": "MI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTOM-TV", + "community_served_city": "CHEBOYGAN", + "community_served_state": "MI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSES", + "community_served_city": "TUSCALOOSA", + "community_served_state": "AL", + "network_affiliation": "Heroes and Icons, Catchy Comedy, Start TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLUC-TV", + "community_served_city": "MARQUETTE", + "community_served_state": "MI", + "network_affiliation": "NBC, FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCAL-TV", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKPC-TV", + "community_served_city": "LOUISVILLE", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAUU", + "community_served_city": "ANCHORAGE", + "community_served_state": "AK", + "network_affiliation": "My Network, CBS and Antenna", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTNC-TV", + "community_served_city": "CONCORD", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGWG", + "community_served_city": "CHARLESTON", + "community_served_state": "SC", + "network_affiliation": "Heroes and Icons, Decades, Antenna TV, Start TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFNR", + "community_served_city": "RAWLINS", + "community_served_state": "WY", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFNE", + "community_served_city": "RIVERTON", + "community_served_state": "WY", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KATU", + "community_served_city": "PORTLAND", + "community_served_state": "OR", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOMO-TV", + "community_served_city": "SEATTLE", + "community_served_state": "WA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXX-TV", + "community_served_city": "MEMPHIS", + "community_served_state": "TN", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXL-TV", + "community_served_city": "NEW ORLEANS", + "community_served_state": "LA", + "network_affiliation": "ION, Grit, Court TV, SCRIPPS News, Jewelry TV, HSN, QVC, HSN2", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJRT-TV", + "community_served_city": "FLINT", + "community_served_state": "MI", + "network_affiliation": "ABC(D1), MeTV(D2), theGRIO (D3), Start TV (D4), Heroes & Icons (D5), Bounce (D6), This TV/MeTV Toons (D7)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSMH", + "community_served_city": "FLINT", + "community_served_state": "MI", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFSU-TV", + "community_served_city": "TALLAHASSEE", + "community_served_state": "FL", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEDU", + "community_served_city": "TAMPA", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WINK-TV", + "community_served_city": "FORT MYERS", + "community_served_state": "FL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFWA", + "community_served_city": "FORT WAYNE", + "community_served_state": "IN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBMY", + "community_served_city": "BISMARCK", + "community_served_state": "ND", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDAZ-TV", + "community_served_city": "DEVIL'S LAKE", + "community_served_state": "ND", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMCY", + "community_served_city": "MINOT", + "community_served_state": "ND", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDAY-TV", + "community_served_city": "FARGO", + "community_served_state": "ND", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRCA", + "community_served_city": "RIVERSIDE", + "community_served_state": "CA", + "network_affiliation": "EstrellaTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDAF", + "community_served_city": "DALLAS", + "community_served_state": "TX", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRIV", + "community_served_city": "HOUSTON", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNYW", + "community_served_city": "NEW YORK", + "community_served_state": "NY", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTTG", + "community_served_city": "WASHINGTON", + "community_served_state": "DC", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTTV", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFLD", + "community_served_city": "CHICAGO", + "community_served_state": "IL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSTU", + "community_served_city": "SALT LAKE CITY", + "community_served_state": "UT", + "network_affiliation": "FOX, Antenna TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFXU", + "community_served_city": "LIVE OAK", + "community_served_state": "FL", + "network_affiliation": "My Net", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVL", + "community_served_city": "MEDFORD", + "community_served_state": "OR", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFDM", + "community_served_city": "BEAUMONT", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVC", + "community_served_city": "CHATTANOOGA", + "community_served_state": "TN", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLNE-TV", + "community_served_city": "NEW BEDFORD", + "community_served_state": "MA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KKPX-TV", + "community_served_city": "SAN JOSE", + "community_served_state": "CA", + "network_affiliation": "ION, Bounce, Court TV, IONPlus, Laff, SCRIPPS News, Jewelry TV, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBDI-TV", + "community_served_city": "BROOMFIELD", + "community_served_state": "CO", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WATL", + "community_served_city": "ATLANTA", + "community_served_state": "GA", + "network_affiliation": "MYNET", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUSA", + "community_served_city": "DENVER", + "community_served_state": "CO", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KARE", + "community_served_city": "MINNEAPOLIS", + "community_served_state": "MN", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUPX-TV", + "community_served_city": "RICHMOND", + "community_served_state": "KY", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWSI", + "community_served_city": "MOUNT LAUREL", + "community_served_state": "NJ", + "network_affiliation": "TELEMUNDO", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWPX-TV", + "community_served_city": "MARTINSBURG", + "community_served_state": "WV", + "network_affiliation": "ION, Bounce, Court TV, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXVO", + "community_served_city": "OMAHA", + "community_served_state": "NE", + "network_affiliation": "TBD", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNSO", + "community_served_city": "CLOVIS", + "community_served_state": "CA", + "network_affiliation": "TELEMUNDO", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBNG-TV", + "community_served_city": "BINGHAMTON", + "community_served_state": "NY", + "network_affiliation": "CBS (12.1), CW (12.2), MeTV (12.3)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXBU", + "community_served_city": "LANCASTER", + "community_served_state": "PA", + "network_affiliation": "TelevisaUnivision, Inc", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTAJ-TV", + "community_served_city": "ALTOONA", + "community_served_state": "PA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOWK-TV", + "community_served_city": "HUNTINGTON", + "community_served_state": "WV", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIAH", + "community_served_city": "HOUSTON", + "community_served_state": "TX", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVT", + "community_served_city": "FORT WORTH", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSTW", + "community_served_city": "TACOMA", + "community_served_state": "WA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTLH", + "community_served_city": "BAINBRIDGE", + "community_served_state": "GA", + "network_affiliation": "Heroes & Icons", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWDP", + "community_served_city": "NORWELL", + "community_served_state": "MA", + "network_affiliation": "Shop LC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WABW-TV", + "community_served_city": "PELHAM", + "community_served_state": "GA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJSP-TV", + "community_served_city": "COLUMBUS", + "community_served_state": "GA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXGA-TV", + "community_served_city": "WAYCROSS", + "community_served_state": "GA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WACS-TV", + "community_served_city": "DAWSON", + "community_served_state": "GA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMUM-TV", + "community_served_city": "COCHRAN", + "community_served_state": "GA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCES-TV", + "community_served_city": "WRENS", + "community_served_state": "GA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNGH-TV", + "community_served_city": "CHATSWORTH", + "community_served_state": "GA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVAN-TV", + "community_served_city": "SAVANNAH", + "community_served_state": "GA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGTV", + "community_served_city": "ATHENS", + "community_served_state": "GA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSB-TV", + "community_served_city": "ATLANTA", + "community_served_state": "GA", + "network_affiliation": "ABC, Bounce, DABL, Comet, Scripps News (Ended 11/19/24), ION (Started 11/19/24)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEHT", + "community_served_city": "EVANSVILLE", + "community_served_state": "IN", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXGN-TV", + "community_served_city": "GLENDIVE", + "community_served_state": "MT", + "network_affiliation": "CBS/NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGBC", + "community_served_city": "MERIDIAN", + "community_served_state": "MS", + "network_affiliation": "FOX, NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCWX", + "community_served_city": "FREDERICKSBURG", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLTJ", + "community_served_city": "GALVESTON", + "community_served_state": "TX", + "network_affiliation": "IND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGEB", + "community_served_city": "TULSA", + "community_served_state": "OK", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHSL-TV", + "community_served_city": "CHICO", + "community_served_state": "CA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTFD-TV", + "community_served_city": "DENVER", + "community_served_state": "CO", + "network_affiliation": "Unimas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDOC-TV", + "community_served_city": "ANAHEIM", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K25OB-D", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "NEW TANG DYNASTY", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHLV-TV", + "community_served_city": "COCOA", + "community_served_state": "FL", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGNM", + "community_served_city": "MACON", + "community_served_state": "GA", + "network_affiliation": "CTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNAZ-TV", + "community_served_city": "FLAGSTAFF", + "community_served_state": "AZ", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMEE-TV", + "community_served_city": "KINGMAN", + "community_served_state": "AZ", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KKCO", + "community_served_city": "GRAND JUNCTION", + "community_served_state": "CO", + "network_affiliation": "KKCO", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGVK", + "community_served_city": "KALAMAZOO", + "community_served_state": "MI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGVU-TV", + "community_served_city": "GRAND RAPIDS", + "community_served_state": "MI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEEK-TV", + "community_served_city": "PEORIA", + "community_served_state": "IL", + "network_affiliation": "NBC, ABC, CW, ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWCW", + "community_served_city": "LYNCHBURG", + "community_served_state": "VA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFXR", + "community_served_city": "ROANOKE", + "community_served_state": "VA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKYT-TV", + "community_served_city": "LEXINGTON", + "community_served_state": "KY", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYMT-TV", + "community_served_city": "HAZARD", + "community_served_state": "KY", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WICU-TV", + "community_served_city": "ERIE", + "community_served_state": "PA", + "network_affiliation": "NBC (Main), MeTV (Multicast)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFFT-TV", + "community_served_city": "FORT WAYNE", + "community_served_state": "IN", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDVM-TV", + "community_served_city": "HAGERSTOWN", + "community_served_state": "MD", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXTV", + "community_served_city": "SACRAMENTO", + "community_served_state": "CA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPTO", + "community_served_city": "OXFORD", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPTD", + "community_served_city": "DAYTON", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYES-TV", + "community_served_city": "NEW ORLEANS", + "community_served_state": "LA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWBKI-TV", + "community_served_city": "CAMPBELLSVILLE", + "community_served_state": "KY", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDMD", + "community_served_city": "ANCHORAGE", + "community_served_state": "AK", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFXW", + "community_served_city": "GREENVILLE", + "community_served_state": "MS", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWTV-DT", + "community_served_city": "OKLAHOMA CITY", + "community_served_state": "OK", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFUP", + "community_served_city": "VANDERBILT", + "community_served_state": "MI", + "network_affiliation": "FOX Broadcasting Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFQX-TV", + "community_served_city": "CADILLAC", + "community_served_state": "MI", + "network_affiliation": "FOX Broadcasting Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPIX-TV", + "community_served_city": "SAN FRANCISCO", + "community_served_state": "CA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYW-TV", + "community_served_city": "PHILADELPHIA", + "community_served_state": "PA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDKA-TV", + "community_served_city": "PITTSBURGH", + "community_served_state": "PA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJZ-TV", + "community_served_city": "BALTIMORE", + "community_served_state": "MD", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBZ-TV", + "community_served_city": "BOSTON", + "community_served_state": "MA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGTF", + "community_served_city": "HAGATNA", + "community_served_state": "GU", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMYV", + "community_served_city": "GREENSBORO", + "community_served_state": "NC", + "network_affiliation": "My Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRIS-TV", + "community_served_city": "CORPUS CHRISTI", + "community_served_state": "TX", + "network_affiliation": "NBC, CW/LAFF, Grit TV, Court TV, ION, Newsy", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KESQ-TV", + "community_served_city": "PALM SPRINGS", + "community_served_state": "CA", + "network_affiliation": "ABC, CBS, FOX, CW, Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGGB-TV", + "community_served_city": "SPRINGFIELD", + "community_served_state": "MA", + "network_affiliation": "(40.1) ABC, (40.2) FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGME-TV", + "community_served_city": "PORTLAND", + "community_served_state": "ME", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WICD", + "community_served_city": "CHAMPAIGN", + "community_served_state": "IL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGAN", + "community_served_city": "CEDAR RAPIDS", + "community_served_state": "IA", + "network_affiliation": "CBS & FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WICS", + "community_served_city": "SPRINGFIELD", + "community_served_state": "IL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVOA", + "community_served_city": "TUCSON", + "community_served_state": "AZ", + "network_affiliation": "NBC, COZI", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WESH", + "community_served_city": "DAYTONA BEACH", + "community_served_state": "FL", + "network_affiliation": "NBC, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHRO-TV", + "community_served_city": "HAMPTON-NORFOLK", + "community_served_state": "VA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIFS", + "community_served_city": "JANESVILLE", + "community_served_state": "WI", + "network_affiliation": "Ion Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSCN-TV", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KION-TV", + "community_served_city": "MONTEREY", + "community_served_state": "CA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KENS", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMEB", + "community_served_city": "WAILUKU", + "community_served_state": "HI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHET", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WELU", + "community_served_city": "TOA BAJA", + "community_served_state": "PR", + "network_affiliation": "CTNI", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPPX-TV", + "community_served_city": "TOLLESON", + "community_served_state": "AZ", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWMEI", + "community_served_city": "ARECIBO", + "community_served_state": "PR", + "network_affiliation": "IND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTIN-TV", + "community_served_city": "PONCE", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWUP-TV", + "community_served_city": "SAULT STE. MARIE", + "community_served_state": "MI", + "network_affiliation": "CBS Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWTV", + "community_served_city": "CADILLAC", + "community_served_state": "MI", + "network_affiliation": "CBS Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJBF", + "community_served_city": "AUGUSTA", + "community_served_state": "GA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKTVG-TV", + "community_served_city": "GRAND ISLAND", + "community_served_state": "NE", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTGS", + "community_served_city": "HARDEEVILLE", + "community_served_state": "SC", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXP-TV", + "community_served_city": "LAKE WORTH", + "community_served_state": "FL", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHCE-TV", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "TRINITY BROADCASTING NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGEN-TV", + "community_served_city": "KEY WEST", + "community_served_state": "FL", + "network_affiliation": "EstrellaTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWBN", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "IND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUPT", + "community_served_city": "HOBBS", + "community_served_state": "NM", + "network_affiliation": "COZI", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKPT-TV", + "community_served_city": "KINGSPORT", + "community_served_state": "TN", + "network_affiliation": "COZI TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCBD", + "community_served_city": "LUBBOCK", + "community_served_state": "TX", + "network_affiliation": "NBC and DABL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLJC-TV", + "community_served_city": "BEATTYVILLE", + "community_served_state": "KY", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHUT-TV", + "community_served_city": "WASHINGTON", + "community_served_state": "DC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSTP-TV", + "community_served_city": "ST. PAUL", + "community_served_state": "MN", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WZDX", + "community_served_city": "HUNTSVILLE", + "community_served_state": "AL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSWG", + "community_served_city": "VALDOSTA", + "community_served_state": "GA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTRV-TV", + "community_served_city": "NAMPA", + "community_served_state": "ID", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTFV-CD", + "community_served_city": "MCALLEN", + "community_served_state": "TX", + "network_affiliation": "Unimas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVP", + "community_served_city": "PEORIA", + "community_served_state": "IL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTBU", + "community_served_city": "CONROE", + "community_served_state": "TX", + "network_affiliation": "QUEST", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNDY-TV", + "community_served_city": "MARION", + "community_served_state": "IN", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNPX-TV", + "community_served_city": "FRANKLIN", + "community_served_state": "TN", + "network_affiliation": "ION, Court TV, Grit, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDRB", + "community_served_city": "LOUISVILLE", + "community_served_state": "KY", + "network_affiliation": "FOX, Antenna TV, ION, Scripps News", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPPT", + "community_served_city": "PHILADELPHIA", + "community_served_state": "PA", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOLR", + "community_served_city": "SPRINGFIELD", + "community_served_state": "MO", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTTM", + "community_served_city": "HURON", + "community_served_state": "SD", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSMQ-TV", + "community_served_city": "AUSTIN", + "community_served_state": "MN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTTW", + "community_served_city": "SIOUX FALLS", + "community_served_state": "SD", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTCV", + "community_served_city": "SAN JUAN", + "community_served_state": "PR", + "network_affiliation": "MegaTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVOZ-TV", + "community_served_city": "PONCE", + "community_served_state": "PR", + "network_affiliation": "MegaTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFWD", + "community_served_city": "FORT WORTH", + "community_served_state": "TX", + "network_affiliation": "Shop LC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHIN", + "community_served_city": "RED OAK", + "community_served_state": "IA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYIN", + "community_served_city": "MASON CITY", + "community_served_state": "IA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIIN", + "community_served_city": "IOWA CITY", + "community_served_state": "IA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSIN-TV", + "community_served_city": "SIOUX CITY", + "community_served_state": "IA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTIN", + "community_served_city": "FORT DODGE", + "community_served_state": "IA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDIN-TV", + "community_served_city": "DES MOINES", + "community_served_state": "IA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBIN-TV", + "community_served_city": "COUNCIL BLUFFS", + "community_served_state": "IA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRIN", + "community_served_city": "WATERLOO", + "community_served_state": "IA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSFL-TV", + "community_served_city": "SIOUX FALLS", + "community_served_state": "SD", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTGM", + "community_served_city": "TAMUNING", + "community_served_state": "GU", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAZA-TV", + "community_served_city": "AVALON", + "community_served_state": "CA", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVW-CD", + "community_served_city": "FLAGSTAFF/DONEY PARK", + "community_served_state": "AZ", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNWA-TV", + "community_served_city": "ROGERS", + "community_served_state": "AR", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFTA-TV", + "community_served_city": "FORT SMITH", + "community_served_state": "AR", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWHTV", + "community_served_city": "JACKSON", + "community_served_state": "MI", + "network_affiliation": "MY NETWORK TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCWJ", + "community_served_city": "JACKSONVILLE", + "community_served_state": "FL", + "network_affiliation": "The CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTCE-TV", + "community_served_city": "FORT PIERCE", + "community_served_state": "FL", + "network_affiliation": "TRINITY BROADCASTING NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJEB-TV", + "community_served_city": "JACKSONVILLE", + "community_served_state": "FL", + "network_affiliation": "TRINITY BROADCASTING NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K32LT-D", + "community_served_city": "SAN LUIS OBISPO", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNYB", + "community_served_city": "JAMESTOWN", + "community_served_state": "NY", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEPT-CD", + "community_served_city": "PEEKSKILL", + "community_served_state": "NY", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDCW", + "community_served_city": "WASHINGTON", + "community_served_state": "DC", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUTF-TV", + "community_served_city": "WORCESTER", + "community_served_state": "MA", + "network_affiliation": "Unimas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHRR", + "community_served_city": "TUCSON", + "community_served_state": "AZ", + "network_affiliation": "Telemundo Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBTV", + "community_served_city": "CHARLOTTE", + "community_served_state": "NC", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWBT", + "community_served_city": "RICHMOND", + "community_served_state": "VA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLST", + "community_served_city": "SAN ANGELO", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTSB-CD", + "community_served_city": "SANTA MARIA", + "community_served_state": "CA", + "network_affiliation": "UNIMAS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSBO-CD", + "community_served_city": "SAN LUIS OBISPO", + "community_served_state": "CA", + "network_affiliation": "TIMELESS TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVC", + "community_served_city": "ROSEBURG", + "community_served_state": "OR", + "network_affiliation": "3ABN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPAN", + "community_served_city": "FORT WALTON BEACH", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCTV", + "community_served_city": "THOMASVILLE", + "community_served_state": "GA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFQX", + "community_served_city": "GRAND JUNCTION", + "community_served_state": "CO", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYAZ", + "community_served_city": "KATY", + "community_served_state": "TX", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRZG-CD", + "community_served_city": "MCALLEN", + "community_served_state": "TX", + "network_affiliation": "CRTV NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXOF-CD", + "community_served_city": "LAREDO", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXFX-CD", + "community_served_city": "BROWNSVILLE", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KASA-TV", + "community_served_city": "SANTA FE", + "community_served_state": "NM", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCNC-TV", + "community_served_city": "CHARLOTTE", + "community_served_state": "NC", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHAS-TV", + "community_served_city": "LOUISVILLE", + "community_served_state": "KY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJYS", + "community_served_city": "HAMMOND", + "community_served_state": "IN", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVAW", + "community_served_city": "EAGLE PASS", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDFX-TV", + "community_served_city": "OZARK", + "community_served_state": "AL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMVU-DT", + "community_served_city": "MEDFORD", + "community_served_state": "OR", + "network_affiliation": "FOX, Telemundo, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVTV", + "community_served_city": "LAREDO", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KZTV", + "community_served_city": "CORPUS CHRISTI", + "community_served_state": "TX", + "network_affiliation": "CBS, Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCTX", + "community_served_city": "NEW HAVEN", + "community_served_state": "CT", + "network_affiliation": "MyNet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KADN-TV", + "community_served_city": "LAFAYETTE", + "community_served_state": "LA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSMO-TV", + "community_served_city": "KANSAS CITY", + "community_served_state": "MO", + "network_affiliation": "My Net 62.1/Grio/H&I 62.2/Dabl 62.3/Cozi 62.4/Comet 62.5", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPXE-TV", + "community_served_city": "KANSAS CITY", + "community_served_state": "MO", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPTS", + "community_served_city": "HUTCHINSON", + "community_served_state": "KS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KARK-TV", + "community_served_city": "LITTLE ROCK", + "community_served_state": "AR", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KATC", + "community_served_city": "LAFAYETTE", + "community_served_state": "LA", + "network_affiliation": "ABC; CW; GRIT; COURT TV; BOUNCE", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KATV", + "community_served_city": "LITTLE ROCK", + "community_served_state": "AR", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYMA-DT", + "community_served_city": "YUMA", + "community_served_state": "AZ", + "network_affiliation": "CBS/NBC/Estrella/ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBJR-TV", + "community_served_city": "SUPERIOR", + "community_served_state": "WI", + "network_affiliation": "NBC, CBS, My9, H&I", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEYE-TV", + "community_served_city": "AUSTIN", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCCI", + "community_served_city": "DES MOINES", + "community_served_state": "IA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFOX-TV", + "community_served_city": "EL PASO", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCIT", + "community_served_city": "AMARILLO", + "community_served_state": "TX", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCOP-TV", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "MyNet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNVN", + "community_served_city": "CHICO", + "community_served_state": "CA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCTS-TV", + "community_served_city": "SEATTLE", + "community_served_state": "WA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYVE", + "community_served_city": "YAKIMA", + "community_served_state": "WA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBZK", + "community_served_city": "BOZEMAN", + "community_served_state": "MT", + "network_affiliation": "CBS, MTN, Grit, Ion, Court TV, Scripps News, Laff", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDBC-TV", + "community_served_city": "EL PASO", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDFW", + "community_served_city": "DALLAS", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDTV-DT", + "community_served_city": "SAN FRANCISCO", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KKFX-CD", + "community_served_city": "SAN LUIS OBISPO", + "community_served_state": "CA", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCRA-TV", + "community_served_city": "SACRAMENTO", + "community_served_state": "CA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCPQ", + "community_served_city": "TACOMA", + "community_served_state": "WA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBKI", + "community_served_city": "SALEM", + "community_served_state": "IN", + "network_affiliation": "CW, My Network, Cozi, Movies, Ion Plus, Ion Mystery", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKAS", + "community_served_city": "ASHLAND", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKMU", + "community_served_city": "MURRAY", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKGB-TV", + "community_served_city": "BOWLING GREEN", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKZT-TV", + "community_served_city": "ELIZABETHTOWN", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKMJ-TV", + "community_served_city": "LOUISVILLE", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKHA", + "community_served_city": "HAZARD", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKPI-TV", + "community_served_city": "PIKEVILLE", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKMR", + "community_served_city": "MOREHEAD", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCVN-TV", + "community_served_city": "COVINGTON", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKOH", + "community_served_city": "OWENSBORO", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKLE", + "community_served_city": "LEXINGTON", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKON", + "community_served_city": "OWENTON", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKMA-TV", + "community_served_city": "MADISONVILLE", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKSO-TV", + "community_served_city": "SOMERSET", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNYI", + "community_served_city": "ITHACA", + "community_served_state": "NY", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTKO-CD", + "community_served_city": "ONEIDA", + "community_served_state": "NY", + "network_affiliation": "Cornerstone TeleVision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWDG-CD", + "community_served_city": "UTICA", + "community_served_state": "NY", + "network_affiliation": "Cornerstone TeleVision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOTA-TV", + "community_served_city": "RAPID CITY", + "community_served_state": "SD", + "network_affiliation": "ABC/FOX/True Crime/Grit/Outlaw", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHSD-TV", + "community_served_city": "LEAD", + "community_served_state": "SD", + "network_affiliation": "ABC/FOX/True Crime/Grit/Outlaw", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEZI", + "community_served_city": "EUGENE", + "community_served_state": "OR", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFBB-TV", + "community_served_city": "GREAT FALLS", + "community_served_state": "MT", + "network_affiliation": "ABC; SWX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBTF-CD", + "community_served_city": "BAKERSFIELD", + "community_served_state": "CA", + "network_affiliation": "UNIMAS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFTV-DT", + "community_served_city": "HANFORD", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEMO-TV", + "community_served_city": "FREMONT", + "community_served_state": "CA", + "network_affiliation": "VISION LATINA", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGMB", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGBT-TV", + "community_served_city": "HARLINGEN", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGET-TV", + "community_served_city": "BAKERSFIELD", + "community_served_state": "CA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGO-TV", + "community_served_city": "SAN FRANCISCO", + "community_served_state": "CA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIKU", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHOU", + "community_served_city": "HOUSTON", + "community_served_state": "TX", + "network_affiliation": "QUEST", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHQ-TV", + "community_served_city": "SPOKANE", + "community_served_state": "WA", + "network_affiliation": "NBC; SWX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KICU-TV", + "community_served_city": "SAN JOSE", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRDT-CD", + "community_served_city": "REDDING", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSIX-TV", + "community_served_city": "HILO", + "community_served_state": "HI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KING-TV", + "community_served_city": "SEATTLE", + "community_served_state": "WA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVB", + "community_served_city": "BOISE", + "community_served_state": "ID", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOGG", + "community_served_city": "WAILUKU", + "community_served_state": "HI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHNL", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KREM", + "community_served_city": "SPOKANE", + "community_served_state": "WA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGW", + "community_served_city": "PORTLAND", + "community_served_state": "OR", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KKTV", + "community_served_city": "COLORADO SPRINGS", + "community_served_state": "CO", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLAS-TV", + "community_served_city": "LAS VEGAS", + "community_served_state": "NV", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLFY-TV", + "community_served_city": "LAFAYETTE", + "community_served_state": "LA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTFQ-TV", + "community_served_city": "ALBUQUERQUE", + "community_served_state": "NM", + "network_affiliation": "UniMas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWBA-TV", + "community_served_city": "SIERRA VISTA", + "community_served_state": "AZ", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWKB", + "community_served_city": "IOWA CITY", + "community_served_state": "IA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KKJB", + "community_served_city": "BOISE", + "community_served_state": "ID", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKBEO", + "community_served_city": "JACKSON", + "community_served_state": "WY", + "network_affiliation": "AMERICA ONE", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKCFG", + "community_served_city": "FLAGSTAFF", + "community_served_state": "AZ", + "network_affiliation": "AMER1", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMEX-DT", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMID", + "community_served_city": "MIDLAND", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMCB", + "community_served_city": "COOS BAY", + "community_served_state": "OR", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTCW", + "community_served_city": "ROSEBURG", + "community_served_state": "OR", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMTR", + "community_served_city": "EUGENE", + "community_served_state": "OR", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMTV-TV", + "community_served_city": "OMAHA", + "community_served_state": "NE", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMVT", + "community_served_city": "TWIN FALLS", + "community_served_state": "ID", + "network_affiliation": "CBS. FOX, CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNSD", + "community_served_city": "SAN DIEGO", + "community_served_state": "CA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNTV", + "community_served_city": "SAN JOSE", + "community_served_state": "CA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOB", + "community_served_city": "ALBUQUERQUE", + "community_served_state": "NM", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOBF", + "community_served_city": "FARMINGTON", + "community_served_state": "NM", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFXA", + "community_served_city": "CEDAR RAPIDS", + "community_served_state": "IA", + "network_affiliation": "DABL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOIN", + "community_served_city": "PORTLAND", + "community_served_state": "OR", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCWG", + "community_served_city": "LEXINGTON", + "community_served_state": "NC", + "network_affiliation": "WCWG/Bounce/Dabl", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOKH-TV", + "community_served_city": "OKLAHOMA CITY", + "community_served_state": "OK", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KONG", + "community_served_city": "EVERETT", + "community_served_state": "WA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPLR-TV", + "community_served_city": "ST. LOUIS", + "community_served_state": "MO", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWDK", + "community_served_city": "TACOMA", + "community_served_state": "WA", + "network_affiliation": "REL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOTV-DT", + "community_served_city": "TULSA", + "community_served_state": "OK", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPAX-TV", + "community_served_city": "MISSOULA", + "community_served_state": "MT", + "network_affiliation": "CBS, COURT TV, GRIT, ION, NEWSY, MTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPDX", + "community_served_city": "VANCOUVER", + "community_served_state": "WA", + "network_affiliation": "MyNetwork TV (D1), Ion Mystery (D2), Outlaw (D3), Court TV (D4)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPNX", + "community_served_city": "MESA", + "community_served_state": "AZ", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQED", + "community_served_city": "SAN FRANCISCO", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTFF-DT", + "community_served_city": "PORTERVILLE", + "community_served_state": "CA", + "network_affiliation": "UniMas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQDS-TV", + "community_served_city": "DULUTH", + "community_served_state": "MN", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRTV", + "community_served_city": "GREAT FALLS", + "community_served_state": "MT", + "network_affiliation": "CBS Ch 3.1, CW/MTN Ch 3.2, Grit CH 3.3, DEFY Ch 3.4, Newsy", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVX", + "community_served_city": "FORT PIERCE", + "community_served_state": "FL", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJAX-TV", + "community_served_city": "JACKSONVILLE", + "community_served_state": "FL", + "network_affiliation": "CBS/COZI TV/CATCHY COMEDY/ME TV TOONS (EFFECITVE 6/24/24)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYDO", + "community_served_city": "GREENVILLE", + "community_served_state": "NC", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSAX", + "community_served_city": "ALEXANDRIA", + "community_served_state": "MN", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRWF", + "community_served_city": "REDWOOD FALLS", + "community_served_state": "MN", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSAZ-TV", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSEE", + "community_served_city": "FRESNO", + "community_served_state": "CA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSKN", + "community_served_city": "SPOKANE", + "community_served_state": "WA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSCI", + "community_served_city": "LONG BEACH", + "community_served_state": "CA", + "network_affiliation": "Shop LC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSMS-TV", + "community_served_city": "MONTEREY", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKGHZ", + "community_served_city": "SPRINGFIELD", + "community_served_state": "MO", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSWO-TV", + "community_served_city": "LAWTON", + "community_served_state": "OK", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTAL-TV", + "community_served_city": "TEXARKANA", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTBC", + "community_served_city": "AUSTIN", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTBS-TV", + "community_served_city": "SHREVEPORT", + "community_served_state": "LA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTBY", + "community_served_city": "ANCHORAGE", + "community_served_state": "AK", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQEH", + "community_served_city": "SAN JOSE", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTEN", + "community_served_city": "ADA", + "community_served_state": "OK", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTLA", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTRK-TV", + "community_served_city": "HOUSTON", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTTC", + "community_served_city": "ROCHESTER", + "community_served_state": "MN", + "network_affiliation": "NBC, CW, Heroes & Icons", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTUL", + "community_served_city": "TULSA", + "community_served_state": "OK", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVE", + "community_served_city": "EL DORADO", + "community_served_state": "AR", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVI", + "community_served_city": "ST. LOUIS", + "community_served_state": "MO", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVQ", + "community_served_city": "BILLINGS", + "community_served_state": "MT", + "network_affiliation": "CBS Ch 2.1, CW/MTN Ch 2.2", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVU", + "community_served_city": "OAKLAND", + "community_served_state": "CA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVW-DT", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KULR-TV", + "community_served_city": "BILLINGS", + "community_served_state": "MT", + "network_affiliation": "NBC; SWX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAZT-TV", + "community_served_city": "PRESCOTT", + "community_served_state": "AZ", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMYU", + "community_served_city": "ST. GEORGE", + "community_served_state": "UT", + "network_affiliation": "My Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUTV", + "community_served_city": "SALT LAKE CITY", + "community_served_state": "UT", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUVN-DT", + "community_served_city": "GARLAND", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSTC-TV", + "community_served_city": "MINNEAPOLIS", + "community_served_state": "MN", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVCT", + "community_served_city": "VICTORIA", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVHP", + "community_served_city": "LAKE CHARLES", + "community_served_state": "LA", + "network_affiliation": "KVHP", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVIE", + "community_served_city": "SACRAMENTO", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVOS-TV", + "community_served_city": "BELLINGHAM", + "community_served_state": "WA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVUE", + "community_served_city": "AUSTIN", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVVU-TV", + "community_served_city": "HENDERSON", + "community_served_state": "NV", + "network_affiliation": "5.1 FOX, 5.2 SSSEN, 5.3 Court TV Mystery, 5.4 Dabl", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWEX-DT", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTFO-CD", + "community_served_city": "AUSTIN", + "community_served_state": "TX", + "network_affiliation": "Unimas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWGN-TV", + "community_served_city": "DENVER", + "community_served_state": "CO", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWTX-TV", + "community_served_city": "WACO", + "community_served_state": "TX", + "network_affiliation": "CBS / Telemundo / MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXLT-TV", + "community_served_city": "ROCHESTER", + "community_served_state": "MN", + "network_affiliation": "FOX, Me-TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPXM-TV", + "community_served_city": "ST. CLOUD", + "community_served_state": "MN", + "network_affiliation": "ION, Bounce, Grit, Mystery, Laff, SCRIPPS News, Jewelry TV, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVLT-TV", + "community_served_city": "KNOXVILLE", + "community_served_state": "TN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBVO", + "community_served_city": "LLANO", + "community_served_state": "TX", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHPZ-CD", + "community_served_city": "ROUND ROCK", + "community_served_state": "TX", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHPX-CD", + "community_served_city": "GEORGETOWN", + "community_served_state": "TX", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHPL-CD", + "community_served_city": "LA GRANGE", + "community_served_state": "TX", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBVO-CD", + "community_served_city": "AUSTIN", + "community_served_state": "TX", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXAN-TV", + "community_served_city": "AUSTIN", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHPM-CD", + "community_served_city": "SAN MARCOS", + "community_served_state": "TX", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHPF-CD", + "community_served_city": "FREDERICKSBURG", + "community_served_state": "TX", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXII", + "community_served_city": "SHERMAN", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXLF-TV", + "community_served_city": "BUTTE", + "community_served_state": "MT", + "network_affiliation": "CBS, MTN, Grit, Ion, Court TV, Scripps News, Laff", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXRM-TV", + "community_served_city": "COLORADO SPRINGS", + "community_served_state": "CO", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXTX-TV", + "community_served_city": "DALLAS", + "community_served_state": "TX", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYTV", + "community_served_city": "SPRINGFIELD", + "community_served_state": "MO", + "network_affiliation": "NBC, ABC, CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHME-TV", + "community_served_city": "SOUTH BEND", + "community_served_state": "IN", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVYE", + "community_served_city": "EL CENTRO", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUCW", + "community_served_city": "MINNEAPOLIS", + "community_served_state": "MN", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVF", + "community_served_city": "NASHVILLE", + "community_served_state": "TN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLAJ", + "community_served_city": "LANSING", + "community_served_state": "MI", + "network_affiliation": "ABC/CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KJZZ-TV", + "community_served_city": "SALT LAKE CITY", + "community_served_state": "UT", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSKJ-CD", + "community_served_city": "VAN NUYS", + "community_served_state": "CA", + "network_affiliation": "DAYSTAR TELEVISION NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOOD-TV", + "community_served_city": "GRAND RAPIDS", + "community_served_state": "MI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWHE", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSAZ-TV", + "community_served_city": "HUNTINGTON", + "community_served_state": "WV", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGMD-TV", + "community_served_city": "HILO", + "community_served_state": "HI", + "network_affiliation": "MyNet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTDO", + "community_served_city": "LAS CRUCES", + "community_served_state": "NM", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHII-TV", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "MyNet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGUN-TV", + "community_served_city": "TUCSON", + "community_served_state": "AZ", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGMV", + "community_served_city": "WAILUKU", + "community_served_state": "HI", + "network_affiliation": "MyNet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLVT-TV", + "community_served_city": "ALLENTOWN", + "community_served_state": "PA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KARZ-TV", + "community_served_city": "LITTLE ROCK", + "community_served_state": "AR", + "network_affiliation": "MyNetworkTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWHB", + "community_served_city": "TULSA", + "community_served_state": "OK", + "network_affiliation": "CTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KETD", + "community_served_city": "CASTLE ROCK", + "community_served_state": "CO", + "network_affiliation": "EstrellaTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHMB-TV", + "community_served_city": "INDIANAPOLIS", + "community_served_state": "IN", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXHI", + "community_served_city": "HILO", + "community_served_state": "HI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXE-TV", + "community_served_city": "KENOSHA", + "community_served_state": "WI", + "network_affiliation": "ION, Bounce, Court TV, Grit, IONPlus, SCRIPPS News, Jewelry TV, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLEI", + "community_served_city": "WAILUKU", + "community_served_state": "HI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHNO", + "community_served_city": "NEW ORLEANS", + "community_served_state": "LA", + "network_affiliation": "CTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJCL", + "community_served_city": "SAVANNAH", + "community_served_state": "GA", + "network_affiliation": "ABC, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLTX", + "community_served_city": "COLUMBIA", + "community_served_state": "SC", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLTZ", + "community_served_city": "COLUMBUS", + "community_served_state": "GA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLIO", + "community_served_city": "LIMA", + "community_served_state": "OH", + "network_affiliation": "NBC, FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTSF", + "community_served_city": "SAN FRANCISCO", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAXT-CD", + "community_served_city": "SAN FRANCISO, SAN JO", + "community_served_state": "CA", + "network_affiliation": "Catchy Comedy", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLOV-TV", + "community_served_city": "WEST POINT", + "community_served_state": "MS", + "network_affiliation": "CW, METV, THISTV, METV Toons", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLFB", + "community_served_city": "BLUEFIELD", + "community_served_state": "WV", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLFG", + "community_served_city": "GRUNDY", + "community_served_state": "VA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAGV", + "community_served_city": "HARLAN", + "community_served_state": "KY", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXU-TV", + "community_served_city": "JACKSONVILLE", + "community_served_state": "NC", + "network_affiliation": "ION, Court TV, Grit, Laff, IonPlus, SCRIPPS News, Jewelry TV, HSN, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWFXI", + "community_served_city": "MOREHEAD CITY", + "community_served_state": "NC", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSBI", + "community_served_city": "OKLAHOMA CITY", + "community_served_state": "OK", + "network_affiliation": "MyNetwork TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLIW", + "community_served_city": "GARDEN CITY", + "community_served_state": "NY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDEN-TV", + "community_served_city": "LONGMONT", + "community_served_state": "CO", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLCS", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGBS-CD", + "community_served_city": "AUSTIN", + "community_served_state": "TX", + "network_affiliation": "TBD NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMCT-TV", + "community_served_city": "WEST MONROE", + "community_served_state": "LA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLPB-TV", + "community_served_city": "BATON ROUGE", + "community_served_state": "LA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLTL-TV", + "community_served_city": "LAKE CHARLES", + "community_served_state": "LA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLPB-TV", + "community_served_city": "LAFAYETTE", + "community_served_state": "LA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLTM-TV", + "community_served_city": "MONROE", + "community_served_state": "LA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLPA-TV", + "community_served_city": "ALEXANDRIA", + "community_served_state": "LA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLTS-TV", + "community_served_city": "SHREVEPORT", + "community_served_state": "LA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBRZ-TV", + "community_served_city": "BATON ROUGE", + "community_served_state": "LA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WISH-TV", + "community_served_city": "INDIANAPOLIS", + "community_served_state": "IN", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WANE-TV", + "community_served_city": "FORT WAYNE", + "community_served_state": "IN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDKA", + "community_served_city": "PADUCAH", + "community_served_state": "KY", + "network_affiliation": "My Network TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLBZ", + "community_served_city": "BANGOR", + "community_served_state": "ME", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMEB-TV", + "community_served_city": "ORONO", + "community_served_state": "ME", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMED-TV", + "community_served_city": "CALAIS", + "community_served_state": "ME", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMEA-TV", + "community_served_city": "BIDDEFORD", + "community_served_state": "ME", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCBB", + "community_served_city": "AUGUSTA", + "community_served_state": "ME", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMEM-TV", + "community_served_city": "PRESQUE ISLE", + "community_served_state": "ME", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCSH", + "community_served_city": "PORTLAND", + "community_served_state": "ME", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMEG", + "community_served_city": "SIOUX CITY", + "community_served_state": "IA", + "network_affiliation": "Dabl", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFLX", + "community_served_city": "WEST PALM BEACH", + "community_served_state": "FL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXIX-TV", + "community_served_city": "NEWPORT", + "community_served_state": "KY", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOIO", + "community_served_city": "SHAKER HEIGHTS", + "community_served_state": "OH", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFMZ-TV", + "community_served_city": "ALLENTOWN", + "community_served_state": "PA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIRS", + "community_served_city": "YAUCO", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCWT-CD", + "community_served_city": "LA FERIA", + "community_served_state": "TX", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLWY", + "community_served_city": "CHEYENNE", + "community_served_state": "WY", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVII-TV", + "community_served_city": "AMARILLO", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVIH-TV", + "community_served_city": "CLOVIS", + "community_served_state": "NM", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAJB", + "community_served_city": "CALIPATRIA", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCPB", + "community_served_city": "SALISBURY", + "community_served_state": "MD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGPT", + "community_served_city": "OAKLAND", + "community_served_state": "MD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFPT", + "community_served_city": "FREDERICK", + "community_served_state": "MD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSYT", + "community_served_city": "SYRACUSE", + "community_served_state": "NY", + "network_affiliation": "FOX/COZI-TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVZ-TV", + "community_served_city": "NORFOLK", + "community_served_state": "VA", + "network_affiliation": "My Network TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEMT", + "community_served_city": "GREENEVILLE", + "community_served_state": "TN", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAMC", + "community_served_city": "LUBBOCK", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXS", + "community_served_city": "MOUNT VERNON", + "community_served_state": "IL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMGH-TV", + "community_served_city": "DENVER", + "community_served_state": "CO", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGTV", + "community_served_city": "SAN DIEGO", + "community_served_state": "CA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRTV", + "community_served_city": "INDIANAPOLIS", + "community_served_state": "IN", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KERO-TV", + "community_served_city": "BAKERSFIELD", + "community_served_state": "CA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKTC", + "community_served_city": "SUMTER", + "community_served_state": "SC", + "network_affiliation": "My Network TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVK", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTXL-TV", + "community_served_city": "TALLAHASSEE", + "community_served_state": "FL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRTD-CD", + "community_served_city": "RALEIGH", + "community_served_state": "NC", + "network_affiliation": "TELEMUNDO", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRCG", + "community_served_city": "JEFFERSON CITY", + "community_served_state": "MO", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K10OG-D", + "community_served_city": "LOMPOC", + "community_served_state": "CA", + "network_affiliation": "UNIMAS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLDF-CD", + "community_served_city": "LOMPOC", + "community_served_state": "CA", + "network_affiliation": "TIMELESS TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJTC", + "community_served_city": "PENSACOLA", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KASN", + "community_served_city": "PINE BLUFF", + "community_served_state": "AR", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNEM-TV", + "community_served_city": "BAY CITY", + "community_served_state": "MI", + "network_affiliation": "5.1 (CBS); 5.2 (MyNetwork); 5.3 (Cozi); 5.4 (Ion)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPHO-TV", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOFL", + "community_served_city": "ORLANDO", + "community_served_state": "FL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCTV", + "community_served_city": "KANSAS CITY", + "community_served_state": "MO", + "network_affiliation": "CBS 5.1/The 365 5.2/This TV & Start 5.3/Quest 5.4/The Outlaw5.5", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSMV-TV", + "community_served_city": "NASHVILLE", + "community_served_state": "TN", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMCC", + "community_served_city": "LAUGHLIN", + "community_served_state": "NV", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WINP-TV", + "community_served_city": "PITTSBURGH", + "community_served_state": "PA", + "network_affiliation": "ION, Bounce, Mystery, IONPlus, SCRIPPS News, Jewelry TV, QVC, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQED", + "community_served_city": "PITTSBURGH", + "community_served_state": "PA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFYI", + "community_served_city": "INDIANAPOLIS", + "community_served_state": "IN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNPT", + "community_served_city": "NASHVILLE", + "community_served_state": "TN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMOT", + "community_served_city": "MINOT", + "community_served_state": "ND", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFYR-TV", + "community_served_city": "BISMARCK", + "community_served_state": "ND", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUMV-TV", + "community_served_city": "WILLISTON", + "community_served_state": "ND", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQCD-TV", + "community_served_city": "DICKINSON", + "community_served_state": "ND", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMFP", + "community_served_city": "FOXBOROUGH", + "community_served_state": "MA", + "network_affiliation": "IND 1/1 - 3/31/24, Shop LC 4/1 - 12/31/24", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHIO-TV", + "community_served_city": "DAYTON", + "community_served_state": "OH", + "network_affiliation": "CBS Network (7.1), METV (7.2), Laff (7.3), METV Toons (7.4)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFPH-DT", + "community_served_city": "FLAGSTAFF", + "community_served_state": "AZ", + "network_affiliation": "UniMas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNIT", + "community_served_city": "SOUTH BEND", + "community_served_state": "IN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNDU-TV", + "community_served_city": "SOUTH BEND", + "community_served_state": "IN", + "network_affiliation": "NBC, AntennaTV, GetTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMFD-TV", + "community_served_city": "MANSFIELD", + "community_served_state": "OH", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPLO-TV", + "community_served_city": "RELIANCE", + "community_served_state": "SD", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCLO-TV", + "community_served_city": "RAPID CITY", + "community_served_state": "SD", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDLO-TV", + "community_served_city": "FLORENCE", + "community_served_state": "SD", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KELO-TV", + "community_served_city": "SIOUX FALLS", + "community_served_state": "SD", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWES-TV", + "community_served_city": "ODESSA", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCWO-TV", + "community_served_city": "BIG SPRING", + "community_served_state": "TX", + "network_affiliation": "CW PLUS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKNO", + "community_served_city": "MEMPHIS", + "community_served_state": "TN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCIX", + "community_served_city": "SPRINGFIELD", + "community_served_state": "IL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMBD-TV", + "community_served_city": "PEORIA", + "community_served_state": "IL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFMB-TV", + "community_served_city": "SAN DIEGO", + "community_served_state": "CA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCIA", + "community_served_city": "CHAMPAIGN", + "community_served_state": "IL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTXD-TV", + "community_served_city": "GREENVILLE", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMCI-TV", + "community_served_city": "LAWRENCE", + "community_served_state": "KS", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKJRW", + "community_served_city": "EUREKA", + "community_served_state": "CA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMVS", + "community_served_city": "MILWAUKEE", + "community_served_state": "WI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMVT", + "community_served_city": "MILWAUKEE", + "community_served_state": "WI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMTP-TV", + "community_served_city": "SAN FRANCISCO", + "community_served_state": "CA", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMPN-TV", + "community_served_city": "JACKSON", + "community_served_state": "MS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMAW-TV", + "community_served_city": "MERIDIAN", + "community_served_state": "MS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMAE-TV", + "community_served_city": "BOONEVILLE", + "community_served_state": "MS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMAO-TV", + "community_served_city": "GREENWOOD", + "community_served_state": "MS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMAU-TV", + "community_served_city": "BUDE", + "community_served_state": "MS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMAB-TV", + "community_served_city": "MISSISSIPPI STATE", + "community_served_state": "MS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMAV-TV", + "community_served_city": "OXFORD", + "community_served_state": "MS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMAH-TV", + "community_served_city": "BILOXI", + "community_served_state": "MS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WABG-TV", + "community_served_city": "GREENWOOD", + "community_served_state": "MS", + "network_affiliation": "ABC and FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRGV-TV", + "community_served_city": "WESLACO", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFXV", + "community_served_city": "UTICA", + "community_served_state": "NY", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUSM-TV", + "community_served_city": "BOZEMAN", + "community_served_state": "MT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDHN", + "community_served_city": "DOTHAN", + "community_served_state": "AL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMGT-TV", + "community_served_city": "MACON", + "community_served_state": "GA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRLM", + "community_served_city": "CANTON", + "community_served_state": "OH", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMBC-TV", + "community_served_city": "NEWTON", + "community_served_state": "NJ", + "network_affiliation": "Merit Street Media", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMSB", + "community_served_city": "TUCSON", + "community_served_state": "AZ", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCAX-TV", + "community_served_city": "BURLINGTON", + "community_served_state": "VT", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDIT-CD", + "community_served_city": "Des Moines", + "community_served_state": "IA", + "network_affiliation": "Catchy Comedy", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCFE-TV", + "community_served_city": "PLATTSBURGH", + "community_served_state": "NY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLWT", + "community_served_city": "CINCINNATI", + "community_served_state": "OH", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSDK", + "community_served_city": "ST. LOUIS", + "community_served_state": "MO", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBIR-TV", + "community_served_city": "KNOXVILLE", + "community_served_state": "TN", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMAZ-TV", + "community_served_city": "MACON", + "community_served_state": "GA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIXE-TV", + "community_served_city": "REDDING", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTKR", + "community_served_city": "NORFOLK", + "community_served_state": "VA", + "network_affiliation": "CBS, Court TV, Bounce, HSN, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPRI-TV", + "community_served_city": "PROVIDENCE", + "community_served_state": "RI", + "network_affiliation": "CBS, myNetwork, Dabl", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNBC", + "community_served_city": "NEW YORK", + "community_served_state": "NY", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHMT", + "community_served_city": "HARDIN", + "community_served_state": "MT", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVIR-CD", + "community_served_city": "CHARLOTTESVILLE", + "community_served_state": "VA", + "network_affiliation": "NBC, CW, TRUE CRIME", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNMT", + "community_served_city": "PORTLAND", + "community_served_state": "OR", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFOR-TV", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCNC-TV", + "community_served_city": "DENVER", + "community_served_state": "CO", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRC-TV", + "community_served_city": "WASHINGTON", + "community_served_state": "DC", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMAQ-TV", + "community_served_city": "CHICAGO", + "community_served_state": "IL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNBC", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVIA-TV", + "community_served_city": "SCRANTON", + "community_served_state": "PA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRNE-TV", + "community_served_city": "MERRIMAN", + "community_served_state": "NE", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPNE-TV", + "community_served_city": "NORTH PLATTE", + "community_served_state": "NE", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYNE-TV", + "community_served_city": "OMAHA", + "community_served_state": "NE", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLNE-TV", + "community_served_city": "LEXINGTON", + "community_served_state": "NE", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMNE-TV", + "community_served_city": "BASSETT", + "community_served_state": "NE", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHNE-TV", + "community_served_city": "HASTINGS", + "community_served_state": "NE", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXNE-TV", + "community_served_city": "NORFOLK", + "community_served_state": "NE", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTNE-TV", + "community_served_city": "ALLIANCE", + "community_served_state": "NE", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNHL", + "community_served_city": "HASTINGS", + "community_served_state": "NE", + "network_affiliation": "METV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSJN-CD", + "community_served_city": "SAN JUAN", + "community_served_state": "PR", + "network_affiliation": "CTNI", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAGM-TV", + "community_served_city": "PRESQUE ISLE", + "community_served_state": "ME", + "network_affiliation": "CBS, FOX, CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRXI-TV", + "community_served_city": "RENO", + "community_served_state": "NV", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXG-TV", + "community_served_city": "CONCORD", + "community_served_state": "NH", + "network_affiliation": "ION, Mystery, SCRIPPS News, Bounce, IonPlus, Jewlery TV, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIPL", + "community_served_city": "LEWISTON", + "community_served_state": "ME", + "network_affiliation": "ION, Court TV Bounce Grit IONPlus", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNJB", + "community_served_city": "NEW BRUNSWICK", + "community_served_state": "NJ", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNJT", + "community_served_city": "TRENTON", + "community_served_state": "NJ", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNJN", + "community_served_city": "MONTCLAIR", + "community_served_state": "NJ", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNJS", + "community_served_city": "CAMDEN", + "community_served_state": "NJ", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFDR", + "community_served_city": "JEFFERSON CITY", + "community_served_state": "MO", + "network_affiliation": "CTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNLC", + "community_served_city": "ST. LOUIS", + "community_served_state": "MO", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBIM-TV", + "community_served_city": "ROSWELL", + "community_served_state": "NM", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRQE", + "community_served_city": "ALBUQUERQUE", + "community_served_state": "NM", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KREZ-TV", + "community_served_city": "DURANGO", + "community_served_state": "CO", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXM-TV", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "ION, Bounce, Grit, Laff, SCRIPPS News, HSN, Jewelry TV, Mystery", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSFY-TV", + "community_served_city": "SIOUX FALLS", + "community_served_state": "SD", + "network_affiliation": "ABC/MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKABY-TV", + "community_served_city": "ABERDEEN", + "community_served_state": "SD", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPRY-TV", + "community_served_city": "PIERRE", + "community_served_state": "SD", + "network_affiliation": "NBC/ABC/FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSAV-TV", + "community_served_city": "SAVANNAH", + "community_served_state": "GA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOLD-TV", + "community_served_city": "TUCSON", + "community_served_state": "AZ", + "network_affiliation": "CBS, MeTV, Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WECT", + "community_served_city": "WILMINGTON", + "community_served_state": "NC", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJTV", + "community_served_city": "JACKSON", + "community_served_state": "MS", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHLT", + "community_served_city": "HATTIESBURG", + "community_served_state": "MS", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHNT-TV", + "community_served_city": "HUNTSVILLE", + "community_served_state": "AL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPWR-TV", + "community_served_city": "GARY", + "community_served_state": "IN", + "network_affiliation": "FOX PLUS/MY NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUVG-DT", + "community_served_city": "ATHENS", + "community_served_state": "GA", + "network_affiliation": "UNIVISION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCRP-CD", + "community_served_city": "CORPUS CHRISTI", + "community_served_state": "TX", + "network_affiliation": "Unimas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXLK-CD", + "community_served_city": "AUSTIN", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCOR-CD", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNOE-TV", + "community_served_city": "MONROE", + "community_served_state": "LA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRDK-TV", + "community_served_city": "VALLEY CITY", + "community_served_state": "ND", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTLN-TV", + "community_served_city": "PALO ALTO", + "community_served_state": "CA", + "network_affiliation": "Heroes & Icons", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCCB", + "community_served_city": "CHARLOTTE", + "community_served_state": "NC", + "network_affiliation": "The CW (primary channel); MeTV (subchannel)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDGA-CD", + "community_served_city": "DALTON", + "community_served_state": "GA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDNN-CD", + "community_served_city": "CHATTANOOGA", + "community_served_state": "TN", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFFV", + "community_served_city": "SEATTLE", + "community_served_state": "WA", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNOP-TV", + "community_served_city": "NORTH PLATTE", + "community_served_state": "NE", + "network_affiliation": "NBC/FOX/ION/Outlaw/The 365", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KERA-TV", + "community_served_city": "DALLAS", + "community_served_state": "TX", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDTN", + "community_served_city": "DENTON", + "community_served_state": "TX", + "network_affiliation": "IND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXAS-TV", + "community_served_city": "FORT WORTH", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTKA-TV", + "community_served_city": "TOPEKA", + "community_served_state": "KS", + "network_affiliation": "ABC -CW Plus", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEAO", + "community_served_city": "AKRON", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNEO", + "community_served_city": "ALLIANCE", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAWE", + "community_served_city": "BEMIDJI", + "community_served_state": "MN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAWB", + "community_served_city": "BRAINERD", + "community_served_state": "MN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVF", + "community_served_city": "FAIRBANKS", + "community_served_state": "AK", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVA", + "community_served_city": "ANCHORAGE", + "community_served_state": "AK", + "network_affiliation": "Rewind TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJFW-TV", + "community_served_city": "RHINELANDER", + "community_served_state": "WI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSEE-TV", + "community_served_city": "ERIE", + "community_served_state": "PA", + "network_affiliation": "CBS, The CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAPT", + "community_served_city": "JACKSON", + "community_served_state": "MS", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WZZM", + "community_served_city": "GRAND RAPIDS", + "community_served_state": "MI", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCBY-TV", + "community_served_city": "COOS BAY", + "community_served_state": "OR", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBOI-TV", + "community_served_city": "BOISE", + "community_served_state": "ID", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVAL-TV", + "community_served_city": "EUGENE", + "community_served_state": "OR", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYIN", + "community_served_city": "GARY", + "community_served_state": "IN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVIA-TV", + "community_served_city": "EL PASO", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPBT-TV", + "community_served_city": "ODESSA", + "community_served_state": "TX", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXQ-TV", + "community_served_city": "NEWPORT", + "community_served_state": "RI", + "network_affiliation": "ION, Laff, SCRIPPS News, Bounce, Jewelry TV, HSN, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOUC-TV", + "community_served_city": "CAMBRIDGE", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOUB-TV", + "community_served_city": "ATHENS", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOCB", + "community_served_city": "OKLAHOMA CITY", + "community_served_state": "OK", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAUT-TV", + "community_served_city": "OKLAHOMA CITY", + "community_served_state": "OK", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWET", + "community_served_city": "CHEYENNE", + "community_served_state": "OK", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOET", + "community_served_city": "EUFAULA", + "community_served_state": "OK", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KETA-TV", + "community_served_city": "OKLAHOMA CITY", + "community_served_state": "OK", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WZDC-CD", + "community_served_city": "WASHINGTON", + "community_served_state": "DC", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOAB-TV", + "community_served_city": "BEND", + "community_served_state": "OR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOPB-TV", + "community_served_city": "PORTLAND", + "community_served_state": "OR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOAC-TV", + "community_served_city": "CORVALLIS", + "community_served_state": "OR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEPB-TV", + "community_served_city": "EUGENE", + "community_served_state": "OR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVR", + "community_served_city": "LA GRANDE", + "community_served_state": "OR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPTV", + "community_served_city": "PORTLAND", + "community_served_state": "OR", + "network_affiliation": "FOX (D1), COZI TV (D2), DABL (D3), OXYGEN (D4)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJAR", + "community_served_city": "PROVIDENCE", + "community_served_state": "RI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCMH-TV", + "community_served_city": "COLUMBUS", + "community_served_state": "OH", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNCN", + "community_served_city": "GOLDSBORO", + "community_served_state": "NC", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOZJ", + "community_served_city": "JOPLIN", + "community_served_state": "MO", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOZK", + "community_served_city": "SPRINGFIELD", + "community_served_state": "MO", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXIA-TV", + "community_served_city": "ATLANTA", + "community_served_state": "GA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOFY-TV", + "community_served_city": "SAN FRANCISCO", + "community_served_state": "CA", + "network_affiliation": "Merit Street, Grit, PosiTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDFX-CD", + "community_served_city": "INDIO/PALM SPRINGS", + "community_served_state": "CA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KECY-TV", + "community_served_city": "EL CENTRO", + "community_served_state": "CA", + "network_affiliation": "FOX/ABC/CW/TELEMUNDO/NOSEY/CONFESS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUAM-TV", + "community_served_city": "HAGATNA", + "community_served_state": "GU", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KALO", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "IND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBEC-TV", + "community_served_city": "BOCA RATON", + "community_served_state": "FL", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K09YZ-D", + "community_served_city": "BEEVILLE-REFUGIO", + "community_served_state": "TX", + "network_affiliation": "Telemundo, Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K31KK-D", + "community_served_city": "KINGSVILLE-ALICE", + "community_served_state": "TX", + "network_affiliation": "Telemundo, Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K22JA-D", + "community_served_city": "CORPUS CHRISTI", + "community_served_state": "TX", + "network_affiliation": "Telemundo, Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFSF-DT", + "community_served_city": "VALLEJO", + "community_served_state": "CA", + "network_affiliation": "UniMas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFDA-TV", + "community_served_city": "AMARILLO", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KZBZ-CD", + "community_served_city": "CLOVIS", + "community_served_state": "NM", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLDO-TV", + "community_served_city": "LAREDO", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMPH-TV", + "community_served_city": "VISALIA", + "community_served_state": "CA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPTM", + "community_served_city": "OMAHA", + "community_served_state": "NE", + "network_affiliation": "KPTM D1 - FOX; KPTM D2 - DABL/MyNet; KPTM D3 - The CW; KPTM D4 - Comet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KREN-TV", + "community_served_city": "RENO", + "community_served_state": "NV", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMAX-TV", + "community_served_city": "SACRAMENTO", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBFX-CD", + "community_served_city": "BAKERSFIELD", + "community_served_state": "CA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCWI-TV", + "community_served_city": "AMES", + "community_served_state": "IA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTXA", + "community_served_city": "FORT WORTH", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMYS", + "community_served_city": "KERRVILLE", + "community_served_state": "TX", + "network_affiliation": "DABL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDCA", + "community_served_city": "WASHINGTON", + "community_served_state": "DC", + "network_affiliation": "MNT", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTXF-TV", + "community_served_city": "PHILADELPHIA", + "community_served_state": "PA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTXH", + "community_served_city": "HOUSTON", + "community_served_state": "TX", + "network_affiliation": "MY NET", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKBD-TV", + "community_served_city": "DETROIT", + "community_served_state": "MI", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVQ-DT", + "community_served_city": "LEXINGTON", + "community_served_state": "KY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KALB-TV", + "community_served_city": "ALEXANDRIA", + "community_served_state": "LA", + "network_affiliation": "KALB/NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEVC-CD", + "community_served_city": "INDIO", + "community_served_state": "CA", + "network_affiliation": "UniMas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KINT-TV", + "community_served_city": "EL PASO", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNEU", + "community_served_city": "MERRIMACK", + "community_served_state": "NH", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMNT-CD", + "community_served_city": "TOLEDO", + "community_served_state": "OH", + "network_affiliation": "My Network TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KKPM-CD", + "community_served_city": "YUBA CITY", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXA-TV", + "community_served_city": "ROME", + "community_served_state": "GA", + "network_affiliation": "ION, Court TV, Laff, Mystery, IONPlus, SCRIPPS News, Jewelry TV, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHPX-TV", + "community_served_city": "NEW LONDON", + "community_served_state": "CT", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPPX-TV", + "community_served_city": "WILMINGTON", + "community_served_state": "DE", + "network_affiliation": "ION, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, QVC, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPBF", + "community_served_city": "TEQUESTA", + "community_served_state": "FL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPSD-TV", + "community_served_city": "PADUCAH", + "community_served_state": "KY", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMLU", + "community_served_city": "COLUMBIA", + "community_served_state": "LA", + "network_affiliation": "MeTV, Heroes & Icons, Movies, Start TV, MeTV Toons,", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAPA-TV", + "community_served_city": "SAN JUAN", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQMY", + "community_served_city": "WILLIAMSPORT", + "community_served_state": "PA", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVK", + "community_served_city": "OSWEGO", + "community_served_state": "IL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQRF-TV", + "community_served_city": "ROCKFORD", + "community_served_state": "IL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPEC", + "community_served_city": "WEST PALM BEACH", + "community_served_state": "FL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRDO-TV", + "community_served_city": "COLORADO SPRINGS", + "community_served_state": "CO", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLML", + "community_served_city": "GRAND JUNCTION", + "community_served_state": "CO", + "network_affiliation": "Court TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXK-TV", + "community_served_city": "JELLICO", + "community_served_state": "TN", + "network_affiliation": "ION, Court TV, Laff, Mystery, SCRIPPS News, Jewelry TV, QVC, HSN, QVC2", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCNZ-CD", + "community_served_city": "SAN FRANCISCO", + "community_served_state": "CA", + "network_affiliation": "LATV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDJT-CD", + "community_served_city": "SALINAS/MONTEREY,ETC", + "community_served_state": "CA", + "network_affiliation": "UNIMAS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEZT-CD", + "community_served_city": "SACRAMENTO", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLAX-TV", + "community_served_city": "ALEXANDRIA", + "community_served_state": "LA", + "network_affiliation": "MeTV and ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSPX-TV", + "community_served_city": "SACRAMENTO", + "community_served_state": "CA", + "network_affiliation": "ION, Court TV, Laff, Bounce, IONPlus, SCRIPPS News, Jewelry TV, HSN, HSN2", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFTU-CD", + "community_served_city": "TUCSON", + "community_served_state": "AZ", + "network_affiliation": "Unimas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXT", + "community_served_city": "PORTLAND", + "community_served_state": "ME", + "network_affiliation": "Maine's CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPLG", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDIV-TV", + "community_served_city": "DETROIT", + "community_served_state": "MI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFSB", + "community_served_city": "HARTFORD", + "community_served_state": "CT", + "network_affiliation": "CBS (DT1 & DT4); ION MYSTERY (DT2); LAFF TV (DT3); WWAX (DT4)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJXT", + "community_served_city": "JACKSONVILLE", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPRC-TV", + "community_served_city": "HOUSTON", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSAT-TV", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSRE", + "community_served_city": "MINOT", + "community_served_state": "ND", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KJRE", + "community_served_city": "ELLENDALE", + "community_served_state": "ND", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWSE", + "community_served_city": "WILLISTON", + "community_served_state": "ND", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGFE", + "community_served_city": "GRAND FORKS", + "community_served_state": "ND", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFME", + "community_served_city": "FARGO", + "community_served_state": "ND", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBME-TV", + "community_served_city": "BISMARCK", + "community_served_state": "ND", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDSE", + "community_served_city": "DICKINSON", + "community_served_state": "ND", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIEM-TV", + "community_served_city": "EUREKA", + "community_served_state": "CA", + "network_affiliation": "NBC: ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKCF", + "community_served_city": "CLERMONT", + "community_served_state": "FL", + "network_affiliation": "CW, ESTRELLA, TRUE CRIME NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXXV-TV", + "community_served_city": "GULFPORT", + "community_served_state": "MS", + "network_affiliation": "FOX; NBC; CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRPV-DT", + "community_served_city": "ROSWELL", + "community_served_state": "NM", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMLM-DT", + "community_served_city": "ODESSA", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPTB-DT", + "community_served_city": "LUBBOCK", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBCB", + "community_served_city": "BELLINGHAM", + "community_served_state": "WA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQLN", + "community_served_city": "ERIE", + "community_served_state": "PA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCNY-TV", + "community_served_city": "SYRACUSE", + "community_served_state": "NY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMOR-TV", + "community_served_city": "LAKELAND", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYOU-TV", + "community_served_city": "OTTUMWA", + "community_served_state": "IA", + "network_affiliation": "FOX, NBC, CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCPT", + "community_served_city": "KANSAS CITY", + "community_served_state": "MO", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXLN-DT", + "community_served_city": "ROSENBERG", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIPR-TV", + "community_served_city": "SAN JUAN", + "community_served_state": "PR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIPM-TV", + "community_served_city": "MAYAGUEZ", + "community_served_state": "PR", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KETV", + "community_served_city": "OMAHA", + "community_served_state": "NE", + "network_affiliation": "ABC, Me-TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYFF", + "community_served_city": "GREENVILLE", + "community_served_state": "SC", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKOCT", + "community_served_city": "CARLSBAD", + "community_served_state": "NM", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKOVT", + "community_served_city": "SILVER CITY", + "community_served_state": "NM", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXII-TV", + "community_served_city": "WINSTON-SALEM", + "community_served_state": "NC", + "network_affiliation": "NBC/MeTV/Story", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOAT-TV", + "community_served_city": "ALBUQUERQUE", + "community_served_state": "NM", + "network_affiliation": "ABC, True Crime Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGAL", + "community_served_city": "LANCASTER", + "community_served_state": "PA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLKY", + "community_served_city": "LOUISVILLE", + "community_served_state": "KY", + "network_affiliation": "CBS, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLJB", + "community_served_city": "DAVENPORT", + "community_served_state": "IA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKBW-TV", + "community_served_city": "BUFFALO", + "community_served_state": "NY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGEM-TV", + "community_served_city": "QUINCY", + "community_served_state": "IL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNOL-TV", + "community_served_city": "NEW ORLEANS", + "community_served_state": "LA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDEF-TV", + "community_served_city": "CHATTANOOGA", + "community_served_state": "TN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMYT-TV", + "community_served_city": "TULSA", + "community_served_state": "OK", + "network_affiliation": "MY (41.1), Cozi TV (41.2), Start TV (41.3), Heroes & Icons (41.4), MeTV Toons (41.5)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRFB", + "community_served_city": "CAROLINA", + "community_served_state": "PR", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLXI", + "community_served_city": "GREENSBORO", + "community_served_state": "NC", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPGA-TV", + "community_served_city": "PERRY", + "community_served_state": "GA", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAWD", + "community_served_city": "FORT WALTON BEACH", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRBW", + "community_served_city": "ORLANDO", + "community_served_state": "FL", + "network_affiliation": "MYNET", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRDC", + "community_served_city": "DURHAM", + "community_served_state": "NC", + "network_affiliation": "My Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KJTV-TV", + "community_served_city": "LUBBOCK", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KASY-TV", + "community_served_city": "ALBUQUERQUE", + "community_served_state": "NM", + "network_affiliation": "MyNet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXTQ-CD", + "community_served_city": "LUBBOCK", + "community_served_state": "TX", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTEL-CD", + "community_served_city": "ALBUQUERQUE", + "community_served_state": "NM", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXLA", + "community_served_city": "RANCHO PALOS VERDES", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WARP-CD", + "community_served_city": "TAMPA-ST. PETERSBURG", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVE", + "community_served_city": "WILLOW GROVE", + "community_served_state": "PA", + "network_affiliation": "IND 1/1/24 - 6/30/24, SHOP LC 7/1/24 - 12/31/24", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLYH", + "community_served_city": "RED LION", + "community_served_state": "PA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNRR", + "community_served_city": "PEMBINA", + "community_served_state": "ND", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KJRR", + "community_served_city": "JAMESTOWN", + "community_served_state": "ND", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBRR", + "community_served_city": "THIEF RIVER FALLS", + "community_served_state": "MN", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVRR", + "community_served_city": "FARGO", + "community_served_state": "ND", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDLV-TV", + "community_served_city": "MITCHELL", + "community_served_state": "SD", + "network_affiliation": "NBC/ABC/FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDLT-TV", + "community_served_city": "SIOUX FALLS", + "community_served_state": "SD", + "network_affiliation": "NBC/ANTENNA/FOX/COZI & COURT TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEET", + "community_served_city": "EUREKA", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRDQ", + "community_served_city": "ORLANDO", + "community_served_state": "FL", + "network_affiliation": "Independent, Court TV, Telemundo, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRWG-TV", + "community_served_city": "LAS CRUCES", + "community_served_state": "NM", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNME-TV", + "community_served_city": "ALBUQUERQUE", + "community_served_state": "NM", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KETK-TV", + "community_served_city": "JACKSONVILLE", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYTX", + "community_served_city": "NACOGDOCHES", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXMD-TV", + "community_served_city": "WILLISTON", + "community_served_state": "ND", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXMA-TV", + "community_served_city": "DICKINSON", + "community_served_state": "ND", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXMC-TV", + "community_served_city": "MINOT", + "community_served_state": "ND", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXMB-TV", + "community_served_city": "BISMARCK", + "community_served_state": "ND", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYVV-TV", + "community_served_city": "DEL RIO", + "community_served_state": "TX", + "network_affiliation": "Merit Street", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVZ", + "community_served_city": "BEND", + "community_served_state": "OR", + "network_affiliation": "NBC, FOX, CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIDK", + "community_served_city": "IDAHO FALLS", + "community_served_state": "ID", + "network_affiliation": "DABL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEPR-TV", + "community_served_city": "PASCO", + "community_served_state": "WA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLEW-TV", + "community_served_city": "LEWISTON", + "community_served_state": "ID", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIMA-TV", + "community_served_city": "YAKIMA", + "community_served_state": "WA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGPE", + "community_served_city": "FRESNO", + "community_served_state": "CA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFXV", + "community_served_city": "HARLINGEN", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSBE-TV", + "community_served_city": "PROVIDENCE", + "community_served_state": "RI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWHY", + "community_served_city": "GARDEN GROVE", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTTV", + "community_served_city": "BLOOMINGTON", + "community_served_state": "IN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDNL-TV", + "community_served_city": "ST. LOUIS", + "community_served_state": "MO", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTTK", + "community_served_city": "KOKOMO", + "community_served_state": "IN", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDSM-TV", + "community_served_city": "DES MOINES", + "community_served_state": "IA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KABB", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLOS", + "community_served_city": "ASHEVILLE", + "community_served_state": "NC", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMYA-TV", + "community_served_city": "ANDERSON", + "community_served_state": "SC", + "network_affiliation": "DABL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSYX", + "community_served_city": "COLUMBUS", + "community_served_state": "OH", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOVR", + "community_served_city": "STOCKTON", + "community_served_state": "CA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGWW", + "community_served_city": "ANNISTON", + "community_served_state": "AL", + "network_affiliation": "Heroes and Icons", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWPX-TV", + "community_served_city": "BELLEVUE", + "community_served_state": "WA", + "network_affiliation": "ION, Court TV, Bounce, Grit, IONPlus, SCRIPPS News, Jewelry TV, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCEC", + "community_served_city": "BOULDER", + "community_served_state": "CO", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLUZ-TV", + "community_served_city": "ALBUQUERQUE", + "community_served_state": "NM", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRBU", + "community_served_city": "EAST ST. LOUIS", + "community_served_state": "IL", + "network_affiliation": "ION, Bounce, Laff, IONPlus, SCRIPPS News, JewelryTV, QVC, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXXI-TV", + "community_served_city": "ROCHESTER", + "community_served_state": "NY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAAY-TV", + "community_served_city": "HUNTSVILLE", + "community_served_state": "AL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRSU-TV", + "community_served_city": "CLAREMORE", + "community_served_state": "OK", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTLD-CD", + "community_served_city": "BAKERSFIELD", + "community_served_state": "CA", + "network_affiliation": "3 ANGELS BROADCASTING NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K17JI-D", + "community_served_city": "FRESNO", + "community_served_state": "CA", + "network_affiliation": "3 ANGELS BROADCASTING NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPTZ", + "community_served_city": "PLATTSBURGH", + "community_served_state": "NY", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KKYK-CD", + "community_served_city": "LITTLE ROCK", + "community_served_state": "AR", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJHL-TV", + "community_served_city": "JOHNSON CITY", + "community_served_state": "TN", + "network_affiliation": "CBS/ABC TRICITIES", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVR-TV", + "community_served_city": "RICHMOND", + "community_served_state": "VA", + "network_affiliation": "CBS, Antenna TV, Court TV, ION Television, Newsy, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUTR", + "community_served_city": "UTICA", + "community_served_state": "NY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNCT-TV", + "community_served_city": "GREENVILLE", + "community_served_state": "NC", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSLS-TV", + "community_served_city": "ROANOKE", + "community_served_state": "VA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUPX-TV", + "community_served_city": "PROVO", + "community_served_state": "UT", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRCB", + "community_served_city": "COTATI", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGXA", + "community_served_city": "MACON", + "community_served_state": "GA", + "network_affiliation": "WGXA D1 - FOX; WGXA D2 - ABC; WGXA D3 - Comet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KKAP", + "community_served_city": "LITTLE ROCK", + "community_served_state": "AR", + "network_affiliation": "IND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJPX", + "community_served_city": "SAN JUAN", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKPV", + "community_served_city": "PONCE", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJWN-TV", + "community_served_city": "SAN SEBASTIAN", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEDT", + "community_served_city": "CORPUS CHRISTI", + "community_served_state": "TX", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOAM-TV", + "community_served_city": "PITTSBURG", + "community_served_state": "KS", + "network_affiliation": "CBS, FOX, MeTV, and Heroes & Icons", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIDY", + "community_served_city": "SAN ANGELO", + "community_served_state": "TX", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCVU", + "community_served_city": "PARADISE", + "community_served_state": "CA", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGMC", + "community_served_city": "MERCED", + "community_served_state": "CA", + "network_affiliation": "Estrella TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUVS-DT", + "community_served_city": "MODESTO", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBVU", + "community_served_city": "EUREKA", + "community_served_state": "CA", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAYU-TV", + "community_served_city": "SPOKANE", + "community_served_state": "WA", + "network_affiliation": "FOX, Antenna TV,", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWNYS-TV", + "community_served_city": "SYRACUSE", + "community_served_state": "NY", + "network_affiliation": "MYTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVCR-DT", + "community_served_city": "SAN BERNARDINO", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSWB-TV", + "community_served_city": "SAN DIEGO", + "community_served_state": "CA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPXB-TV", + "community_served_city": "CONROE", + "community_served_state": "TX", + "network_affiliation": "ION, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, CourtTV, Grit", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPJK", + "community_served_city": "SAN MATEO", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSKT-CD", + "community_served_city": "SAN MARCOS", + "community_served_state": "CA", + "network_affiliation": "TIMELESS TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPXN-TV", + "community_served_city": "SAN BERNARDINO", + "community_served_state": "CA", + "network_affiliation": "ION, Court TV, IONPlus, Laff, Bounce, Jewelry TV, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFRE-TV", + "community_served_city": "SANGER", + "community_served_state": "CA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOAA-TV", + "community_served_city": "PUEBLO", + "community_served_state": "CO", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRCB", + "community_served_city": "CHATTANOOGA", + "community_served_state": "TN", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVN", + "community_served_city": "RENO", + "community_served_state": "NV", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIVI-TV", + "community_served_city": "NAMPA", + "community_served_state": "ID", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGTQ", + "community_served_city": "SAULT STE. MARIE", + "community_served_state": "MI", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGTU", + "community_served_city": "TRAVERSE CITY", + "community_served_state": "MI", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBUP", + "community_served_city": "ISHPEMING", + "community_served_state": "MI", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNIN-TV", + "community_served_city": "CALDWELL", + "community_served_state": "ID", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCPO-TV", + "community_served_city": "CINCINNATI", + "community_served_state": "OH", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KJRH-TV", + "community_served_city": "TULSA", + "community_served_state": "OK", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNXV-TV", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEWS-TV", + "community_served_city": "CLEVELAND", + "community_served_state": "OH", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMAR-TV", + "community_served_city": "BALTIMORE", + "community_served_state": "MD", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPTV-TV", + "community_served_city": "WEST PALM BEACH", + "community_served_state": "FL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSHB-TV", + "community_served_city": "KANSAS CITY", + "community_served_state": "MO", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCSG", + "community_served_city": "CEDAR CITY", + "community_served_state": "UT", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTAB-TV", + "community_served_city": "ABILENE", + "community_served_state": "TX", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WACX", + "community_served_city": "LEESBURG", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHTV-CD", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "MeTV Plus", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVPT", + "community_served_city": "STAUNTON", + "community_served_state": "VA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJAN-CD", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRNV-DT", + "community_served_city": "RENO", + "community_served_state": "NV", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSTE-DT", + "community_served_city": "PONCE", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHBS", + "community_served_city": "FORT SMITH", + "community_served_state": "AR", + "network_affiliation": "ABC, CW, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHOG-TV", + "community_served_city": "FAYETTEVILLE", + "community_served_state": "AR", + "network_affiliation": "ABC, CW, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOST", + "community_served_city": "MAYAGUEZ", + "community_served_state": "PR", + "network_affiliation": "CRTV NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYLE-TV", + "community_served_city": "BRYAN", + "community_served_state": "TX", + "network_affiliation": "MyNetwork", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVDF-CD", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "TIMELESS TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTNL-TV", + "community_served_city": "SITKA", + "community_served_state": "AK", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUBD", + "community_served_city": "KETCHIKAN", + "community_served_state": "AK", + "network_affiliation": "NBC, CBS, My Network,", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSTR-DT", + "community_served_city": "IRVING", + "community_served_state": "TX", + "network_affiliation": "UniMas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAMI-DT", + "community_served_city": "HOLLYWOOD", + "community_served_state": "FL", + "network_affiliation": "UNIMAS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFTH-DT", + "community_served_city": "ALVIN", + "community_served_state": "TX", + "network_affiliation": "UniMas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXFT-DT", + "community_served_city": "AURORA", + "community_served_state": "IL", + "network_affiliation": "UniMas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFTR-DT", + "community_served_city": "ONTARIO", + "community_served_state": "CA", + "network_affiliation": "Unimas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNI", + "community_served_city": "MARLBOROUGH", + "community_served_state": "MA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUTB", + "community_served_city": "BALTIMORE", + "community_served_state": "MD", + "network_affiliation": "TBD", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFTY-DT", + "community_served_city": "SMITHTOWN", + "community_served_state": "NY", + "network_affiliation": "TRUE CRIME NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFUT-DT", + "community_served_city": "NEWARK", + "community_served_state": "NJ", + "network_affiliation": "UNIMAS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQHS-DT", + "community_served_city": "CLEVELAND", + "community_served_state": "OH", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVEA-TV", + "community_served_city": "TAMPA", + "community_served_state": "FL", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUVP-DT", + "community_served_city": "VINELAND", + "community_served_state": "NJ", + "network_affiliation": "UNIVISION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIWN", + "community_served_city": "FOND DU LAC", + "community_served_state": "WI", + "network_affiliation": "Cozi TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEYT-TV", + "community_served_city": "SANTA BARBARA", + "community_served_state": "CA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSBB-CD", + "community_served_city": "SANTA BARBARA", + "community_served_state": "CA", + "network_affiliation": "MyNet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WETM-TV", + "community_served_city": "ELMIRA", + "community_served_state": "NY", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKTV", + "community_served_city": "UTICA", + "community_served_state": "NY", + "network_affiliation": "NBC, CBS, METV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOOD", + "community_served_city": "HAYS", + "community_served_state": "KS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSWK", + "community_served_city": "LAKIN", + "community_served_state": "KS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCSD-TV", + "community_served_city": "SIOUX FALLS", + "community_served_state": "SD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDRV", + "community_served_city": "MEDFORD", + "community_served_state": "OR", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDKF", + "community_served_city": "KLAMATH FALLS", + "community_served_state": "OR", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCHF", + "community_served_city": "SANTA FE", + "community_served_state": "NM", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KYNM-CD", + "community_served_city": "ALBUQUERQUE", + "community_served_state": "NM", + "network_affiliation": "The Family Channel; JTV; NTD; Heartland TV; KCHF TV - Son Broadcasting Inc; IJN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPGD-TV", + "community_served_city": "HENDERSONVILLE", + "community_served_state": "TN", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WELF-TV", + "community_served_city": "DALTON", + "community_served_state": "GA", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMPV-TV", + "community_served_city": "MOBILE", + "community_served_state": "AL", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMCF-TV", + "community_served_city": "MONTGOMERY", + "community_served_state": "AL", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBUY-TV", + "community_served_city": "HOLLY SPRINGS", + "community_served_state": "MS", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBPH-TV", + "community_served_city": "BETHLEHEM", + "community_served_state": "PA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNEH", + "community_served_city": "GREENWOOD", + "community_served_state": "SC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOLO-TV", + "community_served_city": "COLUMBIA", + "community_served_state": "SC", + "network_affiliation": "ABC, MeTV, H&I, QVC, Start-TV, DABL, HSN, Story TV, MeTV Toons", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEBA-TV", + "community_served_city": "ALLENDALE", + "community_served_state": "SC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHMC", + "community_served_city": "CONWAY", + "community_served_state": "SC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WITV", + "community_served_city": "CHARLESTON", + "community_served_state": "SC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJWJ-TV", + "community_served_city": "BEAUFORT", + "community_served_state": "SC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJPM-TV", + "community_served_city": "FLORENCE", + "community_served_state": "SC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNSC-TV", + "community_served_city": "ROCK HILL", + "community_served_state": "SC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNTV", + "community_served_city": "GREENVILLE", + "community_served_state": "SC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRET-TV", + "community_served_city": "SPARTANBURG", + "community_served_state": "SC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRJA-TV", + "community_served_city": "SUMTER", + "community_served_state": "SC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRLK-TV", + "community_served_city": "COLUMBIA", + "community_served_state": "SC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KZSD-TV", + "community_served_city": "MARTIN", + "community_served_state": "SD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQSD-TV", + "community_served_city": "LOWRY", + "community_served_state": "SD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDSD-TV", + "community_served_city": "ABERDEEN", + "community_served_state": "SD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTSD-TV", + "community_served_city": "PIERRE", + "community_served_state": "SD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KESD-TV", + "community_served_city": "BROOKINGS", + "community_served_state": "SD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBHE-TV", + "community_served_city": "RAPID CITY", + "community_served_state": "SD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPSD-TV", + "community_served_city": "EAGLE BUTTE", + "community_served_state": "SD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUSD-TV", + "community_served_city": "VERMILLION", + "community_served_state": "SD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXEL-TV", + "community_served_city": "BOYNTON BEACH", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMGM-TV", + "community_served_city": "WILDWOOD", + "community_served_state": "NJ", + "network_affiliation": "TRUE CRIME NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPXL-TV", + "community_served_city": "UVALDE", + "community_served_state": "TX", + "network_affiliation": "ION, Court TV, Laff, Mystery, IONPlus, SCRIPPS News, Jewelry TV, HSN, HSN2", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBTV-TV", + "community_served_city": "PORT ARTHUR", + "community_served_state": "TX", + "network_affiliation": "DABL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHIZ-TV", + "community_served_city": "ZANESVILLE", + "community_served_state": "OH", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNKY", + "community_served_city": "BOWLING GREEN", + "community_served_state": "KY", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWSB", + "community_served_city": "SARASOTA", + "community_served_state": "FL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFTS", + "community_served_city": "KLAMATH FALLS", + "community_served_state": "OR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSYS", + "community_served_city": "MEDFORD", + "community_served_state": "OR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXCW", + "community_served_city": "NAPLES", + "community_served_state": "FL", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPIC", + "community_served_city": "ROSEBURG", + "community_served_state": "OR", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVEO", + "community_served_city": "AGUADILLA", + "community_served_state": "PR", + "network_affiliation": "MegaTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSPS-TV", + "community_served_city": "SPOKANE", + "community_served_state": "WA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVLY-TV", + "community_served_city": "FARGO", + "community_served_state": "ND", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXLY-TV", + "community_served_city": "SPOKANE", + "community_served_state": "WA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRSP-TV", + "community_served_city": "SPRINGFIELD", + "community_served_state": "IL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPBS-TV", + "community_served_city": "WATERTOWN", + "community_served_state": "NY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNPI-DT", + "community_served_city": "NORWOOD", + "community_served_state": "NY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KETC", + "community_served_city": "ST. LOUIS", + "community_served_state": "MO", + "network_affiliation": "ETV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIYC", + "community_served_city": "TROY", + "community_served_state": "AL", + "network_affiliation": "COZI", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WICZ-TV", + "community_served_city": "BINGHAMTON", + "community_served_state": "NY", + "network_affiliation": "FOX, MyNetwork, ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYDC", + "community_served_city": "CORNING", + "community_served_state": "NY", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOBR", + "community_served_city": "ROSWELL", + "community_served_state": "NM", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXVA", + "community_served_city": "ABILENE", + "community_served_state": "TX", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTLM", + "community_served_city": "RIO GRANDE CITY", + "community_served_state": "TX", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUID-TV", + "community_served_city": "MOSCOW", + "community_served_state": "ID", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGCU", + "community_served_city": "FORT MYERS", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCDT", + "community_served_city": "COEUR D'ALENE", + "community_served_state": "ID", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIPT", + "community_served_city": "TWIN FALLS", + "community_served_state": "ID", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KISU-TV", + "community_served_city": "POCATELLO", + "community_served_state": "ID", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAID", + "community_served_city": "BOISE", + "community_served_state": "ID", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCKA", + "community_served_city": "CENTRALIA", + "community_served_state": "WA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBTC-TV", + "community_served_city": "TACOMA", + "community_served_state": "WA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLEF-TV", + "community_served_city": "PARK FALLS", + "community_served_state": "WI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCAU", + "community_served_city": "PHILADELPHIA", + "community_served_state": "PA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVJ", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCDO-TV", + "community_served_city": "STERLING", + "community_served_state": "CO", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIBW-TV", + "community_served_city": "TOPEKA", + "community_served_state": "KS", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGWL-TV", + "community_served_city": "LANDER", + "community_served_state": "WY", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMIZ", + "community_served_city": "COLUMBIA", + "community_served_state": "MO", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCOY-TV", + "community_served_city": "SANTA MARIA", + "community_served_state": "CA", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGWN-TV", + "community_served_city": "CHEYENNE", + "community_served_state": "WY", + "network_affiliation": "CBS / NBC / CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGWR-TV", + "community_served_city": "ROCK SPRINGS", + "community_served_state": "WY", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGWC-TV", + "community_served_city": "CASPER", + "community_served_state": "WY", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSTF", + "community_served_city": "SCOTTSBLUFF", + "community_served_state": "NE", + "network_affiliation": "CBS / NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGTA", + "community_served_city": "TOCCOA", + "community_served_state": "GA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOLO-TV", + "community_served_city": "RENO", + "community_served_state": "NV", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBLR", + "community_served_city": "PARADISE", + "community_served_state": "NV", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSVN", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KENV-DT", + "community_served_city": "ELKO", + "community_served_state": "NV", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKWNV", + "community_served_city": "WINNEMUCCA", + "community_served_state": "NV", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KILM", + "community_served_city": "INGLEWOOD", + "community_served_state": "CA", + "network_affiliation": "SCRIPPS News, Bounce, LAFF", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSST-TV", + "community_served_city": "CORDELE", + "community_served_state": "GA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUVE-DT", + "community_served_city": "GREEN VALLEY", + "community_served_state": "AZ", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDKY-TV", + "community_served_city": "DANVILLE", + "community_served_state": "KY", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPCH-TV", + "community_served_city": "ATLANTA", + "community_served_state": "GA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSPX-TV", + "community_served_city": "SYRACUSE", + "community_served_state": "NY", + "network_affiliation": "ION, Court TV, Grit, Mystery, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCWE", + "community_served_city": "KANSAS CITY", + "community_served_state": "MO", + "network_affiliation": "CW/True Crime Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHVO", + "community_served_city": "HILO", + "community_served_state": "HI", + "network_affiliation": "ABC (D1), METV (D2)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKOW", + "community_served_city": "MADISON", + "community_served_state": "WI", + "network_affiliation": "ABC (27.1), Catchy Comedy (27.2), MeTV Toons (27.3), Court TV (27.4), CRIME (27.5)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAOW", + "community_served_city": "WAUSAU", + "community_served_state": "WI", + "network_affiliation": "ABC 9.1, Catchy Comedy 9.2, MeTV Toons 9.3, Court TV 9.4, True Crime 9.5", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGRZ", + "community_served_city": "BUFFALO", + "community_served_state": "NY", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KITV", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "ABC (D1), METV (D2)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXOW", + "community_served_city": "LA CROSSE", + "community_served_state": "WI", + "network_affiliation": "ABC, Catchy TV, This TV thru 5/24/24, then MeTV Toons Eff 5/29/24, Court TV, Justice Networks, The Grio", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQOW", + "community_served_city": "EAU CLAIRE", + "community_served_state": "WI", + "network_affiliation": "ABC, Catchy TV, This TV thru 5/24/24, MeTV Toons Eff 5/29/24, Court TV, Justice Networks, The Grio", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMAU", + "community_served_city": "WAILUKU", + "community_served_state": "HI", + "network_affiliation": "ABC (D1), METV (D2)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFTS-TV", + "community_served_city": "TAMPA", + "community_served_state": "FL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFLA-TV", + "community_served_city": "TAMPA", + "community_served_state": "FL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKFYF", + "community_served_city": "FAIRBANKS", + "community_served_state": "AK", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRAZ", + "community_served_city": "RALEIGH", + "community_served_state": "NC", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQPX-TV", + "community_served_city": "SCRANTON", + "community_served_state": "PA", + "network_affiliation": "ION, Bounce, Court TV, Grit, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WORA-TV", + "community_served_city": "MAYAGUEZ", + "community_served_state": "PR", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KORO", + "community_served_city": "CORPUS CHRISTI", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVDA", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSCV", + "community_served_city": "FORT LAUDERDALE", + "community_served_state": "FL", + "network_affiliation": "TELEMUNDO", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEJT-CD", + "community_served_city": "SALT LAKE CITY", + "community_served_state": "UT", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKAQ-TV", + "community_served_city": "SAN JUAN", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTMD", + "community_served_city": "GALVESTON", + "community_served_state": "TX", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSTS", + "community_served_city": "SAN JOSE", + "community_served_state": "CA", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTLV", + "community_served_city": "JACKSONVILLE", + "community_served_state": "FL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGPX-TV", + "community_served_city": "BURLINGTON", + "community_served_state": "NC", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHDF", + "community_served_city": "FLORENCE", + "community_served_state": "AL", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQCW", + "community_served_city": "PORTSMOUTH", + "community_served_state": "OH", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WISC-TV", + "community_served_city": "MADISON", + "community_served_state": "WI", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBBJ-TV", + "community_served_city": "JACKSON", + "community_served_state": "TN", + "network_affiliation": "ABC (main) CBS (multicast)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAWV-TV", + "community_served_city": "TERRE HAUTE", + "community_served_state": "IN", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAMU-TV", + "community_served_city": "COLLEGE STATION", + "community_served_state": "TX", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTTZ-TV", + "community_served_city": "LUBBOCK", + "community_served_state": "TX", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFDX-TV", + "community_served_city": "WICHITA FALLS", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVBT", + "community_served_city": "VIRGINIA BEACH", + "community_served_state": "VA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBFD-DT", + "community_served_city": "HONOLULU", + "community_served_state": "HI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAKE", + "community_served_city": "WICHITA", + "community_served_state": "KS", + "network_affiliation": "ABC, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLBY", + "community_served_city": "COLBY", + "community_served_state": "KS", + "network_affiliation": "ABC, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRON-TV", + "community_served_city": "SAN FRANCISCO", + "community_served_state": "CA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOWT", + "community_served_city": "OMAHA", + "community_served_state": "NE", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUPK", + "community_served_city": "GARDEN CITY", + "community_served_state": "KS", + "network_affiliation": "ABC, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOMU-TV", + "community_served_city": "COLUMBIA", + "community_served_state": "MO", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUSA", + "community_served_city": "WASHINGTON", + "community_served_state": "DC", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCET", + "community_served_city": "CINCINNATI", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTCI", + "community_served_city": "CHATTANOOGA", + "community_served_state": "TN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WETA-TV", + "community_served_city": "WASHINGTON", + "community_served_state": "DC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WISN-TV", + "community_served_city": "MILWAUKEE", + "community_served_state": "WI", + "network_affiliation": "ABC/ True Crime Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTAE-TV", + "community_served_city": "PITTSBURGH", + "community_served_state": "PA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCVB-TV", + "community_served_city": "BOSTON", + "community_served_state": "MA", + "network_affiliation": "ABC, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMBC-TV", + "community_served_city": "KANSAS CITY", + "community_served_state": "MO", + "network_affiliation": "ABC/ME-TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDTN", + "community_served_city": "DAYTON", + "community_served_state": "OH", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBAL-TV", + "community_served_city": "BALTIMORE", + "community_served_state": "MD", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJET-TV", + "community_served_city": "ERIE", + "community_served_state": "PA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKPD", + "community_served_city": "PADUCAH", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWJS", + "community_served_city": "HICKORY", + "community_served_state": "NC", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMPT", + "community_served_city": "ANNAPOLIS", + "community_served_state": "MD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWPB", + "community_served_city": "HAGERSTOWN", + "community_served_state": "MD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMPB", + "community_served_city": "BALTIMORE", + "community_served_state": "MD", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTIV", + "community_served_city": "SIOUX CITY", + "community_served_state": "IA", + "network_affiliation": "NBC, CW, Me-TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WREG-TV", + "community_served_city": "MEMPHIS", + "community_served_state": "TN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOSU-TV", + "community_served_city": "COLUMBUS", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWPBO", + "community_served_city": "PORTSMOUTH", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOED-TV", + "community_served_city": "TULSA", + "community_served_state": "OK", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPSU-TV", + "community_served_city": "CLEARFIELD", + "community_served_state": "PA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHO-DT", + "community_served_city": "DES MOINES", + "community_served_state": "IA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFOR-TV", + "community_served_city": "OKLAHOMA CITY", + "community_served_state": "OK", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIFI-TV", + "community_served_city": "IDAHO FALLS", + "community_served_state": "ID", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGTE-TV", + "community_served_city": "TOLEDO", + "community_served_state": "OH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLRN-TV", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVPY", + "community_served_city": "NEW MARKET", + "community_served_state": "VA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSPA-TV", + "community_served_city": "SPARTANBURG", + "community_served_state": "SC", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMBB", + "community_served_city": "PANAMA CITY", + "community_served_state": "FL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIMT", + "community_served_city": "MASON CITY", + "community_served_state": "IA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBTW", + "community_served_city": "FLORENCE", + "community_served_state": "SC", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWCH-DT", + "community_served_city": "HUTCHINSON", + "community_served_state": "KS", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBSD-DT", + "community_served_city": "ENSIGN", + "community_served_state": "KS", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBSH-DT", + "community_served_city": "HAYS", + "community_served_state": "KS", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBSL-DT", + "community_served_city": "GOODLAND", + "community_served_state": "KS", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFSM-TV", + "community_served_city": "FORT SMITH", + "community_served_state": "AR", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTIU", + "community_served_city": "BLOOMINGTON", + "community_served_state": "IN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUON-TV", + "community_served_city": "LINCOLN", + "community_served_state": "NE", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUFM-TV", + "community_served_city": "MISSOULA", + "community_served_state": "MT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KIRO-TV", + "community_served_city": "SEATTLE", + "community_served_state": "WA", + "network_affiliation": "CBS (7.1), COZITV (7.2), LAFF (7.3), TELEMUNDO (7.4)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUGB-CD", + "community_served_city": "HOUSTON", + "community_served_state": "TX", + "network_affiliation": "CRTV NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOAY-TV", + "community_served_city": "OAK HILL", + "community_served_state": "WV", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTWC-TV", + "community_served_city": "TALLAHASSEE", + "community_served_state": "FL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K21DO-D", + "community_served_city": "PALM SPRINGS", + "community_served_state": "CA", + "network_affiliation": "TIMELESS TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBKB-TV", + "community_served_city": "ALPENA", + "community_served_state": "MI", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXV-TV", + "community_served_city": "NORFOLK", + "community_served_state": "VA", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KINC", + "community_served_city": "LAS VEGAS", + "community_served_state": "NV", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVSN", + "community_served_city": "HUMACAO", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSNT", + "community_served_city": "TOPEKA", + "community_served_state": "KS", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWOG", + "community_served_city": "SPRINGDALE", + "community_served_state": "AR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAIL", + "community_served_city": "FRESNO", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOPX-TV", + "community_served_city": "MELBOURNE", + "community_served_state": "FL", + "network_affiliation": "ION, Bounce, Grit, IONPlus, SCRIPPS News, Jewelry TV, QVC, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTSM-TV", + "community_served_city": "EL PASO", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSNF", + "community_served_city": "JOPLIN", + "community_served_state": "MO", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTLJ", + "community_served_city": "MUSKEGON", + "community_served_state": "MI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNYO-TV", + "community_served_city": "BUFFALO", + "community_served_state": "NY", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTCT", + "community_served_city": "MARION", + "community_served_state": "IL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WINM", + "community_served_city": "ANGOLA", + "community_served_state": "IN", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAQP", + "community_served_city": "SAGINAW", + "community_served_state": "MI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTSF", + "community_served_city": "ASHLAND", + "community_served_state": "KY", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNIN", + "community_served_city": "EVANSVILLE", + "community_served_state": "IN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNDT-CD", + "community_served_city": "MANHATTAN", + "community_served_state": "NY", + "network_affiliation": "First Nations Experience", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPAZ-TV", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKOI-TV", + "community_served_city": "RICHMOND", + "community_served_state": "IN", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTBN-TV", + "community_served_city": "SANTA ANA", + "community_served_state": "CA", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDLI-TV", + "community_served_city": "CANTON", + "community_served_state": "OH", + "network_affiliation": "Bounce/Scripps News/Laff", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDTX-TV", + "community_served_city": "DALLAS", + "community_served_state": "TX", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTBW-TV", + "community_served_city": "TACOMA", + "community_served_state": "WA", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHFT-TV", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTBY-TV", + "community_served_city": "JERSEY CITY", + "community_served_state": "NJ", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTBO-TV", + "community_served_city": "OKLAHOMA CITY", + "community_served_state": "OK", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCLJ-TV", + "community_served_city": "BLOOMINGTON", + "community_served_state": "IN", + "network_affiliation": "Bounce/Scripps News/Court TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHSG-TV", + "community_served_city": "MONROE", + "community_served_state": "GA", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJMB-CD", + "community_served_city": "BUTLER", + "community_served_state": "PA", + "network_affiliation": "TIMELESS TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMVH-CD", + "community_served_city": "CHARLEROI", + "community_served_state": "PA", + "network_affiliation": "TIMELESS TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKHU-CD", + "community_served_city": "KITTANNING", + "community_served_state": "PA", + "network_affiliation": "TIMELESS TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KKDJ-CD", + "community_served_city": "VISALIA", + "community_served_state": "CA", + "network_affiliation": "Family TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWKH-CD", + "community_served_city": "UNIONTOWN", + "community_served_state": "PA", + "network_affiliation": "MAGNIFICENT MOVIES NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBMM", + "community_served_city": "TUSKEGEE", + "community_served_state": "AL", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXMI", + "community_served_city": "GRAND RAPIDS", + "community_served_state": "MI", + "network_affiliation": "FOX; Antenna TV; Bounce TV; ION PLUS; GetTV; QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLMT", + "community_served_city": "MEMPHIS", + "community_served_state": "TN", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJKT", + "community_served_city": "JACKSON", + "community_served_state": "TN", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRHD-CD", + "community_served_city": "BRYAN", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLTV", + "community_served_city": "TYLER", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTRE", + "community_served_city": "LUFKIN", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLBT", + "community_served_city": "JACKSON", + "community_served_state": "MS", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMLW-TV", + "community_served_city": "RACINE", + "community_served_state": "WI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWRS-TV", + "community_served_city": "MAYVILLE", + "community_served_state": "WI", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOHL-CD", + "community_served_city": "LIMA", + "community_served_state": "OH", + "network_affiliation": "ABC, CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVT", + "community_served_city": "TAMPA", + "community_served_state": "FL", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVD", + "community_served_city": "DENVER", + "community_served_state": "CO", + "network_affiliation": "My Network TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTCA-TV", + "community_served_city": "ST. PAUL", + "community_served_state": "MN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTCI-TV", + "community_served_city": "ST. PAUL", + "community_served_state": "MN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K17GD-D", + "community_served_city": "PASO ROBLES", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPXC-TV", + "community_served_city": "DENVER", + "community_served_state": "CO", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCWY-DT", + "community_served_city": "CASPER", + "community_served_state": "WY", + "network_affiliation": "NBC, CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUHM-TV", + "community_served_city": "HELENA", + "community_served_state": "MT", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTFN", + "community_served_city": "EL PASO", + "community_served_state": "TX", + "network_affiliation": "Unimas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPXD-TV", + "community_served_city": "ARLINGTON", + "community_served_state": "TX", + "network_affiliation": "ION, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN2, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWNY-TV", + "community_served_city": "CARTHAGE", + "community_served_state": "NY", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEYC-TV", + "community_served_city": "MANKATO", + "community_served_state": "MN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMSP-TV", + "community_served_city": "MINNEAPOLIS", + "community_served_state": "MN", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUTP", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "MNT", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTVX", + "community_served_city": "SALT LAKE CITY", + "community_served_state": "UT", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WILL-TV", + "community_served_city": "URBANA", + "community_served_state": "IL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNC-TV", + "community_served_city": "CHAPEL HILL", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNE-TV", + "community_served_city": "LINVILLE", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNG-TV", + "community_served_city": "CONCORD", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNK-TV", + "community_served_city": "GREENVILLE", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTSC", + "community_served_city": "PUEBLO", + "community_served_state": "CO", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WENH-TV", + "community_served_city": "DURHAM", + "community_served_state": "NH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUHT", + "community_served_city": "HOUSTON", + "community_served_state": "TX", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEKW-TV", + "community_served_city": "KEENE", + "community_served_state": "NH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWCMZ-TV", + "community_served_city": "FLINT", + "community_served_state": "MI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUND-TV", + "community_served_city": "EDENTON", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNF-TV", + "community_served_city": "ASHEVILLE", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUAC-TV", + "community_served_city": "FAIRBANKS", + "community_served_state": "AK", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLED-TV", + "community_served_city": "LITTLETON", + "community_served_state": "NH", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNJ-TV", + "community_served_city": "WILMINGTON", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEDQ", + "community_served_city": "TAMPA", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNL-TV", + "community_served_city": "WINSTON-SALEM", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUED", + "community_served_city": "SALT LAKE CITY", + "community_served_state": "UT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNP-TV", + "community_served_city": "ROANOKE RAPIDS", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNU", + "community_served_city": "LUMBERTON", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUFT", + "community_served_city": "GAINESVILLE", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNM-TV", + "community_served_city": "JACKSONVILLE", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSCG", + "community_served_city": "BAXLEY", + "community_served_state": "GA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCTE", + "community_served_city": "COOKEVILLE", + "community_served_state": "TN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KZJL", + "community_served_city": "HOUSTON", + "community_served_state": "TX", + "network_affiliation": "EstrellaTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFDC-DT", + "community_served_city": "ARLINGTON", + "community_served_state": "VA", + "network_affiliation": "UNIVISION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCCU", + "community_served_city": "URBANA", + "community_served_state": "IL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KZJO", + "community_served_city": "SEATTLE", + "community_served_state": "WA", + "network_affiliation": "My Network TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUEN", + "community_served_city": "OGDEN", + "community_served_state": "UT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOAI-TV", + "community_served_city": "SAN ANTONIO", + "community_served_state": "TX", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPYX", + "community_served_city": "SAN FRANCISCO", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KHSV", + "community_served_city": "LAS VEGAS", + "community_served_state": "NV", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNVO", + "community_served_city": "MCALLEN", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUTF", + "community_served_city": "LOGAN", + "community_served_state": "UT", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVPT", + "community_served_city": "FRESNO", + "community_served_state": "CA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBBV-CD", + "community_served_city": "BAKERSFIELD", + "community_served_state": "CA", + "network_affiliation": "TELEXITOS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVER-CD", + "community_served_city": "INDIO", + "community_served_state": "CA", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPKD-TV", + "community_served_city": "JEANNETTE", + "community_served_state": "PA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVTB", + "community_served_city": "ST. JOHNSBURY", + "community_served_state": "VT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DDWVTA", + "community_served_city": "WINDSOR", + "community_served_state": "VT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WETK", + "community_served_city": "BURLINGTON", + "community_served_state": "VT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVER", + "community_served_city": "RUTLAND", + "community_served_state": "VT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVLA-TV", + "community_served_city": "BATON ROUGE", + "community_served_state": "LA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMOV", + "community_served_city": "ST. LOUIS", + "community_served_state": "MO", + "network_affiliation": "D1-CBS, D2- MyNet, D-2 First Alert Weather Now , D3- COZI TV, D4- ION MYSTERY", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHEC-TV", + "community_served_city": "ROCHESTER", + "community_served_state": "NY", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSNS-TV", + "community_served_city": "CHICAGO", + "community_served_state": "IL", + "network_affiliation": "TELEMUNDO", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBDT", + "community_served_city": "SPRINGFIELD", + "community_served_state": "OH", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYCW", + "community_served_city": "ASHEVILLE", + "community_served_state": "NC", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTHR", + "community_served_city": "INDIANAPOLIS", + "community_served_state": "IN", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRIW-CD", + "community_served_city": "PROVIDENCE", + "community_served_state": "RI", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXR-TV", + "community_served_city": "ROANOKE", + "community_served_state": "VA", + "network_affiliation": "ION, Court TV, Laff, Mystery, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTJX-TV", + "community_served_city": "CHARLOTTE AMALIE", + "community_served_state": "VI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVIR-TV", + "community_served_city": "CHARLOTTESVILLE", + "community_served_state": "VA", + "network_affiliation": "NBC, CW, TRUE CRIME", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSLA", + "community_served_city": "SHREVEPORT", + "community_served_state": "LA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVPX-TV", + "community_served_city": "AKRON", + "community_served_state": "OH", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUBE-TV", + "community_served_city": "BAYTOWN", + "community_served_state": "TX", + "network_affiliation": "Shop LC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WZME", + "community_served_city": "BRIDGEPORT", + "community_served_state": "CT", + "network_affiliation": "Story Television", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSEC", + "community_served_city": "JACKSONVILLE", + "community_served_state": "IL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMEC", + "community_served_city": "MACOMB", + "community_served_state": "IL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KREG-TV", + "community_served_city": "GLENWOOD SPRINGS", + "community_served_state": "CO", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KREY-TV", + "community_served_city": "MONTROSE", + "community_served_state": "CO", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDTV", + "community_served_city": "WESTON", + "community_served_state": "WV", + "network_affiliation": "CBS,CW, H&I", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KREX-TV", + "community_served_city": "GRAND JUNCTION", + "community_served_state": "CO", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFTX-TV", + "community_served_city": "CAPE CORAL", + "community_served_state": "FL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOGX", + "community_served_city": "OCALA", + "community_served_state": "FL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTHI-TV", + "community_served_city": "TERRE HAUTE", + "community_served_state": "IN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAGA-TV", + "community_served_city": "ATLANTA", + "community_served_state": "GA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWAGT", + "community_served_city": "AUGUSTA", + "community_served_state": "GA", + "network_affiliation": "NBC/CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WALB", + "community_served_city": "ALBANY", + "community_served_state": "GA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFXL", + "community_served_city": "ALBANY", + "community_served_state": "GA", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAND", + "community_served_city": "DECATUR", + "community_served_state": "IL", + "network_affiliation": "NBC, COZI TV, DEFY TV, ION PLUS, ION TV, AND MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFXK-TV", + "community_served_city": "LONGVIEW", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTWU", + "community_served_city": "TOPEKA", + "community_served_state": "KS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTNW", + "community_served_city": "RICHLAND", + "community_served_state": "WA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWSU-TV", + "community_served_city": "PULLMAN", + "community_served_state": "WA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WATE-TV", + "community_served_city": "KNOXVILLE", + "community_served_state": "TN", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBBH-TV", + "community_served_city": "FORT MYERS", + "community_served_state": "FL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNGT-CD", + "community_served_city": "RALEIGH", + "community_served_state": "NC", + "network_affiliation": "Catchy Comedy", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WAVY-TV", + "community_served_city": "PORTSMOUTH", + "community_served_state": "VA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBNS-TV", + "community_served_city": "COLUMBUS", + "community_served_state": "OH", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBOC-TV", + "community_served_city": "SALISBURY", + "community_served_state": "MD", + "network_affiliation": "CBS/FOX/Antenna TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBOY-TV", + "community_served_city": "CLARKSBURG", + "community_served_state": "WV", + "network_affiliation": "NBC, ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBRC", + "community_served_city": "BIRMINGHAM", + "community_served_state": "AL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBRE-TV", + "community_served_city": "WILKES-BARRE", + "community_served_state": "PA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXC-TV", + "community_served_city": "BRUNSWICK", + "community_served_state": "GA", + "network_affiliation": "ION, Court TV, Mystery, Grit, Laff, SCRIPPS News, Jewelry TV, QVC, QVC2", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWCGV-TV", + "community_served_city": "MILWAUKEE", + "community_served_state": "WI", + "network_affiliation": "MYTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCHS-TV", + "community_served_city": "CHARLESTON", + "community_served_state": "WV", + "network_affiliation": "WCHS D1 - ABC; WCHS D2 -FOX: WCHS D3 - Antenna TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKMG-TV", + "community_served_city": "ORLANDO", + "community_served_state": "FL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCSC-TV", + "community_served_city": "CHARLESTON", + "community_served_state": "SC", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDBB", + "community_served_city": "BESSEMER", + "community_served_state": "AL", + "network_affiliation": "The CW Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDBD", + "community_served_city": "JACKSON", + "community_served_state": "MS", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDBJ", + "community_served_city": "ROANOKE", + "community_served_state": "VA", + "network_affiliation": "CBS, H&I, True Crime Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WIRT-DT", + "community_served_city": "HIBBING", + "community_served_state": "MN", + "network_affiliation": "DT.1 ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDIO-DT", + "community_served_city": "DULUTH", + "community_served_state": "MN", + "network_affiliation": "DT.1 ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDSI-TV", + "community_served_city": "CHATTANOOGA", + "community_served_state": "TN", + "network_affiliation": "TRUECRIME TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDSU", + "community_served_city": "NEW ORLEANS", + "community_served_state": "LA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEAR-TV", + "community_served_city": "PENSACOLA", + "community_served_state": "FL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDJT-TV", + "community_served_city": "MILWAUKEE", + "community_served_state": "WI", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCIU-TV", + "community_served_city": "CHICAGO", + "community_served_state": "IL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WENY-TV", + "community_served_city": "ELMIRA", + "community_served_state": "NY", + "network_affiliation": "ABC (Main), CBS (Multicast)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWCM-TV", + "community_served_city": "APPLETON", + "community_served_state": "MN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSMN", + "community_served_city": "WORTHINGTON", + "community_served_state": "MN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQEC", + "community_served_city": "QUINCY", + "community_served_state": "IL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRXY-TV", + "community_served_city": "TICE", + "community_served_state": "FL", + "network_affiliation": "Network Affiliation CTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCNS", + "community_served_city": "SAN FRANCISCO", + "community_served_state": "CA", + "network_affiliation": "Shop LC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLJT", + "community_served_city": "LEXINGTON", + "community_served_state": "TN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVPB-TV", + "community_served_city": "HUNTINGTON", + "community_served_state": "WV", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNPB-TV", + "community_served_city": "MORGANTOWN", + "community_served_state": "WV", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSWP-TV", + "community_served_city": "GRANDVIEW", + "community_served_state": "WV", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOLE-DT", + "community_served_city": "AGUADILLA", + "community_served_state": "PR", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKYU-TV", + "community_served_city": "BOWLING GREEN", + "community_served_state": "KY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WZPX-TV", + "community_served_city": "BATTLE CREEK", + "community_served_state": "MI", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNLO", + "community_served_city": "BUFFALO", + "community_served_state": "NY", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNED-TV", + "community_served_city": "BUFFALO", + "community_served_state": "NY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEVV-TV", + "community_served_city": "EVANSVILLE", + "community_served_state": "IN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEYI-TV", + "community_served_city": "SAGINAW", + "community_served_state": "MI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSBS-TV", + "community_served_city": "KEY WEST", + "community_served_state": "FL", + "network_affiliation": "MegaTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFAA", + "community_served_city": "DALLAS", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFLI-TV", + "community_served_city": "CLEVELAND", + "community_served_state": "TN", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFMJ-TV", + "community_served_city": "YOUNGSTOWN", + "community_served_state": "OH", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFMY-TV", + "community_served_city": "GREENSBORO", + "community_served_state": "NC", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFTV", + "community_served_city": "ORLANDO", + "community_served_state": "FL", + "network_affiliation": "ABC, Laff, Ion Mystery", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGBY-TV", + "community_served_city": "SPRINGFIELD", + "community_served_state": "MA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGBX-TV", + "community_served_city": "BOSTON", + "community_served_state": "MA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGBH-TV", + "community_served_city": "BOSTON", + "community_served_state": "MA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGHP", + "community_served_city": "HIGH POINT", + "community_served_state": "NC", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGN-TV", + "community_served_city": "CHICAGO", + "community_served_state": "IL", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WGNO", + "community_served_city": "NEW ORLEANS", + "community_served_state": "LA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WANF", + "community_served_city": "ATLANTA", + "community_served_state": "GA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWJ-TV", + "community_served_city": "DETROIT", + "community_served_state": "MI", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHDH", + "community_served_city": "BOSTON", + "community_served_state": "MA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHNS", + "community_served_city": "GREENVILLE", + "community_served_state": "SC", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNCF", + "community_served_city": "MONTGOMERY", + "community_served_state": "AL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHP-TV", + "community_served_city": "HARRISBURG", + "community_served_state": "PA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHTM-TV", + "community_served_city": "HARRISBURG", + "community_served_state": "PA", + "network_affiliation": "ABC Television Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDPB", + "community_served_city": "SEAFORD", + "community_served_state": "DE", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHYY-TV", + "community_served_city": "WILMINGTON", + "community_served_state": "DE", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVCY-TV", + "community_served_city": "MILWAUKEE", + "community_served_state": "WI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSCW-DT", + "community_served_city": "WICHITA", + "community_served_state": "KS", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSNW", + "community_served_city": "WICHITA", + "community_served_state": "KS", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSNC", + "community_served_city": "GREAT BEND", + "community_served_state": "KS", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSNG", + "community_served_city": "GARDEN CITY", + "community_served_state": "KS", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSNK", + "community_served_city": "MCCOOK", + "community_served_state": "NE", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAZT-CD", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSFX-TV", + "community_served_city": "WILMINGTON", + "community_served_state": "NC", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVO", + "community_served_city": "ROCKFORD", + "community_served_state": "IL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBNX-TV", + "community_served_city": "AKRON", + "community_served_state": "OH", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBXX-TV", + "community_served_city": "CROSSVILLE", + "community_served_state": "TN", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHRM-TV", + "community_served_city": "WAUSAU", + "community_served_state": "WI", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCWF", + "community_served_city": "SURING", + "community_served_state": "WI", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WITF-TV", + "community_served_city": "HARRISBURG", + "community_served_state": "PA", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KAVU-TV", + "community_served_city": "VICTORIA", + "community_served_state": "TX", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WITI", + "community_served_city": "MILWAUKEE", + "community_served_state": "WI", + "network_affiliation": "Fox", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSYR-TV", + "community_served_city": "SYRACUSE", + "community_served_state": "NY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJAC-TV", + "community_served_city": "JOHNSTOWN", + "community_served_state": "PA", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJBK", + "community_served_city": "DETROIT", + "community_served_state": "MI", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJCT", + "community_served_city": "JACKSONVILLE", + "community_served_state": "FL", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJHG-TV", + "community_served_city": "PANAMA CITY", + "community_served_state": "FL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJW", + "community_served_city": "CLEVELAND", + "community_served_state": "OH", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJZY", + "community_served_city": "BELMONT", + "community_served_state": "NC", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKBN-TV", + "community_served_city": "YOUNGSTOWN", + "community_served_state": "OH", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKEF", + "community_served_city": "DAYTON", + "community_served_state": "OH", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKRG-TV", + "community_served_city": "MOBILE", + "community_served_state": "AL", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKRN-TV", + "community_served_city": "NASHVILLE", + "community_served_state": "TN", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLPX-TV", + "community_served_city": "CHARLESTON", + "community_served_state": "WV", + "network_affiliation": "ION,Court TV, Bounce, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKYC", + "community_served_city": "CLEVELAND", + "community_served_state": "OH", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLEX-TV", + "community_served_city": "LEXINGTON", + "community_served_state": "KY", + "network_affiliation": "NBC; Grit; Bounce; Court TV; QVC2", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLFI-TV", + "community_served_city": "LAFAYETTE", + "community_served_state": "IN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLFL", + "community_served_city": "RALEIGH", + "community_served_state": "NC", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLNY-TV", + "community_served_city": "RIVERHEAD", + "community_served_state": "NY", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLS-TV", + "community_served_city": "CHICAGO", + "community_served_state": "IL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLTV-DT", + "community_served_city": "MIAMI", + "community_served_state": "FL", + "network_affiliation": "UNIVISION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLVI", + "community_served_city": "CAMBRIDGE", + "community_served_state": "MA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMDN", + "community_served_city": "MERIDIAN", + "community_served_state": "MS", + "network_affiliation": "CBS, Bounce, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMHT", + "community_served_city": "SCHENECTADY", + "community_served_state": "NY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCWN", + "community_served_city": "SCHENECTADY", + "community_served_state": "NY", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMTW", + "community_served_city": "POLAND SPRING", + "community_served_state": "ME", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMUR-TV", + "community_served_city": "MANCHESTER", + "community_served_state": "NH", + "network_affiliation": "ABC, MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNAB", + "community_served_city": "NASHVILLE", + "community_served_state": "TN", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNAC-TV", + "community_served_city": "PROVIDENCE", + "community_served_state": "RI", + "network_affiliation": "FOX, CW, Antenna TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXH-TV", + "community_served_city": "HOOVER", + "community_served_state": "AL", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNEP-TV", + "community_served_city": "SCRANTON", + "community_served_state": "PA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WQAD-TV", + "community_served_city": "MOLINE", + "community_served_state": "IL", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNJU", + "community_served_city": "LINDEN", + "community_served_state": "NJ", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNJX-TV", + "community_served_city": "MAYAGUEZ", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNNE", + "community_served_city": "MONTPELIER", + "community_served_state": "VT", + "network_affiliation": "CW NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNWO-TV", + "community_served_city": "TOLEDO", + "community_served_state": "OH", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXN-TV", + "community_served_city": "NEW YORK", + "community_served_state": "NY", + "network_affiliation": "ION, Bounce, Grit, Laff, IONPlus, Court TV, Jewelry TV, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNYT", + "community_served_city": "ALBANY", + "community_served_state": "NY", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHAM-TV", + "community_served_city": "ROCHESTER", + "community_served_state": "NY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSWB", + "community_served_city": "SCRANTON", + "community_served_state": "PA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WOLF-TV", + "community_served_city": "HAZLETON", + "community_served_state": "PA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCOV-TV", + "community_served_city": "MONTGOMERY", + "community_served_state": "AL", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBNA", + "community_served_city": "LOUISVILLE", + "community_served_state": "KY", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFAA-TV", + "community_served_city": "DECATUR", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSHV-TV", + "community_served_city": "SHREVEPORT", + "community_served_state": "LA", + "network_affiliation": "MNT", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPDF-CD", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "VISION LATINA", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPGH-TV", + "community_served_city": "PITTSBURGH", + "community_served_state": "PA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPHL-TV", + "community_served_city": "PHILADELPHIA", + "community_served_state": "PA", + "network_affiliation": "The CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPIX", + "community_served_city": "NEW YORK", + "community_served_state": "NY", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WORO-DT", + "community_served_city": "FAJARDO", + "community_served_state": "PR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPTA", + "community_served_city": "FORT WAYNE", + "community_served_state": "IN", + "network_affiliation": "ABC, NBC, MyTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPNT", + "community_served_city": "PITTSBURGH", + "community_served_state": "PA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXI", + "community_served_city": "PITTSBURGH", + "community_served_state": "PA", + "network_affiliation": "NBC, Me-TV, Laff-TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRDW-TV", + "community_served_city": "AUGUSTA", + "community_served_state": "GA", + "network_affiliation": "CBS, MyNet, True Crime Network, Cozi", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WREX", + "community_served_city": "ROCKFORD", + "community_served_state": "IL", + "network_affiliation": "NBC(13.1), MeTV Toons(13.2 as of 08/07/2024), MeTV(13.3), CourtTV(13.4), True Crime Network(13.5), CBS(23.10)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRGB", + "community_served_city": "SCHENECTADY", + "community_served_state": "NY", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WROC-TV", + "community_served_city": "ROCHESTER", + "community_served_state": "NY", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSBK-TV", + "community_served_city": "BOSTON", + "community_served_state": "MA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSBT-TV", + "community_served_city": "SOUTH BEND", + "community_served_state": "IN", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSET-TV", + "community_served_city": "LYNCHBURG", + "community_served_state": "VA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPOB-TV", + "community_served_city": "POPLAR BLUFF", + "community_served_state": "MO", + "network_affiliation": "ABC, Heroes & Icons, True Crime, Court, ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSIL-TV", + "community_served_city": "HARRISBURG", + "community_served_state": "IL", + "network_affiliation": "ABC, Heroes & Icons, True Crime, Court, ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSJV", + "community_served_city": "ELKHART", + "community_served_state": "IN", + "network_affiliation": "Heroes & Icons, True Crime, Quest, Dabl", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSKG-TV", + "community_served_city": "BINGHAMTON", + "community_served_state": "NY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSOC-TV", + "community_served_city": "CHARLOTTE", + "community_served_state": "NC", + "network_affiliation": "ABC (9.1), Telemundo (9.2), GetTV (9.3). Comet (9.4)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPXW-TV", + "community_served_city": "MANASSAS", + "community_served_state": "VA", + "network_affiliation": "ION, Bounce, Court TV, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSYM-TV", + "community_served_city": "LANSING", + "community_served_state": "MI", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTMJ-TV", + "community_served_city": "MILWAUKEE", + "community_served_state": "WI", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTNV-TV", + "community_served_city": "LAS VEGAS", + "community_served_state": "NV", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTNH", + "community_served_city": "NEW HAVEN", + "community_served_state": "CT", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTOG", + "community_served_city": "ST. PETERSBURG", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTOV-TV", + "community_served_city": "STEUBENVILLE", + "community_served_state": "OH", + "network_affiliation": "WTOV D1 - NBC; WTOV D2 - FOX; WTOV D3 - Comet", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTTE", + "community_served_city": "COLUMBUS", + "community_served_state": "OH", + "network_affiliation": "TBD", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTTO", + "community_served_city": "HOMEWOOD", + "community_served_state": "AL", + "network_affiliation": "The CW Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVA", + "community_served_city": "TUPELO", + "community_served_state": "MS", + "network_affiliation": "NBC, ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVG", + "community_served_city": "TOLEDO", + "community_served_state": "OH", + "network_affiliation": "abc", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTVH", + "community_served_city": "SYRACUSE", + "community_served_state": "NY", + "network_affiliation": "CBS, Charge, TBD", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRNN-TV", + "community_served_city": "NEW ROCHELLE", + "community_served_state": "NY", + "network_affiliation": "Shop LC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVEC", + "community_served_city": "HAMPTON", + "community_served_state": "VA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVNS-TV", + "community_served_city": "LEWISBURG", + "community_served_state": "WV", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVIT", + "community_served_city": "NEW BRITAIN", + "community_served_state": "CT", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVTM-TV", + "community_served_city": "BIRMINGHAM", + "community_served_state": "AL", + "network_affiliation": "NBC/MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVTV", + "community_served_city": "MILWAUKEE", + "community_served_state": "WI", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVVA", + "community_served_city": "BLUEFIELD", + "community_served_state": "WV", + "network_affiliation": "NBC CW METV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWL-TV", + "community_served_city": "NEW ORLEANS", + "community_served_state": "LA", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWMT", + "community_served_city": "KALAMAZOO", + "community_served_state": "MI", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWOR-TV", + "community_served_city": "SECAUCUS", + "community_served_state": "NJ", + "network_affiliation": "MyNetworkTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMYD", + "community_served_city": "DETROIT", + "community_served_state": "MI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WXTV-DT", + "community_served_city": "PATERSON", + "community_served_state": "NJ", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFNB", + "community_served_city": "CASPER", + "community_served_state": "WY", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRIC-TV", + "community_served_city": "PETERSBURG", + "community_served_state": "VA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBAY-TV", + "community_served_city": "GREEN BAY", + "community_served_state": "WI", + "network_affiliation": "ABC, Catchy Comedy", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWCDC-TV", + "community_served_city": "ADAMS", + "community_served_state": "MA", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLNS-TV", + "community_served_city": "LANSING", + "community_served_state": "MI", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTEN", + "community_served_city": "ALBANY", + "community_served_state": "NY", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKBT-DT", + "community_served_city": "LA CROSSE", + "community_served_state": "WI", + "network_affiliation": "CBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKSWT", + "community_served_city": "YUMA", + "community_served_state": "AZ", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPHY-CD", + "community_served_city": "TRENTON", + "community_served_state": "NJ", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DDWAZE-TV", + "community_served_city": "MADISONVILLE", + "community_served_state": "KY", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBKP", + "community_served_city": "CALUMET", + "community_served_state": "MI", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWBQ", + "community_served_city": "SANTA FE", + "community_served_state": "NM", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSKY-TV", + "community_served_city": "MANTEO", + "community_served_state": "NC", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMTW", + "community_served_city": "HUTCHINSON", + "community_served_state": "KS", + "network_affiliation": "Dabl & TBD", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPTH", + "community_served_city": "SIOUX CITY", + "community_served_state": "IA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPCB-DT", + "community_served_city": "SNYDER", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTUZ-TV", + "community_served_city": "SHAWNEE", + "community_served_state": "OK", + "network_affiliation": "TELEMUNDO", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPXO-TV", + "community_served_city": "KANEOHE", + "community_served_state": "HI", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVUA", + "community_served_city": "TUSCALOOSA", + "community_served_state": "AL", + "network_affiliation": "COZI TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPNZ", + "community_served_city": "OGDEN", + "community_served_state": "UT", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYCI", + "community_served_city": "SARANAC LAKE", + "community_served_state": "NY", + "network_affiliation": "MYNET", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLCW-TV", + "community_served_city": "WOLFFORTH", + "community_served_state": "TX", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WYOW", + "community_served_city": "EAGLE RIVER", + "community_served_state": "WI", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUVE-CD", + "community_served_city": "TUCSON", + "community_served_state": "AZ", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWBM", + "community_served_city": "HARRISON", + "community_served_state": "AR", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQCW-DT", + "community_served_city": "MUSKOGEE", + "community_served_state": "OK", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSKA", + "community_served_city": "CORNING", + "community_served_state": "NY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVUI", + "community_served_city": "POCATELLO", + "community_served_state": "ID", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDMI", + "community_served_city": "DES MOINES", + "community_served_state": "IA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQUP", + "community_served_city": "PULLMAN", + "community_served_state": "WA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDCK", + "community_served_city": "DODGE CITY", + "community_served_state": "KS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFTU-DT", + "community_served_city": "DOUGLAS", + "community_served_state": "AZ", + "network_affiliation": "Unimas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPTF-DT", + "community_served_city": "FARWELL", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUNP", + "community_served_city": "LA GRANDE", + "community_served_state": "OR", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WZMQ", + "community_served_city": "MARQUETTE", + "community_served_state": "MI", + "network_affiliation": "MeTV (Main), CBS (Multicast)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUTH-DT", + "community_served_city": "PROVO", + "community_served_state": "UT", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTAZ", + "community_served_city": "PHOENIX", + "community_served_state": "AZ", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNBN", + "community_served_city": "RAPID CITY", + "community_served_state": "SD", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMOW", + "community_served_city": "CRANDON", + "community_served_state": "WI", + "network_affiliation": "ABC 4.1, Catchy Comedy 4.2, MeTV Toons 4.3, CourtTV 4.4, and True Crime 4.5", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPXJ", + "community_served_city": "MINDEN", + "community_served_state": "LA", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WEPX-TV", + "community_served_city": "GREENVILLE", + "community_served_state": "NC", + "network_affiliation": "ION, Court TV, Grit, Laff, IONPlus, SCRIPPS News, Jewelry TV, HSN, QVC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFPX-TV", + "community_served_city": "NEWTON", + "community_served_state": "IA", + "network_affiliation": "ION, Court TV, Laff, Mystery, IONPlus, SCRIPPS News, Jewelry TV, HSN, HSN2", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KXNW", + "community_served_city": "EUREKA SPRINGS", + "community_served_state": "AR", + "network_affiliation": "My Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBIF", + "community_served_city": "MARIANNA", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKWWF", + "community_served_city": "WATERLOO", + "community_served_state": "IA", + "network_affiliation": "RTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFBD", + "community_served_city": "DESTIN", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTWV", + "community_served_city": "MEMPHIS", + "community_served_state": "TN", + "network_affiliation": "REL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGPX-TV", + "community_served_city": "SPOKANE", + "community_served_state": "WA", + "network_affiliation": "ION", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WVLR", + "community_served_city": "TAZEWELL", + "community_served_state": "TN", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMWC-TV", + "community_served_city": "GALESBURG", + "community_served_state": "IL", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KLWB", + "community_served_city": "NEW IBERIA", + "community_served_state": "LA", + "network_affiliation": "MeTV Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTPC-TV", + "community_served_city": "VIRGINIA BEACH", + "community_served_state": "VA", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPTW", + "community_served_city": "CASPER", + "community_served_state": "WY", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUES", + "community_served_city": "RICHFIELD", + "community_served_state": "UT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUEW", + "community_served_city": "ST. GEORGE", + "community_served_state": "UT", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNDB", + "community_served_city": "BISMARCK", + "community_served_state": "ND", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRTN-TV", + "community_served_city": "DURANGO", + "community_served_state": "CO", + "network_affiliation": "TBD", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNDM", + "community_served_city": "MINOT", + "community_served_state": "ND", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKEFB", + "community_served_city": "AMES", + "community_served_state": "IA", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBSF", + "community_served_city": "BAY CITY", + "community_served_state": "MI", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRII", + "community_served_city": "CHISHOLM", + "community_served_state": "MN", + "network_affiliation": "NBC, CBS, My9, H&I", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTLF", + "community_served_city": "TALLAHASSEE", + "community_served_state": "FL", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSCC", + "community_served_city": "CORPUS CHRISTI", + "community_served_state": "TX", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KKAI", + "community_served_city": "KAILUA", + "community_served_state": "HI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOCW", + "community_served_city": "HOISINGTON", + "community_served_state": "KS", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WZVI", + "community_served_city": "CHARLOTTE AMALIE", + "community_served_state": "VI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WCVI-TV", + "community_served_city": "CHRISTIANSTED", + "community_served_state": "VI", + "network_affiliation": "CBS (Main), ABC (Multicast)", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KBLN-TV", + "community_served_city": "GRANTS PASS", + "community_served_state": "OR", + "network_affiliation": "3ABN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWKDH", + "community_served_city": "HOUSTON", + "community_served_state": "MS", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDTP", + "community_served_city": "HOLBROOK", + "community_served_state": "AZ", + "network_affiliation": "IND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KTEL-TV", + "community_served_city": "CARLSBAD", + "community_served_state": "NM", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFTC", + "community_served_city": "BEMIDJI", + "community_served_state": "MN", + "network_affiliation": "MNT", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KEYU", + "community_served_city": "BORGER", + "community_served_state": "TX", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WDPM-DT", + "community_served_city": "MOBILE", + "community_served_state": "AL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WUNW", + "community_served_city": "CANTON", + "community_served_state": "NC", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVME-TV", + "community_served_city": "BISHOP", + "community_served_state": "CA", + "network_affiliation": "JTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCEB", + "community_served_city": "LONGVIEW", + "community_served_state": "TX", + "network_affiliation": "CRTV NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WHDT", + "community_served_city": "STUART", + "community_served_state": "FL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WKNX-TV", + "community_served_city": "KNOXVILLE", + "community_served_state": "TN", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WFNA", + "community_served_city": "GULF SHORES", + "community_served_state": "AL", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KGLA-DT", + "community_served_city": "HAMMOND", + "community_served_state": "LA", + "network_affiliation": "Telemundo", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNBW-DT", + "community_served_city": "GAINESVILLE", + "community_served_state": "FL", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMBF-TV", + "community_served_city": "MYRTLE BEACH", + "community_served_state": "SC", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFJX", + "community_served_city": "PITTSBURG", + "community_served_state": "KS", + "network_affiliation": "FOX, CW, START TV, DABL", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPFO", + "community_served_city": "WATERVILLE", + "community_served_state": "ME", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRWB-TV", + "community_served_city": "ROSWELL", + "community_served_state": "NM", + "network_affiliation": "CW", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKEJB", + "community_served_city": "EL DORADO", + "community_served_state": "AR", + "network_affiliation": "MY NETWORK TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNMD-TV", + "community_served_city": "SANTA FE", + "community_served_state": "NM", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRMU", + "community_served_city": "DURANGO", + "community_served_state": "CO", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOCM", + "community_served_city": "NORMAN", + "community_served_state": "OK", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WLOO", + "community_served_city": "VICKSBURG", + "community_served_state": "MS", + "network_affiliation": "MY Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKCBU", + "community_served_city": "PRICE", + "community_served_state": "UT", + "network_affiliation": "DAYSTAR", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWVIF", + "community_served_city": "CHRISTIANSTED", + "community_served_state": "VI", + "network_affiliation": "IND", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWWT", + "community_served_city": "ODESSA", + "community_served_state": "TX", + "network_affiliation": "MY NETWORK TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KFXL-TV", + "community_served_city": "LINCOLN", + "community_served_state": "NE", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WBIH", + "community_served_city": "SELMA", + "community_served_state": "AL", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKOBG-TV", + "community_served_city": "SILVER CITY", + "community_served_state": "NM", + "network_affiliation": "NBC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DWFXS-DT", + "community_served_city": "WITTENBERG", + "community_served_state": "WI", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPIF", + "community_served_city": "POCATELLO", + "community_served_state": "ID", + "network_affiliation": "Grit", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKCPM", + "community_served_city": "GRAND FORKS", + "community_served_state": "ND", + "network_affiliation": "MYTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUPB", + "community_served_city": "MIDLAND", + "community_served_state": "TX", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WTPX-TV", + "community_served_city": "ANTIGO", + "community_served_state": "WI", + "network_affiliation": "ION, Grit, Mystery, Laff, Bounce, SCRIPPS News, Jewelry TV, HSN, QVC2", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUOK", + "community_served_city": "WOODWARD", + "community_served_state": "OK", + "network_affiliation": "UNIVISION/UNIMAS/", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMYA-DT", + "community_served_city": "CAMDEN", + "community_served_state": "AR", + "network_affiliation": "ME-TV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WJLP", + "community_served_city": "MIDDLETOWN TOWNSHIP", + "community_served_state": "NJ", + "network_affiliation": "MeTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KUPU", + "community_served_city": "WAIMANALO", + "community_served_state": "HI", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KETZ", + "community_served_city": "EL DORADO", + "community_served_state": "AR", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNIC-DT", + "community_served_city": "BLANCO", + "community_served_state": "TX", + "network_affiliation": "Unimas", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCGE", + "community_served_city": "CROOKSTON", + "community_served_state": "MN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "DKTUW", + "community_served_city": "SCOTTSBLUFF", + "community_served_state": "NE", + "network_affiliation": "RTN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRBJ-TV", + "community_served_city": "MAGEE", + "community_served_state": "MS", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WZRB", + "community_served_city": "COLUMBIA", + "community_served_state": "SC", + "network_affiliation": "ION, Court TV, Mystery, Grit, IONPlus, SCRIPPS News, Jewelry TV, QVC2, HSN2", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WNYA", + "community_served_city": "PITTSFIELD", + "community_served_state": "MA", + "network_affiliation": "My Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WRPT", + "community_served_city": "HIBBING", + "community_served_state": "MN", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMDE", + "community_served_city": "DEVILS LAKE", + "community_served_state": "ND", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KWKS", + "community_served_city": "COLBY", + "community_served_state": "KS", + "network_affiliation": "PBS", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KRBK", + "community_served_city": "OSAGE BEACH", + "community_served_state": "MO", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KVSN-DT", + "community_served_city": "PUEBLO", + "community_served_state": "CO", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KDCU-DT", + "community_served_city": "DERBY", + "community_served_state": "KS", + "network_affiliation": "Univision", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPJR-TV", + "community_served_city": "GREELEY", + "community_served_state": "CO", + "network_affiliation": "TBN", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KCWV", + "community_served_city": "DULUTH", + "community_served_state": "MN", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WWJX", + "community_served_city": "JACKSON", + "community_served_state": "MS", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KOHD", + "community_served_city": "BEND", + "community_served_state": "OR", + "network_affiliation": "ABC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSQA", + "community_served_city": "TOPEKA", + "community_served_state": "KS", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KNLA-CD", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPSJ-CD", + "community_served_city": "HAMMONTON", + "community_served_state": "NJ", + "network_affiliation": "LATV NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMMD-CD", + "community_served_city": "SALINAS", + "community_served_state": "CA", + "network_affiliation": "CourtTV, Grit, LAFF, Mistery", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KQMM-CD", + "community_served_city": "SANTA MARIA", + "community_served_state": "CA", + "network_affiliation": "CRTV NETWORK", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KJTV-CD", + "community_served_city": "WOLFFORTH", + "community_served_state": "TX", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WPVN-CD", + "community_served_city": "CHICAGO", + "community_served_state": "IL", + "network_affiliation": "VISION LATINA", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KMPH-CD", + "community_served_city": "MERCED-MARIPOSA", + "community_served_state": "CA", + "network_affiliation": "FOX", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K04QP-D", + "community_served_city": "CASAS ADOBES", + "community_served_state": "AZ", + "network_affiliation": "NBC, COZI", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPLE-CD", + "community_served_city": "KILLEEN", + "community_served_state": "TX", + "network_affiliation": "TCT Network", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "K24HH-D", + "community_served_city": "WICHITA FALLS", + "community_served_state": "TX", + "network_affiliation": "NRB", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSBS-CD", + "community_served_city": "DENVER", + "community_served_state": "CO", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WMDE", + "community_served_city": "DOVER", + "community_served_state": "DE", + "network_affiliation": "Shop LC", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WACP", + "community_served_city": "ATLANTIC CITY", + "community_served_state": "NJ", + "network_affiliation": "Independent", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KSFV-CD", + "community_served_city": "LOS ANGELES", + "community_served_state": "CA", + "network_affiliation": "JTV", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "KPOM-CD", + "community_served_city": "ONTARIO", + "community_served_state": "CA", + "network_affiliation": "Catchy Comedy", + "category": "Broadcast", + "type": "Broadcast (OTA)" + }, + { + "callsign": "WSLN", + "community_served_city": "FREEPORT", + "community_served_state": "IL", + "network_affiliation": "CW Plus", + "category": "Broadcast", + "type": "Broadcast (OTA)" + } + ] +} \ No newline at end of file diff --git a/Stream-Mapparr/__init__.py b/Stream-Mapparr/__init__.py index acf5060..c3f1ed1 100644 --- a/Stream-Mapparr/__init__.py +++ b/Stream-Mapparr/__init__.py @@ -1 +1,9 @@ -from .plugin import Plugin, fields, actions \ No newline at end of file +""" +Dispatcharr Stream-Mapparr Plugin +Automatically adds matching streams to channels based on name similarity and quality +""" + +from .plugin import Plugin + +__version__ = "0.6.0" +__all__ = ["Plugin"] \ No newline at end of file diff --git a/Stream-Mapparr/fuzzy_matcher.py b/Stream-Mapparr/fuzzy_matcher.py index 5d9d00f..9386f45 100644 --- a/Stream-Mapparr/fuzzy_matcher.py +++ b/Stream-Mapparr/fuzzy_matcher.py @@ -8,10 +8,11 @@ import os import re import json import logging +import unicodedata from glob import glob # Version: YY.DDD.HHMM (Julian date format: Year.DayOfYear.Time) -__version__ = "25.317.1900" +__version__ = "24.332.1600" # Setup logging LOGGER = logging.getLogger("plugins.fuzzy_matcher") @@ -21,21 +22,25 @@ LOGGER = logging.getLogger("plugins.fuzzy_matcher") # Quality-related patterns: [4K], HD, (SD), etc. QUALITY_PATTERNS = [ - # Bracketed quality tags: [4K], [UHD], [FHD], [HD], [SD], [Unknown], [Unk], [Slow], [Dead] - r'\[(4K|UHD|FHD|HD|SD|Unknown|Unk|Slow|Dead)\]', - r'\[(?:4k|uhd|fhd|hd|sd|unknown|unk|slow|dead)\]', - - # Unbracketed quality tags in middle: " 4K ", " UHD ", " FHD ", " HD ", " SD ", etc. - r'\s(?:4K|UHD|FHD|HD|SD|Unknown|Unk|Slow|Dead|FD)\s', - - # Unbracketed quality tags at end: " 4K", " UHD", " FHD", " HD", " SD", etc. - r'\s(?:4K|UHD|FHD|HD|SD|Unknown|Unk|Slow|Dead|FD)$', - - # Word boundary quality tags with optional colon: "4K:", "UHD:", "FHD:", "HD:", etc. - r'\b(?:4K|UHD|FHD|HD|SD|Unknown|Unk|Slow|Dead|FD):?\s', - - # Parenthesized quality tags: (4K), (UHD), (FHD), (HD), (SD), (Unknown), (Unk), (Slow), (Dead), (Backup) - r'\s\((4K|UHD|FHD|HD|SD|Unknown|Unk|Slow|Dead|FD|Backup)\)', + # Quality tags in any format: brackets, parentheses, or standalone + # These patterns match quality tags at the beginning, middle, or end of names + # Matches: [4K], (4K), 4K, [FHD], (FHD), FHD, etc. + # Quality keywords list: 4K, 8K, UHD, FHD, HD, SD, FD, Unknown, Unk, Slow, Dead, Backup + + # Bracketed quality tags: [4K], [UHD], [FHD], [HD], [SD], etc. + r'\s*\[(4K|8K|UHD|FHD|HD|SD|FD|Unknown|Unk|Slow|Dead|Backup)\]\s*', + + # Parenthesized quality tags: (4K), (UHD), (FHD), (HD), (SD), etc. + r'\s*\((4K|8K|UHD|FHD|HD|SD|FD|Unknown|Unk|Slow|Dead|Backup)\)\s*', + + # Standalone quality tags at START of string (with word boundary) + r'^\s*(4K|8K|UHD|FHD|HD|SD|FD|Unknown|Unk|Slow|Dead)\b\s*', + + # Standalone quality tags at END of string (with word boundary) + r'\s*\b(4K|8K|UHD|FHD|HD|SD|FD|Unknown|Unk|Slow|Dead)$', + + # Standalone quality tags in MIDDLE (with word boundaries on both sides) + r'\s+\b(4K|8K|UHD|FHD|HD|SD|FD|Unknown|Unk|Slow|Dead)\b\s+', ] # Regional indicator patterns: East, West, etc. @@ -46,21 +51,31 @@ REGIONAL_PATTERNS = [ # Geographic prefix patterns: US:, USA:, etc. GEOGRAPHIC_PATTERNS = [ - # Geographic prefixes - r'\bUSA?:\s', # "US:" or "USA:" - r'\bUS\s', # "US " at word boundary + # Country codes in various formats + # Matches patterns like: US, USA, FR, UK, CA, DE, etc. + # With separators: US:, USA:, |FR|, US -, FR -, etc. + + # Format: XX: or XXX: (e.g., US:, USA:, FR:, UK:) + # This is safe because the colon clearly indicates a prefix + r'\b[A-Z]{2,3}:\s*', + + # Format: XX - or XXX - (e.g., US - , USA - , FR - ) + # Safe because the dash clearly indicates a separator + r'\b[A-Z]{2,3}\s*-\s*', + + # Format: |XX| or |XXX| (e.g., |US|, |FR|, |UK|) + # Safe because pipes clearly indicate a tag + r'\|[A-Z]{2,3}\|\s*', + + # Format: [XX] or [XXX] (e.g., [US], [FR], [UK]) + # Safe because brackets clearly indicate a tag + r'\[[A-Z]{2,3}\]\s*', ] # Miscellaneous patterns: (CX), (Backup), single-letter tags, etc. MISC_PATTERNS = [ - # Single letter tags in parentheses: (A), (B), (C), etc. - r'\([A-Z]\)', - - # Special tags - r'\s\(CX\)', # Cinemax tag - - # Backup tags - r'\([bB]ackup\)', + # Remove ALL content within parentheses (e.g., (CX), (B), (PRIME), (Backup), etc.) + r'\s*\([^)]*\)\s*', ] @@ -293,10 +308,10 @@ class FuzzyMatcher: Args: name: Name to normalize user_ignored_tags: Additional user-configured tags to ignore (list of strings) - ignore_quality: If True, remove quality-related patterns (e.g., [4K], HD, (SD)) + ignore_quality: If True, remove ALL quality indicators in any format (e.g., 4K, [4K], (4K), FHD, [FHD], (FHD), HD, SD, UHD, 8K) ignore_regional: If True, remove regional indicator patterns (e.g., East) - ignore_geographic: If True, remove geographic prefix patterns (e.g., US:, USA) - ignore_misc: If True, remove miscellaneous patterns (e.g., (CX), (Backup), single-letter tags) + ignore_geographic: If True, remove ALL country code patterns (e.g., US, USA, US:, |FR|, FR -, [UK]) + ignore_misc: If True, remove ALL content within parentheses (e.g., (CX), (B), (PRIME), (Backup)) remove_cinemax: If True, remove "Cinemax" prefix (useful when channel name contains "max") remove_country_prefix: If True, remove country code prefixes (e.g., CA:, UK , DE: ) from start of name @@ -309,8 +324,13 @@ class FuzzyMatcher: # Store original for logging original_name = name - # Remove leading parenthetical prefixes like (SP2), (D1), etc. - name = re.sub(r'^\([^\)]+\)\s*', '', name) + # Remove ALL leading parenthetical prefixes like (US) (PRIME2), (SP2), (D1), etc. + # Loop until no more leading parentheses are found + while name.lstrip().startswith('('): + new_name = re.sub(r'^\s*\([^\)]+\)\s*', '', name) + if new_name == name: # No change, break to avoid infinite loop + break + name = new_name # Remove country code prefix if requested (e.g., "CA:", "UK ", "USA: ") # This handles multi-country databases where streams may be prefixed with country codes @@ -482,8 +502,19 @@ class FuzzyMatcher: def process_string_for_matching(self, s): """ Normalize a string for token-sort fuzzy matching. - Lowercases, removes punctuation, sorts tokens. + Lowercases, removes accents, removes punctuation, sorts tokens. + Properly handles Unicode characters (e.g., French accents). """ + # First, normalize Unicode to decomposed form (NFD) + # This separates base characters from accent marks + # e.g., "é" becomes "e" + combining acute accent + s = unicodedata.normalize('NFD', s) + + # Remove combining characters (accent marks) + # Keep only base characters + s = ''.join(char for char in s if unicodedata.category(char) != 'Mn') + + # Convert to lowercase s = s.lower() # Replace non-alphanumeric with space @@ -726,4 +757,4 @@ class FuzzyMatcher: if quality_tags: parts.extend(quality_tags) - return " ".join(parts) + return " ".join(parts) \ No newline at end of file diff --git a/Stream-Mapparr/plugin.py b/Stream-Mapparr/plugin.py index f787506..d448147 100644 --- a/Stream-Mapparr/plugin.py +++ b/Stream-Mapparr/plugin.py @@ -11,15 +11,24 @@ import re import requests import urllib.request import urllib.error +import time +import random +import pytz from datetime import datetime, timedelta from django.utils import timezone +from django.db import transaction +import threading -# Django model imports -from apps.channels.models import Channel, Stream, ChannelStream, ChannelProfileMembership - -# Import fuzzy matcher +# Import FuzzyMatcher from the same directory from .fuzzy_matcher import FuzzyMatcher +# Django model imports - same approach as Event Channel Managarr +from apps.channels.models import Channel, ChannelProfileMembership, ChannelStream + +# Background scheduling globals +_bg_thread = None +_stop_event = threading.Event() + # Setup logging using Dispatcharr's format LOGGER = logging.getLogger("plugins.stream_mapparr") if not LOGGER.handlers: @@ -29,24 +38,69 @@ if not LOGGER.handlers: LOGGER.addHandler(handler) LOGGER.setLevel(logging.INFO) +class SmartRateLimiter: + """ + Handles rate limiting with exponential backoff for 429/5xx errors. + Uses standard library only. + """ + def __init__(self, setting_value="medium", logger=None): + self.logger = logger + self.disabled = setting_value == "none" + + # Define delays (seconds) based on settings + if self.disabled: + self.base_delay = 0.0 # No rate limiting + elif setting_value == "high": + self.base_delay = 2.0 # 1 request every 2 seconds + elif setting_value == "low": + self.base_delay = 0.1 # 10 requests per second + else: + self.base_delay = 0.5 # 2 requests per second (Default/Medium) + + self.current_delay = self.base_delay + self.consecutive_errors = 0 + + def wait(self): + """Call this before making a request""" + if not self.disabled and self.current_delay > 0: + time.sleep(self.current_delay) + + def report_success(self): + """Call this after a successful 200 OK request""" + self.consecutive_errors = 0 + if self.current_delay > self.base_delay: + self.current_delay = max(self.base_delay, self.current_delay / 2) + + def report_error(self, status_code): + """Call this when an API request fails""" + self.consecutive_errors += 1 + + if status_code == 429 or status_code >= 500: + backoff = min(60, self.base_delay * (2 ** self.consecutive_errors)) + jitter = backoff * 0.1 * random.random() # +/- 10% jitter + self.current_delay = backoff + jitter + + if self.logger: + self.logger.warning(f"[Stream-Mapparr] Rate limit/Server error ({status_code}). Backing off to {self.current_delay:.2f}s") + else: + self.current_delay = self.base_delay + class Plugin: """Dispatcharr Stream-Mapparr Plugin""" name = "Stream-Mapparr" - version = "0.5.1" + version = "0.6.0b" description = "🎯 Automatically add matching streams to channels based on name similarity and quality precedence with enhanced fuzzy matching" @property def fields(self): """Dynamically generate settings fields including channel database selection.""" - # Check for version updates (with caching) version_info = {'message': f"Current version: {self.version}", 'status': 'unknown'} try: version_info = self._check_version_update() except Exception as e: LOGGER.debug(f"[Stream-Mapparr] Error checking version update: {e}") - # Static fields that are always present static_fields = [ { "id": "version_status", @@ -117,7 +171,7 @@ class Plugin: "label": "🎬 Ignore Quality Tags", "type": "boolean", "default": True, - "help_text": "If enabled, hardcoded quality tags like [4K], [HD], (UHD), etc., will be ignored during matching.", + "help_text": "If enabled, all quality indicators will be ignored in any format and position (e.g., 4K, [4K], (4K), FHD, [FHD], (FHD), HD, SD at beginning, middle, or end of name).", }, { "id": "ignore_regional_tags", @@ -131,14 +185,14 @@ class Plugin: "label": "🗺️ Ignore Geographic Tags", "type": "boolean", "default": True, - "help_text": "If enabled, hardcoded geographic prefixes like 'US:', 'USA:' will be ignored during matching.", + "help_text": "If enabled, all country codes will be ignored during matching (e.g., US, USA, US:, |FR|, FR -, [UK], etc.).", }, { "id": "ignore_misc_tags", "label": "🏷️ Ignore Miscellaneous Tags", "type": "boolean", "default": True, - "help_text": "If enabled, miscellaneous tags like (CX), (Backup), and single-letter tags will be ignored during matching.", + "help_text": "If enabled, all content within parentheses will be ignored during matching (e.g., (CX), (B), (PRIME), (Backup)).", }, { "id": "visible_channel_limit", @@ -147,9 +201,58 @@ class Plugin: "default": 1, "help_text": "Number of channels that will be visible and have streams added. Channels are prioritized by quality tags, then by channel number.", }, + { + "id": "rate_limiting", + "label": "⏳ Rate Limiting", + "type": "select", + "options": [ + {"label": "None (Disabled)", "value": "none"}, + {"label": "Low (Fast)", "value": "low"}, + {"label": "Medium (Standard)", "value": "medium"}, + {"label": "High (Slow)", "value": "high"}, + ], + "default": "medium", + "help_text": "Controls delay between API calls. None=No delays, Low=Fast/Aggressive, Medium=Standard, High=Slow/Safe.", + }, + { + "id": "timezone", + "label": "🌍 Timezone", + "type": "select", + "default": "US/Central", + "help_text": "Timezone for scheduled runs. Schedule times below will be converted to UTC.", + "options": [ + {"label": "UTC (Coordinated Universal Time)", "value": "UTC"}, + {"label": "US/Eastern (EST/EDT) - New York", "value": "US/Eastern"}, + {"label": "US/Central (CST/CDT) - Chicago", "value": "US/Central"}, + {"label": "US/Mountain (MST/MDT) - Denver", "value": "US/Mountain"}, + {"label": "US/Pacific (PST/PDT) - Los Angeles", "value": "US/Pacific"}, + {"label": "America/Phoenix (MST - no DST)", "value": "America/Phoenix"}, + {"label": "Europe/London (GMT/BST)", "value": "Europe/London"}, + {"label": "Europe/Paris (CET/CEST)", "value": "Europe/Paris"}, + {"label": "Europe/Berlin (CET/CEST)", "value": "Europe/Berlin"}, + {"label": "Asia/Dubai (GST)", "value": "Asia/Dubai"}, + {"label": "Asia/Tokyo (JST)", "value": "Asia/Tokyo"}, + {"label": "Asia/Shanghai (CST)", "value": "Asia/Shanghai"}, + {"label": "Australia/Sydney (AEDT/AEST)", "value": "Australia/Sydney"} + ] + }, + { + "id": "scheduled_times", + "label": "⏰ Scheduled Run Times (24-hour format)", + "type": "string", + "default": "", + "placeholder": "0600,1300,1800", + "help_text": "Comma-separated times to run automatically each day (24-hour format). Example: 0600,1300,1800 runs at 6 AM, 1 PM, and 6 PM daily. Leave blank to disable scheduling.", + }, + { + "id": "enable_scheduled_csv_export", + "label": "📄 Enable CSV Export", + "type": "boolean", + "default": True, + "help_text": "If enabled, a CSV file of the scan results will be created when streams are added.", + }, ] - # Dynamically add channel database enable/disable fields try: databases = self._get_channel_databases() @@ -181,8 +284,7 @@ class Plugin: }) return static_fields - - # Actions for Dispatcharr UI + actions = [ { "id": "validate_settings", @@ -190,23 +292,29 @@ class Plugin: "description": "Validate all plugin settings (profiles, groups, API connection, etc.)", }, { - "id": "load_process_channels", - "label": "📥 Load/Process Channels", - "description": "Validate settings and load channels from the specified profile and groups", + "id": "update_schedule", + "label": "💾 Update Schedule", + "description": "Save settings and update the scheduled run times. Use this after changing any settings.", + }, + { + "id": "cleanup_periodic_tasks", + "label": "🧹 Cleanup Orphaned Tasks", + "description": "Remove any orphaned Celery periodic tasks from old plugin versions", + "confirm": { "required": True, "title": "Cleanup Orphaned Tasks?", "message": "This will remove any old Celery Beat tasks created by previous versions of this plugin. Continue?" } }, { "id": "preview_changes", "label": "👀 Preview Changes (Dry Run)", - "description": "Preview which streams will be added to channels without making changes", + "description": "Preview which streams will be added to channels (automatically loads channels if needed)", }, { "id": "add_streams_to_channels", "label": "✅ Add Stream(s) to Channels", - "description": "Add matching streams to channels and replace existing stream assignments", + "description": "Add matching streams to channels (automatically loads channels if needed)", "confirm": { "required": True, "title": "Add Streams to Channels?", - "message": "This will replace existing stream assignments on matching channels. Continue?" + "message": "This will add and/or update streams for matching channels. Are you sure you want to continue?" } }, { @@ -230,11 +338,9 @@ class Plugin: } }, ] - - # Quality precedence order for channel tags + CHANNEL_QUALITY_TAG_ORDER = ["[4K]", "[UHD]", "[FHD]", "[HD]", "[SD]", "[Unknown]", "[Slow]", ""] - - # Quality precedence order for stream tags (brackets and parentheses) + STREAM_QUALITY_ORDER = [ "[4K]", "(4K)", "4K", "[UHD]", "(UHD)", "UHD", "[FHD]", "(FHD)", "FHD", @@ -244,229 +350,374 @@ class Plugin: "(D)", "Slow", "[Slow]", "(Slow)" ] - + def __init__(self): + # -- SINGLETON GUARD -- + # Ensure init logic runs only once even if Dispatcharr instantiates multiple times + if getattr(self, '_initialized', False): + return + self._initialized = True + self.processed_data_file = "/data/stream_mapparr_processed.json" self.version_check_cache_file = "/data/stream_mapparr_version_check.json" + self.settings_file = "/data/stream_mapparr_settings.json" self.loaded_channels = [] self.loaded_streams = [] self.channel_stream_matches = [] self.fuzzy_matcher = None + self.api_token = None + self.token_expiration = None + self.saved_settings = {} LOGGER.info(f"[Stream-Mapparr] {self.name} Plugin v{self.version} initialized") - def _get_latest_version(self, owner, repo): - """ - Fetches the latest release tag name from GitHub using only Python's standard library. + def on_load(self, context): + """Called when plugin is loaded""" + LOGGER.info(f"[Stream-Mapparr] Loading {self.name} v{self.version}") + self._load_settings() - Args: - owner (str): GitHub repository owner - repo (str): GitHub repository name - - Returns: - str: Latest version tag or error message - """ - url = f"https://api.github.com/repos/{owner}/{repo}/releases/latest" - - # Add a user-agent to avoid potential 403 Forbidden errors - headers = { - 'User-Agent': 'Dispatcharr-Plugin-Version-Checker' - } + def on_unload(self): + """Called when plugin is unloaded - cleanup schedules""" + LOGGER.info(f"[Stream-Mapparr] Unloading {self.name}") + self._stop_background_scheduler() + def _load_settings(self): + """Load saved settings from disk""" try: - # Create a request object with headers - req = urllib.request.Request(url, headers=headers) - - # Make the request and open the URL with a timeout - with urllib.request.urlopen(req, timeout=5) as response: - # Read the response and decode it as UTF-8 - data = response.read().decode('utf-8') - - # Parse the JSON string - json_data = json.loads(data) - - # Get the tag name - latest_version = json_data.get("tag_name") - - if latest_version: - return latest_version - else: - return None - - except urllib.error.HTTPError as http_err: - if http_err.code == 404: - LOGGER.debug(f"[Stream-Mapparr] GitHub repo not found or has no releases: {http_err}") - return None + if os.path.exists(self.settings_file): + with open(self.settings_file, 'r') as f: + self.saved_settings = json.load(f) + LOGGER.info("[Stream-Mapparr] Loaded saved settings") + # Start background scheduler with loaded settings + self._start_background_scheduler(self.saved_settings) else: - LOGGER.debug(f"[Stream-Mapparr] HTTP error checking version: {http_err.code}") - return None + self.saved_settings = {} except Exception as e: - # Catch other errors like timeouts - LOGGER.debug(f"[Stream-Mapparr] Error checking version: {str(e)}") - return None + LOGGER.error(f"[Stream-Mapparr] Error loading settings: {e}") + self.saved_settings = {} + + def _save_settings(self, settings): + """Save settings to disk""" + try: + with open(self.settings_file, 'w') as f: + json.dump(settings, f, indent=2) + self.saved_settings = settings + LOGGER.info("[Stream-Mapparr] Settings saved successfully") + except Exception as e: + LOGGER.error(f"[Stream-Mapparr] Error saving settings: {e}") + + def update_schedule_action(self, settings, logger): + """Save settings and update scheduled tasks""" + try: + scheduled_times_str = settings.get("scheduled_times") or "" + scheduled_times_str = scheduled_times_str.strip() if scheduled_times_str else "" + logger.info(f"[Stream-Mapparr] Update Schedule - scheduled_times value: '{scheduled_times_str}'") + + # Save settings to disk + self._save_settings(settings) + + # Start/restart the background scheduler + self._start_background_scheduler(settings) + + if scheduled_times_str: + times = self._parse_scheduled_times(scheduled_times_str) + if times: + tz_str = self._get_system_timezone(settings) + time_list = [t.strftime('%H:%M') for t in times] + return { + "status": "success", + "message": f"Schedule updated successfully!\n\nScheduled to run daily at: {', '.join(time_list)} ({tz_str})\n\nBackground scheduler is running." + } + else: + return { + "status": "error", + "message": "Invalid time format. Please use HHMM format (e.g., 0600,1300,1800)" + } + else: + self._stop_background_scheduler() + return { + "status": "success", + "message": "Scheduled times cleared. Background scheduler stopped." + } + except Exception as e: + logger.error(f"[Stream-Mapparr] Error updating schedule: {e}") + return {"status": "error", "message": f"Error updating schedule: {e}"} + + def cleanup_periodic_tasks_action(self, settings, logger): + """Remove orphaned Celery periodic tasks from old plugin versions""" + try: + from django_celery_beat.models import PeriodicTask + + # Find all periodic tasks created by this plugin + tasks = PeriodicTask.objects.filter(name__startswith='stream_mapparr_') + task_count = tasks.count() + + if task_count == 0: + return { + "status": "success", + "message": "No orphaned periodic tasks found. Database is clean!" + } + + # Get task names before deletion + task_names = list(tasks.values_list('name', flat=True)) + + # Delete the tasks + deleted = tasks.delete() + + logger.info(f"Deleted {deleted[0]} orphaned periodic tasks") + + message_parts = [ + f"Successfully removed {task_count} orphaned Celery periodic task(s):", + "" + ] + + # Show deleted task names + for task_name in task_names[:10]: + message_parts.append(f"• {task_name}") + + if len(task_names) > 10: + message_parts.append(f"• ... and {len(task_names) - 10} more tasks") + + message_parts.append("") + message_parts.append("These were leftover from older plugin versions that used Celery scheduling.") + message_parts.append("The plugin now uses background threading instead.") + + return { + "status": "success", + "message": "\n".join(message_parts) + } + + except ImportError: + return { + "status": "error", + "message": "django_celery_beat not available. No cleanup needed." + } + except Exception as e: + logger.error(f"Error cleaning up periodic tasks: {e}") + import traceback + logger.error(f"Traceback: {traceback.format_exc()}") + return {"status": "error", "message": f"Error cleaning up periodic tasks: {e}"} + + def _get_system_timezone(self, settings): + """Get the system timezone from settings""" + # First check if user specified a timezone in plugin settings + if settings.get('timezone'): + user_tz = settings.get('timezone') + LOGGER.info(f"Using user-specified timezone: {user_tz}") + return user_tz + + # Otherwise use US/Central as default + LOGGER.info("Using default timezone: US/Central") + return "US/Central" + + def _parse_scheduled_times(self, scheduled_times_str): + """Parse scheduled times string into list of datetime.time objects""" + if not scheduled_times_str or not scheduled_times_str.strip(): + return [] + + times = [] + for time_str in scheduled_times_str.split(','): + time_str = time_str.strip() + if len(time_str) == 4 and time_str.isdigit(): + hour = int(time_str[:2]) + minute = int(time_str[2:]) + if 0 <= hour < 24 and 0 <= minute < 60: + times.append(datetime.strptime(time_str, '%H%M').time()) + return times + + def _start_background_scheduler(self, settings): + """Start background scheduler thread""" + global _bg_thread + + # Stop existing scheduler if running + self._stop_background_scheduler() + + # Parse scheduled times + scheduled_times_str = settings.get("scheduled_times") or "" + scheduled_times_str = scheduled_times_str.strip() if scheduled_times_str else "" + if not scheduled_times_str: + LOGGER.info("[Stream-Mapparr] No scheduled times configured, scheduler not started") + return + + scheduled_times = self._parse_scheduled_times(scheduled_times_str) + if not scheduled_times: + LOGGER.info("[Stream-Mapparr] No valid scheduled times, scheduler not started") + return + + # Start new scheduler thread + def scheduler_loop(): + import pytz + + # Get timezone from settings + tz_str = self._get_system_timezone(settings) + try: + local_tz = pytz.timezone(tz_str) + except pytz.exceptions.UnknownTimeZoneError: + LOGGER.error(f"[Stream-Mapparr] Unknown timezone: {tz_str}, falling back to America/Chicago") + local_tz = pytz.timezone('America/Chicago') + + # Initialize last run tracker to prevent immediate execution + # when scheduler starts at a time that matches a scheduled time + last_run = {} + + LOGGER.info(f"[Stream-Mapparr] Scheduler timezone: {tz_str}") + LOGGER.info(f"[Stream-Mapparr] Scheduler initialized - will run at next scheduled time (not immediately)") + + while not _stop_event.is_set(): + try: + now = datetime.now(local_tz) + current_date = now.date() + + # Check each scheduled time + for scheduled_time in scheduled_times: + # Create a datetime for the scheduled time today in the local timezone + scheduled_dt = local_tz.localize(datetime.combine(current_date, scheduled_time)) + time_diff = (scheduled_dt - now).total_seconds() + + # Run if within 30 seconds and have not run today for this time + if -30 <= time_diff <= 30 and last_run.get(scheduled_time) != current_date: + LOGGER.info(f"[Stream-Mapparr] Scheduled scan triggered at {now.strftime('%Y-%m-%d %H:%M %Z')}") + try: + # Step 1: Load/Process Channels + LOGGER.info("[Stream-Mapparr] Step 1/2: Loading and processing channels...") + load_result = self.load_process_channels_action(settings, LOGGER) + + if load_result.get("status") == "success": + LOGGER.info(f"[Stream-Mapparr] {load_result.get('message', 'Channels loaded successfully')}") + + # Step 2: Add Streams to Channels + LOGGER.info("[Stream-Mapparr] Step 2/2: Adding streams to channels...") + add_result = self.add_streams_to_channels_action(settings, LOGGER, is_scheduled=True) + + if add_result.get("status") == "success": + LOGGER.info(f"[Stream-Mapparr] {add_result.get('message', 'Streams added successfully')}") + LOGGER.info("[Stream-Mapparr] Scheduled stream mapping completed successfully") + else: + LOGGER.error(f"[Stream-Mapparr] Failed to add streams: {add_result.get('message', 'Unknown error')}") + else: + LOGGER.error(f"[Stream-Mapparr] Failed to load channels: {load_result.get('message', 'Unknown error')}") + LOGGER.error("[Stream-Mapparr] Scheduled run aborted - cannot proceed without channel data") + + except Exception as e: + LOGGER.error(f"[Stream-Mapparr] Error in scheduled scan: {e}") + import traceback + LOGGER.error(f"[Stream-Mapparr] Traceback: {traceback.format_exc()}") + + # Mark as executed for today's date + last_run[scheduled_time] = current_date + break + + # Sleep for 30 seconds + _stop_event.wait(30) + + except Exception as e: + LOGGER.error(f"[Stream-Mapparr] Error in scheduler loop: {e}") + _stop_event.wait(60) + + _bg_thread = threading.Thread(target=scheduler_loop, name="stream-mapparr-scheduler", daemon=True) + _bg_thread.start() + LOGGER.info(f"[Stream-Mapparr] Background scheduler started for times: {[t.strftime('%H:%M') for t in scheduled_times]}") + + def _stop_background_scheduler(self): + """Stop background scheduler thread""" + global _bg_thread + if _bg_thread and _bg_thread.is_alive(): + LOGGER.info("Stopping background scheduler") + _stop_event.set() + _bg_thread.join(timeout=5) + _stop_event.clear() + LOGGER.info("Background scheduler stopped") def _check_version_update(self): - """ - Check if a new version is available on GitHub. - Uses caching to limit checks to once per day or when the plugin version changes. - - Returns: - dict: Contains 'message' and 'status' keys for display - """ + """Check if a new version is available on GitHub.""" current_version = self.version github_owner = "PiratesIRC" github_repo = "Stream-Mapparr" - - # Default response result = { 'message': f"Current version: {current_version}", 'status': 'unknown' } - try: - # Load cache if it exists cache_data = {} should_check = True - if os.path.exists(self.version_check_cache_file): try: with open(self.version_check_cache_file, 'r', encoding='utf-8') as f: cache_data = json.load(f) - - # Check if we need to recheck: - # 1. Plugin version changed (upgrade/downgrade) - # 2. More than 24 hours since last check cached_plugin_version = cache_data.get('plugin_version') last_check_str = cache_data.get('last_check') - if cached_plugin_version == current_version and last_check_str: - # Parse the last check time last_check = datetime.fromisoformat(last_check_str) time_diff = datetime.now() - last_check - - # If less than 24 hours, use cached data if time_diff < timedelta(hours=24): should_check = False latest_version = cache_data.get('latest_version') - - # Compare versions if latest_version and latest_version != current_version: - result = { - 'message': f"🎉 Update available! Current: {current_version} → Latest: {latest_version}", - 'status': 'update_available' - } + result = {'message': f"🎉 Update available! Current: {current_version} → Latest: {latest_version}", 'status': 'update_available'} else: - result = { - 'message': f"✅ You are up to date (v{current_version})", - 'status': 'up_to_date' - } + result = {'message': f"✅ You are up to date (v{current_version})", 'status': 'up_to_date'} except Exception as e: LOGGER.debug(f"[Stream-Mapparr] Error reading version cache: {e}") should_check = True - - # Perform the check if needed if should_check: latest_version = self._get_latest_version(github_owner, github_repo) - - # Update cache - cache_data = { - 'plugin_version': current_version, - 'latest_version': latest_version, - 'last_check': datetime.now().isoformat() - } - + cache_data = {'plugin_version': current_version, 'latest_version': latest_version, 'last_check': datetime.now().isoformat()} try: with open(self.version_check_cache_file, 'w', encoding='utf-8') as f: json.dump(cache_data, f, indent=2) except Exception as e: LOGGER.debug(f"[Stream-Mapparr] Error writing version cache: {e}") - - # Compare versions if latest_version and latest_version != current_version: - result = { - 'message': f"🎉 Update available! Current: {current_version} → Latest: {latest_version}", - 'status': 'update_available' - } + result = {'message': f"🎉 Update available! Current: {current_version} → Latest: {latest_version}", 'status': 'update_available'} elif latest_version: - result = { - 'message': f"✅ You are up to date (v{current_version})", - 'status': 'up_to_date' - } + result = {'message': f"✅ You are up to date (v{current_version})", 'status': 'up_to_date'} else: - result = { - 'message': f"Current version: {current_version} (unable to check for updates)", - 'status': 'error' - } - + result = {'message': f"Current version: {current_version} (unable to check for updates)", 'status': 'error'} except Exception as e: LOGGER.debug(f"[Stream-Mapparr] Error in version check: {e}") - result = { - 'message': f"Current version: {current_version} (update check failed)", - 'status': 'error' - } - + result = {'message': f"Current version: {current_version} (update check failed)", 'status': 'error'} return result - def _get_channel_databases(self): - """ - Scan for channel database files and return metadata for each. + def _get_latest_version(self, owner, repo): + """Helper to fetch latest version tag from GitHub""" + try: + url = f"https://api.github.com/repos/{owner}/{repo}/releases/latest" + req = urllib.request.Request(url, headers={'User-Agent': 'Dispatcharr-Plugin'}) + with urllib.request.urlopen(req, timeout=5) as response: + data = json.loads(response.read().decode()) + return data.get('tag_name', '').lstrip('v') + except Exception: + return None - Returns: - List of dicts with 'id', 'label', 'default', and 'file_path' keys - """ + def _get_channel_databases(self): + """Scan for channel database files and return metadata for each.""" plugin_dir = os.path.dirname(__file__) databases = [] - try: from glob import glob pattern = os.path.join(plugin_dir, '*_channels.json') channel_files = sorted(glob(pattern)) - for channel_file in channel_files: try: filename = os.path.basename(channel_file) - # Extract country code from filename (e.g., "US" from "US_channels.json") country_code = filename.split('_')[0].upper() - - # Try to read the file and extract metadata with open(channel_file, 'r', encoding='utf-8') as f: file_data = json.load(f) - - # Check if it's the new format with metadata if isinstance(file_data, dict) and 'country_code' in file_data: country_name = file_data.get('country_name', filename) version = file_data.get('version', '') - if version: - label = f"{country_name} (v{version})" - else: - label = country_name + label = f"{country_name} (v{version})" if version else country_name else: - # Old format or missing metadata - use filename label = filename - - # Determine default value: US enabled by default, or if only one database, enable it - # We'll check the count later default = (country_code == 'US') - - databases.append({ - 'id': country_code, - 'label': label, - 'default': default, - 'file_path': channel_file, - 'filename': filename - }) - + databases.append({'id': country_code, 'label': label, 'default': default, 'file_path': channel_file, 'filename': filename}) except Exception as e: LOGGER.warning(f"[Stream-Mapparr] Error reading database file {channel_file}: {e}") continue - - # If only one database exists, enable it by default if len(databases) == 1: databases[0]['default'] = True - except Exception as e: LOGGER.error(f"[Stream-Mapparr] Error scanning for channel databases: {e}") - return databases def _initialize_fuzzy_matcher(self, match_threshold=85): @@ -484,11 +735,27 @@ class Plugin: LOGGER.warning(f"[Stream-Mapparr] Failed to initialize FuzzyMatcher: {e}") self.fuzzy_matcher = None + def get_or_refresh_api_token(self, settings, logger): + """Get API token from cache or refresh if expired.""" + if self.api_token and self.token_expiration and self.token_expiration > datetime.now(): + logger.info("[Stream-Mapparr] Using cached API token.") + return self.api_token, None + + logger.info("[Stream-Mapparr] API token is expired or not found, getting a new one.") + token, error = self._get_api_token(settings, logger) + if token: + self.api_token = token + self.token_expiration = datetime.now() + timedelta(minutes=30) + logger.info("[Stream-Mapparr] API token cached for 30 minutes.") + + return token, error + def _get_api_token(self, settings, logger): """Get an API access token using username and password.""" - dispatcharr_url = settings.get("dispatcharr_url", "").strip().rstrip('/') - username = settings.get("dispatcharr_username", "") - password = settings.get("dispatcharr_password", "") + dispatcharr_url = settings.get("dispatcharr_url") or "" + dispatcharr_url = dispatcharr_url.strip().rstrip('/') if dispatcharr_url else "" + username = settings.get("dispatcharr_username") or "" + password = settings.get("dispatcharr_password") or "" if not all([dispatcharr_url, username, password]): return None, "Dispatcharr URL, Username, and Password must be configured in the plugin settings." @@ -496,7 +763,7 @@ class Plugin: try: url = f"{dispatcharr_url}/api/accounts/token/" payload = {"username": username, "password": password} - + logger.info(f"[Stream-Mapparr] Attempting to authenticate with Dispatcharr at: {url}") response = requests.post(url, json=payload, timeout=15) @@ -509,7 +776,7 @@ class Plugin: elif response.status_code >= 500: logger.error(f"[Stream-Mapparr] Server error from Dispatcharr: {response.status_code}") return None, f"Dispatcharr server error ({response.status_code}). Please check if Dispatcharr is running properly." - + response.raise_for_status() token_data = response.json() access_token = token_data.get("access") @@ -517,10 +784,10 @@ class Plugin: if not access_token: logger.error("[Stream-Mapparr] No access token returned from API") return None, "Login successful, but no access token was returned by the API." - + logger.info("[Stream-Mapparr] Successfully obtained API access token") return access_token, None - + except requests.exceptions.ConnectionError as e: logger.error(f"[Stream-Mapparr] Connection error: {e}") return None, f"Unable to connect to Dispatcharr at {dispatcharr_url}. Please check the URL and ensure Dispatcharr is running." @@ -537,89 +804,143 @@ class Plugin: logger.error(f"[Stream-Mapparr] Unexpected error during authentication: {e}") return None, f"Unexpected error during authentication: {e}" - def _get_api_data(self, endpoint, token, settings, logger): - """Helper to perform GET requests to the Dispatcharr API.""" - dispatcharr_url = settings.get("dispatcharr_url", "").strip().rstrip('/') + def _get_api_data(self, endpoint, token, settings, logger, limiter=None): + """Helper to perform GET requests to the Dispatcharr API with rate limiting support.""" + dispatcharr_url = settings.get("dispatcharr_url") or "" + dispatcharr_url = dispatcharr_url.strip().rstrip('/') if dispatcharr_url else "" url = f"{dispatcharr_url}{endpoint}" headers = {'Authorization': f'Bearer {token}', 'Accept': 'application/json'} - + try: + if limiter: limiter.wait() logger.debug(f"[Stream-Mapparr] Making API request to: {endpoint}") response = requests.get(url, headers=headers, timeout=30) - + + # --- Smart Rate Limiter Logic --- + if limiter: + if response.ok: + limiter.report_success() + else: + limiter.report_error(response.status_code) + # -------------------------------- + if response.status_code == 401: - logger.error("[Stream-Mapparr] API token expired or invalid") - raise Exception("API authentication failed. Token may have expired.") - elif response.status_code == 403: + logger.error("[Stream-Mapparr] API token expired or invalid, attempting to refresh.") + self.api_token = None # Invalidate token + new_token, error = self.get_or_refresh_api_token(settings, logger) + if error: + raise Exception("Failed to refresh API token.") + + # Retry request with new token + headers['Authorization'] = f'Bearer {new_token}' + if limiter: limiter.wait() # Wait before retry + response = requests.get(url, headers=headers, timeout=30) + + if limiter: + if response.ok: limiter.report_success() + else: limiter.report_error(response.status_code) + + if response.status_code == 403: logger.error("[Stream-Mapparr] API access forbidden") raise Exception("API access forbidden. Check user permissions.") elif response.status_code == 404: logger.error(f"[Stream-Mapparr] API endpoint not found: {endpoint}") raise Exception(f"API endpoint not found: {endpoint}") - + response.raise_for_status() json_data = response.json() - + if isinstance(json_data, dict): return json_data.get('results', json_data) elif isinstance(json_data, list): return json_data return [] - + except requests.exceptions.RequestException as e: logger.error(f"[Stream-Mapparr] API request failed for {endpoint}: {e}") raise Exception(f"API request failed: {e}") - def _patch_api_data(self, endpoint, token, payload, settings, logger): - """Helper to perform PATCH requests to the Dispatcharr API.""" - dispatcharr_url = settings.get("dispatcharr_url", "").strip().rstrip('/') + def _patch_api_data(self, endpoint, token, payload, settings, logger, limiter=None): + """Helper to perform PATCH requests to the Dispatcharr API with rate limiting support.""" + dispatcharr_url = settings.get("dispatcharr_url") or "" + dispatcharr_url = dispatcharr_url.strip().rstrip('/') if dispatcharr_url else "" url = f"{dispatcharr_url}{endpoint}" headers = {'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'} - + try: + if limiter: limiter.wait() logger.info(f"[Stream-Mapparr] Making API PATCH request to: {endpoint}") response = requests.patch(url, headers=headers, json=payload, timeout=60) - + + # --- Smart Rate Limiter Logic --- + if limiter: + if response.ok: + limiter.report_success() + else: + limiter.report_error(response.status_code) + # -------------------------------- + if response.status_code == 401: - logger.error("[Stream-Mapparr] API token expired or invalid") - raise Exception("API authentication failed. Token may have expired.") - elif response.status_code == 403: + logger.error("[Stream-Mapparr] API token expired or invalid, attempting to refresh.") + self.api_token = None # Invalidate token + new_token, error = self.get_or_refresh_api_token(settings, logger) + if error: + raise Exception("Failed to refresh API token.") + + # Retry request with new token + headers['Authorization'] = f'Bearer {new_token}' + if limiter: limiter.wait() + response = requests.patch(url, headers=headers, json=payload, timeout=60) + if limiter: + if response.ok: limiter.report_success() + else: limiter.report_error(response.status_code) + + if response.status_code == 403: logger.error("[Stream-Mapparr] API access forbidden") raise Exception("API access forbidden. Check user permissions.") elif response.status_code == 404: logger.error(f"[Stream-Mapparr] API endpoint not found: {endpoint}") raise Exception(f"API endpoint not found: {endpoint}") - + response.raise_for_status() return response.json() - + except requests.exceptions.RequestException as e: logger.error(f"[Stream-Mapparr] API PATCH request failed for {endpoint}: {e}") raise Exception(f"API PATCH request failed: {e}") def _post_api_data(self, endpoint, token, payload, settings, logger): """Helper to perform POST requests to the Dispatcharr API.""" - dispatcharr_url = settings.get("dispatcharr_url", "").strip().rstrip('/') + dispatcharr_url = settings.get("dispatcharr_url") or "" + dispatcharr_url = dispatcharr_url.strip().rstrip('/') if dispatcharr_url else "" url = f"{dispatcharr_url}{endpoint}" headers = {'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'} - + try: logger.info(f"[Stream-Mapparr] Making API POST request to: {endpoint}") response = requests.post(url, headers=headers, json=payload, timeout=30) - + if response.status_code == 401: - logger.error("[Stream-Mapparr] API token expired or invalid") - raise Exception("API authentication failed. Token may have expired.") - elif response.status_code == 403: + logger.error("[Stream-Mapparr] API token expired or invalid, attempting to refresh.") + self.api_token = None # Invalidate token + new_token, error = self.get_or_refresh_api_token(settings, logger) + if error: + raise Exception("Failed to refresh API token.") + + # Retry request with new token + headers['Authorization'] = f'Bearer {new_token}' + response = requests.post(url, headers=headers, json=payload, timeout=30) + + if response.status_code == 403: logger.error("[Stream-Mapparr] API access forbidden") raise Exception("API access forbidden. Check user permissions.") elif response.status_code == 404: logger.error(f"[Stream-Mapparr] API endpoint not found: {endpoint}") raise Exception(f"API endpoint not found: {endpoint}") - + response.raise_for_status() return response.json() - + except requests.exceptions.RequestException as e: logger.error(f"[Stream-Mapparr] API POST request failed for {endpoint}: {e}") raise Exception(f"API POST request failed: {e}") @@ -629,7 +950,7 @@ class Plugin: try: from channels.layers import get_channel_layer from asgiref.sync import async_to_sync - + channel_layer = get_channel_layer() if channel_layer: # Send WebSocket message to trigger frontend refresh @@ -648,21 +969,7 @@ class Plugin: @staticmethod def _parse_tags(tags_str): - """ - Parse comma-separated tags with support for quoted strings. - - Supports both single and double quotes to preserve spaces and special characters. - Examples: - "4K, HD, FHD" -> ["4K", "HD", "FHD"] - "4K, \" East\", \"[Dead]\"" -> ["4K", " East", "[Dead]"] - "4K, ' West', \"(Backup)\"" -> ["4K", " West", "(Backup)"] - - Args: - tags_str: String containing comma-separated tags (with optional quotes) - - Returns: - List of parsed tags - """ + """Parse comma-separated tags with support for quoted strings.""" if not tags_str or not tags_str.strip(): return [] @@ -686,7 +993,6 @@ class Plugin: # Handle comma (separator) outside of quotes if char == ',' and in_quote is None: tag = ''.join(current_tag) - # Only strip if tag wasn't quoted tag = tag.strip() if tag: tags.append(tag) @@ -701,7 +1007,6 @@ class Plugin: # Add final tag if current_tag or in_quote is not None: tag = ''.join(current_tag) - # Only strip if tag wasn't quoted if in_quote is None: tag = tag.strip() if tag: @@ -710,23 +1015,9 @@ class Plugin: return tags def _clean_channel_name(self, name, ignore_tags=None, ignore_quality=True, ignore_regional=True, - ignore_geographic=True, ignore_misc=True, remove_cinemax=False, remove_country_prefix=True): - """ - Remove brackets and their contents from channel name for matching, and remove ignore tags. - Uses fuzzy matcher's normalization if available, otherwise falls back to basic cleaning. - - Args: - name: Channel or stream name to clean - ignore_tags: List of tags to ignore - ignore_quality: If True, remove quality-related patterns (e.g., [4K], HD, (SD)) - ignore_regional: If True, remove regional indicator patterns (e.g., East) - ignore_geographic: If True, remove geographic prefix patterns (e.g., US:, USA) - ignore_misc: If True, remove miscellaneous patterns (e.g., (CX), (Backup), single-letter tags) - remove_cinemax: If True, remove "Cinemax" prefix (for streams when channel contains "max") - remove_country_prefix: If True, remove country code prefixes (e.g., CA:, UK ) from start of name - """ + ignore_geographic=True, ignore_misc=True, remove_cinemax=False, remove_country_prefix=False): + """Remove brackets and their contents from channel name for matching, and remove ignore tags.""" if self.fuzzy_matcher: - # Use fuzzy matcher's normalization return self.fuzzy_matcher.normalize_name( name, ignore_tags, ignore_quality=ignore_quality, @@ -736,7 +1027,7 @@ class Plugin: remove_cinemax=remove_cinemax, remove_country_prefix=remove_country_prefix ) - + # Fallback to basic cleaning if ignore_tags is None: ignore_tags = [] @@ -746,7 +1037,6 @@ class Plugin: # Remove country code prefix if requested if remove_country_prefix: quality_tags = {'HD', 'SD', 'FD', 'UHD', 'FHD'} - # Fixed regex: [:\s] instead of [:|\s] (pipe and backslash were incorrect) prefix_match = re.match(r'^([A-Z]{2,3})[:\s]\s*', cleaned) if prefix_match: prefix = prefix_match.group(1).upper() @@ -755,7 +1045,6 @@ class Plugin: # Remove anything in square brackets or parentheses at the end cleaned = re.sub(r'\s*[\[\(][^\[\]\(\)]*[\]\)]\s*$', '', cleaned) - # Keep removing until no more brackets at the end while True: new_cleaned = re.sub(r'\s*[\[\(][^\[\]\(\)]*[\]\)]\s*$', '', cleaned) if new_cleaned == cleaned: @@ -764,23 +1053,18 @@ class Plugin: # Remove ignore tags for tag in ignore_tags: - # If tag has brackets/parentheses, match exactly if '[' in tag or ']' in tag or '(' in tag or ')' in tag: - # Escape special regex characters escaped_tag = re.escape(tag) cleaned = re.sub(r'\s*' + escaped_tag + r'\s*', ' ', cleaned, flags=re.IGNORECASE) else: - # Match as space-separated word cleaned = re.sub(r'\b' + re.escape(tag) + r'\b', '', cleaned, flags=re.IGNORECASE) - + return cleaned.strip() def _extract_quality(self, stream_name): """Extract quality indicator from stream name.""" for quality in self.STREAM_QUALITY_ORDER: - # Match quality with or without brackets/parentheses if quality in ["(H)", "(F)", "(D)"]: - # Special handling for single-letter quality indicators if quality in stream_name: return quality else: @@ -799,7 +1083,6 @@ class Plugin: """Extract quality tag from channel name for prioritization.""" for tag in self.CHANNEL_QUALITY_TAG_ORDER: if tag == "": - # Check if channel has no quality tag has_tag = False for check_tag in self.CHANNEL_QUALITY_TAG_ORDER[:-1]: # Exclude blank if check_tag in channel_name: @@ -821,42 +1104,31 @@ class Plugin: except ValueError: return len(self.STREAM_QUALITY_ORDER) return len(self.STREAM_QUALITY_ORDER) - + return sorted(streams, key=get_quality_index) def _load_channels_data(self, logger, settings=None): - """ - Load channel data from enabled *_channels.json files. - - Args: - logger: Logger instance - settings: Plugin settings dict (optional, for filtering by enabled databases) - - Returns: - List of channel data from enabled databases - """ + """Load channel data from enabled *_channels.json files.""" plugin_dir = os.path.dirname(__file__) channels_data = [] try: - # Get all available databases databases = self._get_channel_databases() if not databases: logger.warning(f"[Stream-Mapparr] No *_channels.json files found in {plugin_dir}") return channels_data - # Filter to only enabled databases enabled_databases = [] for db_info in databases: db_id = db_info['id'] setting_key = f"db_enabled_{db_id}" - - # Check if this database is enabled in settings if settings: is_enabled = settings.get(setting_key, db_info['default']) + # Handle string boolean values + if isinstance(is_enabled, str): + is_enabled = is_enabled.lower() in ('true', 'yes', '1') else: - # No settings provided, use default is_enabled = db_info['default'] if is_enabled: @@ -866,7 +1138,6 @@ class Plugin: logger.warning("[Stream-Mapparr] No channel databases are enabled. Please enable at least one database in settings.") return channels_data - # Load data from enabled databases for db_info in enabled_databases: channel_file = db_info['file_path'] db_label = db_info['label'] @@ -876,17 +1147,12 @@ class Plugin: with open(channel_file, 'r', encoding='utf-8') as f: file_data = json.load(f) - # Handle both old and new format if isinstance(file_data, dict) and 'channels' in file_data: - # New format with metadata channels_list = file_data['channels'] - # Add country_code to each channel for prefix handling for channel in channels_list: channel['_country_code'] = country_code elif isinstance(file_data, list): - # Old format - direct array channels_list = file_data - # Add country_code to each channel for prefix handling for channel in channels_list: channel['_country_code'] = country_code else: @@ -910,262 +1176,455 @@ class Plugin: """Check if a channel has callsign (indicating it's an OTA broadcast channel).""" if not channel_info: return False + if isinstance(channel_info, str): # Handle string input for backwards compatibility if needed + return False return 'callsign' in channel_info and channel_info['callsign'] + def _extract_ota_info(self, channel_name): + """Helper to extract OTA callsign if not using the full channel object (deprecated/fallback)""" + # This is mostly a placeholder if needed for string-based checks + return None def _parse_callsign(self, callsign): """Extract clean callsign, removing suffixes after dash.""" if not callsign: return None - - # Remove anything after dash (e.g., "WLNE-TV" becomes "WLNE") if '-' in callsign: callsign = callsign.split('-')[0].strip() - return callsign.upper() def _match_streams_to_channel(self, channel, all_streams, logger, ignore_tags=None, - ignore_quality=True, ignore_regional=True, ignore_geographic=True, - ignore_misc=True, channels_data=None): - """Find matching streams for a channel using fuzzy matching when available. - - Returns: - tuple: (matching_streams, cleaned_channel_name, cleaned_stream_names, match_reason, database_used) - """ + ignore_quality=True, ignore_regional=True, ignore_geographic=True, + ignore_misc=True, channels_data=None): + """Find matching streams for a channel using fuzzy matching when available.""" if ignore_tags is None: ignore_tags = [] if channels_data is None: channels_data = [] channel_name = channel['name'] - - # Get channel info from JSON channel_info = self._get_channel_info_from_json(channel_name, channels_data, logger) - - # Determine which database was used (if any) database_used = channel_info.get('_country_code', 'N/A') if channel_info else 'N/A' - - # Check if channel name contains "max" (case insensitive) - used for Cinemax handling channel_has_max = 'max' in channel_name.lower() cleaned_channel_name = self._clean_channel_name( channel_name, ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc ) - + if "24/7" in channel_name.lower(): - logger.info(f"[Stream-Mapparr] Cleaned channel name for matching: {cleaned_channel_name}") - + logger.debug(f"[Stream-Mapparr] Cleaned channel name for matching: {cleaned_channel_name}") + # Check if this channel has a callsign (OTA broadcast channel) if self._is_ota_channel(channel_info): callsign = channel_info['callsign'] - logger.info(f"[Stream-Mapparr] Matching OTA channel: {channel_name}") - logger.info(f"[Stream-Mapparr] Using callsign: {callsign}") - - # Search for streams containing the callsign + logger.debug(f"[Stream-Mapparr] Matching OTA channel: {channel_name} using callsign: {callsign}") + matching_streams = [] callsign_pattern = r'\b' + re.escape(callsign) + r'\b' - + for stream in all_streams: - stream_name = stream['name'] - - # Check if stream contains the callsign - if re.search(callsign_pattern, stream_name, re.IGNORECASE): + if re.search(callsign_pattern, stream['name'], re.IGNORECASE): matching_streams.append(stream) - logger.info(f"[Stream-Mapparr] Found callsign match: {stream_name}") - + if matching_streams: sorted_streams = self._sort_streams_by_quality(matching_streams) - logger.info(f"[Stream-Mapparr] Sorted {len(sorted_streams)} streams by quality (callsign matching)") - cleaned_stream_names = [self._clean_channel_name( s['name'], ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc, remove_cinemax=channel_has_max ) for s in sorted_streams] - match_reason = "Callsign match" + return sorted_streams, cleaned_channel_name, cleaned_stream_names, "Callsign match", database_used - return sorted_streams, cleaned_channel_name, cleaned_stream_names, match_reason, database_used - else: - logger.info(f"[Stream-Mapparr] No callsign matches found for {callsign}") - # Fall through to fuzzy matching - # Use fuzzy matching if available if self.fuzzy_matcher: - logger.debug(f"[Stream-Mapparr] Using fuzzy matcher for channel: {channel_name}") - - # Get all stream names stream_names = [stream['name'] for stream in all_streams] - - # Use fuzzy matcher to find best match - # Pass remove_cinemax flag if channel contains "max" matched_stream_name, score, match_type = self.fuzzy_matcher.fuzzy_match( - channel_name, - stream_names, - ignore_tags, - remove_cinemax=channel_has_max + channel_name, stream_names, ignore_tags, remove_cinemax=channel_has_max ) - + if matched_stream_name: - # Find all streams that match this name (different qualities) matching_streams = [] - cleaned_matched = self._clean_channel_name( - matched_stream_name, ignore_tags, ignore_quality, ignore_regional, + + # Clean the channel name for comparison + cleaned_channel_for_matching = self._clean_channel_name( + channel_name, ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc, remove_cinemax=channel_has_max ) - + + # Match streams against the CHANNEL name, not just the best-matched stream + # This allows collecting all streams that are similar to the channel for stream in all_streams: cleaned_stream = self._clean_channel_name( stream['name'], ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc, remove_cinemax=channel_has_max ) - # Skip if either cleaned name is empty or too short (prevents false positives) - if not cleaned_stream or len(cleaned_stream) < 2: - continue - if not cleaned_matched or len(cleaned_matched) < 2: - continue + if not cleaned_stream or len(cleaned_stream) < 2: continue + if not cleaned_channel_for_matching or len(cleaned_channel_for_matching) < 2: continue - if cleaned_stream.lower() == cleaned_matched.lower(): + # Check if stream is similar enough to channel using fuzzy matcher's logic + stream_lower = cleaned_stream.lower() + channel_lower = cleaned_channel_for_matching.lower() + + # Exact match + if stream_lower == channel_lower: matching_streams.append(stream) + continue + + # Substring match: stream contains channel OR channel contains stream + if stream_lower in channel_lower or channel_lower in stream_lower: + # Calculate similarity to ensure it meets threshold + similarity = self.fuzzy_matcher.calculate_similarity(stream_lower, channel_lower) + if int(similarity * 100) >= self.fuzzy_matcher.match_threshold: + matching_streams.append(stream) + continue + + # Token-based matching: check if significant tokens overlap + # This catches cases like "ca al jazeera" vs "al jazeera english" + # Split into tokens (words) + stream_tokens = set(stream_lower.split()) + channel_tokens = set(channel_lower.split()) + + # Remove very short tokens (1 char only) but keep 2-char tokens like "al" + stream_tokens = {t for t in stream_tokens if len(t) > 1} + channel_tokens = {t for t in channel_tokens if len(t) > 1} + + # Check if there's significant overlap + if stream_tokens and channel_tokens: + common_tokens = stream_tokens & channel_tokens + overlap_ratio = len(common_tokens) / min(len(stream_tokens), len(channel_tokens)) + + # Require either multiple common tokens OR high overlap ratio + # This prevents false matches like "Gol TV English" matching "Al Jazeera English" + has_multiple_common = len(common_tokens) >= 2 + has_high_overlap = overlap_ratio >= 0.75 + + if has_multiple_common or has_high_overlap: + # Calculate full string similarity + similarity = self.fuzzy_matcher.calculate_similarity(stream_lower, channel_lower) + if int(similarity * 100) >= self.fuzzy_matcher.match_threshold: + matching_streams.append(stream) if matching_streams: sorted_streams = self._sort_streams_by_quality(matching_streams) - logger.debug(f"[Stream-Mapparr] Found {len(sorted_streams)} streams via fuzzy match (score: {score}, type: {match_type})") - cleaned_stream_names = [self._clean_channel_name( s['name'], ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc, remove_cinemax=channel_has_max ) for s in sorted_streams] - match_reason = f"Fuzzy match ({match_type}, score: {score})" + return sorted_streams, cleaned_channel_name, cleaned_stream_names, f"Fuzzy match ({match_type}, score: {score})", database_used - return sorted_streams, cleaned_channel_name, cleaned_stream_names, match_reason, database_used - - # No fuzzy match found - logger.info(f"[Stream-Mapparr] No fuzzy match found for channel: {channel_name}") return [], cleaned_channel_name, [], "No fuzzy match", database_used - + # Fallback to basic substring matching if fuzzy matcher unavailable - logger.info(f"[Stream-Mapparr] Using basic substring matching for channel: {channel_name}") matching_streams = [] - + if not all_streams: - logger.warning("[Stream-Mapparr] No streams available for matching!") return [], cleaned_channel_name, [], "No streams available", database_used - + # Try exact channel name matching from JSON first if channel_info and channel_info.get('channel_name'): json_channel_name = channel_info['channel_name'] - logger.info(f"[Stream-Mapparr] Found channel in JSON: {json_channel_name}") - - # Look for streams that match this channel name exactly for stream in all_streams: cleaned_stream_name = self._clean_channel_name( stream['name'], ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc, remove_cinemax=channel_has_max ) - - # Skip if either cleaned name is empty or too short (prevents false positives) - if not cleaned_stream_name or len(cleaned_stream_name) < 2: - continue - if not cleaned_channel_name or len(cleaned_channel_name) < 2: - continue + if not cleaned_stream_name or len(cleaned_stream_name) < 2: continue + if not cleaned_channel_name or len(cleaned_channel_name) < 2: continue if cleaned_stream_name.lower() == cleaned_channel_name.lower(): matching_streams.append(stream) if matching_streams: sorted_streams = self._sort_streams_by_quality(matching_streams) - logger.info(f"[Stream-Mapparr] Found {len(sorted_streams)} streams matching exact channel name") - cleaned_stream_names = [self._clean_channel_name( s['name'], ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc, remove_cinemax=channel_has_max ) for s in sorted_streams] - match_reason = "Exact match (channels.json)" + return sorted_streams, cleaned_channel_name, cleaned_stream_names, "Exact match (channels.json)", database_used - return sorted_streams, cleaned_channel_name, cleaned_stream_names, match_reason, database_used - # Fallback to basic substring matching for stream in all_streams: cleaned_stream_name = self._clean_channel_name( stream['name'], ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc, remove_cinemax=channel_has_max ) + if not cleaned_stream_name or len(cleaned_stream_name) < 2: continue + if not cleaned_channel_name or len(cleaned_channel_name) < 2: continue - # Skip if either cleaned name is empty or too short (prevents false positives) - if not cleaned_stream_name or len(cleaned_stream_name) < 2: - continue - if not cleaned_channel_name or len(cleaned_channel_name) < 2: - continue - - # Simple case-insensitive substring matching if cleaned_channel_name.lower() in cleaned_stream_name.lower() or cleaned_stream_name.lower() in cleaned_channel_name.lower(): matching_streams.append(stream) if matching_streams: sorted_streams = self._sort_streams_by_quality(matching_streams) - logger.info(f"[Stream-Mapparr] Found {len(sorted_streams)} streams matching via basic substring match") - cleaned_stream_names = [self._clean_channel_name( s['name'], ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc, remove_cinemax=channel_has_max ) for s in sorted_streams] - match_reason = "Basic substring match" + return sorted_streams, cleaned_channel_name, cleaned_stream_names, "Basic substring match", database_used - return sorted_streams, cleaned_channel_name, cleaned_stream_names, match_reason, database_used - - # No match found return [], cleaned_channel_name, [], "No match", database_used + def _get_matches_at_thresholds(self, channel, all_streams, logger, ignore_tags, ignore_quality, + ignore_regional, ignore_geographic, ignore_misc, channels_data, + current_threshold): + """Get streams that match at different threshold levels. + + Returns a dict with threshold levels as keys and matched streams as values. + """ + results = {} + thresholds_to_test = [] + + # Generate threshold steps going down from current + test_threshold = current_threshold + while test_threshold >= 65: + thresholds_to_test.append(test_threshold) + test_threshold -= 5 + + # Ensure we test at least down to 70 if current is higher + if 70 not in thresholds_to_test and current_threshold > 70: + thresholds_to_test.append(70) + thresholds_to_test.sort(reverse=True) + + channel_name = channel['name'] + channel_info = self._get_channel_info_from_json(channel_name, channels_data, logger) + channel_has_max = 'max' in channel_name.lower() + + # For OTA channels, callsign matching doesn't use threshold + if self._is_ota_channel(channel_info): + callsign = channel_info['callsign'] + callsign_pattern = r'\b' + re.escape(callsign) + r'\b' + matching_streams = [] + + for stream in all_streams: + if re.search(callsign_pattern, stream['name'], re.IGNORECASE): + matching_streams.append(stream) + + if matching_streams: + sorted_streams = self._sort_streams_by_quality(matching_streams) + results[f"callsign_{current_threshold}"] = { + 'streams': sorted_streams, + 'match_type': 'Callsign match' + } + return results + + # For non-OTA channels, test each threshold + for threshold in thresholds_to_test: + if not self.fuzzy_matcher: + continue + + # Temporarily set the threshold + original_threshold = self.fuzzy_matcher.match_threshold + self.fuzzy_matcher.match_threshold = threshold + + try: + stream_names = [stream['name'] for stream in all_streams] + matched_stream_name, score, match_type = self.fuzzy_matcher.fuzzy_match( + channel_name, stream_names, ignore_tags, remove_cinemax=channel_has_max + ) + + if matched_stream_name: + cleaned_channel_name = self._clean_channel_name( + channel_name, ignore_tags, ignore_quality, ignore_regional, + ignore_geographic, ignore_misc + ) + cleaned_matched = self._clean_channel_name( + matched_stream_name, ignore_tags, ignore_quality, ignore_regional, + ignore_geographic, ignore_misc, remove_cinemax=channel_has_max + ) + + matching_streams = [] + for stream in all_streams: + cleaned_stream = self._clean_channel_name( + stream['name'], ignore_tags, ignore_quality, ignore_regional, + ignore_geographic, ignore_misc, remove_cinemax=channel_has_max + ) + + if not cleaned_stream or len(cleaned_stream) < 2: + continue + if not cleaned_matched or len(cleaned_matched) < 2: + continue + + if cleaned_stream.lower() == cleaned_matched.lower(): + matching_streams.append(stream) + + if matching_streams: + sorted_streams = self._sort_streams_by_quality(matching_streams) + results[threshold] = { + 'streams': sorted_streams, + 'match_type': match_type, + 'score': score + } + finally: + # Restore original threshold + self.fuzzy_matcher.match_threshold = original_threshold + + return results + + def _send_progress_update(self, action_id, status, progress, message, context=None): + """Send WebSocket progress update to frontend as a notification. + + Sends completion notifications via WebSocket. Uses a notification pattern + that works with Dispatcharr's frontend notification system. + + Only sends for completion (100% or success/error) to avoid spam. + """ + try: + from core.utils import send_websocket_update + + # Only notify on completion + is_complete = progress >= 100 or status in ('success', 'completed', 'error') + + if not is_complete: + LOGGER.debug(f"[Stream-Mapparr] Progress: {action_id} - {progress}% - {message}") + return + + is_success = status in ('success', 'completed') + + # Use a notification type pattern similar to existing Dispatcharr notifications + # Format follows: plugin_action_result pattern + notification_data = { + 'type': 'plugin_notification', + 'plugin': 'stream-mapparr', + 'action': action_id, + 'success': is_success, + 'message': message, + 'title': 'Stream-Mapparr' if is_success else 'Stream-Mapparr Error' + } + + # Add error field for failures + if not is_success: + notification_data['error'] = message + + LOGGER.info(f"[Stream-Mapparr] Sending notification: {action_id} ({'success' if is_success else 'error'}) - {message}") + send_websocket_update('updates', 'update', notification_data) + + except Exception as e: + LOGGER.warning(f"[Stream-Mapparr] Failed to send notification: {e}") + def _get_channel_info_from_json(self, channel_name, channels_data, logger): """Find channel info from channels.json by matching channel name.""" - # Try exact match first for entry in channels_data: if entry.get('channel_name', '') == channel_name: return entry - - # Try case-insensitive match + channel_name_lower = channel_name.lower() for entry in channels_data: if entry.get('channel_name', '').lower() == channel_name_lower: return entry - return None + def save_settings(self, settings, context): + """Save settings and sync schedules automatically""" + try: + LOGGER.info(f"[Stream-Mapparr] Saving settings with keys: {list(settings.keys())}") + + # Get timezone and schedule settings + user_timezone = settings.get("timezone") or "US/Central" + enabled = settings.get("schedule_enabled", False) + if isinstance(enabled, str): + enabled = enabled.lower() in ('true', '1', 'yes', 'on') + + cron_schedule = settings.get("schedule_cron") or "" + cron_schedule = cron_schedule.strip() if cron_schedule else "" + + LOGGER.info(f"[Stream-Mapparr] Schedule settings: enabled={enabled}, cron='{cron_schedule}', tz={user_timezone}") + + # Sync the schedule + if enabled and cron_schedule: + if not self._validate_cron(cron_schedule): + return { + "success": False, + "message": f"Invalid cron expression: {cron_schedule}" + } + self._create_or_update_schedule(cron_schedule, user_timezone, settings) + message = f"✅ Settings saved!\n📅 Schedule activated: {cron_schedule} ({user_timezone})" + else: + self._delete_schedule() + if enabled: + message = "✅ Settings saved!\n⚠️ Schedule enabled but no cron expression configured" + else: + message = "✅ Settings saved!\nℹ️ Scheduled runs disabled" + + return { + "success": True, + "message": message + } + + except Exception as e: + LOGGER.error(f"[Stream-Mapparr] Error saving settings: {e}", exc_info=True) + return { + "success": False, + "message": f"Error: {str(e)}" + } def run(self, action, settings, context=None): """Execute plugin action.""" try: logger = LOGGER - + # If settings is empty but context has settings, use context settings if context and isinstance(context, dict) and not settings: if 'settings' in context: settings = context['settings'] - + # Initialize fuzzy matcher with configured threshold match_threshold = settings.get("fuzzy_match_threshold", 85) try: match_threshold = int(match_threshold) except (ValueError, TypeError): match_threshold = 85 - + self._initialize_fuzzy_matcher(match_threshold) - - action_map = { - "validate_settings": self.validate_settings_action, + + # Actions that should run in background to avoid timeout + # Note: load_process_channels is internal-only (called by preview/add actions) + background_actions = { "load_process_channels": self.load_process_channels_action, "preview_changes": self.preview_changes_action, "add_streams_to_channels": self.add_streams_to_channels_action, "manage_channel_visibility": self.manage_channel_visibility_action, - "clear_csv_exports": self.clear_csv_exports_action, } - if action not in action_map: - return {"status": "error", "message": f"Unknown action: {action}"} + # Actions that run immediately (synchronous) + immediate_actions = { + "validate_settings": self.validate_settings_action, + "update_schedule": self.update_schedule_action, + "cleanup_periodic_tasks": self.cleanup_periodic_tasks_action, + "clear_csv_exports": self.clear_csv_exports_action, + } + + if action in background_actions: + # Run synchronously to keep buttons disabled until complete + # The frontend will keep buttons disabled until this returns + try: + self._send_progress_update(action, 'running', 0, 'Starting operation...', context) + result = background_actions[action](settings, logger, context) + + if result.get('status') == 'success': + self._send_progress_update(action, 'completed', 100, + result.get('message', 'Operation completed successfully'), context) + return result + else: + self._send_progress_update(action, 'error', 0, + result.get('message', 'Operation failed'), context) + return result + + except Exception as e: + logger.error(f"[Stream-Mapparr] Operation failed: {str(e)}") + import traceback + logger.error(traceback.format_exc()) + error_msg = f'Error: {str(e)}' + self._send_progress_update(action, 'error', 0, error_msg, context) + return {'status': 'error', 'message': error_msg} - return action_map[action](settings, logger) - + elif action in immediate_actions: + # Immediate actions run synchronously and return result + return immediate_actions[action](settings, logger) + + else: + return {"status": "error", "message": f"Unknown action: {action}"} + except Exception as e: LOGGER.error(f"[Stream-Mapparr] Error in plugin run: {str(e)}") import traceback @@ -1173,41 +1632,34 @@ class Plugin: return {"status": "error", "message": str(e)} def _validate_plugin_settings(self, settings, logger): - """ - Helper method to validate plugin settings. - - Returns: - Tuple of (has_errors: bool, validation_results: list, token: str or None) - """ + """Helper method to validate plugin settings.""" validation_results = [] has_errors = False token = None try: - # 1. Validate API Connection + # 1. Validate API connection and obtain token logger.info("[Stream-Mapparr] Validating API connection...") - token, error = self._get_api_token(settings, logger) + token, error = self.get_or_refresh_api_token(settings, logger) if error: - validation_results.append(f"❌ API Connection: FAILED - {error}") + validation_results.append(f"❌ API Connection: {error}") has_errors = True - # Cannot continue without API access return has_errors, validation_results, token else: - validation_results.append("✅ API Connection: SUCCESS") + validation_results.append("✅ API Connection") - # 2. Validate Profile Names + # 2. Validate profile name exists logger.info("[Stream-Mapparr] Validating profile names...") - profile_names_str = settings.get("profile_name", "").strip() - + profile_names_str = settings.get("profile_name") or "" + profile_names_str = profile_names_str.strip() if profile_names_str else "" if not profile_names_str: - validation_results.append("❌ Profile Name: FAILED - No profile name configured") + validation_results.append("❌ Profile Name: Not configured") has_errors = True else: profile_names = [name.strip() for name in profile_names_str.split(',') if name.strip()] profiles = self._get_api_data("/api/channels/profiles/", token, settings, logger) available_profile_names = [p.get('name') for p in profiles if 'name' in p] - # Check each profile missing_profiles = [] found_profiles = [] for profile_name in profile_names: @@ -1221,25 +1673,25 @@ class Plugin: missing_profiles.append(profile_name) if missing_profiles: - validation_results.append(f"❌ Profile Name: FAILED - The following profiles were not found: {', '.join(missing_profiles)}") - validation_results.append(f" Available profiles: {', '.join(available_profile_names)}") + validation_results.append(f"❌ Profile Name: '{', '.join(missing_profiles)}' not found") has_errors = True else: - validation_results.append(f"✅ Profile Name: SUCCESS - Found {len(found_profiles)} profile(s): {', '.join(found_profiles)}") + validation_results.append(f"✅ Profile Name ({len(found_profiles)})") - # 3. Validate Channel Groups + # 3. Validate channel groups (if specified) logger.info("[Stream-Mapparr] Validating channel groups...") - selected_groups_str = settings.get("selected_groups", "").strip() - + selected_groups_str = settings.get("selected_groups") or "" + selected_groups_str = selected_groups_str.strip() if selected_groups_str else "" + if selected_groups_str: + # Groups are specified, validate them selected_groups = [g.strip() for g in selected_groups_str.split(',') if g.strip()] - - # Get all groups + + # Fetch all groups from API all_groups = [] page = 1 while True: api_groups = self._get_api_data(f"/api/channels/groups/?page={page}", token, settings, logger) - if isinstance(api_groups, dict) and 'results' in api_groups: all_groups.extend(api_groups['results']) if not api_groups.get('next'): @@ -1250,10 +1702,9 @@ class Plugin: break else: break - - available_group_names = [g['name'] for g in all_groups if 'name' in g] - - # Check each group + + available_group_names = [g.get('name') for g in all_groups if 'name' in g] + missing_groups = [] found_groups = [] for group_name in selected_groups: @@ -1261,131 +1712,67 @@ class Plugin: found_groups.append(group_name) else: missing_groups.append(group_name) - + if missing_groups: - validation_results.append(f"❌ Channel Groups: FAILED - The following groups were not found: {', '.join(missing_groups)}") - validation_results.append(f" Available groups: {', '.join(available_group_names[:20])}" + ("..." if len(available_group_names) > 20 else "")) + validation_results.append(f"❌ Channel Groups: '{', '.join(missing_groups)}' not found") has_errors = True else: - validation_results.append(f"✅ Channel Groups: SUCCESS - Found {len(found_groups)} group(s): {', '.join(found_groups)}") + validation_results.append(f"✅ Channel Groups ({len(found_groups)})") else: - validation_results.append("✅ Channel Groups: Not specified (will use all groups)") + # No groups specified is valid (means all groups) + validation_results.append("✅ Channel Groups (all)") - # 4. Validate Fuzzy Match Threshold - logger.info("[Stream-Mapparr] Validating fuzzy match threshold...") - match_threshold = settings.get("fuzzy_match_threshold", 85) - try: - match_threshold = int(match_threshold) - if 0 <= match_threshold <= 100: - validation_results.append(f"✅ Fuzzy Match Threshold: SUCCESS - Set to {match_threshold}") - else: - validation_results.append(f"❌ Fuzzy Match Threshold: WARNING - Value {match_threshold} is outside recommended range (0-100)") - has_errors = True - except (ValueError, TypeError): - validation_results.append(f"❌ Fuzzy Match Threshold: FAILED - Invalid value: {match_threshold}") + # 4. Validate timezone is not empty + logger.info("[Stream-Mapparr] Validating timezone...") + timezone_str = settings.get("timezone") or "US/Central" + timezone_str = timezone_str.strip() if timezone_str else "US/Central" + if not timezone_str: + validation_results.append("❌ Timezone: Not configured") has_errors = True - - # 5. Validate Visible Channel Limit - logger.info("[Stream-Mapparr] Validating visible channel limit...") - visible_channel_limit_str = settings.get("visible_channel_limit", "1") - try: - visible_channel_limit = int(visible_channel_limit_str) if visible_channel_limit_str else 1 - if visible_channel_limit >= 1: - validation_results.append(f"✅ Visible Channel Limit: SUCCESS - Set to {visible_channel_limit}") - else: - validation_results.append(f"❌ Visible Channel Limit: FAILED - Must be at least 1") - has_errors = True - except (ValueError, TypeError): - validation_results.append(f"❌ Visible Channel Limit: FAILED - Invalid value: {visible_channel_limit_str}") - has_errors = True - - # 6. Validate Fuzzy Matcher Initialization - logger.info("[Stream-Mapparr] Validating fuzzy matcher...") - try: - match_threshold = settings.get("fuzzy_match_threshold", 85) + else: + # Validate timezone is valid try: - match_threshold = int(match_threshold) - except (ValueError, TypeError): - match_threshold = 85 + import pytz + pytz.timezone(timezone_str) + validation_results.append(f"✅ Timezone") + except pytz.exceptions.UnknownTimeZoneError: + validation_results.append(f"❌ Timezone: Invalid '{timezone_str}'") + has_errors = True - self._initialize_fuzzy_matcher(match_threshold) - if self.fuzzy_matcher: - validation_results.append(f"✅ Fuzzy Matcher: Initialized (threshold: {match_threshold})") - else: - validation_results.append("⚠️ Fuzzy Matcher: WARNING - Could not initialize (will use fallback matching)") - except Exception as e: - validation_results.append(f"⚠️ Fuzzy Matcher: WARNING - {str(e)} (will use fallback matching)") - - # 7. Validate Channel Databases + # 5. Validate at least one channel database is checked logger.info("[Stream-Mapparr] Validating channel databases...") - try: - databases = self._get_channel_databases() - - if not databases: - validation_results.append("❌ Channel Databases: FAILED - No *_channels.json files found in plugin directory") + databases = self._get_channel_databases() + + if not databases: + validation_results.append("❌ Channel Databases: No files found") + has_errors = True + else: + enabled_databases = [] + for db_info in databases: + db_id = db_info['id'] + setting_key = f"db_enabled_{db_id}" + is_enabled = settings.get(setting_key, db_info['default']) + + # Handle string boolean values + if isinstance(is_enabled, str): + is_enabled = is_enabled.lower() in ('true', 'yes', '1', 'on') + + if is_enabled: + enabled_databases.append(db_info['label']) + + if not enabled_databases: + validation_results.append("❌ Channel Databases: None enabled") has_errors = True else: - # Check which databases are enabled - enabled_databases = [] - invalid_databases = [] + validation_results.append(f"✅ Channel Databases ({len(enabled_databases)})") - for db_info in databases: - db_id = db_info['id'] - setting_key = f"db_enabled_{db_id}" - is_enabled = settings.get(setting_key, db_info['default']) - - if is_enabled: - # Validate JSON format - try: - with open(db_info['file_path'], 'r', encoding='utf-8') as f: - file_data = json.load(f) - - # Check format - if isinstance(file_data, dict): - if 'channels' not in file_data: - invalid_databases.append(f"{db_info['label']} (missing 'channels' key)") - elif not isinstance(file_data['channels'], list): - invalid_databases.append(f"{db_info['label']} ('channels' must be an array)") - else: - enabled_databases.append(db_info['label']) - elif isinstance(file_data, list): - enabled_databases.append(db_info['label']) - else: - invalid_databases.append(f"{db_info['label']} (invalid format)") - except json.JSONDecodeError as e: - invalid_databases.append(f"{db_info['label']} (JSON error: {str(e)[:50]})") - except Exception as e: - invalid_databases.append(f"{db_info['label']} (error: {str(e)[:50]})") - - if invalid_databases: - validation_results.append(f"❌ Channel Databases: FAILED - Invalid database(s): {', '.join(invalid_databases)}") - has_errors = True - elif not enabled_databases: - validation_results.append("❌ Channel Databases: FAILED - No databases enabled. Enable at least one database in settings.") - has_errors = True - else: - validation_results.append(f"✅ Channel Databases: {len(enabled_databases)} enabled") - - except Exception as e: - validation_results.append(f"❌ Channel Databases: FAILED - {str(e)}") - has_errors = True - - # 8. Check other settings - overwrite_streams = settings.get('overwrite_streams', True) - if isinstance(overwrite_streams, str): - overwrite_streams = overwrite_streams.lower() in ('true', 'yes', '1') - - ignore_tags_str = settings.get("ignore_tags", "").strip() - if ignore_tags_str: - ignore_tags = self._parse_tags(ignore_tags_str) - validation_results.append(f"ℹ️ {len(ignore_tags)} ignore tag(s) configured") - - # Return validation results return has_errors, validation_results, token except Exception as e: logger.error(f"[Stream-Mapparr] Error validating settings: {str(e)}") - validation_results.append(f"❌ Unexpected error during validation: {str(e)}") + import traceback + logger.error(f"Traceback: {traceback.format_exc()}") + validation_results.append(f"❌ Validation error: {str(e)}") has_errors = True return has_errors, validation_results, token @@ -1393,82 +1780,206 @@ class Plugin: """Validate all plugin settings including profiles, groups, and API connection.""" has_errors, validation_results, token = self._validate_plugin_settings(settings, logger) - # Build summary message if has_errors: - message = "Validation completed with errors:\n\n" + "\n".join(validation_results) - message += "\n\nPlease fix the errors above before proceeding." + # Separate errors from successes + errors = [item for item in validation_results if item.startswith("❌")] + message = "Validation failed:\n\n" + "\n".join(errors) return {"status": "error", "message": message} else: - # Condensed success message - only show key items - success_items = [item for item in validation_results if item.startswith("✅")] - info_items = [item for item in validation_results if item.startswith("ℹ️")] - - message = "Settings validated! " + " | ".join(success_items) - if info_items: - message += "\n" + " | ".join(info_items) - message += "\n\nReady to proceed with 'Load/Process Channels'." + message = "✅ All settings validated successfully!\n\n" + "\n".join(validation_results) return {"status": "success", "message": message} - def load_process_channels_action(self, settings, logger): + def sync_schedules_action(self, settings, logger): + """Sync schedules from settings""" + try: + user_timezone = settings.get("timezone") or "US/Central" + enabled = settings.get("schedule_enabled", False) + if isinstance(enabled, str): + enabled = enabled.lower() in ('true', '1', 'yes', 'on') + + cron_schedule = settings.get("schedule_cron") or "" + cron_schedule = cron_schedule.strip() if cron_schedule else "" + + logger.info(f"[Stream-Mapparr] Syncing schedule: enabled={enabled}, schedule='{cron_schedule}', tz={user_timezone}") + + if enabled and cron_schedule: + if not self._validate_cron(cron_schedule): + return { + "status": "error", + "message": f"Invalid cron expression: {cron_schedule}" + } + self._create_or_update_schedule(cron_schedule, user_timezone, settings) + return { + "status": "success", + "message": f"✅ Schedule synced! Cron: {cron_schedule} ({user_timezone})" + } + else: + self._delete_schedule() + if not enabled: + return { + "status": "success", + "message": "ℹ️ Schedule disabled and removed" + } + else: + return { + "status": "success", + "message": "ℹ️ No cron expression configured" + } + + except Exception as e: + logger.error(f"[Stream-Mapparr] Error syncing schedule: {e}", exc_info=True) + return {"status": "error", "message": f"Error: {str(e)}"} + + def view_schedules_action(self, settings, logger): + """View active schedule""" + try: + user_timezone = settings.get("timezone", "America/Chicago") + logger.info(f"[Stream-Mapparr] Viewing schedules with timezone: {user_timezone}") + + task_name = "stream_mapparr_scheduled_task" + task = PeriodicTask.objects.filter(name=task_name, enabled=True).first() + + if task and task.crontab: + cron = task.crontab + cron_expr = f"{cron.minute} {cron.hour} {cron.day_of_month} {cron.month_of_year} {cron.day_of_week}" + + # Try to convert back to user's timezone for display + local_time = self._convert_utc_to_local(cron.minute, cron.hour, user_timezone) + + if local_time: + message = f"📅 Stream-Mapparr Schedule:\n • Cron: {cron_expr} UTC ({local_time} {user_timezone})\n • Status: Active" + else: + message = f"📅 Stream-Mapparr Schedule:\n • Cron: {cron_expr} UTC\n • Status: Active" + else: + message = "ℹ️ No active schedule found" + + return {"status": "success", "message": message} + + except Exception as e: + logger.error(f"[Stream-Mapparr] Error viewing schedules: {e}", exc_info=True) + return {"status": "error", "message": f"Error: {str(e)}"} + + def cleanup_schedule_action(self, settings, logger): + """Remove schedule created by this plugin""" + try: + task_name = "stream_mapparr_scheduled_task" + deleted_count = PeriodicTask.objects.filter(name=task_name).delete()[0] + + if deleted_count > 0: + message = f"✅ Removed Stream-Mapparr schedule" + else: + message = "ℹ️ No schedule found to remove" + + return {"status": "success", "message": message} + + except Exception as e: + logger.error(f"[Stream-Mapparr] Error cleaning up schedule: {e}", exc_info=True) + return {"status": "error", "message": f"Error: {str(e)}"} + + def test_celery_task_action(self, settings, logger): + """Test if Celery task can be called and check registration""" + try: + messages = [] + + # Try to import the task + try: + from . import tasks + messages.append("✅ Task module imported successfully") + except Exception as e: + messages.append(f"❌ Failed to import task module: {e}") + return {"status": "error", "message": "\n".join(messages)} + + # Try to call the task directly (non-async) + try: + result = tasks.run_scheduled_stream_mapping() + messages.append("✅ Task executed directly (non-Celery)") + messages.append(f" Result: {result.get('status', 'unknown')}") + except Exception as e: + messages.append(f"⚠️ Direct execution failed: {e}") + + # Check if Celery can see the task + try: + from celery import current_app + registered_tasks = list(current_app.tasks.keys()) + task_name = 'stream_mapparr.run_scheduled_stream_mapping' + + if task_name in registered_tasks: + messages.append(f"✅ Task registered in Celery: {task_name}") + else: + messages.append(f"❌ Task NOT found in Celery registry") + messages.append(f" Looking for: {task_name}") + # Show similar tasks + similar = [t for t in registered_tasks if 'stream' in t.lower() or 'mapparr' in t.lower()] + if similar: + messages.append(f" Similar tasks: {similar}") + except Exception as e: + messages.append(f"⚠️ Could not check Celery registry: {e}") + + # Check periodic task in database + try: + task_name = "stream_mapparr_scheduled_task" + task = PeriodicTask.objects.filter(name=task_name).first() + if task: + messages.append(f"✅ Periodic task found in database:") + messages.append(f" Task: {task.task}") + messages.append(f" Enabled: {task.enabled}") + if task.crontab: + cron = task.crontab + messages.append(f" Schedule: {cron.minute} {cron.hour} {cron.day_of_month} {cron.month_of_year} {cron.day_of_week}") + else: + messages.append(f"ℹ️ No periodic task found in database") + except Exception as e: + messages.append(f"⚠️ Error checking database: {e}") + + return {"status": "success", "message": "\n".join(messages)} + + except Exception as e: + logger.error(f"[Stream-Mapparr] Error testing task: {e}", exc_info=True) + return {"status": "error", "message": f"Error: {str(e)}"} + + def load_process_channels_action(self, settings, logger, context=None): """Load and process channels from specified profile and groups.""" try: - # Validate settings before proceeding + # Create the rate limiter instance once + limiter = SmartRateLimiter(settings.get("rate_limiting", "medium"), logger) + + self._send_progress_update("load_process_channels", 'running', 5, 'Validating settings...', context) logger.info("[Stream-Mapparr] Validating settings before loading channels...") has_errors, validation_results, token = self._validate_plugin_settings(settings, logger) if has_errors: - message = "Cannot load channels - validation failed:\n\n" + "\n".join(validation_results) - message += "\n\nPlease fix the errors above before proceeding." - return {"status": "error", "message": message} + return {"status": "error", "message": "Cannot load channels - validation failed."} + self._send_progress_update("load_process_channels", 'running', 10, 'Settings validated, loading data...', context) logger.info("[Stream-Mapparr] Settings validated successfully, proceeding with channel load...") - profile_names_str = settings.get("profile_name", "").strip() - selected_groups_str = settings.get("selected_groups", "").strip() - ignore_tags_str = settings.get("ignore_tags", "").strip() + profile_names_str = settings.get("profile_name") or "" + profile_names_str = profile_names_str.strip() if profile_names_str else "" + selected_groups_str = settings.get("selected_groups") or "" + selected_groups_str = selected_groups_str.strip() if selected_groups_str else "" + ignore_tags_str = settings.get("ignore_tags") or "" + ignore_tags_str = ignore_tags_str.strip() if ignore_tags_str else "" visible_channel_limit_str = settings.get("visible_channel_limit", "1") visible_channel_limit = int(visible_channel_limit_str) if visible_channel_limit_str else 1 - # Get category ignore settings ignore_quality = settings.get("ignore_quality_tags", True) ignore_regional = settings.get("ignore_regional_tags", True) ignore_geographic = settings.get("ignore_geographic_tags", True) ignore_misc = settings.get("ignore_misc_tags", True) - # Convert string values to boolean if needed - if isinstance(ignore_quality, str): - ignore_quality = ignore_quality.lower() in ('true', 'yes', '1') - if isinstance(ignore_regional, str): - ignore_regional = ignore_regional.lower() in ('true', 'yes', '1') - if isinstance(ignore_geographic, str): - ignore_geographic = ignore_geographic.lower() in ('true', 'yes', '1') - if isinstance(ignore_misc, str): - ignore_misc = ignore_misc.lower() in ('true', 'yes', '1') + # Handle boolean string conversions + if isinstance(ignore_quality, str): ignore_quality = ignore_quality.lower() in ('true', 'yes', '1') + if isinstance(ignore_regional, str): ignore_regional = ignore_regional.lower() in ('true', 'yes', '1') + if isinstance(ignore_geographic, str): ignore_geographic = ignore_geographic.lower() in ('true', 'yes', '1') + if isinstance(ignore_misc, str): ignore_misc = ignore_misc.lower() in ('true', 'yes', '1') - if not profile_names_str: - return {"status": "error", "message": "Profile Name must be configured in the plugin settings."} - - if visible_channel_limit < 1: - return {"status": "error", "message": "Visible Channel Limit must be at least 1."} - - # Parse profile names (support comma-separated list) profile_names = [name.strip() for name in profile_names_str.split(',') if name.strip()] - logger.info(f"[Stream-Mapparr] Profile names configured: {profile_names}") + ignore_tags = self._parse_tags(ignore_tags_str) if ignore_tags_str else [] - # Parse ignore tags - ignore_tags = [] - if ignore_tags_str: - ignore_tags = self._parse_tags(ignore_tags_str) - logger.info(f"[Stream-Mapparr] Ignore tags configured: {ignore_tags}") + # Fetch profiles with rate limiting + self._send_progress_update("load_process_channels", 'running', 20, 'Fetching profiles...', context) + profiles = self._get_api_data("/api/channels/profiles/", token, settings, logger, limiter=limiter) - # Log category settings - logger.info(f"[Stream-Mapparr] Pattern categories - Quality: {ignore_quality}, Regional: {ignore_regional}, Geographic: {ignore_geographic}, Misc: {ignore_misc}") - - # Get all profiles to find the specified ones - logger.info("[Stream-Mapparr] Fetching channel profiles...") - profiles = self._get_api_data("/api/channels/profiles/", token, settings, logger) - - # Find all target profiles target_profiles = [] profile_ids = [] for profile_name in profile_names: @@ -1477,154 +1988,92 @@ class Plugin: if profile.get('name', '').lower() == profile_name.lower(): found_profile = profile break - if not found_profile: - available_profiles = [p.get('name') for p in profiles if 'name' in p] - return { - "status": "error", - "message": f"Profile '{profile_name}' not found. Available profiles: {', '.join(available_profiles)}" - } - + return {"status": "error", "message": f"Profile '{profile_name}' not found."} target_profiles.append(found_profile) profile_ids.append(found_profile['id']) - logger.info(f"[Stream-Mapparr] Found profile: {profile_name} (ID: {found_profile['id']})") - # For backward compatibility, use first profile ID profile_id = profile_ids[0] - - # Get all groups (handle pagination) - logger.info("[Stream-Mapparr] Fetching channel groups...") + + # Fetch groups with rate limiting + self._send_progress_update("load_process_channels", 'running', 30, 'Fetching channel groups...', context) all_groups = [] page = 1 while True: - api_groups = self._get_api_data(f"/api/channels/groups/?page={page}", token, settings, logger) - - # Handle both paginated and non-paginated responses + api_groups = self._get_api_data(f"/api/channels/groups/?page={page}", token, settings, logger, limiter=limiter) if isinstance(api_groups, dict) and 'results' in api_groups: all_groups.extend(api_groups['results']) - if not api_groups.get('next'): - break + if not api_groups.get('next'): break page += 1 elif isinstance(api_groups, list): all_groups.extend(api_groups) break - else: - break - + else: break + group_name_to_id = {g['name']: g['id'] for g in all_groups if 'name' in g and 'id' in g} - logger.info(f"[Stream-Mapparr] Loaded {len(group_name_to_id)} channel groups total") - - # Get channels - API does not filter by profile automatically - logger.info(f"[Stream-Mapparr] Fetching all channels...") - all_channels = self._get_api_data("/api/channels/channels/", token, settings, logger) - logger.info(f"[Stream-Mapparr] Retrieved {len(all_channels)} total channels") - - # Filter channels by profile membership (check all target profiles) - # Use Django ORM to check profile membership + + # Fetch channels with rate limiting + self._send_progress_update("load_process_channels", 'running', 40, 'Fetching channels...', context) + all_channels = self._get_api_data("/api/channels/channels/", token, settings, logger, limiter=limiter) + channels_in_profile = [] for channel in all_channels: channel_id = channel['id'] - # Check if this channel is enabled in any of the target profiles is_in_profile = ChannelProfileMembership.objects.filter( channel_id=channel_id, channel_profile_id__in=profile_ids, enabled=True ).exists() - if is_in_profile: channels_in_profile.append(channel) - logger.info(f"[Stream-Mapparr] Found {len(channels_in_profile)} channels in profile(s): {', '.join(profile_names)}") - - # Filter by groups if specified if selected_groups_str: - logger.info(f"[Stream-Mapparr] Filtering by groups: {selected_groups_str}") selected_groups = [g.strip() for g in selected_groups_str.split(',') if g.strip()] valid_group_ids = [group_name_to_id[name] for name in selected_groups if name in group_name_to_id] - if not valid_group_ids: - available_groups = sorted(list(group_name_to_id.keys())) - return { - "status": "error", - "message": f"None of the specified groups were found: {', '.join(selected_groups)}\n\nAvailable groups ({len(available_groups)} total):\n" + "\n".join(f" • {g}" for g in available_groups) - } - - # Filter channels by channel_group_id field - filtered_channels = [] - for ch in channels_in_profile: - if ch.get('channel_group_id') in valid_group_ids: - filtered_channels.append(ch) - + return {"status": "error", "message": "None of the specified groups were found."} + + filtered_channels = [ch for ch in channels_in_profile if ch.get('channel_group_id') in valid_group_ids] channels_in_profile = filtered_channels - logger.info(f"[Stream-Mapparr] Filtered to {len(channels_in_profile)} channels in groups: {', '.join(selected_groups)}") group_filter_info = f" in groups: {', '.join(selected_groups)}" else: selected_groups = [] group_filter_info = " (all groups)" - + if not channels_in_profile: - return { - "status": "error", - "message": f"No channels found in profile '{profile_name}'{group_filter_info}" - } - + return {"status": "error", "message": f"No channels found in profile."} + channels_to_process = channels_in_profile - logger.info(f"[Stream-Mapparr] Processing {len(channels_to_process)} channels (including those with existing streams)") - - # Get all streams - DO NOT filter by group, get all streams (handle pagination with NO LIMIT) + + # Fetch streams with rate limiting + self._send_progress_update("load_process_channels", 'running', 60, 'Fetching streams (this may take a while)...', context) logger.info("[Stream-Mapparr] Fetching all streams from all groups (unlimited)...") all_streams_data = [] page = 1 - while True: endpoint = f"/api/channels/streams/?page={page}&page_size=100" - streams_response = self._get_api_data(endpoint, token, settings, logger) - - # Handle both paginated and non-paginated responses + streams_response = self._get_api_data(endpoint, token, settings, logger, limiter=limiter) + if isinstance(streams_response, dict) and 'results' in streams_response: results = streams_response['results'] all_streams_data.extend(results) - logger.debug(f"[Stream-Mapparr] Fetched page {page}: {len(results)} streams (total so far: {len(all_streams_data)})") - - # Stop if this page had fewer results than page_size (last page) - if len(results) < 100: - logger.info("[Stream-Mapparr] Reached last page of streams") - break - + if not streams_response.get('next') or len(results) < 100: break page += 1 elif isinstance(streams_response, list): - # List response - could still be paginated all_streams_data.extend(streams_response) - logger.debug(f"[Stream-Mapparr] Fetched page {page}: {len(streams_response)} streams (total so far: {len(all_streams_data)})") - - # If we got exactly 100 results, there might be more pages - if len(streams_response) == 100: - page += 1 - else: - logger.info("[Stream-Mapparr] Reached last page of streams") - break - else: - logger.warning("[Stream-Mapparr] Unexpected streams response format") - break + if len(streams_response) < 100: break + page += 1 + else: break - logger.info(f"[Stream-Mapparr] Retrieved {len(all_streams_data)} total streams from all groups") - - # Debug: Show sample stream names - if all_streams_data: - sample_stream_names = [s.get('name', 'N/A') for s in all_streams_data[:10]] - logger.info(f"[Stream-Mapparr] Sample stream names: {sample_stream_names}") - - # Store loaded data including ignore tags and visible channel limit self.loaded_channels = channels_to_process self.loaded_streams = all_streams_data - - # Save to file + processed_data = { "loaded_at": datetime.now().isoformat(), - "profile_name": profile_names_str, # Store original comma-separated string - "profile_names": profile_names, # Store parsed list - "profile_id": profile_id, # First profile ID for backward compatibility - "profile_ids": profile_ids, # All profile IDs + "profile_name": profile_names_str, + "profile_names": profile_names, + "profile_id": profile_id, + "profile_ids": profile_ids, "selected_groups": selected_groups, "ignore_tags": ignore_tags, "visible_channel_limit": visible_channel_limit, @@ -1636,74 +2085,252 @@ class Plugin: "streams": all_streams_data } + self._send_progress_update("load_process_channels", 'running', 90, 'Saving processed data...', context) with open(self.processed_data_file, 'w') as f: json.dump(processed_data, f, indent=2) logger.info("[Stream-Mapparr] Channel and stream data loaded and saved successfully") - - profile_display = ', '.join(profile_names) - return { - "status": "success", - "message": f"Successfully loaded {len(channels_to_process)} channels from profile(s): {profile_display}{group_filter_info}\n\nFound {len(all_streams_data)} streams available for matching.\n\nVisible channel limit set to: {visible_channel_limit}\n\nYou can now run 'Preview Changes' or 'Add Streams to Channels'." - } + # Send final completion notification + success_msg = f"Successfully loaded {len(channels_to_process)} channels and {len(all_streams_data)} streams." + self._send_progress_update("load_process_channels", 'success', 100, success_msg, context) + + return {"status": "success", "message": success_msg} + except Exception as e: logger.error(f"[Stream-Mapparr] Error loading channels: {str(e)}") return {"status": "error", "message": f"Error loading channels: {str(e)}"} - def _generate_csv_header_comment(self, settings, processed_data, total_visible_channels=0, total_matched_streams=0): + def _generate_csv_header_comment(self, settings, processed_data, total_visible_channels=0, total_matched_streams=0, low_match_channels=None, threshold_data=None): """Generate CSV comment header with plugin version and settings info.""" + # Debug: Log all settings keys to see what's available + LOGGER.info(f"[Stream-Mapparr] CSV generation - All settings keys: {list(settings.keys())}") + profile_name = processed_data.get('profile_name', 'N/A') selected_groups = processed_data.get('selected_groups', []) - ignore_tags = processed_data.get('ignore_tags', []) - visible_channel_limit = processed_data.get('visible_channel_limit', 1) - total_streams = len(processed_data.get('streams', [])) - - # Get settings - overwrite_streams = settings.get('overwrite_streams', True) - if isinstance(overwrite_streams, str): - overwrite_streams = overwrite_streams.lower() in ('true', 'yes', '1') - fuzzy_match_threshold = settings.get('fuzzy_match_threshold', 85) - - # Get enabled databases + current_threshold = settings.get('fuzzy_match_threshold', 85) + + # Build header with all settings except login credentials + header_lines = [ + f"# Stream-Mapparr Export v{self.version}", + f"# Export Date: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}", + "#", + "# === Profile & Group Settings ===", + f"# Profile Name(s): {profile_name}", + f"# Selected Groups: {', '.join(selected_groups) if selected_groups else '(all groups)'}", + "#", + "# === Matching Settings ===", + f"# Fuzzy Match Threshold: {current_threshold}", + f"# Overwrite Streams: {settings.get('overwrite_streams', True)}", + f"# Visible Channel Limit: {processed_data.get('visible_channel_limit', 1)}", + "#", + "# === Tag Filter Settings ===", + f"# Ignore Quality Tags: {processed_data.get('ignore_quality', True)}", + f"# Ignore Regional Tags: {processed_data.get('ignore_regional', True)}", + f"# Ignore Geographic Tags: {processed_data.get('ignore_geographic', True)}", + f"# Ignore Misc Tags: {processed_data.get('ignore_misc', True)}", + f"# Custom Ignore Tags: {', '.join(processed_data.get('ignore_tags', [])) if processed_data.get('ignore_tags') else '(none)'}", + "#", + "# === Database Settings ===", + ] + + # Add enabled database settings + # Note: Database settings are not passed in the settings dict, so we check the files directly + enabled_dbs = [] try: databases = self._get_channel_databases() - enabled_dbs = [] for db_info in databases: db_id = db_info['id'] setting_key = f"db_enabled_{db_id}" + # Try to get from settings first, fallback to default is_enabled = settings.get(setting_key, db_info['default']) + + # Handle string boolean values + if isinstance(is_enabled, str): + is_enabled = is_enabled.lower() in ('true', 'yes', '1', 'on') + if is_enabled: enabled_dbs.append(db_info['label']) - - db_info_str = ', '.join(enabled_dbs) if enabled_dbs else 'None' - except Exception: - db_info_str = 'Unknown' - - # Build header lines - header_lines = [ - f"# Stream-Mapparr Export", - f"# Plugin Version: {self.version}", - f"# Generated: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}", - f"#", - f"# Settings:", - f"# Overwrite Existing Streams: {'Yes' if overwrite_streams else 'No'}", - f"# Fuzzy Match Threshold: {fuzzy_match_threshold}", - f"# Profile Name: {profile_name}", - f"# Channel Groups: {', '.join(selected_groups) if selected_groups else 'All groups'}", - f"# Ignore Tags: {', '.join(ignore_tags) if ignore_tags else 'None'}", - f"# Visible Channel Limit: {visible_channel_limit}", - f"# Channel Databases Loaded: {db_info_str}", - f"#", - f"# Statistics:", - f"# Total Visible Channels: {total_visible_channels}", - f"# Total Streams Available: {total_streams}", - f"# Total Matched Streams: {total_matched_streams}", - f"#", - ] - + except Exception as e: + LOGGER.warning(f"[Stream-Mapparr] Could not determine enabled databases: {e}") + + header_lines.append(f"# Enabled Databases: {', '.join(enabled_dbs) if enabled_dbs else '(none)'}") + + header_lines.extend([ + "#", + "# === Scheduling Settings ===", + f"# Timezone: {settings.get('timezone', 'US/Central')}", + f"# Scheduled Times: {settings.get('scheduled_times', '(none)')}", + f"# Enable Scheduled CSV Export: {settings.get('enable_scheduled_csv_export', False)}", + "#", + "# === API Settings ===", + f"# Rate Limiting: {settings.get('rate_limiting', 'medium')}", + "#", + ]) + + # Analyze threshold data and token mismatches for recommendations + recommendations_added = False + + if threshold_data: + # Find lowest threshold with matches + lowest_threshold_with_matches = None + threshold_summary = {} + token_mismatch_examples = [] + + for channel_name, thresholds in threshold_data.items(): + for threshold, data in thresholds.items(): + if isinstance(threshold, int) and data.get('streams'): + if lowest_threshold_with_matches is None or threshold < lowest_threshold_with_matches: + lowest_threshold_with_matches = threshold + + if threshold not in threshold_summary: + threshold_summary[threshold] = 0 + threshold_summary[threshold] += len(data['streams']) + + # Analyze token mismatches + if threshold < current_threshold: + for stream in data['streams'][:2]: # Check first 2 streams + mismatch_info = self._analyze_token_mismatch(channel_name, stream['name']) + if mismatch_info and len(token_mismatch_examples) < 3: + token_mismatch_examples.append({ + 'channel': channel_name, + 'stream': stream['name'], + 'mismatch': mismatch_info + }) + + # Add threshold recommendation if lower thresholds have matches + if lowest_threshold_with_matches and lowest_threshold_with_matches < current_threshold: + if not recommendations_added: + header_lines.append("# === RECOMMENDATIONS ===") + recommendations_added = True + + # Count additional streams at lower thresholds + additional_at_lower = sum(count for thresh, count in threshold_summary.items() + if thresh < current_threshold) + + header_lines.extend([ + f"# {additional_at_lower} additional stream(s) available at lower thresholds.", + f"# Consider lowering Fuzzy Match Threshold from {current_threshold} to {lowest_threshold_with_matches} for better results.", + "#" + ]) + + # Add token mismatch recommendations + if token_mismatch_examples: + if not recommendations_added: + header_lines.append("# === RECOMMENDATIONS ===") + recommendations_added = True + + # Collect unique mismatched tokens + first_token_mismatches = set() + last_token_mismatches = set() + + for example in token_mismatch_examples: + mismatch = example['mismatch'] + if mismatch['position'] == 'first': + first_token_mismatches.update(mismatch['tokens']) + elif mismatch['position'] == 'last': + last_token_mismatches.update(mismatch['tokens']) + + if first_token_mismatches or last_token_mismatches: + header_lines.append("# Some channels have mismatched prefix/suffix tokens that prevent matching.") + header_lines.append("# Consider adding these to 'Custom Ignore Tags' setting:") + + if first_token_mismatches: + # Use comma-space separation for readability + tags_list = ', '.join(sorted(first_token_mismatches)[:5]) + header_lines.append(f"# Prefix tokens: {tags_list}") + + if last_token_mismatches: + # Use comma-space separation for readability + tags_list = ', '.join(sorted(last_token_mismatches)[:5]) + header_lines.append(f"# Suffix tokens: {tags_list}") + + header_lines.append("#") + header_lines.append("# Examples of mismatched channels:") + for example in token_mismatch_examples[:3]: + mismatch = example['mismatch'] + tokens_str = ', '.join(mismatch['tokens']) + header_lines.append(f"# {example['channel']} vs {example['stream']}") + header_lines.append(f"# → Mismatched {mismatch['position']} token(s): {tokens_str}") + + header_lines.append("#") + + # Add low match channels recommendation (legacy from previous implementation) + if low_match_channels and len(low_match_channels) > 0 and not recommendations_added: + header_lines.extend([ + "# === RECOMMENDATIONS ===", + f"# {len(low_match_channels)} channel(s) have 3 or fewer matches.", + f"# Consider lowering Fuzzy Match Threshold for better results.", + "#" + ]) + + # Show up to 5 examples + examples_to_show = min(5, len(low_match_channels)) + header_lines.append(f"# Examples of channels with few matches:") + for i, ch in enumerate(low_match_channels[:examples_to_show]): + stream_list = ', '.join(ch['streams'][:3]) + header_lines.append(f"# - {ch['name']} ({ch['count']} match{'es' if ch['count'] != 1 else ''}): {stream_list}") + + if len(low_match_channels) > 5: + header_lines.append(f"# ... and {len(low_match_channels) - 5} more channel(s)") + + header_lines.append("#") + return '\n'.join(header_lines) + '\n' + def _analyze_token_mismatch(self, channel_name, stream_name): + """Analyze if channel and stream names have mismatched first or last tokens. + + Returns dict with mismatch info or None if tokens match well. + """ + # Clean names for comparison + channel_clean = re.sub(r'[^\w\s]', ' ', channel_name.lower()) + stream_clean = re.sub(r'[^\w\s]', ' ', stream_name.lower()) + + channel_tokens = [t for t in channel_clean.split() if len(t) > 1] + stream_tokens = [t for t in stream_clean.split() if len(t) > 1] + + if not channel_tokens or not stream_tokens: + return None + + mismatched_tokens = [] + position = None + + # Check first token mismatch + if len(channel_tokens) >= 2 and len(stream_tokens) >= 2: + if channel_tokens[0] != stream_tokens[0]: + # Check if second tokens match (indicating first token is the issue) + if channel_tokens[1] == stream_tokens[1] or (len(channel_tokens) >= 3 and len(stream_tokens) >= 3 and channel_tokens[1] == stream_tokens[1]): + # First token mismatch + if channel_tokens[0] not in stream_tokens: + mismatched_tokens.append(channel_tokens[0]) + if stream_tokens[0] not in channel_tokens: + mismatched_tokens.append(stream_tokens[0]) + position = 'first' + + # Check last token mismatch + if len(channel_tokens) >= 2 and len(stream_tokens) >= 2: + if channel_tokens[-1] != stream_tokens[-1]: + # Check if second-to-last tokens match (indicating last token is the issue) + if channel_tokens[-2] == stream_tokens[-2] or (len(channel_tokens) >= 3 and len(stream_tokens) >= 3 and channel_tokens[-2] == stream_tokens[-2]): + # Last token mismatch + if channel_tokens[-1] not in stream_tokens: + if channel_tokens[-1] not in mismatched_tokens: + mismatched_tokens.append(channel_tokens[-1]) + if stream_tokens[-1] not in channel_tokens: + if stream_tokens[-1] not in mismatched_tokens: + mismatched_tokens.append(stream_tokens[-1]) + if not position: # Don't override first token position + position = 'last' + + if mismatched_tokens and position: + return { + 'tokens': mismatched_tokens, + 'position': position + } + + return None + def _sort_channels_by_priority(self, channels): """Sort channels by quality tag priority, then by channel number.""" def get_priority_key(channel): @@ -1713,862 +2340,498 @@ class Plugin: except ValueError: quality_index = len(self.CHANNEL_QUALITY_TAG_ORDER) - # Get channel number, default to 999999 if not available channel_number = channel.get('channel_number', 999999) - if channel_number is None: - channel_number = 999999 - + if channel_number is None: channel_number = 999999 return (quality_index, channel_number) return sorted(channels, key=get_priority_key) - def preview_changes_action(self, settings, logger): + def preview_changes_action(self, settings, logger, context=None): """Preview which streams will be added to channels without making changes.""" + # Auto-load channels if not already loaded if not os.path.exists(self.processed_data_file): - return { - "status": "error", - "message": "No processed data found. Please run 'Load/Process Channels' first." - } + logger.info("[Stream-Mapparr] No processed data found, loading channels automatically...") + self._send_progress_update("preview_changes", 'running', 0, 'Loading channels and streams...', context) + load_result = self.load_process_channels_action(settings, logger, context) + if load_result.get('status') != 'success': + return load_result try: - # Validate settings before previewing - logger.info("[Stream-Mapparr] Validating settings before previewing changes...") + self._send_progress_update("preview_changes", 'running', 5, 'Initializing preview...', context) + limiter = SmartRateLimiter(settings.get("rate_limiting", "medium"), logger) + + self._send_progress_update("preview_changes", 'running', 10, 'Validating settings...', context) has_errors, validation_results, token = self._validate_plugin_settings(settings, logger) + if has_errors: return {"status": "error", "message": "Validation failed."} - if has_errors: - message = "Cannot preview changes - validation failed:\n\n" + "\n".join(validation_results) - message += "\n\nPlease fix the errors above before proceeding." - return {"status": "error", "message": message} - - logger.info("[Stream-Mapparr] Settings validated successfully, proceeding with preview...") - - # Load channel data from channels.json channels_data = self._load_channels_data(logger, settings) - - # Load processed data with open(self.processed_data_file, 'r') as f: processed_data = json.load(f) - + channels = processed_data.get('channels', []) streams = processed_data.get('streams', []) visible_channel_limit = processed_data.get('visible_channel_limit', 1) - - if not channels: - return {"status": "error", "message": "No channels found in processed data."} - - logger.info(f"[Stream-Mapparr] Previewing changes for {len(channels)} channels with {len(streams)} available streams") - logger.info(f"[Stream-Mapparr] Visible channel limit: {visible_channel_limit}") - - # Group channels by their cleaned name for matching - channel_groups = {} ignore_tags = processed_data.get('ignore_tags', []) + ignore_quality = processed_data.get('ignore_quality', True) ignore_regional = processed_data.get('ignore_regional', True) ignore_geographic = processed_data.get('ignore_geographic', True) ignore_misc = processed_data.get('ignore_misc', True) + channel_groups = {} for channel in channels: - # Get channel info from JSON to determine if it has a callsign channel_info = self._get_channel_info_from_json(channel['name'], channels_data, logger) - if self._is_ota_channel(channel_info): - # For OTA channels, group by callsign callsign = channel_info.get('callsign', '') - group_key = f"OTA_{callsign}" if callsign else self._clean_channel_name( - channel['name'], ignore_tags, ignore_quality, ignore_regional, - ignore_geographic, ignore_misc - ) + group_key = f"OTA_{callsign}" if callsign else self._clean_channel_name(channel['name'], ignore_tags) else: - group_key = self._clean_channel_name( - channel['name'], ignore_tags, ignore_quality, ignore_regional, - ignore_geographic, ignore_misc - ) - - if group_key not in channel_groups: - channel_groups[group_key] = [] + group_key = self._clean_channel_name(channel['name'], ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc) + + if group_key not in channel_groups: channel_groups[group_key] = [] channel_groups[group_key].append(channel) - - # Match streams to channel groups + all_matches = [] - total_channels_with_matches = 0 - total_channels_without_matches = 0 total_channels_to_update = 0 + low_match_channels = [] # Track channels with few matches for recommendations + threshold_data = {} # Track threshold analysis for recommendations + current_threshold = settings.get('fuzzy_match_threshold', 85) + try: + current_threshold = int(current_threshold) + except (ValueError, TypeError): + current_threshold = 85 + + self._send_progress_update("preview_changes", 'running', 30, f'Analyzing {len(channel_groups)} channel groups...', context) + processed_groups = 0 total_groups = len(channel_groups) - current_group = 0 - + for group_key, group_channels in channel_groups.items(): - current_group += 1 - progress_pct = int((current_group / total_groups) * 100) - - logger.info(f"[Stream-Mapparr] [{progress_pct}%] Processing channel group: {group_key} ({len(group_channels)} channels)") - - # Sort channels in this group by priority + limiter.wait() + + # Update progress + processed_groups += 1 + progress = 30 + int((processed_groups / total_groups) * 50) # 30-80% + if processed_groups % max(1, total_groups // 10) == 0: # Update every 10% + self._send_progress_update("preview_changes", 'running', progress, + f'Processing channel group {processed_groups}/{total_groups}...', context) + sorted_channels = self._sort_channels_by_priority(group_channels) - - # Match streams for this channel group (using first channel as representative) + + # Get matches at current threshold for the primary channel matched_streams, cleaned_channel_name, cleaned_stream_names, match_reason, database_used = self._match_streams_to_channel( - sorted_channels[0], streams, logger, ignore_tags, - ignore_quality, ignore_regional, ignore_geographic, ignore_misc, - channels_data + sorted_channels[0], streams, logger, ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc, channels_data ) - # Determine which channels will be updated based on limit channels_to_update = sorted_channels[:visible_channel_limit] channels_not_updated = sorted_channels[visible_channel_limit:] - # Add match info for channels that will be updated for channel in channels_to_update: - match_info = { + match_count = len(matched_streams) + + # Get detailed threshold analysis + threshold_matches = self._get_matches_at_thresholds( + channel, streams, logger, ignore_tags, ignore_quality, + ignore_regional, ignore_geographic, ignore_misc, channels_data, + current_threshold + ) + + # Store threshold analysis for recommendations + threshold_data[channel['name']] = threshold_matches + + # Add row for current threshold matches + all_matches.append({ "channel_id": channel['id'], "channel_name": channel['name'], - "channel_name_cleaned": cleaned_channel_name, - "channel_number": channel.get('channel_number'), - "matched_streams": len(matched_streams), + "threshold": current_threshold, + "matched_streams": match_count, "stream_names": [s['name'] for s in matched_streams], - "stream_names_cleaned": cleaned_stream_names, - "match_reason": match_reason, - "database_used": database_used, - "will_update": True - } - all_matches.append(match_info) - - if matched_streams: - total_channels_with_matches += 1 - else: - total_channels_without_matches += 1 + "will_update": True, + "is_current": True + }) total_channels_to_update += 1 + + # Check if channel might benefit from lower threshold + if match_count > 0 and match_count <= 3: + low_match_channels.append({ + 'name': channel['name'], + 'count': match_count, + 'streams': [s['name'] for s in matched_streams[:3]] + }) + + # Add rows for additional matches at lower thresholds + for threshold in sorted([t for t in threshold_matches.keys() if isinstance(t, int) and t < current_threshold], reverse=True): + threshold_info = threshold_matches[threshold] + threshold_streams = threshold_info['streams'] + + # Find streams that are NEW at this threshold (not in current matches) + current_stream_ids = {s['id'] for s in matched_streams} + new_streams = [s for s in threshold_streams if s['id'] not in current_stream_ids] + + if new_streams: + all_matches.append({ + "channel_id": channel['id'], + "channel_name": f" └─ (at threshold {threshold})", + "threshold": threshold, + "matched_streams": len(new_streams), + "stream_names": [s['name'] for s in new_streams], + "will_update": False, + "is_current": False + }) - # Add match info for channels that will NOT be updated (exceeds limit) for channel in channels_not_updated: - match_info = { + all_matches.append({ "channel_id": channel['id'], "channel_name": channel['name'], - "channel_name_cleaned": cleaned_channel_name, - "channel_number": channel.get('channel_number'), + "threshold": current_threshold, "matched_streams": len(matched_streams), - "stream_names": [s['name'] for s in matched_streams], - "stream_names_cleaned": cleaned_stream_names, - "match_reason": f"Skipped (exceeds limit of {visible_channel_limit})", - "database_used": database_used, - "will_update": False - } - all_matches.append(match_info) - - logger.info(f"[Stream-Mapparr] [100%] Preview processing complete") + "stream_names": [], + "will_update": False, + "is_current": True + }) - # Export to CSV + self._send_progress_update("preview_changes", 'running', 85, 'Generating CSV report...', context) timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"stream_mapparr_preview_{timestamp}.csv" filepath = os.path.join("/data/exports", filename) - os.makedirs("/data/exports", exist_ok=True) - # Calculate total matched streams - total_matched = sum(1 for m in all_matches if m['matched_streams'] > 0 and m['will_update']) - - # Write CSV with header comment with open(filepath, 'w', newline='', encoding='utf-8') as csvfile: - # Write comment header - header_comment = self._generate_csv_header_comment( - settings, - processed_data, - total_visible_channels=total_channels_to_update, - total_matched_streams=total_matched - ) + header_comment = self._generate_csv_header_comment(settings, processed_data, + low_match_channels=low_match_channels, + threshold_data=threshold_data) csvfile.write(header_comment) - - # Write CSV data - fieldnames = [ - 'will_update', - 'channel_id', - 'channel_name', - 'channel_name_cleaned', - 'channel_number', - 'matched_streams', - 'match_reason', - 'database_used', - 'stream_names' - ] + fieldnames = ['will_update', 'threshold', 'channel_id', 'channel_name', 'matched_streams', 'stream_names'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() - for match in all_matches: writer.writerow({ 'will_update': 'Yes' if match['will_update'] else 'No', + 'threshold': match.get('threshold', current_threshold), 'channel_id': match['channel_id'], 'channel_name': match['channel_name'], - 'channel_name_cleaned': match['channel_name_cleaned'], - 'channel_number': match.get('channel_number', 'N/A'), 'matched_streams': match['matched_streams'], - 'match_reason': match['match_reason'], - 'database_used': match['database_used'], - 'stream_names': '; '.join(match['stream_names']) # Show all streams + 'stream_names': '; '.join(match.get('stream_names', [])) }) - - logger.info(f"[Stream-Mapparr] Preview exported to {filepath}") - - # Calculate summary - channels_skipped = len([m for m in all_matches if not m['will_update']]) - - message_parts = [ - f"Preview completed for {len(channels)} channels:", - f"• Channels that will be updated: {total_channels_to_update}", - f"• Channels skipped (exceeds limit): {channels_skipped}", - f"• Channels with matches: {total_channels_with_matches}", - f"• Channels without matches: {total_channels_without_matches}", - "", - f"Preview report exported to: {filepath}", - "", - "Sample channels to update (first 10):" - ] - - # Show first 10 channels that will be updated - shown = 0 - for match in all_matches: - if match['will_update'] and shown < 10: - stream_summary = f"{match['matched_streams']} stream(s)" if match['matched_streams'] > 0 else "No streams" - message_parts.append(f"• {match['channel_name']}: {stream_summary}") - shown += 1 - - if total_channels_to_update > 10: - message_parts.append(f"... and {total_channels_to_update - 10} more channels") - - return { - "status": "success", - "message": "\n".join(message_parts) - } - + + message = f"Preview complete. {total_channels_to_update} channels will be updated. Report saved to {filepath}" + self._send_progress_update("preview_changes", 'success', 100, message, context) + return {"status": "success", "message": message} + except Exception as e: logger.error(f"[Stream-Mapparr] Error previewing changes: {str(e)}") return {"status": "error", "message": f"Error previewing changes: {str(e)}"} - def add_streams_to_channels_action(self, settings, logger): + def add_streams_to_channels_action(self, settings, logger, is_scheduled=False, context=None): """Add matching streams to channels and replace existing stream assignments.""" + # Auto-load channels if not already loaded if not os.path.exists(self.processed_data_file): - return { - "status": "error", - "message": "No processed data found. Please run 'Load/Process Channels' first." - } - - try: - # Get API token - token, error = self._get_api_token(settings, logger) - if error: - return {"status": "error", "message": error} + logger.info("[Stream-Mapparr] No processed data found, loading channels automatically...") + self._send_progress_update("add_streams_to_channels", 'running', 0, 'Loading channels and streams...', context) + load_result = self.load_process_channels_action(settings, logger, context) + if load_result.get('status') != 'success': + return load_result - # Load channel data from channels.json - channels_data = self._load_channels_data(logger, settings) + try: + self._send_progress_update("add_streams_to_channels", 'running', 5, 'Initializing stream assignment...', context) + limiter = SmartRateLimiter(settings.get("rate_limiting", "medium"), logger) - # Load processed data + self._send_progress_update("add_streams_to_channels", 'running', 10, 'Authenticating...', context) + token, error = self._get_api_token(settings, logger) + if error: return {"status": "error", "message": error} + + channels_data = self._load_channels_data(logger, settings) with open(self.processed_data_file, 'r') as f: processed_data = json.load(f) - - profile_id = processed_data.get('profile_id') + channels = processed_data.get('channels', []) streams = processed_data.get('streams', []) ignore_tags = processed_data.get('ignore_tags', []) visible_channel_limit = processed_data.get('visible_channel_limit', 1) + overwrite_streams = settings.get('overwrite_streams', True) + if isinstance(overwrite_streams, str): overwrite_streams = overwrite_streams.lower() in ('true', 'yes', '1') + ignore_quality = processed_data.get('ignore_quality', True) ignore_regional = processed_data.get('ignore_regional', True) ignore_geographic = processed_data.get('ignore_geographic', True) ignore_misc = processed_data.get('ignore_misc', True) - # Get overwrite_streams setting - overwrite_streams = settings.get('overwrite_streams', True) - if isinstance(overwrite_streams, str): - overwrite_streams = overwrite_streams.lower() in ('true', 'yes', '1') - - if not channels: - return {"status": "error", "message": "No channels found in processed data."} - - logger.info(f"[Stream-Mapparr] Adding streams to {len(channels)} channels") - logger.info(f"[Stream-Mapparr] Visible channel limit: {visible_channel_limit}") - logger.info(f"[Stream-Mapparr] Overwrite existing streams: {overwrite_streams}") - - # Group channels by their cleaned name channel_groups = {} for channel in channels: - # Get channel info from JSON to determine if it has a callsign channel_info = self._get_channel_info_from_json(channel['name'], channels_data, logger) - if self._is_ota_channel(channel_info): - # For OTA channels, group by callsign callsign = channel_info.get('callsign', '') - group_key = f"OTA_{callsign}" if callsign else self._clean_channel_name( - channel['name'], ignore_tags, ignore_quality, ignore_regional, - ignore_geographic, ignore_misc - ) + group_key = f"OTA_{callsign}" if callsign else self._clean_channel_name(channel['name'], ignore_tags) else: - group_key = self._clean_channel_name( - channel['name'], ignore_tags, ignore_quality, ignore_regional, - ignore_geographic, ignore_misc - ) - - if group_key not in channel_groups: - channel_groups[group_key] = [] + group_key = self._clean_channel_name(channel['name'], ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc) + + if group_key not in channel_groups: channel_groups[group_key] = [] channel_groups[group_key].append(channel) - - # Process each channel group + channels_updated = 0 - channels_skipped = 0 - channels_with_matches = 0 - channels_without_matches = 0 total_streams_added = 0 - update_details = [] + self._send_progress_update("add_streams_to_channels", 'running', 20, + f'Processing {len(channel_groups)} channel groups...', context) + + processed_groups = 0 total_groups = len(channel_groups) - current_group = 0 - + for group_key, group_channels in channel_groups.items(): - current_group += 1 - progress_pct = int((current_group / total_groups) * 100) - - logger.info(f"[Stream-Mapparr] [{progress_pct}%] Processing channel group: {group_key} ({len(group_channels)} channels)") - - # Sort channels in this group by priority + limiter.wait() # Rate limit processing sorted_channels = self._sort_channels_by_priority(group_channels) - - # Match streams for this channel group - matched_streams, cleaned_channel_name, cleaned_stream_names, match_reason, database_used = self._match_streams_to_channel( - sorted_channels[0], streams, logger, ignore_tags, - ignore_quality, ignore_regional, ignore_geographic, ignore_misc, - channels_data + matched_streams, _, _, _, _ = self._match_streams_to_channel( + sorted_channels[0], streams, logger, ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc, channels_data ) - - # Determine which channels to update based on limit + channels_to_update = sorted_channels[:visible_channel_limit] - channels_not_updated = sorted_channels[visible_channel_limit:] - - # Update only the channels within the limit + for channel in channels_to_update: channel_id = channel['id'] - channel_name = channel['name'] - try: if matched_streams: if overwrite_streams: - # Remove existing stream assignments - existing_count = ChannelStream.objects.filter(channel_id=channel_id).count() - if existing_count > 0: - ChannelStream.objects.filter(channel_id=channel_id).delete() - logger.info(f"[Stream-Mapparr] Removed {existing_count} existing stream(s) from channel '{channel_name}'") - else: - # Get existing stream IDs to avoid duplicates - existing_stream_ids = set( - ChannelStream.objects.filter(channel_id=channel_id).values_list('stream_id', flat=True) - ) - - # Add ALL matched streams (already sorted by quality) - streams_added_count = 0 + ChannelStream.objects.filter(channel_id=channel_id).delete() + + existing_stream_ids = set(ChannelStream.objects.filter(channel_id=channel_id).values_list('stream_id', flat=True)) + streams_added = 0 for stream in matched_streams: - stream_id = stream['id'] - - # Skip if stream already exists and we're not overwriting - if not overwrite_streams and stream_id in existing_stream_ids: - continue - - ChannelStream.objects.create( - channel_id=channel_id, - stream_id=stream_id - ) - streams_added_count += 1 - + if not overwrite_streams and stream['id'] in existing_stream_ids: continue + ChannelStream.objects.create(channel_id=channel_id, stream_id=stream['id']) + streams_added += 1 + channels_updated += 1 - channels_with_matches += 1 - total_streams_added += streams_added_count + total_streams_added += streams_added + else: + if overwrite_streams: + ChannelStream.objects.filter(channel_id=channel_id).delete() + except Exception as e: + logger.error(f"[Stream-Mapparr] Failed to update channel '{channel['name']}': {e}") + + # Update progress + processed_groups += 1 + progress = 20 + int((processed_groups / total_groups) * 60) # 20-80% + if processed_groups % max(1, total_groups // 10) == 0: # Update every 10% + self._send_progress_update("add_streams_to_channels", 'running', progress, + f'Updated {channels_updated} channels so far...', context) + + # CSV Export - create if setting is enabled + # Default to True if setting doesn't exist (matches field default) + create_csv = settings.get('enable_scheduled_csv_export', True) + if isinstance(create_csv, str): + create_csv = create_csv.lower() in ('true', 'yes', '1') + + if create_csv: + self._send_progress_update("add_streams_to_channels", 'running', 85, 'Generating CSV export...', context) + try: + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + filename = f"stream_mapparr_{timestamp}.csv" + filepath = os.path.join("/data/exports", filename) + os.makedirs("/data/exports", exist_ok=True) + + # Collect all channel-stream mappings for CSV with lower threshold recommendations + csv_data = [] + low_match_channels = [] # Track channels with few matches for recommendations + threshold_data = {} # Track threshold analysis for recommendations + current_threshold = settings.get('fuzzy_match_threshold', 85) + try: + current_threshold = int(current_threshold) + except (ValueError, TypeError): + current_threshold = 85 + + for group_key, group_channels in channel_groups.items(): + sorted_channels = self._sort_channels_by_priority(group_channels) + matched_streams, _, _, _, _ = self._match_streams_to_channel( + sorted_channels[0], streams, logger, ignore_tags, ignore_quality, + ignore_regional, ignore_geographic, ignore_misc, channels_data + ) + + channels_to_update = sorted_channels[:visible_channel_limit] + for channel in channels_to_update: + match_count = len(matched_streams) - # Create comma-separated list of stream names - stream_names_list = '; '.join([s['name'] for s in matched_streams]) + # Get detailed threshold analysis + threshold_matches = self._get_matches_at_thresholds( + channel, streams, logger, ignore_tags, ignore_quality, + ignore_regional, ignore_geographic, ignore_misc, channels_data, + current_threshold + ) - update_details.append({ - 'channel_name': channel_name, - 'stream_names': stream_names_list, - 'matched_streams': len(matched_streams), - 'database_used': database_used + # Store threshold analysis for recommendations + threshold_data[channel['name']] = threshold_matches + + # Add row for current threshold matches + csv_data.append({ + 'channel_id': channel['id'], + 'channel_name': channel['name'], + 'threshold': current_threshold, + 'matched_streams': match_count, + 'stream_names': '; '.join([s['name'] for s in matched_streams]) }) - if overwrite_streams: - logger.info(f"[Stream-Mapparr] Replaced streams with {streams_added_count} new stream(s) for channel '{channel_name}'") - else: - logger.info(f"[Stream-Mapparr] Added {streams_added_count} new stream(s) to channel '{channel_name}'") - if streams_added_count == 0: - logger.info(f"[Stream-Mapparr] All matched streams already exist for channel '{channel_name}'") - else: - # No matches found - if overwrite_streams: - # Remove existing streams only if overwrite is enabled - existing_count = ChannelStream.objects.filter(channel_id=channel_id).count() - if existing_count > 0: - ChannelStream.objects.filter(channel_id=channel_id).delete() - logger.info(f"[Stream-Mapparr] Removed {existing_count} stream(s) from channel '{channel_name}' (no matches found)") - else: - logger.info(f"[Stream-Mapparr] No matches found for channel '{channel_name}'") - else: - # Keep existing streams - existing_count = ChannelStream.objects.filter(channel_id=channel_id).count() - logger.info(f"[Stream-Mapparr] No matches found for channel '{channel_name}', keeping {existing_count} existing stream(s)") + # Check if channel might benefit from lower threshold + if match_count > 0 and match_count <= 3: + low_match_channels.append({ + 'name': channel['name'], + 'count': match_count, + 'streams': [s['name'] for s in matched_streams[:3]] + }) - channels_without_matches += 1 - - except Exception as e: - logger.error(f"[Stream-Mapparr] Failed to update channel '{channel_name}': {e}") - - # Log skipped channels - for channel in channels_not_updated: - logger.info(f"[Stream-Mapparr] Skipped channel '{channel['name']}' (exceeds limit of {visible_channel_limit})") - channels_skipped += 1 - - logger.info(f"[Stream-Mapparr] [100%] Processing complete") + # Add rows for additional matches at lower thresholds + for threshold in sorted([t for t in threshold_matches.keys() if isinstance(t, int) and t < current_threshold], reverse=True): + threshold_info = threshold_matches[threshold] + threshold_streams = threshold_info['streams'] + + # Find streams that are NEW at this threshold (not in current matches) + current_stream_ids = {s['id'] for s in matched_streams} + new_streams = [s for s in threshold_streams if s['id'] not in current_stream_ids] + + if new_streams: + csv_data.append({ + 'channel_id': channel['id'], + 'channel_name': f" └─ (at threshold {threshold})", + 'threshold': threshold, + 'matched_streams': len(new_streams), + 'stream_names': '; '.join([s['name'] for s in new_streams]) + }) + + with open(filepath, 'w', newline='', encoding='utf-8') as csvfile: + header_comment = self._generate_csv_header_comment(settings, processed_data, + total_visible_channels=channels_updated, + total_matched_streams=total_streams_added, + low_match_channels=low_match_channels, + threshold_data=threshold_data) + csvfile.write(header_comment) + fieldnames = ['threshold', 'channel_id', 'channel_name', 'matched_streams', 'stream_names'] + writer = csv.DictWriter(csvfile, fieldnames=fieldnames) + writer.writeheader() + for row in csv_data: + writer.writerow(row) + + logger.info(f"[Stream-Mapparr] CSV export saved to {filepath}") + except Exception as e: + logger.error(f"[Stream-Mapparr] Failed to create scheduled CSV export: {e}") - # Trigger frontend refresh self._trigger_frontend_refresh(settings, logger) - # Export detailed report - timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") - filename = f"stream_mapparr_update_{timestamp}.csv" - filepath = os.path.join("/data/exports", filename) + # Send final completion notification + success_msg = f"Updated {channels_updated} channels with {total_streams_added} streams." + self._send_progress_update("add_streams_to_channels", 'success', 100, success_msg, context) + + return {"status": "success", "message": success_msg} - os.makedirs("/data/exports", exist_ok=True) - - # Calculate total matched streams - total_matched = sum(1 for detail in update_details if detail['matched_streams'] > 0) - - # Write CSV with header comment - with open(filepath, 'w', newline='', encoding='utf-8') as csvfile: - # Write comment header - header_comment = self._generate_csv_header_comment( - settings, - processed_data, - total_visible_channels=channels_updated, - total_matched_streams=total_matched - ) - csvfile.write(header_comment) - - # Write CSV data - fieldnames = ['channel_name', 'stream_names', 'matched_streams', 'database_used'] - writer = csv.DictWriter(csvfile, fieldnames=fieldnames) - writer.writeheader() - - for detail in update_details: - writer.writerow(detail) - - logger.info(f"[Stream-Mapparr] Update report exported to {filepath}") - - # Create summary message - mode_description = "Replaced existing streams" if overwrite_streams else "Added new streams (preserved existing)" - message_parts = [ - f"Stream assignment completed ({mode_description}):", - f"• Channels updated: {channels_updated}", - f"• Total streams added: {total_streams_added}", - f"• Channels skipped (exceeds limit): {channels_skipped}", - f"• Channels with matches: {channels_with_matches}", - f"• Channels without matches: {channels_without_matches}", - "", - f"Update report exported to: {filepath}", - "", - "Sample updates (first 10):" - ] - - # Show first 10 updates - for detail in update_details[:10]: - message_parts.append(f"• {detail['channel_name']}: {detail['matched_streams']} stream(s)") - - if len(update_details) > 10: - message_parts.append(f"... and {len(update_details) - 10} more updates") - - message_parts.append("") - message_parts.append("Frontend refresh triggered - changes should be visible in the interface shortly.") - - return { - "status": "success", - "message": "\n".join(message_parts) - } - except Exception as e: - logger.error(f"[Stream-Mapparr] Error adding streams to channels: {str(e)}") - return {"status": "error", "message": f"Error adding streams to channels: {str(e)}"} + logger.error(f"[Stream-Mapparr] Error adding streams: {str(e)}") + return {"status": "error", "message": f"Error adding streams: {str(e)}"} - def manage_channel_visibility_action(self, settings, logger): - """Disable all channels, then enable only channels with 0 or 1 stream (excluding attached channels).""" + def manage_channel_visibility_action(self, settings, logger, context=None): + """Disable all channels, then enable only channels with 1 or more streams.""" if not os.path.exists(self.processed_data_file): - return { - "status": "error", - "message": "No processed data found. Please run 'Load/Process Channels' first." - } - + return {"status": "error", "message": "No processed data found. Please run 'Load/Process Channels' first."} + try: - # Get API token - token, error = self._get_api_token(settings, logger) - if error: - return {"status": "error", "message": error} + self._send_progress_update("manage_channel_visibility", 'running', 5, 'Initializing...', context) - # Load processed data + self._send_progress_update("manage_channel_visibility", 'running', 10, 'Loading channel data...', context) with open(self.processed_data_file, 'r') as f: processed_data = json.load(f) - + profile_id = processed_data.get('profile_id') channels = processed_data.get('channels', []) + channels_data = self._load_channels_data(logger, settings) + + # Step 1: Get stream counts + self._send_progress_update("manage_channel_visibility", 'running', 20, 'Counting streams...', context) + channel_stream_counts = {} + for channel in channels: + stream_count = ChannelStream.objects.filter(channel_id=channel['id']).count() + channel_stream_counts[channel['id']] = {'name': channel['name'], 'stream_count': stream_count} + + # Step 2: Disable all channels using Django ORM + self._send_progress_update("manage_channel_visibility", 'running', 40, f'Disabling all {len(channels)} channels...', context) + logger.info(f"[Stream-Mapparr] Disabling all {len(channels)} channels using Django ORM...") + + channel_ids = [ch['id'] for ch in channels] + ChannelProfileMembership.objects.filter( + profile_id=profile_id, + channel_id__in=channel_ids + ).update(enabled=False) + + logger.info(f"[Stream-Mapparr] Disabled {len(channel_ids)} channels in profile {profile_id}") + + # Step 3: Determine channels to enable + self._send_progress_update("manage_channel_visibility", 'running', 60, 'Determining channels to enable...', context) + channels_to_enable = [] + channel_groups = {} + + # Reuse grouping logic ignore_tags = processed_data.get('ignore_tags', []) - visible_channel_limit = processed_data.get('visible_channel_limit', 1) ignore_quality = processed_data.get('ignore_quality', True) ignore_regional = processed_data.get('ignore_regional', True) ignore_geographic = processed_data.get('ignore_geographic', True) ignore_misc = processed_data.get('ignore_misc', True) - if not channels: - return {"status": "error", "message": "No channels found in processed data."} - - logger.info(f"[Stream-Mapparr] Managing visibility for {len(channels)} channels") - logger.info(f"[Stream-Mapparr] Visible channel limit: {visible_channel_limit}") - - # Step 1: Get stream counts for all channels - logger.info("[Stream-Mapparr] Step 1: Counting streams for each channel...") - channel_stream_counts = {} - for channel in channels: - channel_id = channel['id'] - stream_count = ChannelStream.objects.filter(channel_id=channel_id).count() - channel_stream_counts[channel_id] = { - 'name': channel['name'], - 'stream_count': stream_count - } - logger.info(f"[Stream-Mapparr] Channel '{channel['name']}': {stream_count} stream(s)") - - # Step 2: Find channels that are attached to other channels - logger.info("[Stream-Mapparr] Step 2: Identifying attached channels...") - channels_attached_to_others = set() - - for channel in channels: - attached_channel_id = channel.get('attached_channel_id') - if attached_channel_id: - channels_attached_to_others.add(channel['id']) - logger.info(f"[Stream-Mapparr] Channel '{channel['name']}' is attached to another channel") - - # Step 3: Disable all channels first - logger.info(f"[Stream-Mapparr] Step 3: Disabling all {len(channels)} channels...") - try: - bulk_disable_payload = [ - {"channel_id": channel['id'], "enabled": False} - for channel in channels - ] - - self._patch_api_data( - f"/api/channels/profiles/{profile_id}/channels/bulk-update/", - token, - bulk_disable_payload, - settings, - logger - ) - logger.info(f"[Stream-Mapparr] Successfully disabled all {len(channels)} channels") - - except Exception as e: - logger.error(f"[Stream-Mapparr] Failed to bulk disable channels: {e}") - logger.info("[Stream-Mapparr] Attempting to disable channels individually...") - - # Fallback: disable one by one - for channel in channels: - try: - self._patch_api_data( - f"/api/channels/profiles/{profile_id}/channels/{channel['id']}/", - token, - {"enabled": False}, - settings, - logger - ) - except Exception as e2: - logger.error(f"[Stream-Mapparr] Failed to disable channel {channel['id']}: {e2}") - - # Step 3.5: Group channels and apply visible channel limit - logger.info("[Stream-Mapparr] Step 3.5: Grouping channels and applying visibility limit...") - - # Group channels by their cleaned name - channel_groups = {} - for channel in channels: - # Use ORIGINAL name for OTA channels, cleaned name for others - if self._is_ota_channel(channel['name']): - # For OTA channels, group by callsign - ota_info = self._extract_ota_info(channel['name']) - if ota_info: - group_key = f"OTA_{ota_info['callsign']}" - else: - group_key = self._clean_channel_name( - channel['name'], ignore_tags, ignore_quality, ignore_regional, - ignore_geographic, ignore_misc - ) + channel_info = self._get_channel_info_from_json(channel['name'], channels_data, logger) + if self._is_ota_channel(channel_info): + callsign = channel_info.get('callsign', '') + group_key = f"OTA_{callsign}" if callsign else self._clean_channel_name(channel['name'], ignore_tags) else: - group_key = self._clean_channel_name( - channel['name'], ignore_tags, ignore_quality, ignore_regional, - ignore_geographic, ignore_misc - ) - - if group_key not in channel_groups: + group_key = self._clean_channel_name(channel['name'], ignore_tags, ignore_quality, ignore_regional, ignore_geographic, ignore_misc) + if group_key not in channel_groups: channel_groups[group_key] = [] channel_groups[group_key].append(channel) - - # Determine which channels to enable - channels_to_enable = [] - + for group_key, group_channels in channel_groups.items(): - logger.info(f"[Stream-Mapparr] Processing channel group: {group_key} ({len(group_channels)} channels)") - - # Sort channels in this group by priority sorted_channels = self._sort_channels_by_priority(group_channels) - - # Filter to only channels with 0-1 streams and not attached - eligible_channels = [ - ch for ch in sorted_channels - if channel_stream_counts[ch['id']]['stream_count'] <= 1 - and ch['id'] not in channels_attached_to_others - ] - - # If there are eligible channels, enable only the highest priority one enabled_in_group = False - for ch in sorted_channels: - channel_id = ch['id'] - channel_name = ch['name'] + stream_count = channel_stream_counts[ch['id']]['stream_count'] + is_attached = ch.get('attached_channel_id') is not None - # Get stream count from the dictionary we built earlier - if channel_id not in channel_stream_counts: - logger.warning(f"[Stream-Mapparr] Channel {channel_id} ({channel_name}) not found in stream counts, skipping") - continue - - stream_count = channel_stream_counts[channel_id]['stream_count'] - is_attached = channel_id in channels_attached_to_others - - logger.debug(f"[Stream-Mapparr] Evaluating {channel_name}: stream_count={stream_count}, is_attached={is_attached}, enabled_in_group={enabled_in_group}") - - # Determine reason for enabling/disabling - if is_attached: - reason = 'Attached to another channel' - should_enable = False - elif not enabled_in_group and stream_count >= 1: - # This is the highest priority, non-attached channel WITH streams - reason = f'{stream_count} stream{"s" if stream_count != 1 else ""}' - should_enable = True + if not is_attached and not enabled_in_group and stream_count >= 1: + channels_to_enable.append(ch['id']) enabled_in_group = True - elif stream_count == 0: - # This channel has no streams - reason = 'No streams found' - should_enable = False - else: - # This is a duplicate (a lower-priority channel in the group) - reason = 'Duplicate - higher priority channel enabled' - should_enable = False - - channel_stream_counts[channel_id] = { - 'name': channel_name, - 'stream_count': stream_count, - 'reason': reason - } - - if should_enable: - channels_to_enable.append(channel_id) - logger.info(f"[Stream-Mapparr] Will enable: {channel_name} ({reason})") - else: - logger.info(f"[Stream-Mapparr] Will keep disabled: {channel_name} ({reason})") - - # Step 4: Enable selected channels - logger.info(f"[Stream-Mapparr] Step 4: Enabling {len(channels_to_enable)} channels...") - channels_enabled = 0 + + # Step 4: Enable channels using Django ORM + self._send_progress_update("manage_channel_visibility", 'running', 80, f'Enabling {len(channels_to_enable)} channels...', context) + logger.info(f"[Stream-Mapparr] Enabling {len(channels_to_enable)} channels using Django ORM...") if channels_to_enable: - try: - bulk_enable_payload = [ - {"channel_id": channel_id, "enabled": True} - for channel_id in channels_to_enable - ] - - self._patch_api_data( - f"/api/channels/profiles/{profile_id}/channels/bulk-update/", - token, - bulk_enable_payload, - settings, - logger - ) - channels_enabled = len(channels_to_enable) - logger.info(f"[Stream-Mapparr] Successfully enabled {channels_enabled} channels") - - except Exception as e: - logger.error(f"[Stream-Mapparr] Failed to bulk enable channels: {e}") - logger.info("[Stream-Mapparr] Attempting to enable channels individually...") - - # Fallback: enable one by one - for channel_id in channels_to_enable: - try: - self._patch_api_data( - f"/api/channels/profiles/{profile_id}/channels/{channel_id}/", - token, - {"enabled": True}, - settings, - logger - ) - channels_enabled += 1 - except Exception as e2: - logger.error(f"[Stream-Mapparr] Failed to enable channel {channel_id}: {e2}") - - # Trigger frontend refresh - self._trigger_frontend_refresh(settings, logger) - - # Generate visibility report CSV - timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") - filename = f"stream_mapparr_visibility_{timestamp}.csv" - filepath = os.path.join("/data/exports", filename) - - os.makedirs("/data/exports", exist_ok=True) - - # Calculate total matched streams (channels with at least 1 stream that are enabled) - total_matched = sum(1 for ch_id in channels_to_enable if channel_stream_counts.get(ch_id, {}).get('stream_count', 0) > 0) - - # Write CSV with header comment - with open(filepath, 'w', newline='', encoding='utf-8') as csvfile: - # Write comment header - header_comment = self._generate_csv_header_comment( - settings, - processed_data, - total_visible_channels=channels_enabled, - total_matched_streams=total_matched - ) - csvfile.write(header_comment) - - # Write CSV data - fieldnames = [ - 'channel_id', - 'channel_name', - 'stream_count', - 'reason', - 'enabled' - ] - writer = csv.DictWriter(csvfile, fieldnames=fieldnames) - writer.writeheader() + ChannelProfileMembership.objects.filter( + profile_id=profile_id, + channel_id__in=channels_to_enable + ).update(enabled=True) - for channel_id, info in channel_stream_counts.items(): - writer.writerow({ - 'channel_id': channel_id, - 'channel_name': info['name'], - 'stream_count': info.get('stream_count', 'N/A'), - 'reason': info.get('reason', ''), - 'enabled': 'Yes' if channel_id in channels_to_enable else 'No' - }) - - logger.info(f"[Stream-Mapparr] Visibility report exported to {filepath}") - - # Count channels by category - channels_with_0_streams = sum(1 for info in channel_stream_counts.values() if info.get('stream_count') == 0) - channels_with_1_stream = sum(1 for info in channel_stream_counts.values() if info.get('stream_count') == 1) - channels_with_2plus_streams = sum(1 for info in channel_stream_counts.values() if isinstance(info.get('stream_count'), int) and info.get('stream_count') >= 2) - channels_attached = len(channels_attached_to_others) - channels_duplicates = len([info for info in channel_stream_counts.values() if 'Duplicate' in info.get('reason', '')]) - - # Create summary message - message_parts = [ - "Channel visibility management completed:", - f"• Total channels processed: {len(channels)}", - f"• Channels disabled: {len(channels) - channels_enabled}", - f"• Channels enabled: {channels_enabled}", - "", - "Breakdown:", - f"• Enabled (0-1 streams): {channels_enabled} channels", - f"• Disabled (2+ streams): {channels_with_2plus_streams} channels", - f"• Disabled (duplicates): {channels_duplicates} channels", - f"• Disabled (attached): {channels_attached} channels", - "", - f"Visibility report exported to: {filepath}", - "", - "Sample enabled channels:" - ] - - # Show first 10 enabled channels - shown_count = 0 - for channel_id in channels_to_enable[:10]: - info = channel_stream_counts.get(channel_id) - if info: - message_parts.append(f"• {info['name']}: {info.get('reason', 'N/A')}") - shown_count += 1 - - if len(channels_to_enable) > 10: - message_parts.append(f"... and {len(channels_to_enable) - 10} more enabled channels") - - message_parts.append("") - message_parts.append("Frontend refresh triggered - changes should be visible in the interface shortly.") - - return { - "status": "success", - "message": "\n".join(message_parts) - } + logger.info(f"[Stream-Mapparr] Enabled {len(channels_to_enable)} channels in profile {profile_id}") + + self._trigger_frontend_refresh(settings, logger) + success_msg = f"Visibility managed. Enabled {len(channels_to_enable)} of {len(channels)} channels." + self._send_progress_update("manage_channel_visibility", 'success', 100, success_msg, context) + return {"status": "success", "message": success_msg} + except Exception as e: + logger.error(f"[Stream-Mapparr] Error managing visibility: {str(e)}") import traceback - error_details = traceback.format_exc() - logger.error(f"[Stream-Mapparr] Error managing channel visibility: {str(e)}") - logger.error(f"[Stream-Mapparr] Full traceback:\n{error_details}") - return {"status": "error", "message": f"Error managing channel visibility: {str(e)}"} + logger.error(traceback.format_exc()) + return {"status": "error", "message": f"Error: {str(e)}"} def clear_csv_exports_action(self, settings, logger): """Delete all CSV export files created by this plugin""" try: export_dir = "/data/exports" - if not os.path.exists(export_dir): - return { - "status": "success", - "message": "No export directory found. No files to delete." - } - - # Find all CSV files created by this plugin + return {"status": "success", "message": "No export directory found."} + deleted_count = 0 - deleted_files = [] - for filename in os.listdir(export_dir): if filename.startswith("stream_mapparr_") and filename.endswith(".csv"): - filepath = os.path.join(export_dir, filename) try: - os.remove(filepath) + os.remove(os.path.join(export_dir, filename)) deleted_count += 1 - deleted_files.append(filename) - logger.info(f"[Stream-Mapparr] Deleted CSV file: {filename}") - except Exception as e: - logger.warning(f"[Stream-Mapparr] Failed to delete {filename}: {e}") - - if deleted_count == 0: - return { - "status": "success", - "message": "No CSV export files found to delete." - } - - message_parts = [ - f"Successfully deleted {deleted_count} CSV export file(s):", - "" - ] - - # Show first 10 deleted files - for filename in deleted_files[:10]: - message_parts.append(f"• {filename}") - - if len(deleted_files) > 10: - message_parts.append(f"• ... and {len(deleted_files) - 10} more files") - - return { - "status": "success", - "message": "\n".join(message_parts) - } - + except Exception: pass + + return {"status": "success", "message": f"Deleted {deleted_count} CSV files."} except Exception as e: - logger.error(f"[Stream-Mapparr] Error clearing CSV exports: {e}") return {"status": "error", "message": f"Error clearing CSV exports: {e}"} - -# Export fields and actions for Dispatcharr plugin system -fields = Plugin.fields -actions = Plugin.actions - -# Additional exports for Dispatcharr plugin system compatibility -plugin = Plugin() -plugin_instance = Plugin() - -# Alternative export names in case Dispatcharr looks for these -stream_mapparr = Plugin() - -STREAM_MAPPARR = Plugin() -