diff --git a/Stream-Mapparr/US_channels.json b/Stream-Mapparr/US_channels.json new file mode 100644 index 0000000..ead67f2 --- /dev/null +++ b/Stream-Mapparr/US_channels.json @@ -0,0 +1,20162 @@ +[ + { + "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/fuzzy_matcher.py b/Stream-Mapparr/fuzzy_matcher.py new file mode 100644 index 0000000..27b49bd --- /dev/null +++ b/Stream-Mapparr/fuzzy_matcher.py @@ -0,0 +1,524 @@ +""" +Fuzzy Matcher Module for Dispatcharr Plugins +Handles fuzzy matching, normalization, and channel database loading. +Reusable across multiple plugins (Stream-Mapparr, Channel Mapparr, etc.) +""" + +import os +import re +import json +import logging +from glob import glob + +# Setup logging +LOGGER = logging.getLogger("plugins.fuzzy_matcher") + +# Hardcoded regex patterns to ignore during fuzzy matching +HARDCODED_IGNORE_PATTERNS = [ + r'\[(4K|FHD|HD|SD|Unknown|Unk|Slow|Dead)\]', + r'\[(?:4k|fhd|hd|sd|unknown|unk|slow|dead)\]', + r'\([A-Z]\)', + r'\s[Ee][Aa][Ss][Tt]', + r'\s(?:SD|HD|FD)\s', + r'\s(?:SD|HD|FD)$', + r'\b(?:SD|HD|FD|FHD):?\s', + r'\s\(CX\)', + r'\s\((SD|HD|FD|Backup)\)', + r'\bUSA?:\s', + r'\bUS\s', + r'\([bB]ackup\)', +] + + +class FuzzyMatcher: + """Handles fuzzy matching for channel and stream names with normalization and database loading.""" + + def __init__(self, plugin_dir=None, match_threshold=85, logger=None): + """ + Initialize the fuzzy matcher. + + Args: + plugin_dir: Directory where the plugin and channel JSON files are located (optional) + match_threshold: Minimum similarity score (0-100) for a match to be accepted + logger: Logger instance (optional) + """ + self.plugin_dir = plugin_dir or os.path.dirname(__file__) + self.match_threshold = match_threshold + self.logger = logger or LOGGER + + # Channel data storage + self.broadcast_channels = [] # Channels with callsigns + self.premium_channels = [] # Channel names only (for fuzzy matching) + self.premium_channels_full = [] # Full channel objects with category + self.channel_lookup = {} # Callsign -> channel data mapping + + # Load all channel databases if plugin_dir is provided + if self.plugin_dir: + self._load_channel_databases() + + def _load_channel_databases(self): + """Load all *_channels.json files from the plugin directory.""" + pattern = os.path.join(self.plugin_dir, "*_channels.json") + channel_files = glob(pattern) + + if not channel_files: + self.logger.warning(f"No *_channels.json files found in {self.plugin_dir}") + return False + + self.logger.info(f"Found {len(channel_files)} channel database file(s): {[os.path.basename(f) for f in channel_files]}") + + total_broadcast = 0 + total_premium = 0 + + for channel_file in channel_files: + try: + with open(channel_file, 'r', encoding='utf-8') as f: + channels_list = json.load(f) + + file_broadcast = 0 + file_premium = 0 + + for channel in channels_list: + channel_type = channel.get('type', '').lower() + + if 'broadcast' in channel_type or channel_type == 'broadcast (ota)': + # Broadcast channel with callsign + self.broadcast_channels.append(channel) + file_broadcast += 1 + + # Create lookup by callsign + callsign = channel.get('callsign', '').strip() + if callsign: + self.channel_lookup[callsign] = channel + + # Also store base callsign without suffix for easier matching + base_callsign = re.sub(r'-(?:TV|CD|LP|DT|LD)$', '', callsign) + if base_callsign != callsign: + self.channel_lookup[base_callsign] = channel + else: + # Premium/cable/national channel + channel_name = channel.get('channel_name', '').strip() + if channel_name: + self.premium_channels.append(channel_name) + self.premium_channels_full.append(channel) + file_premium += 1 + + total_broadcast += file_broadcast + total_premium += file_premium + + self.logger.info(f"Loaded from {os.path.basename(channel_file)}: {file_broadcast} broadcast, {file_premium} premium channels") + + except Exception as e: + self.logger.error(f"Error loading {channel_file}: {e}") + + self.logger.info(f"Total channels loaded: {total_broadcast} broadcast, {total_premium} premium") + return True + + def extract_callsign(self, channel_name): + """ + Extract US TV callsign from channel name with priority order. + Returns None if common false positives appear alone. + """ + # Remove common prefixes + channel_name = re.sub(r'^D\d+-', '', channel_name) + channel_name = re.sub(r'^USA?\s*[^a-zA-Z0-9]*\s*', '', channel_name, flags=re.IGNORECASE) + + # Priority 1: Callsigns in parentheses (most reliable) + paren_match = re.search(r'\(([KW][A-Z]{3})(?:-[A-Z\s]+)?\)', channel_name, re.IGNORECASE) + if paren_match: + callsign = paren_match.group(1).upper() + if callsign not in ['WEST', 'EAST', 'KIDS', 'WOMEN', 'WILD', 'WORLD']: + return callsign + + # Priority 2: Callsigns with suffix in parentheses + paren_suffix_match = re.search(r'\(([KW][A-Z]{2,4}-(?:TV|CD|LP|DT|LD))\)', channel_name, re.IGNORECASE) + if paren_suffix_match: + callsign = paren_suffix_match.group(1).upper() + return callsign + + # Priority 3: Callsigns at the end + end_match = re.search(r'\b([KW][A-Z]{2,4}(?:-(?:TV|CD|LP|DT|LD))?)\s*(?:\.[a-z]+)?\s*$', channel_name, re.IGNORECASE) + if end_match: + callsign = end_match.group(1).upper() + if callsign not in ['WEST', 'EAST', 'KIDS', 'WOMEN', 'WILD', 'WORLD']: + return callsign + + # Priority 4: Any word matching callsign pattern + word_match = re.search(r'\b([KW][A-Z]{2,4}(?:-(?:TV|CD|LP|DT|LD))?)\b', channel_name, re.IGNORECASE) + if word_match: + callsign = word_match.group(1).upper() + if callsign not in ['WEST', 'EAST', 'KIDS', 'WOMEN', 'WILD', 'WORLD']: + return callsign + + return None + + def normalize_callsign(self, callsign): + """Remove suffix from callsign for display.""" + if callsign: + callsign = re.sub(r'-(?:TV|CD|LP|DT|LD)$', '', callsign) + return callsign + + def normalize_name(self, name, user_ignored_tags=None, remove_quality_tags=True): + """ + Normalize channel or stream name for matching by removing tags, prefixes, and other noise. + + Args: + name: Name to normalize + user_ignored_tags: Additional user-configured tags to ignore (list of strings) + remove_quality_tags: If True, remove hardcoded quality patterns (for matching only, not display) + + Returns: + Normalized name + """ + if user_ignored_tags is None: + user_ignored_tags = [] + + # Remove leading parenthetical prefixes like (SP2), (D1), etc. + name = re.sub(r'^\([^\)]+\)\s*', '', name) + + # Apply hardcoded ignore patterns only if remove_quality_tags is True + if remove_quality_tags: + for pattern in HARDCODED_IGNORE_PATTERNS: + name = re.sub(pattern, '', name, flags=re.IGNORECASE) + + # Apply user-configured ignored tags + for tag in user_ignored_tags: + escaped_tag = re.escape(tag) + name = re.sub(escaped_tag, '', name, flags=re.IGNORECASE) + + # Remove callsigns in parentheses + name = re.sub(r'\([KW][A-Z]{3}(?:-(?:TV|CD|LP|DT|LD))?\)', '', name, flags=re.IGNORECASE) + + # Remove other tags in parentheses + name = re.sub(r'\([A-Z0-9]+\)', '', name) + + # Remove common pattern fixes + name = re.sub(r'^The\s+', '', name, flags=re.IGNORECASE) + name = re.sub(r'\s+Network\s*$', '', name, flags=re.IGNORECASE) + name = re.sub(r'\s+Channel\s*$', '', name, flags=re.IGNORECASE) + name = re.sub(r'\s+TV\s*$', '', name, flags=re.IGNORECASE) + + # Clean up whitespace + name = re.sub(r'\s+', ' ', name).strip() + + return name + + def extract_tags(self, name, user_ignored_tags=None): + """ + Extract regional indicators, extra tags, and quality tags to preserve them. + + Returns: + Tuple of (regional, extra_tags, quality_tags) + """ + if user_ignored_tags is None: + user_ignored_tags = [] + + regional = None + extra_tags = [] + quality_tags = [] + + # Extract regional indicator + regional_pattern_paren = r'\((East|West)\)' + regional_match = re.search(regional_pattern_paren, name, re.IGNORECASE) + if regional_match: + regional = regional_match.group(1).capitalize() + else: + regional_pattern_word = r'\b(East|West)\b(?!.*\b(East|West)\b)' + regional_match = re.search(regional_pattern_word, name, re.IGNORECASE) + if regional_match: + regional = regional_match.group(1).capitalize() + + # Extract ALL tags in parentheses + paren_tags = re.findall(r'\(([^\)]+)\)', name) + first_paren_is_prefix = name.strip().startswith('(') if paren_tags else False + + for idx, tag in enumerate(paren_tags): + # Skip first tag if it is a prefix + if idx == 0 and first_paren_is_prefix: + continue + + # Check if tag should be ignored + if f"({tag})" in user_ignored_tags or f"[{tag}]" in user_ignored_tags: + continue + + tag_upper = tag.upper() + + # Skip regional indicators + if tag_upper in ['EAST', 'WEST']: + continue + + # Skip callsigns + if re.match(r'^[KW][A-Z]{3}(?:-(?:TV|CD|LP|DT|LD))?$', tag_upper): + continue + + extra_tags.append(f"({tag})") + + # Extract ALL quality/bracketed tags + bracketed_tags = re.findall(r'\[([^\]]+)\]', name) + for tag in bracketed_tags: + # Check if tag should be ignored + if f"[{tag}]" in user_ignored_tags or f"({tag})" in user_ignored_tags: + continue + quality_tags.append(f"[{tag}]") + + return regional, extra_tags, quality_tags + + def calculate_similarity(self, str1, str2): + """ + Calculate Levenshtein distance-based similarity ratio between two strings. + + Returns: + Similarity ratio between 0.0 and 1.0 + """ + if len(str1) < len(str2): + str1, str2 = str2, str1 + + if len(str2) == 0: + return 1.0 if len(str1) == 0 else 0.0 + + previous_row = list(range(len(str2) + 1)) + + for i, c1 in enumerate(str1): + current_row = [i + 1] + for j, c2 in enumerate(str2): + insertions = previous_row[j + 1] + 1 + deletions = current_row[j] + 1 + substitutions = previous_row[j] + (c1 != c2) + current_row.append(min(insertions, deletions, substitutions)) + previous_row = current_row + + distance = previous_row[-1] + total_len = len(str1) + len(str2) + + if total_len == 0: + return 1.0 + + ratio = (total_len - distance) / total_len + return ratio + + def process_string_for_matching(self, s): + """ + Normalize a string for token-sort fuzzy matching. + Lowercases, removes punctuation, sorts tokens. + """ + s = s.lower() + + # Replace non-alphanumeric with space + cleaned_s = "" + for char in s: + if 'a' <= char <= 'z' or '0' <= char <= '9': + cleaned_s += char + else: + cleaned_s += ' ' + + # Split, sort, and rejoin + tokens = sorted([token for token in cleaned_s.split() if token]) + return " ".join(tokens) + + def find_best_match(self, query_name, candidate_names, user_ignored_tags=None): + """ + Find the best fuzzy match for a name among a list of candidate names. + + Args: + query_name: Name to match + candidate_names: List of candidate names to match against + user_ignored_tags: User-configured tags to ignore + + Returns: + Tuple of (matched_name, score) or (None, 0) if no match found + """ + if not candidate_names: + return None, 0 + + if user_ignored_tags is None: + user_ignored_tags = [] + + # Normalize the query + normalized_query = self.normalize_name(query_name, user_ignored_tags) + + if not normalized_query: + return None, 0 + + # Process query for token-sort matching + processed_query = self.process_string_for_matching(normalized_query) + + best_score = -1.0 + best_match = None + + for candidate in candidate_names: + processed_candidate = self.process_string_for_matching(candidate) + score = self.calculate_similarity(processed_query, processed_candidate) + + if score > best_score: + best_score = score + best_match = candidate + + # Convert to percentage and check threshold + percentage_score = int(best_score * 100) + + if percentage_score >= self.match_threshold: + return best_match, percentage_score + + return None, 0 + + def fuzzy_match(self, query_name, candidate_names, user_ignored_tags=None): + """ + Generic fuzzy matching function that can match any name against a list of candidates. + This is the main entry point for fuzzy matching. + + Args: + query_name: Name to match + candidate_names: List of candidate names to match against + user_ignored_tags: User-configured tags to ignore + + Returns: + Tuple of (matched_name, score, match_type) or (None, 0, None) if no match found + """ + if not candidate_names: + return None, 0, None + + if user_ignored_tags is None: + user_ignored_tags = [] + + # Normalize for matching + normalized_query = self.normalize_name(query_name, user_ignored_tags) + + if not normalized_query: + return None, 0, None + + best_match = None + best_ratio = 0 + match_type = None + + # Stage 1: Exact match (after normalization) + normalized_query_lower = normalized_query.lower() + normalized_query_nospace = re.sub(r'[\s&\-]+', '', normalized_query_lower) + + for candidate in candidate_names: + candidate_normalized = self.normalize_name(candidate, user_ignored_tags) + candidate_lower = candidate_normalized.lower() + candidate_nospace = re.sub(r'[\s&\-]+', '', candidate_lower) + + # Exact match + if normalized_query_nospace == candidate_nospace: + return candidate, 100, "exact" + + # Very high similarity (97%+) + ratio = self.calculate_similarity(normalized_query_lower, candidate_lower) + if ratio >= 0.97 and ratio > best_ratio: + best_match = candidate + best_ratio = ratio + match_type = "exact" + + if best_match: + return best_match, int(best_ratio * 100), match_type + + # Stage 2: Substring matching + for candidate in candidate_names: + candidate_normalized = self.normalize_name(candidate, user_ignored_tags) + candidate_lower = candidate_normalized.lower() + + # Check if one is a substring of the other + if normalized_query_lower in candidate_lower or candidate_lower in normalized_query_lower: + # Calculate similarity score + ratio = self.calculate_similarity(normalized_query_lower, candidate_lower) + if ratio > best_ratio: + best_match = candidate + best_ratio = ratio + match_type = "substring" + + if best_match and int(best_ratio * 100) >= self.match_threshold: + return best_match, int(best_ratio * 100), match_type + + # Stage 3: Fuzzy matching with token sorting + fuzzy_match, score = self.find_best_match(query_name, candidate_names, user_ignored_tags) + if fuzzy_match: + return fuzzy_match, score, f"fuzzy ({score})" + + return None, 0, None + + def match_broadcast_channel(self, channel_name): + """ + Match broadcast (OTA) channel by callsign. + + Args: + channel_name: Channel name potentially containing a callsign + + Returns: + Tuple of (callsign, station_data) or (None, None) if no match + """ + callsign = self.extract_callsign(channel_name) + + if not callsign: + return None, None + + # Try exact match first + station = self.channel_lookup.get(callsign) + + if station: + return callsign, station + + # Try base callsign (without suffix) + base_callsign = self.normalize_callsign(callsign) + station = self.channel_lookup.get(base_callsign) + + if station: + return callsign, station + + return callsign, None + + def get_category_for_channel(self, channel_name, user_ignored_tags=None): + """ + Get the category for a channel by matching it in the database. + + Args: + channel_name: Channel name to look up + user_ignored_tags: User-configured tags to ignore + + Returns: + Category string or None if not found + """ + if user_ignored_tags is None: + user_ignored_tags = [] + + # Try broadcast channel first + callsign, station = self.match_broadcast_channel(channel_name) + if station: + return station.get('category') + + # Try premium channel matching + if self.premium_channels: + matched_name, score, match_type = self.fuzzy_match( + channel_name, + self.premium_channels, + user_ignored_tags + ) + + if matched_name: + # Find the full channel object + for channel_obj in self.premium_channels_full: + if channel_obj.get('channel_name') == matched_name: + return channel_obj.get('category') + + return None + + def build_final_channel_name(self, base_name, regional, extra_tags, quality_tags): + """ + Build final channel name with regional indicator, extra tags, and quality tags. + Format: "Channel Name Regional (Extra) [Quality1] [Quality2] ..." + """ + parts = [base_name] + + # Add regional indicator WITHOUT parentheses + if regional: + parts.append(regional) + + # Add extra tags (already have parentheses) + if extra_tags: + parts.extend(extra_tags) + + # Add quality tags (preserve original case and count) + if quality_tags: + parts.extend(quality_tags) + + return " ".join(parts) diff --git a/Stream-Mapparr/plugin.py b/Stream-Mapparr/plugin.py index 116272b..16226e0 100644 --- a/Stream-Mapparr/plugin.py +++ b/Stream-Mapparr/plugin.py @@ -15,6 +15,9 @@ from django.utils import timezone # Django model imports from apps.channels.models import Channel, Stream, ChannelStream, ChannelProfileMembership +# Import fuzzy matcher +from .fuzzy_matcher import FuzzyMatcher + # Setup logging using Dispatcharr's format LOGGER = logging.getLogger("plugins.stream_mapparr") if not LOGGER.handlers: @@ -28,11 +31,18 @@ class Plugin: """Dispatcharr Stream-Mapparr Plugin""" name = "Stream-Mapparr" - version = "0.3" - description = "Automatically add matching streams to channels based on name similarity and quality precedence" + version = "0.4" + description = "Automatically add matching streams to channels based on name similarity and quality precedence with enhanced fuzzy matching" # Settings rendered by UI fields = [ + { + "id": "fuzzy_match_threshold", + "label": "Fuzzy Match Threshold", + "type": "number", + "default": 85, + "help_text": "Minimum similarity score (0-100) for fuzzy matching. Higher values require closer matches. Default: 85", + }, { "id": "dispatcharr_url", "label": "Dispatcharr URL", @@ -150,8 +160,24 @@ class Plugin: self.loaded_channels = [] self.loaded_streams = [] self.channel_stream_matches = [] + self.fuzzy_matcher = None - LOGGER.info(f"{self.name} Plugin v{self.version} initialized") + LOGGER.info(f"[Stream-Mapparr] {self.name} Plugin v{self.version} initialized") + + def _initialize_fuzzy_matcher(self, match_threshold=85): + """Initialize the fuzzy matcher with configured threshold.""" + if self.fuzzy_matcher is None: + try: + plugin_dir = os.path.dirname(__file__) + self.fuzzy_matcher = FuzzyMatcher( + plugin_dir=plugin_dir, + match_threshold=match_threshold, + logger=LOGGER + ) + LOGGER.info(f"[Stream-Mapparr] Initialized FuzzyMatcher with threshold: {match_threshold}") + except Exception as e: + LOGGER.warning(f"[Stream-Mapparr] Failed to initialize FuzzyMatcher: {e}") + self.fuzzy_matcher = None def _get_api_token(self, settings, logger): """Get an API access token using username and password.""" @@ -166,17 +192,17 @@ class Plugin: url = f"{dispatcharr_url}/api/accounts/token/" payload = {"username": username, "password": password} - logger.info(f"Attempting to authenticate with Dispatcharr at: {url}") + logger.info(f"[Stream-Mapparr] Attempting to authenticate with Dispatcharr at: {url}") response = requests.post(url, json=payload, timeout=15) if response.status_code == 401: - logger.error("Authentication failed - invalid credentials") + logger.error("[Stream-Mapparr] Authentication failed - invalid credentials") return None, "Authentication failed. Please check your username and password in the plugin settings." elif response.status_code == 404: - logger.error(f"API endpoint not found - check Dispatcharr URL: {dispatcharr_url}") + logger.error(f"[Stream-Mapparr] API endpoint not found - check Dispatcharr URL: {dispatcharr_url}") return None, f"API endpoint not found. Please verify your Dispatcharr URL: {dispatcharr_url}" elif response.status_code >= 500: - logger.error(f"Server error from Dispatcharr: {response.status_code}") + 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() @@ -184,26 +210,26 @@ class Plugin: access_token = token_data.get("access") if not access_token: - logger.error("No access token returned from API") + 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("Successfully obtained API access token") + logger.info("[Stream-Mapparr] Successfully obtained API access token") return access_token, None except requests.exceptions.ConnectionError as e: - logger.error(f"Connection error: {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." except requests.exceptions.Timeout as e: - logger.error(f"Request timeout: {e}") + logger.error(f"[Stream-Mapparr] Request timeout: {e}") return None, "Request timed out while connecting to Dispatcharr. Please check your network connection." except requests.RequestException as e: - logger.error(f"Request error: {e}") + logger.error(f"[Stream-Mapparr] Request error: {e}") return None, f"Network error occurred while authenticating: {e}" except json.JSONDecodeError as e: - logger.error(f"Invalid JSON response: {e}") + logger.error(f"[Stream-Mapparr] Invalid JSON response: {e}") return None, "Invalid response from Dispatcharr API. Please check if the URL is correct." except Exception as e: - logger.error(f"Unexpected error during authentication: {e}") + 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): @@ -213,17 +239,17 @@ class Plugin: headers = {'Authorization': f'Bearer {token}', 'Accept': 'application/json'} try: - logger.info(f"Making API request to: {endpoint}") + logger.info(f"[Stream-Mapparr] Making API request to: {endpoint}") response = requests.get(url, headers=headers, timeout=30) if response.status_code == 401: - logger.error("API token expired or invalid") + 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("API access forbidden") + logger.error("[Stream-Mapparr] API access forbidden") raise Exception("API access forbidden. Check user permissions.") elif response.status_code == 404: - logger.error(f"API endpoint not found: {endpoint}") + logger.error(f"[Stream-Mapparr] API endpoint not found: {endpoint}") raise Exception(f"API endpoint not found: {endpoint}") response.raise_for_status() @@ -236,7 +262,7 @@ class Plugin: return [] except requests.exceptions.RequestException as e: - logger.error(f"API request failed for {endpoint}: {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): @@ -246,24 +272,24 @@ class Plugin: headers = {'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'} try: - logger.info(f"Making API PATCH request to: {endpoint}") + logger.info(f"[Stream-Mapparr] Making API PATCH request to: {endpoint}") response = requests.patch(url, headers=headers, json=payload, timeout=60) if response.status_code == 401: - logger.error("API token expired or invalid") + 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("API access forbidden") + logger.error("[Stream-Mapparr] API access forbidden") raise Exception("API access forbidden. Check user permissions.") elif response.status_code == 404: - logger.error(f"API endpoint not found: {endpoint}") + 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"API PATCH request failed for {endpoint}: {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): @@ -273,24 +299,24 @@ class Plugin: headers = {'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'} try: - logger.info(f"Making API POST request to: {endpoint}") + 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("API token expired or invalid") + 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("API access forbidden") + logger.error("[Stream-Mapparr] API access forbidden") raise Exception("API access forbidden. Check user permissions.") elif response.status_code == 404: - logger.error(f"API endpoint not found: {endpoint}") + 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"API POST request failed for {endpoint}: {e}") + logger.error(f"[Stream-Mapparr] API POST request failed for {endpoint}: {e}") raise Exception(f"API POST request failed: {e}") def _trigger_frontend_refresh(self, settings, logger): @@ -309,14 +335,22 @@ class Plugin: "message": "Channel visibility updated by Event Channel Managarr" } ) - logger.info("Frontend refresh triggered via WebSocket") + logger.info("[Stream-Mapparr] Frontend refresh triggered via WebSocket") return True except Exception as e: - logger.warning(f"Could not trigger frontend refresh: {e}") + logger.warning(f"[Stream-Mapparr] Could not trigger frontend refresh: {e}") return False def _clean_channel_name(self, name, ignore_tags=None): - """Remove brackets and their contents from channel name for matching, and remove ignore tags.""" + """ + 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. + """ + if self.fuzzy_matcher: + # Use fuzzy matcher's normalization + return self.fuzzy_matcher.normalize_name(name, ignore_tags, remove_quality_tags=True) + + # Fallback to basic cleaning if ignore_tags is None: ignore_tags = [] @@ -391,54 +425,41 @@ class Plugin: return sorted(streams, key=get_quality_index) - def _load_channel_list(self, logger): - """Load channel names from channels.txt file for precise matching.""" - channels_file = os.path.join(os.path.dirname(__file__), 'channels.txt') - channel_names = [] + def _load_channels_data(self, logger): + """Load channel data from *_channels.json files.""" + plugin_dir = os.path.dirname(__file__) + channels_data = [] try: - if os.path.exists(channels_file): - with open(channels_file, 'r', encoding='utf-8') as f: - for line in f: - line = line.strip() - if line: # Skip empty lines - channel_names.append(line) - logger.info(f"Loaded {len(channel_names)} channel names from channels.txt") + # Find all *_channels.json files + from glob import glob + pattern = os.path.join(plugin_dir, '*_channels.json') + channel_files = glob(pattern) + + if channel_files: + for channel_file in channel_files: + try: + with open(channel_file, 'r', encoding='utf-8') as f: + file_data = json.load(f) + channels_data.extend(file_data) + logger.info(f"[Stream-Mapparr] Loaded {len(file_data)} channels from {os.path.basename(channel_file)}") + except Exception as e: + logger.error(f"[Stream-Mapparr] Error loading {channel_file}: {e}") + + logger.info(f"[Stream-Mapparr] Loaded total of {len(channels_data)} channels from {len(channel_files)} file(s)") else: - logger.warning(f"channels.txt not found at {channels_file}") + logger.warning(f"[Stream-Mapparr] No *_channels.json files found in {plugin_dir}") except Exception as e: - logger.error(f"Error loading channels.txt: {e}") + logger.error(f"[Stream-Mapparr] Error loading channel data files: {e}") - return channel_names + return channels_data - def _is_ota_channel(self, channel_name): - """Check if a channel name matches OTA pattern.""" - # OTA pattern: "NETWORK - STATE City (CALLSIGN)" with optional quality tags - # Examples: "ABC - TN Chattanooga (WTVC)", "NBC - NY New York (WNBC) [HD]" - ota_pattern = r'^[A-Z]+\s*-\s*[A-Z]{2}\s+.+\([A-Z]+.*?\)' - return bool(re.search(ota_pattern, channel_name)) + def _is_ota_channel(self, channel_info): + """Check if a channel has callsign (indicating it's an OTA broadcast channel).""" + if not channel_info: + return False + return 'callsign' in channel_info and channel_info['callsign'] - def _extract_ota_info(self, channel_name): - """Extract network, state, city, and callsign from OTA channel name.""" - # Pattern: "NETWORK - STATE City (CALLSIGN)" with optional quality tags after - # Match: CBS - IN South Bend (WSBT) [HD] - match = re.match(r'^([A-Z]+)\s*-\s*([A-Z]{2})\s+([^(]+)\(([A-Z][A-Z0-9-]+)\)', channel_name) - if match: - network = match.group(1).strip().upper() - state = match.group(2).strip().upper() - city = match.group(3).strip().upper() - callsign = match.group(4).strip().upper() - - # Clean callsign (remove anything after dash) - callsign = self._parse_callsign(callsign) - - return { - 'network': network, - 'state': state, - 'city': city, - 'callsign': callsign - } - return None def _parse_callsign(self, callsign): """Extract clean callsign, removing suffixes after dash.""" @@ -451,81 +472,103 @@ class Plugin: return callsign.upper() - def _match_streams_to_channel(self, channel, all_streams, logger, ignore_tags=None, known_channels=None, networks_data=None): - """Find matching streams for a channel based on name similarity.""" + def _match_streams_to_channel(self, channel, all_streams, logger, ignore_tags=None, channels_data=None): + """Find matching streams for a channel using fuzzy matching when available.""" if ignore_tags is None: ignore_tags = [] - if known_channels is None: - known_channels = [] - if networks_data is None: - networks_data = [] + 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) + cleaned_channel_name = self._clean_channel_name(channel_name, ignore_tags) - #logger.info(f" Cleaned channel name for matching: {cleaned_channel_name}") + if "24/7" in channel_name.lower(): - logger.info(f" Cleaned channel name for matching: {cleaned_channel_name}") + logger.info(f"[Stream-Mapparr] Cleaned channel name for matching: {cleaned_channel_name}") - # FIRST: Check if this is an OTA channel and try callsign matching - if self._is_ota_channel(channel_name): - logger.info(f"Matching OTA channel: {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}") - # Extract callsign from channel name BEFORE cleaning - ota_info = self._extract_ota_info(channel_name) - if ota_info: - callsign = ota_info['callsign'] - logger.info(f" Extracted callsign: {callsign}") + # Search for streams containing the callsign + matching_streams = [] + callsign_pattern = r'\b' + re.escape(callsign) + r'\b' + + for stream in all_streams: + stream_name = stream['name'] - # Search for streams containing the callsign + # Check if stream contains the callsign + 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) for s in sorted_streams] + match_reason = "Callsign match" + + return sorted_streams, cleaned_channel_name, cleaned_stream_names, match_reason + 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.info(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 + matched_stream_name, score, match_type = self.fuzzy_matcher.fuzzy_match( + channel_name, + stream_names, + ignore_tags + ) + + if matched_stream_name: + # Find all streams that match this name (different qualities) matching_streams = [] - callsign_pattern = r'\b' + re.escape(callsign) + r'\b' + cleaned_matched = self._clean_channel_name(matched_stream_name, ignore_tags) for stream in all_streams: - stream_name = stream['name'] + cleaned_stream = self._clean_channel_name(stream['name'], ignore_tags) - # Check if stream contains the callsign - if re.search(callsign_pattern, stream_name, re.IGNORECASE): + if cleaned_stream.lower() == cleaned_matched.lower(): matching_streams.append(stream) - logger.info(f" Found callsign match: {stream_name}") if matching_streams: sorted_streams = self._sort_streams_by_quality(matching_streams) - logger.info(f" Sorted {len(sorted_streams)} streams by quality (callsign matching)") + logger.info(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) for s in sorted_streams] - match_reason = "Callsign match" + match_reason = f"Fuzzy match ({match_type}, score: {score})" return sorted_streams, cleaned_channel_name, cleaned_stream_names, match_reason - else: - logger.info(f" No streams found with callsign {callsign}") - # Try networks.json fallback - logger.info(f" Trying networks.json OTA matching as fallback") - matched_streams = self._match_ota_streams(channel_name, all_streams, networks_data, logger) - - if matched_streams: - sorted_streams = self._sort_streams_by_quality(matched_streams) - logger.info(f" Sorted {len(sorted_streams)} OTA streams by quality") - - cleaned_stream_names = [self._clean_channel_name(s['name'], ignore_tags) for s in sorted_streams] - match_reason = "OTA networks.json match" - - return sorted_streams, cleaned_channel_name, cleaned_stream_names, match_reason - else: - logger.info(f" Could not extract OTA info from: {channel_name}") + + # No fuzzy match found + logger.info(f"[Stream-Mapparr] No fuzzy match found for channel: {channel_name}") + return [], cleaned_channel_name, [], "No fuzzy match" - # SECOND: Regular channel matching logic (only if not OTA or OTA matching failed) + # Fallback to basic substring matching if fuzzy matcher unavailable + logger.info(f"[Stream-Mapparr] Using basic substring matching for channel: {channel_name}") matching_streams = [] - match_reason = "No match" - # Debug: show first few stream names to verify we have streams if not all_streams: - logger.warning("No streams available for matching!") + logger.warning("[Stream-Mapparr] No streams available for matching!") return [], cleaned_channel_name, [], "No streams available" - # Check for exact match in known channels list - if cleaned_channel_name in known_channels: - logger.info(f"Found exact match for '{cleaned_channel_name}' in known channels list") + # 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: @@ -536,14 +579,14 @@ class Plugin: if matching_streams: sorted_streams = self._sort_streams_by_quality(matching_streams) - logger.info(f" Found {len(sorted_streams)} streams matching exact known channel name") + 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) for s in sorted_streams] - match_reason = "Exact match (known channels)" + match_reason = "Exact match (channels.json)" return sorted_streams, cleaned_channel_name, cleaned_stream_names, match_reason - # Fallback to fuzzy matching + # Fallback to basic substring matching for stream in all_streams: cleaned_stream_name = self._clean_channel_name(stream['name'], ignore_tags) @@ -553,81 +596,31 @@ class Plugin: if matching_streams: sorted_streams = self._sort_streams_by_quality(matching_streams) - logger.info(f" Found {len(sorted_streams)} streams matching via fuzzy match") + 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) for s in sorted_streams] - match_reason = "Fuzzy match" + match_reason = "Basic substring match" return sorted_streams, cleaned_channel_name, cleaned_stream_names, match_reason # No match found return [], cleaned_channel_name, [], "No match" - def _load_networks_data(self, logger): - """Load networks.json file for OTA channel matching.""" - networks_file = os.path.join(os.path.dirname(__file__), 'networks.json') - networks_data = [] + 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: - if os.path.exists(networks_file): - with open(networks_file, 'r', encoding='utf-8') as f: - networks_data = json.load(f) - logger.info(f"Loaded {len(networks_data)} networks from networks.json") - else: - logger.warning(f"networks.json not found at {networks_file}") - except Exception as e: - logger.error(f"Error loading networks.json: {e}") + # 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 networks_data + return None - def _match_ota_streams(self, channel_name, all_streams, networks_data, logger): - """Match OTA channel using networks.json data.""" - if not networks_data: - return [] - - ota_info = self._extract_ota_info(channel_name) - if not ota_info: - return [] - - network = ota_info['network'] - state = ota_info['state'] - city = ota_info['city'] - - logger.info(f" Searching networks.json for: {network} {state} {city}") - - # Find matching network entry - matching_entry = None - for entry in networks_data: - if (entry.get('network', '').upper() == network and - entry.get('state', '').upper() == state and - entry.get('city', '').upper() == city): - matching_entry = entry - break - - if not matching_entry: - logger.info(f" No networks.json entry found for {network} {state} {city}") - return [] - - # Get stream names from the entry - stream_names = matching_entry.get('stream_names', []) - if not stream_names: - logger.info(f" No stream names in networks.json entry") - return [] - - logger.info(f" Found {len(stream_names)} stream names in networks.json: {stream_names}") - - # Find streams matching these names - matching_streams = [] - for stream in all_streams: - stream_name = stream['name'] - for target_name in stream_names: - # Case-insensitive substring match - if target_name.lower() in stream_name.lower(): - matching_streams.append(stream) - logger.info(f" Matched stream: {stream_name}") - break - - return matching_streams def run(self, action, settings, context=None): """Execute plugin action.""" @@ -639,6 +632,15 @@ class Plugin: 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 = { "load_process_channels": self.load_process_channels_action, "preview_changes": self.preview_changes_action, @@ -653,7 +655,7 @@ class Plugin: return action_map[action](settings, logger) except Exception as e: - LOGGER.error(f"Error in plugin run: {str(e)}") + LOGGER.error(f"[Stream-Mapparr] Error in plugin run: {str(e)}") import traceback LOGGER.error(traceback.format_exc()) return {"status": "error", "message": str(e)} @@ -669,7 +671,8 @@ class Plugin: profile_name = settings.get("profile_name", "").strip() selected_groups_str = settings.get("selected_groups", "").strip() ignore_tags_str = settings.get("ignore_tags", "").strip() - visible_channel_limit = int(settings.get("visible_channel_limit", 1)) + 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 if not profile_name: return {"status": "error", "message": "Profile Name must be configured in the plugin settings."} @@ -681,10 +684,10 @@ class Plugin: ignore_tags = [] if ignore_tags_str: ignore_tags = [tag.strip() for tag in ignore_tags_str.split(',') if tag.strip()] - logger.info(f"Ignore tags configured: {ignore_tags}") + logger.info(f"[Stream-Mapparr] Ignore tags configured: {ignore_tags}") # Get all profiles to find the specified one - logger.info("Fetching channel profiles...") + logger.info("[Stream-Mapparr] Fetching channel profiles...") profiles = self._get_api_data("/api/channels/profiles/", token, settings, logger) target_profile = None @@ -701,10 +704,10 @@ class Plugin: } profile_id = target_profile['id'] - logger.info(f"Found profile: {profile_name} (ID: {profile_id})") + logger.info(f"[Stream-Mapparr] Found profile: {profile_name} (ID: {profile_id})") # Get all groups (handle pagination) - logger.info("Fetching channel groups...") + logger.info("[Stream-Mapparr] Fetching channel groups...") all_groups = [] page = 1 while True: @@ -723,12 +726,12 @@ class Plugin: 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"Loaded {len(group_name_to_id)} channel groups total") + 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"Fetching all channels...") + logger.info(f"[Stream-Mapparr] Fetching all channels...") all_channels = self._get_api_data("/api/channels/channels/", token, settings, logger) - logger.info(f"Retrieved {len(all_channels)} total channels") + logger.info(f"[Stream-Mapparr] Retrieved {len(all_channels)} total channels") # Filter channels by profile membership # Use Django ORM to check profile membership @@ -745,11 +748,11 @@ class Plugin: if is_in_profile: channels_in_profile.append(channel) - logger.info(f"Found {len(channels_in_profile)} channels in profile '{profile_name}'") + logger.info(f"[Stream-Mapparr] Found {len(channels_in_profile)} channels in profile '{profile_name}'") # Filter by groups if specified if selected_groups_str: - logger.info(f"Filtering by groups: {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] @@ -767,7 +770,7 @@ class Plugin: filtered_channels.append(ch) channels_in_profile = filtered_channels - logger.info(f"Filtered to {len(channels_in_profile)} channels in groups: {', '.join(selected_groups)}") + 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 = [] @@ -780,10 +783,10 @@ class Plugin: } channels_to_process = channels_in_profile - logger.info(f"Processing {len(channels_to_process)} channels (including those with existing streams)") + 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) - logger.info("Fetching all streams from all groups (unlimited)...") + logger.info("[Stream-Mapparr] Fetching all streams from all groups (unlimited)...") all_streams_data = [] page = 1 @@ -795,35 +798,35 @@ class Plugin: if isinstance(streams_response, dict) and 'results' in streams_response: results = streams_response['results'] all_streams_data.extend(results) - logger.info(f"Fetched page {page}: {len(results)} streams (total so far: {len(all_streams_data)})") + logger.info(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("Reached last page of streams") + logger.info("[Stream-Mapparr] Reached last page of streams") break page += 1 elif isinstance(streams_response, list): # List response - could still be paginated all_streams_data.extend(streams_response) - logger.info(f"Fetched page {page}: {len(streams_response)} streams (total so far: {len(all_streams_data)})") + logger.info(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("Reached last page of streams") + logger.info("[Stream-Mapparr] Reached last page of streams") break else: - logger.warning("Unexpected streams response format") + logger.warning("[Stream-Mapparr] Unexpected streams response format") break - logger.info(f"Retrieved {len(all_streams_data)} total streams from all groups") + 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"Sample stream names: {sample_stream_names}") + 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 @@ -844,7 +847,7 @@ class Plugin: with open(self.processed_data_file, 'w') as f: json.dump(processed_data, f, indent=2) - logger.info("Channel and stream data loaded and saved successfully") + logger.info("[Stream-Mapparr] Channel and stream data loaded and saved successfully") return { "status": "success", @@ -852,7 +855,7 @@ class Plugin: } except Exception as e: - logger.error(f"Error loading channels: {str(e)}") + logger.error(f"[Stream-Mapparr] Error loading channels: {str(e)}") return {"status": "error", "message": f"Error loading channels: {str(e)}"} def _sort_channels_by_priority(self, channels): @@ -882,9 +885,8 @@ class Plugin: } try: - # Load known channel names for precise matching - known_channels = self._load_channel_list(logger) - networks_data = self._load_networks_data(logger) + # Load channel data from channels.json + channels_data = self._load_channels_data(logger) # Load processed data with open(self.processed_data_file, 'r') as f: @@ -897,22 +899,21 @@ class Plugin: if not channels: return {"status": "error", "message": "No channels found in processed data."} - logger.info(f"Previewing changes for {len(channels)} channels with {len(streams)} available streams") - logger.info(f"Visible channel limit: {visible_channel_limit}") + 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', []) for channel in channels: - # Use ORIGINAL name for OTA channels, cleaned name for others - if self._is_ota_channel(channel['name']): + # 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 - 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) + 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) @@ -926,15 +927,21 @@ class Plugin: total_channels_without_matches = 0 total_channels_to_update = 0 + total_groups = len(channel_groups) + current_group = 0 + for group_key, group_channels in channel_groups.items(): - logger.info(f"Processing channel group: {group_key} ({len(group_channels)} channels)") + 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 sorted_channels = self._sort_channels_by_priority(group_channels) # Match streams for this channel group (using first channel as representative) matched_streams, cleaned_channel_name, cleaned_stream_names, match_reason = self._match_streams_to_channel( - sorted_channels[0], streams, logger, ignore_tags, known_channels, networks_data + sorted_channels[0], streams, logger, ignore_tags, channels_data ) # Determine which channels will be updated based on limit @@ -977,6 +984,8 @@ class Plugin: } all_matches.append(match_info) + logger.info(f"[Stream-Mapparr] [100%] Preview processing complete") + # Export to CSV timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"stream_mapparr_preview_{timestamp}.csv" @@ -1007,10 +1016,10 @@ class Plugin: 'channel_number': match.get('channel_number', 'N/A'), 'matched_streams': match['matched_streams'], 'match_reason': match['match_reason'], - 'stream_names': '; '.join(match['stream_names'][:5]) # Show first 5 + 'stream_names': '; '.join(match['stream_names']) # Show all streams }) - logger.info(f"Preview exported to {filepath}") + 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']]) @@ -1044,7 +1053,7 @@ class Plugin: } except Exception as e: - logger.error(f"Error previewing changes: {str(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): @@ -1061,9 +1070,8 @@ class Plugin: if error: return {"status": "error", "message": error} - # Load known channel names and networks data - known_channels = self._load_channel_list(logger) - networks_data = self._load_networks_data(logger) + # Load channel data from channels.json + channels_data = self._load_channels_data(logger) # Load processed data with open(self.processed_data_file, 'r') as f: @@ -1078,20 +1086,19 @@ class Plugin: if not channels: return {"status": "error", "message": "No channels found in processed data."} - logger.info(f"Adding streams to {len(channels)} channels") - logger.info(f"Visible channel limit: {visible_channel_limit}") + logger.info(f"[Stream-Mapparr] Adding streams to {len(channels)} channels") + logger.info(f"[Stream-Mapparr] Visible channel limit: {visible_channel_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']): + # 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 - 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) + 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) @@ -1104,17 +1111,24 @@ class Plugin: channels_skipped = 0 channels_with_matches = 0 channels_without_matches = 0 + total_streams_added = 0 update_details = [] + total_groups = len(channel_groups) + current_group = 0 + for group_key, group_channels in channel_groups.items(): - logger.info(f"Processing channel group: {group_key} ({len(group_channels)} channels)") + 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 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 = self._match_streams_to_channel( - sorted_channels[0], streams, logger, ignore_tags, known_channels, networks_data + sorted_channels[0], streams, logger, ignore_tags, channels_data ) # Determine which channels to update based on limit @@ -1128,56 +1142,53 @@ class Plugin: try: if matched_streams: - # Get the best stream (first in sorted list) - best_stream = matched_streams[0] - stream_id = best_stream['id'] - - # Check if channel already has this stream assigned - existing_stream = ChannelStream.objects.filter( - channel_id=channel_id - ).first() - - if existing_stream and existing_stream.stream_id == stream_id: - logger.info(f" Channel '{channel_name}' already has stream '{best_stream['name']}' - skipping") - channels_skipped += 1 - continue - # Remove existing stream assignments ChannelStream.objects.filter(channel_id=channel_id).delete() - # Add new stream assignment - ChannelStream.objects.create( - channel_id=channel_id, - stream_id=stream_id - ) + # Add ALL matched streams (already sorted by quality) + streams_added_count = 0 + for stream in matched_streams: + stream_id = stream['id'] + + ChannelStream.objects.create( + channel_id=channel_id, + stream_id=stream_id + ) + streams_added_count += 1 channels_updated += 1 channels_with_matches += 1 + total_streams_added += streams_added_count + + # Create comma-separated list of stream names + stream_names_list = '; '.join([s['name'] for s in matched_streams]) update_details.append({ 'channel_name': channel_name, - 'stream_name': best_stream['name'], + 'stream_names': stream_names_list, 'matched_streams': len(matched_streams) }) - logger.info(f" Added stream '{best_stream['name']}' to channel '{channel_name}'") + logger.info(f"[Stream-Mapparr] Added {streams_added_count} stream(s) to channel '{channel_name}'") else: # No matches found - remove existing streams 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" Removed {existing_count} stream(s) from channel '{channel_name}' (no matches found)") + logger.info(f"[Stream-Mapparr] Removed {existing_count} stream(s) from channel '{channel_name}' (no matches found)") channels_without_matches += 1 except Exception as e: - logger.error(f" Failed to update channel '{channel_name}': {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" Skipped channel '{channel['name']}' (exceeds limit of {visible_channel_limit})") + 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") + # Trigger frontend refresh self._trigger_frontend_refresh(settings, logger) @@ -1189,19 +1200,20 @@ class Plugin: os.makedirs("/data/exports", exist_ok=True) with open(filepath, 'w', newline='', encoding='utf-8') as csvfile: - fieldnames = ['channel_name', 'stream_name', 'matched_streams'] + fieldnames = ['channel_name', 'stream_names', 'matched_streams'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for detail in update_details: writer.writerow(detail) - logger.info(f"Update report exported to {filepath}") + logger.info(f"[Stream-Mapparr] Update report exported to {filepath}") # Create summary message message_parts = [ f"Stream assignment completed:", 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}", @@ -1213,7 +1225,7 @@ class Plugin: # Show first 10 updates for detail in update_details[:10]: - message_parts.append(f"• {detail['channel_name']}: {detail['stream_name']}") + 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") @@ -1227,7 +1239,7 @@ class Plugin: } except Exception as e: - logger.error(f"Error adding streams to channels: {str(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)}"} def manage_channel_visibility_action(self, settings, logger): @@ -1256,11 +1268,11 @@ class Plugin: if not channels: return {"status": "error", "message": "No channels found in processed data."} - logger.info(f"Managing visibility for {len(channels)} channels") - logger.info(f"Visible channel limit: {visible_channel_limit}") + 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("Step 1: Counting streams for each channel...") + logger.info("[Stream-Mapparr] Step 1: Counting streams for each channel...") channel_stream_counts = {} for channel in channels: @@ -1270,20 +1282,20 @@ class Plugin: 'name': channel['name'], 'stream_count': stream_count } - logger.info(f" Channel '{channel['name']}': {stream_count} stream(s)") + logger.info(f"[Stream-Mapparr] Channel '{channel['name']}': {stream_count} stream(s)") # Step 2: Find channels that are attached to other channels - logger.info("Step 2: Identifying attached 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" Channel '{channel['name']}' is attached to another channel") + logger.info(f"[Stream-Mapparr] Channel '{channel['name']}' is attached to another channel") # Step 3: Disable all channels first - logger.info(f"Step 3: Disabling all {len(channels)} channels...") + logger.info(f"[Stream-Mapparr] Step 3: Disabling all {len(channels)} channels...") try: bulk_disable_payload = [ {"channel_id": channel['id'], "enabled": False} @@ -1297,11 +1309,11 @@ class Plugin: settings, logger ) - logger.info(f"Successfully disabled all {len(channels)} channels") + logger.info(f"[Stream-Mapparr] Successfully disabled all {len(channels)} channels") except Exception as e: - logger.error(f"Failed to bulk disable channels: {e}") - logger.info("Attempting to disable channels individually...") + 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: @@ -1314,10 +1326,10 @@ class Plugin: logger ) except Exception as e2: - logger.error(f"Failed to disable channel {channel['id']}: {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("Step 3.5: Grouping channels and applying visibility limit...") + logger.info("[Stream-Mapparr] Step 3.5: Grouping channels and applying visibility limit...") # Group channels by their cleaned name channel_groups = {} @@ -1341,7 +1353,7 @@ class Plugin: channels_to_enable = [] for group_key, group_channels in channel_groups.items(): - logger.info(f"Processing channel group: {group_key} ({len(group_channels)} channels)") + 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) @@ -1387,12 +1399,12 @@ class Plugin: if should_enable: channels_to_enable.append(channel_id) - logger.info(f" Will enable: {channel_name} ({reason})") + logger.info(f"[Stream-Mapparr] Will enable: {channel_name} ({reason})") else: - logger.info(f" Will keep disabled: {channel_name} ({reason})") + logger.info(f"[Stream-Mapparr] Will keep disabled: {channel_name} ({reason})") # Step 4: Enable selected channels - logger.info(f"Step 4: Enabling {len(channels_to_enable)} channels...") + logger.info(f"[Stream-Mapparr] Step 4: Enabling {len(channels_to_enable)} channels...") channels_enabled = 0 if channels_to_enable: @@ -1410,11 +1422,11 @@ class Plugin: logger ) channels_enabled = len(channels_to_enable) - logger.info(f"Successfully enabled {channels_enabled} channels") + logger.info(f"[Stream-Mapparr] Successfully enabled {channels_enabled} channels") except Exception as e: - logger.error(f"Failed to bulk enable channels: {e}") - logger.info("Attempting to enable channels individually...") + 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: @@ -1428,7 +1440,7 @@ class Plugin: ) channels_enabled += 1 except Exception as e2: - logger.error(f"Failed to enable channel {channel_id}: {e2}") + logger.error(f"[Stream-Mapparr] Failed to enable channel {channel_id}: {e2}") # Trigger frontend refresh self._trigger_frontend_refresh(settings, logger) @@ -1460,7 +1472,7 @@ class Plugin: 'enabled': 'Yes' if channel_id in channels_to_enable else 'No' }) - logger.info(f"Visibility report exported to {filepath}") + 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) @@ -1507,7 +1519,7 @@ class Plugin: } except Exception as e: - logger.error(f"Error managing channel visibility: {str(e)}") + logger.error(f"[Stream-Mapparr] Error managing channel visibility: {str(e)}") return {"status": "error", "message": f"Error managing channel visibility: {str(e)}"} def clear_csv_exports_action(self, settings, logger): @@ -1532,9 +1544,9 @@ class Plugin: os.remove(filepath) deleted_count += 1 deleted_files.append(filename) - logger.info(f"Deleted CSV file: {filename}") + logger.info(f"[Stream-Mapparr] Deleted CSV file: {filename}") except Exception as e: - logger.warning(f"Failed to delete {filename}: {e}") + logger.warning(f"[Stream-Mapparr] Failed to delete {filename}: {e}") if deleted_count == 0: return { @@ -1560,7 +1572,7 @@ class Plugin: } except Exception as e: - logger.error(f"Error clearing CSV exports: {e}") + logger.error(f"[Stream-Mapparr] Error clearing CSV exports: {e}") return {"status": "error", "message": f"Error clearing CSV exports: {e}"}