Get Chicago's Best Sports Content In Your Inbox!

Become a smarter Chicago sports fan with the latest game recaps, analysis and exclusive content from CHGO’s writers and podcasters!

Just drop your email below!

Please enable JavaScript in your browser to complete this form.

Upgrade Your Fandom

Join the Ultimate Chicago White Sox Community!

Chicago White Sox Lose Lucas Giolito's Potential Final Start | CHGO White Sox Postgame

Sean Anderson Avatar
July 19, 2023

The Chicago White Sox fell behind early and could never get back in the game Tuesday night versus the New York Mets. Lucas Giolito struggled from the outset, lasting just 3.2 innings while allowing 8 runs to cross the plate. Yasmani Grandal hit his 7th homer in the loss, while Andrew Benintendi, Tim Anderson, and Jake Burger also batted in runs with multiple hits each. Tim Anderson had a chance to give the Sox the lead in the 9th inning, but couldn’t deliver with runners on 2nd and 3rd with 2 outs. Join Herb Lawrence, Vinnie Duber and Sean Anderson as they recap the series-opening loss on the CHGO White Sox LIVE Postgame Podcast.

An ALLCITY Network Production

WATCH YOUR FAVORITE TEAMS HERE: www.fubotv.com/chgo

PARTY WITH US: https://bit.ly/3SRS03z

SUBSCRIBE:

/ chgosports

ALL THINGS CHGO: https://linktr.ee/chgosports

WEBSITE:
http://allCHGO.com/

BUY MERCH:
http://CHGOLocker.com

FOLLOW ON SOCIAL:
Twitter: @CHGO_Sports
Instagram: @CHGO_Sports

GET OUR FREE NEWSLETTER:
https://www.allchgo.com/newsletter

Download the Gametime app, create an account, and use code CHGO for $20 off your first purchase.

Check out FOCO for merch and collectibles here https://foco.vegb.net/CHGO and use promo code “CHGO” for 10% off your order on all non Pre Order items.

Athletic Greens is going to give you a FREE 1 year supply of immune-supporting Vitamin D AND 5 FREE travel packs with your first purchase. Just visit https://athleticgreens.com/CHGOSox

Watch the YouTube Replay

'); $('#youtube-video-player').toggleClass('live-video', isLive).toggleClass('playlist-video', !isLive); } function fetchLatestPlaylistVideo() { const playlistUrl = 'https://www.youtube.com/embed/?enablejsapi=1&listType=playlist&list=UU' + channelId.substring(2) + '&autoplay=1&mute=1'; displayVideo(playlistUrl, false); } function updateVideoInfo(videoId, etag) { console.log('Updating video info: ', videoId, etag); $.post(ajax_object.ajax_url, { action: 'update_youtube_video_info', video_id: videoId, etag: etag }).done(function(response) { console.log('Update response: ', response); }).fail(function(error) { console.error('Update failed: ', error); }); } function updateVideoListETag(etag) { console.log('Updating video list ETag: ', etag); $.post(ajax_object.ajax_url, { action: 'update_youtube_video_list_etag', etag: etag }).done(function(response) { console.log('Update response: ', response); }).fail(function(error) { console.error('Update failed: ', error); }); } function checkVideoLiveStatus(videoId, etag) { var settings = { url: videoListApiUrl, type: 'GET', data: { part: 'snippet,liveStreamingDetails', id: videoId, key: apiKey }, beforeSend: function(xhr) { if (cachedVideoListETag) { xhr.setRequestHeader('If-None-Match', cachedVideoListETag); } }, success: function(data, textStatus, xhr) { if (xhr.status !== 200) return; var etag = xhr.getResponseHeader('ETag'); console.log("ETag from Header in Success (Video List): " + etag); // Debugging: Log the ETag if (data.items && data.items.length > 0) { const video = data.items[0]; const liveStreamingDetails = video.liveStreamingDetails; if (liveStreamingDetails && liveStreamingDetails.actualEndTime) { // Video has ended fetchLatestPlaylistVideo(); } else { displayVideo('https://www.youtube.com/embed/' + videoId + '?autoplay=1&mute=1', true); if (etag && etag !== cachedVideoListETag) { updateVideoListETag(etag); } } } else { fetchLatestPlaylistVideo(); } }, error: function(xhr) { console.error("Failed to check video live status."); fetchLatestPlaylistVideo(); }, complete: function(xhr) { var etag = xhr.getResponseHeader('ETag'); if (!etag && xhr.responseJSON && xhr.responseJSON.etag) { etag = xhr.responseJSON.etag; // Fallback to check if ETag is in the response JSON } console.log("ETag from Header in Complete (Video List): " + etag); // Debugging: Log the ETag if (xhr.status === 304) { console.log("Received 304 Not Modified (Video List)."); if (cachedVideoId) { console.log('Using cached live video ID.'); displayVideo('https://www.youtube.com/embed/' + cachedVideoId + '?autoplay=1&mute=1', true); } else { console.log('No live video in cache. Displaying playlist.'); fetchLatestPlaylistVideo(); } } } }; $.ajax(settings); } function checkLiveStatusAndFetchVideo() { console.log("Cached ETag: " + cachedETag); // Debugging: Log the cached ETag var settings = { url: activitiesApiUrl, type: 'GET', data: { part: 'snippet,contentDetails', channelId: channelId, key: apiKey, maxResults: 5 }, beforeSend: function(xhr) { if (cachedETag) { xhr.setRequestHeader('If-None-Match', cachedETag); } }, success: function(data, textStatus, xhr) { if (xhr.status !== 200) return; console.log(data); // Debugging: Log the response data // Log all response headers to see if ETag is included differently xhr.getAllResponseHeaders().split('\r\n').forEach(function(header) { console.log(header); }); var etag = xhr.getResponseHeader('ETag'); if (!etag && data.etag) { etag = data.etag; // Fallback to check if ETag is in the response body } console.log("ETag from Header in Success: " + etag); // Debugging: Log the ETag if (data.items && data.items.length > 0) { const liveVideo = data.items.find(item => item.snippet.thumbnails.default.url.includes('default_live.jpg')); if (liveVideo) { const liveVideoId = liveVideo.contentDetails.upload.videoId; if (etag && etag !== cachedETag) { updateVideoInfo(liveVideoId, etag); } // Make a second API call to verify if the video is actually live checkVideoLiveStatus(liveVideoId, etag); } else { console.log("No live video available, displaying playlist."); if (etag && etag !== cachedETag) { updateVideoInfo('', etag); } fetchLatestPlaylistVideo(); } } }, error: function(xhr) { console.error("Failed to check live status."); if (cachedVideoId) { displayVideo('https://www.youtube.com/embed/' + cachedVideoId + '?autoplay=1&mute=1', true); } else { fetchLatestPlaylistVideo(); } }, complete: function(xhr) { var etag = xhr.getResponseHeader('ETag'); if (!etag && xhr.responseJSON && xhr.responseJSON.etag) { etag = xhr.responseJSON.etag; // Fallback to check if ETag is in the response JSON } console.log("ETag from Header in Complete: " + etag); // Debugging: Log the ETag if (xhr.status === 304) { console.log("Received 304 Not Modified."); if (cachedVideoId) { console.log('Using cached live video ID.'); displayVideo('https://www.youtube.com/embed/' + cachedVideoId + '?autoplay=1&mute=1', true); } else { console.log('No live video in cache. Displaying playlist.'); fetchLatestPlaylistVideo(); } } } }; $.ajax(settings); } checkLiveStatusAndFetchVideo(); // Initial call to setup video based on live status });