#!/usr/local/bin/python
import json
from datetime import datetime, timedelta
# python -m ensurepip
# python -m pip install requests
import requests
current_time = datetime.now()
start_day_query = current_time.strftime('%Y-%m-%d')
end_day_query = (current_time + timedelta(days=7)).strftime('%Y-%m-%d')
# Define the URL
url = "
https://epg-api.discovery.bellmedia.ca/graphql"
# Define the payload for the POST request
payload = "{\"query\":\"query getEvents {getEvents(channelNames:[\\\"TSN1\\\",\\\"TSN2\\\",\\\"TSN3\\\",\\\"TSN4\\\",\\\"TSN5\\\",\\\"TSN+\\\"] channelGroup:\\\"TSN+\\\", startTimeUtc:\\\"" + start_day_query + "T00:00:00-07:00\\\", endTime: \\\"" + end_day_query + "T23:59:59-07:00\\\") {channelName title startTimeUtc startTimeLocal endTime duration shortDescription axisStream sportName}}\",\"variables\":null}"
# Define the headers for the POST request
headers = {
"Content-Type": "application/json",
"x-api-key": "da2-tfunm6yfqnfuvla4jynnrbvlye"
}
# Make the POST request
response = requests.post(url, data=payload, headers=headers)
# Save the response to a file
with open("tsn.txt", "w") as file:
file.write(response.text)
# print("The response has been saved to tsn.txt")
# Read the JSON data from the file named tsn.txt
with open('tsn.txt', 'r') as file:
json_data = file.read()
data = json.loads(json_data)
events = data['data']['getEvents']
# Filter events where the channel starts with TSN+
# filtered_events = [event for event in events if event['channelName'].startswith('TSN+')]
filtered_events = [event for event in events if event['channelName'].startswith('TSN')]
# Sort the filtered events by time, then by channel
filtered_events.sort(key=lambda x: (x['startTimeLocal'], x['channelName']))
# Print column labels with specified widths
print(f"{'Time':<25} {'Title':<60} {'Channel':<10}")
previous_day = None
# Print each event's details with specified widths and truncate title at 60 characters
for event in filtered_events:
start_time = datetime.fromisoformat(event['startTimeLocal'].replace('Z', '+00:00'))
adjusted_time = start_time - timedelta(hours=8)
formatted_time = adjusted_time.strftime('%a %b %dth %I:%M%p')
truncated_title = (event['title'][:57] + '...') if len(event['title']) > 60 else event['title']
channel_name = event['channelName'] # .split('+')[0] + '+'
# Check if the current event is on the next day compared to the previous event
if previous_day and adjusted_time.date() > previous_day:
print() # Print a blank line
print(f"{formatted_time:<25} {truncated_title:<60} {channel_name:<10}")
# Update the previous_day to the current event's day
previous_day = adjusted_time.date()