Screenshot via YouTube
Eminem in 8 Mile.
You don’t have to lose yourself to see all the Detroit spots that were filmed in Eminem’s 8 Mile. You can just go on a guided tour with City Tour Detroit.
This year marks the 20th anniversary of the film, loosely based on the rapper’s life, which has inspired a new offering from the Detroit sightseeing company called “8 Mile: The Movie Sites Tour.”
The four-hour bus tour takes participants to several sites frequented by the movie’s main character B-Rabbit (played by Eminem) like the iconic cow head at Ira Wilson and Sons Dairy, the Michigan Theatre parking structure, and locations used for the 8 Mile Mobile Court, Detroit New Stamping, and the Shelter. It also features 8 Mile trivia.
“I’ve wanted to offer this tour for a long time,” said City Tour Detroit owner Karin Risko, who includes 8 Mile as one of her favorite movies. “Visitors on our other Detroit tours often ask about things related to the movie such as Eight Mile Road, various filming locations, and if I personally know Eminem (I don’t).”
Though not featured in the film, the location of the former Hip Hop Shop where Eminem got his start is also a tour stop. The once-popular clothing store and music venue hosted legendary open mic nights back in the day that served as inspiration for the movie’s rap battles. The space is now a recording studio called Bank Rose Productions and a hip-hop media talent agency called CrowdFreak, which are collaborating with City Tour Detroit for the experience.
The tour wraps with a stop at Eminem’s cheeky restaurant Mom’s Spaghetti (named as a nod to lyrics from his song “Lose Yourself”).
The experience costs $65 per person and includes a S’ghetti Sandwich from Mom’s Spaghetti — sans any vomit on your sweater.
City Tour Detroit offers several other experiences including an Underground Railroad tour and a downtown Detroit walking tour. For now, “8 Mile: The Movie Sites Tour” is scheduled for Nov. 20, Nov. 27, and Dec. 17, with additional dates expected for 2023.
More information and tickets are at citytourdetroit.com.
Slideshow
See ‘8 Mile’ people and places 20 years later [PHOTOS]
Click to View 21 slides
Coming soon: Metro Times Daily newsletter. We’ll send you a handful of interesting Detroit stories every morning. Subscribe now to not miss a thing.
Follow us: Google News | NewsBreak | Reddit | Instagram | Facebook | Twitter
') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } // const insertionBlockClass = `fdn-paragraph-insertion-block`; const styleElementHook = `fdn-paragraph-insertion-styles`; jQuery(element).addClass(insertionBlockClass); if (jQuery(`[${styleElementHook}]`).length === 0) { jQuery('div.fdn-content-body, div #storyBody').append('
') const paragraphLineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() const styleElement = jQuery(`
`); const styleText = ` div.fdn-content-body br+.${insertionBlockClass}:not([hidden]), div #storyBody br+.${insertionBlockClass}:not([hidden]) { margin-top: ${paragraphLineHeight*2}px; margin-bottom: ${paragraphLineHeight}px; } div.fdn-content-body br+.${insertionBlockClass}[hidden] > div:last-of-type, div #storyBody br+.${insertionBlockClass}[hidden] > div:last-of-type { margin-bottom: ${paragraphLineHeight*2}px; } ` styleElement.text(styleText); jQuery('head').append(styleElement); } // } } jQuery(element).insertBefore(this.paragraphEndNodes[index]); } else { console.warn('Foundation.ParagraphTool.insertElemenAt: invalid insertion index', index); } } this.insertElemenAtEnd = function (element) { if (this.paragraphEndNodes.length) { let lastNode = this.getNodeAtIndex(this.paragraphEndNodes.length -1); if (this.isDoubleBrParagraphBreak(lastNode) || this.isBrParagraphBreakBeforeBlockElement(lastNode)) { if (jQuery(element).get(0).tagName.match(/SCRIPT/i) !== null) { jQuery('
').insertAfter(this.paragraphEndNodes[index]); jQuery('
').insertAfter(this.paragraphEndNodes[index]); } else { jQuery('div.fdn-content-body, div #storyBody').append('
') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } } } } this.bodyContainer.append(element); } this.getNodeAtIndex = function (index) { return this.paragraphEndNodes[index]; } }
`); } var paragraphCount = myParagraphTool.getParagraphEndNodeCount(); // No need to insert if there aren't enough paragaphs if (paragraphCount >= parseInt(item.requiredCountToDisplay)) { // Matches specific paragraph insertion indexes if (item.insertPoint.match(/^\d+$/) !== null) { var insertIndex = parseInt(item.insertPoint) - 1; // Insert within content if (insertIndex < paragraphCount) { myParagraphTool.insertElemenAtIndex(componentElement, insertIndex); } // Append to the end if the insert point is beyond the paragraph count else { myParagraphTool.insertElemenAtEnd(componentElement) } } // Matches for 1/2, 1/4, 2/3, 5/6, etc else if (item.insertPoint.match(/^[1223456]\/[23456]$/) !== null) { var fractionMatch = new RegExp(/^([123456])(?:\/)([23456]$)/); var fractionPart = parseInt(item.insertPoint.match(fractionMatch)[1]); var fractionWhole = parseInt(item.insertPoint.match(fractionMatch)[2]); var fractionValue = fractionPart / fractionWhole; var fractionIndex = Math.floor(myParagraphTool.paragraphEndNodes.length * fractionValue) - 1; myParagraphTool.insertElemenAtIndex(componentElement, fractionIndex); } // Matches for every Nth insertion point else if (item.insertPoint.match(/^\d*th$/i) !== null) { var intervalIndex = parseInt(item.insertPoint.match(/^(\d*)th$/i)[1]); var startingIndex = parseInt(item.startingPoint) - 1; var insertionMax = parseInt(item.maxInsertions) || 100; var insertionCount = 0; for (var i = startingIndex; i < myParagraphTool.paragraphEndNodes.length && insertionCount < insertionMax; i++) { if ((i - startingIndex) % intervalIndex === 0) { let currentNode = myParagraphTool.getNodeAtIndex(i); const clonedComponent = componentElement.clone(); myParagraphTool.insertElemenAtIndex(clonedComponent, i); insertionCount++; } } } } }); Foundation.Content['31618106'].setupInlineComponents = function () { return true; }; if (typeof callback === 'function') { callback(); } }, 200); } Foundation.Content['31618106'].previewInsertionPoints = function () { var myParagraphTool = Foundation.Content['31618106'].paragraphTool myParagraphTool.paragraphEndNodes.each((index, item) => { const insertionPointPlaceholder = jQuery(`
`) myParagraphTool.insertElemenAtIndex(insertionPointPlaceholder, index); }); return 'Paragraph insertion placeholders applied.'; }