<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Nice. This is cool. <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">One thought. If you do this, I believe it prevents the embedded videos from being used in personalization algorithms for the user on youtube.com.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">So you’ll likely be giving the user more privacy at the expense of some small portion of your YouTube channel reach.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">As third party cookies slowly get phased out by browsers, the point may become moot anyway. Also, I think it’s questionable how much of a boost in reach having these cookies on would deliver since subject is probably at least as important
as channel in personalization and the university has a somewhat fragmented channel strategy to begin with.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best,<o:p></o:p></p>
<p class="MsoNormal">Jason<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Drupal <drupal-bounces@lists.osu.edu> on behalf of Hopkins-Lutz, Richard via Drupal <drupal@lists.osu.edu><br>
<b>Date: </b>Thursday, March 18, 2021 at 7:58 AM<br>
<b>To: </b>drupal@lists.osu.edu <drupal@lists.osu.edu><br>
<b>Subject: </b>[Drupal] Preventing cookies from embedded video<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">Hey Drupal folks.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">Working with Ken Phillips on GDPR/Privacy compliance, I crafted some code for Drupal 8 for preventing cookies from Youtube and Vimeo, and figured I would share it.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">This is for Drupal 8, using its core oEmbed system, and should be universal if you use those:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<blockquote style="border:none #C8C8C8 1.0pt;border-left:solid #C8C8C8 2.25pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">use Drupal\media\IFrameMarkup;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">use Drupal\media\OEmbed\Provider;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">/**
<o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> * Implements hook_oembed_resource_url_alter().<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> */<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">function mymodule_oembed_resource_url_alter(array &$parsed_url, Provider $provider)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">{<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> // Add Do Not Track flag to Vimeo oEmbed requests<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> if ($provider->getName() === 'Vimeo') {<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> $parsed_url['query']['dnt'] = true;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> }<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">}<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">/**<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> * Implements hook_preprocess_HOOK().<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> */<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">function mymodule_preprocess_media_oembed_iframe(&$variables)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">{<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> // Pull iframe tag
<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> $iFrame = $variables['media']->__toString();<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> // Switch domain to the youtube nocookie domain.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> if (stripos($iFrame, 'youtube.com') !== false){<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> $newFrame = str_replace('youtube.com/', 'youtube-nocookie.com/', $iFrame);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> $variables['media'] = IFrameMarkup::create($newFrame);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black"> }<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">}<o:p></o:p></span></p>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:12.0pt;color:black">Hope this helps a few of you. <o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div id="Signature">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif"><img id="_x0000_i1025" src="http://osu.edu/assets/site/images/logos/osu-emailsig.png" alt="The Ohio State University"></span><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#333333"><br>
</span><b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#BB0000;background:white">Richard Hopkins-Lutz</span></b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#333333"><br>
<span style="background:white">Web Services Manager</span><br>
</span><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#BB0000;background:white">College of Engineering</span><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#333333;background:white"> Engineering Technology Services</span><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#333333"><br>
</span><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif"><a href="mailto:hopkins-lutz.1@osu.edu"><span style="font-size:9.0pt;font-family:"Arial",sans-serif;background:white">hopkins-lutz.1@osu.edu</span></a></span><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#333333;background:white"> </span><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif"><a href="http://osu.edu/"><span style="font-size:9.0pt;font-family:"Arial",sans-serif;background:white">osu.edu</span></a><br>
</span><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#C82613">He</span><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">/</span><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#C82613">Him</span><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">/</span><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#C82613">His</span><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">/</span><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#C82613">Mr.</span><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif"><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>