]> gitweb.michael.orlitzky.com - dead/whatever-dl.git/commitdiff
Added the ability to download videos from http://www.efukt.com/.
authorMichael Orlitzky <michael@orlitzky.com>
Tue, 11 Nov 2008 01:34:43 +0000 (20:34 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Tue, 11 Nov 2008 01:34:43 +0000 (20:34 -0500)
src/websites/efukt.rb [new file with mode: 0644]
test/efukt_test.rb [new file with mode: 0644]
test/fixtures/efukt/2304_The_Dumbest_Porno_Ever_Made.html [new file with mode: 0644]
test/test_suite.rb

diff --git a/src/websites/efukt.rb b/src/websites/efukt.rb
new file mode 100644 (file)
index 0000000..f4cc58d
--- /dev/null
@@ -0,0 +1,85 @@
+#
+# Copyright Michael Orlitzky
+#
+# http://michael.orlitzky.com/
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# http://www.fsf.org/licensing/licenses/gpl.html
+#
+
+require 'src/website'
+
+class Efukt < Website
+
+  VALID_EFUKT_URL_REGEX = /^(http:\/\/)?(www\.)?efukt\.com\/\d+(.+)$/
+
+  def self.owns_url?(url)
+    return url =~ VALID_EFUKT_URL_REGEX
+  end
+
+  
+  def get_video_url()
+    page_data = self.get_page_data(@url)
+    video_url = self.parse_video_url(page_data)
+    return video_url
+  end
+
+
+  def get_video_filename()
+    # Default to whatever comes before the
+    # final-period-after-the-final-frontslash in the main URL. This is
+    # better than the superclass method because it doesn't rely on the
+    # network.
+    filename = @url.split('/').pop().split('.')[0]
+    
+    # Most of the URLs will just be the video's id,
+    # followed by an underscore and the video title (with
+    # all spaces replaced by underscores. Sounds look a good
+    # filename to me.
+    filename_regex = /\/([[:alnum:]_]+)\.html/
+    matches = filename_regex.match(@url)
+
+    # Overwrite the default if our regex worked.
+    filename = matches[1] if not (matches.nil? || matches.length < 1)
+    
+    return (filename + '.flv')
+  end
+
+  
+  protected;
+
+  # Get the FLV file URL from the HTML page for this movie.
+  # It's stored in some Flash variable.
+  def parse_video_url(page_data)
+    video_url_regex = /&file=(http:\/\/.*\.flv)&/i
+    matches = video_url_regex.match(page_data)
+
+    if (matches.nil? || matches.length < 2)
+      raise StandardError.new('Could not find the "file" flash variable on the page.');
+    end
+    
+    return matches[1]
+  end
+
+
+  # Just make a normal HTTP "get" request.
+  def get_page_data(url)
+    uri = URI.parse(url)
+    
+    response = Net::HTTP.start(uri.host, uri.port) do |http|
+      http.get(uri.path)
+    end
+    
+    return response.body
+  end
+
+end
diff --git a/test/efukt_test.rb b/test/efukt_test.rb
new file mode 100644 (file)
index 0000000..33b1bf2
--- /dev/null
@@ -0,0 +1,69 @@
+#
+# Copyright Michael Orlitzky
+#
+# http://michael.orlitzky.com/
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# http://www.fsf.org/licensing/licenses/gpl.html
+#
+
+require 'test/unit'
+require 'src/websites/efukt'
+
+
+class EfuktTest < Test::Unit::TestCase
+
+  def test_owns_efukt_urls
+    assert(Efukt.owns_url?('http://www.efukt.com/2308_How_To_Fuck_Like_A_King.html'))
+    assert(Efukt.owns_url?('http://www.efukt.com/2304_The_Dumbest_Porno_Ever_Made.html'))
+  end
+
+  def test_doesnt_own_infoq_urls
+    assert(!Efukt.owns_url?('http://www.infoq.com/interviews/jim-weirich-discusses-rake'))
+  end
+
+
+  def test_get_video_filename_works_on_good_urls
+    ef = Efukt.new('http://www.efukt.com/2308_How_To_Fuck_Like_A_King.html')
+    expected_filename = '2308_How_To_Fuck_Like_A_King.flv'
+    actual_filename = ef.get_video_filename()
+    assert_equal(expected_filename, actual_filename)
+  end
+
+
+  def test_get_video_filename_works_on_weird_urls
+    # The regex looks for an html extension, so this should
+    # not match. Instead, it should fall back on everything
+    # between the final slash and that last period. In this
+    # case, the filename should be the same as if the extension
+    # were html.
+    ef = Efukt.new('http://www.efukt.com/2308_How_To_Fuck_Like_A_King.broken')
+    expected_filename = '2308_How_To_Fuck_Like_A_King.flv'
+    actual_filename = ef.get_video_filename()
+    assert_equal(expected_filename, actual_filename)
+  end
+
+  
+  def test_parse_video_url
+    ef = Efukt.new(nil)
+    
+    page_data = nil
+    
+    File.open('test/fixtures/efukt/2304_The_Dumbest_Porno_Ever_Made.html') do |f|
+      page_data = f.read
+    end
+    
+    test_result = ef.send('parse_video_url', page_data)
+    assert_equal('http://64.62.222.195/video/370c4a4662071261ccd5b833c4d83201/4918d88d/63563562.flv', test_result)
+  end
+
+end
diff --git a/test/fixtures/efukt/2304_The_Dumbest_Porno_Ever_Made.html b/test/fixtures/efukt/2304_The_Dumbest_Porno_Ever_Made.html
new file mode 100644 (file)
index 0000000..5c72ebc
--- /dev/null
@@ -0,0 +1,402 @@
+\r
+\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r
+<title>eFukt.com - porn you wish you never saw  - The Dumbest Porno Ever Made</title>\r
+<link rel="stylesheet" href="/main.css" />\r
+<link rel="stylesheet" href="/inner.css" />\r
+<script type="text/javascript" src="/swfobject/swfobject.js"></script>\r
+        </head>\r
+\r
+<body  onUnload="exitwindow()" >\r
+
+<script language="javascript">
+// Pop - Up Controller
+// For AdultAdWorld.com
+// Written by Joe 12 / 25 / 2005
+// joe@adworldmedia.com
+// www.adultadworld.com
+// Updated by Joe 8 / 27 / 2006
+// Updated by Joe 6 / 17 / 2008
+// ---------------Update to use ff3.html instead of ff2.html
+<!-- Begin
+var uri = "";
+var expDays = 1;
+// Number of days the cookie should last
+var expHours = 1;
+// Number of hours the cookie should last
+var expMins = 1;
+// Number of minutes the cookie should last
+var urlpage = "http://www.efukt.com/advert.php?id=113";
+var urlcodes_end = " ";
+var qs = new Querystring();
+var windowprops = "toolbar=1,location=1,directories=0,status=1,menubar=1,width=800,height=600,scrollbars=1,resizable=1,top=0,left=0";
+
+function GetCookie (name)
+{
+   var arg = name + "=";
+   var alen = arg.length;
+   var clen = document.cookie.length;
+   var i = 0;
+   while (i < clen)
+   {
+      var j = i + alen;
+      if (document.cookie.substring(i, j) == arg)
+      return getCookieVal (j);
+      i = document.cookie.indexOf(" ", i) + 1;
+      if (i == 0)
+      break;
+   }
+   return null;
+}
+function SetCookie (name, value)
+{
+   var argv = SetCookie.arguments;
+   var argc = SetCookie.arguments.length;
+   var expires = (argc > 2) ? argv[2] : null;
+   var path = (argc > 3) ? argv[3] : null;
+   var domain = (argc > 4) ? argv[4] : null;
+   var secure = (argc > 5) ? argv[5] : false;
+   document.cookie = name + "=" + escape (value) +
+   ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
+   ((path == null) ? "" : ("; path=" + path)) +
+   ((domain == null) ? "" : ("; domain=" + domain)) +
+   ((secure == true) ? "; secure" : "");
+}
+function DeleteCookie (name)
+{
+   var exp = new Date();
+   exp.setTime (exp.getTime() - 1);
+   var cval = GetCookie (name);
+   document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
+}
+var exp = new Date();
+exp.setTime(exp.getTime() + (60000 * 60 * 6));
+function amt()
+{
+   var count = GetCookie('adultadworldcount')
+   if(count == null)
+   {
+      SetCookie('adultadworldcount', '1')
+      return 1
+   }
+   else
+   {
+      var newcount = parseInt(count) + 1;
+      DeleteCookie('adultadworldcount')
+      SetCookie('adultadworldcount', newcount, exp)
+      return count
+   }
+}
+function getCookieVal(offset)
+{
+   var endstr = document.cookie.indexOf (";", offset);
+   if (endstr == - 1)
+   endstr = document.cookie.length;
+   return unescape(document.cookie.substring(offset, endstr));
+}
+
+var exit = true;
+
+function adultadworldpop(pub,channel)
+{
+   if((pub != null) && (channel != null)) {
+          uri = urlpage; // + "c=" + channel + ";s=" + pub + ";p=" + pub + urlcodes_end;
+   }
+    //alert(uri);
+   var count = GetCookie('adultadworldcount');
+   if (count == null)
+   {
+      count = 1;
+      SetCookie('adultadworldcount', count, exp);
+
+      if (exit)
+      {
+         window_handle = window.open(uri, "", windowprops);
+         if(window_handle)
+         {
+            // popped worked
+            window_handle.blur();
+         }
+         else
+         {
+            // not popped, use alternative method
+            // alert("Alternative Pop Method");
+
+            isXPSP2 = false;
+            openedWindow = null;
+
+            if( typeof(popedWindow) == "undefined" )
+            {
+               popedWindow = false
+            }
+            ;
+
+            if( parseInt(navigator.appVersion) > 3 )
+            {
+               winWidth = screen.availWidth;
+               winHeight = screen.availHeight
+            }
+
+            if( window.SymRealWinOpen )
+            {
+               open = SymRealWinOpen;
+            }
+
+            if( window.NS_ActualOpen )
+            {
+               open = NS_ActualOpen;
+            }
+
+            checkXPSP2();
+
+            if( ! isXPSP2)
+            {
+               process_pop();
+            }
+            else
+            {
+               if(window.Event)
+               document.captureEvents(Event.CLICK);
+
+               document.onclick = process_clickpop;
+            }
+            self.focus();
+            process_clickpop();
+
+         }
+      }
+
+   }
+   else
+   {
+      count ++ ;
+      SetCookie('adultadworldcount', count, exp);
+   }
+}
+
+function Querystring(qs)
+{
+   // optionally pass a querystring to parse
+   this.params = new Object()
+   this.get = Querystring_get
+
+   if (qs == null)
+   qs = location.search.substring(1, location.search.length)
+
+   if (qs.length == 0) return
+
+   // Turn < plus > back to < space >
+   // See : http : // www.w3.org / TR / REC - html40 / interact / forms.html#h - 17.13.4.1
+   qs = qs.replace(/\+/g, ' ')
+   var args = qs.split('&') // parse out name / value pairs separated via &
+
+   // split out each name = value pair
+   for (var i = 0; i < args.length; i ++ )
+   {
+      var value;
+      var pair = args[i].split('=')
+      var name = unescape(pair[0])
+
+      if (pair.length == 2)
+      value = unescape(pair[1])
+      else
+      value = name
+
+      this.params[name] = value
+   }
+}
+
+function Querystring_get(key, default_)
+{
+   // This silly looking line changes UNDEFINED to NULL
+   if (default_ == null) default_ = null;
+
+   var value = this.params[key]
+   if (value == null) value = default_;
+
+   return value
+}
+
+function checkXPSP2()
+{
+   isXPSP2 = (navigator.userAgent.indexOf("SV1") != - 1);
+}
+function process_pop()
+{
+   if ( ! popedWindow )
+   {
+      // alert(uri);
+      openedWindow = open(uri, "AAW0012342432", "scrollbars=1,resizable=1,menubar=1,location=1,top=0,left=0,width=" + winWidth + ",height=" + winHeight);
+
+      if(openedWindow)
+      {
+         popedWindow = true;
+         self.focus();
+      }
+   }
+}
+
+function process_clickpop()
+{
+   if ( ! popedWindow )
+   {
+      if( ! isXPSP2)
+      {
+         // alert(uri);
+         openedWindow = open(uri, "AAW0012342432", "scrollbars=1,resizable=1,menubar=1,location=1,top=0,left=0,width=" + winWidth + ",height=" + winHeight);
+
+         self.focus();
+         if(openedWindow)
+         {
+            popedWindow = true;
+         }
+      }
+   }
+
+   if( ! popedWindow)
+   {
+      if( window.Event)
+      document.captureEvents(Event.CLICK);
+
+      document.onclick = process_pop;
+      self.focus();
+   }
+}
+
+function getRef()
+{
+    referr = escape(window.location.href);
+    return referr    
+}
+//  End -->
+
+</script>
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-405365-1";
+urchinTracker();
+</script>
+
+\r
+<script language="javascript" type="text/javascript" src="favorites.js"></script>\r
+\r
+<!-- Movie Switch AJAX Function -->\r
+<script language="javascript" type="text/javascript" src="js/movieSwitch.js"></script>\r
+\r
+       <div id="container">\r
+               <div id="innerContainer" style="width:790px">\r
+                <div id="age">THIS SITE IS STRICTLY FOR ADULTS. IF YOU ARE NOT 18 THEN GET THE FUCK OUT!</div>\r
+                       <div id="header"><div id="header_menu"><a class="header_menu" href="http://www.efukt.com">HOME</a> | <a class="header_menu" href="http://www.efukt.com/search/">SEARCH</a> | <a class="header_menu" href="mailto:efukt.admin@gmail.com ">CONTACT</a> | <a class="header_menu" href="http://www.efukt.com/submit/">SUBMIT</a> | <a class="header_menu" target="_blank" href="http://mt.livecamfun.com/xtarc/595158/362/0/arg_tour=rex1?mta=335874" style="color:yellow">AMATEUR WEBCAMS</a></div></div>\r
+            <div id="leftColumn">\r
+               <div id="columnHeader">\r
+                       <h2>Fuck Buddies!</h2>\r
+                </div>\r
+                <div id="content" align="center">\r
+               <iframe src="/aff_page.php" width="152px" height="1414px" scrolling="no" allowtransparency="true" border="0px" margin="0px" frameborder=0 marginwidth=0 marginheight=0 style="margin-left:-10px;"></iframe>\r
+              </div>\r
+               <div id="columnHeader">\r
+                       <h2>Webcams</h2>\r
+                </div>\r
+                <div id="content" align="center">\r
+               <A href=http://cams.com/go/page/mov_cams_07&pid=p271121 target="_blank"><img src=http://banners.cams.com/banners/cams/12314_120x600.bmp WIDTH=120 HEIGHT=600 BORDER=0></A>              </div>\r
+              </div>\r
+            <div id="middleColumn">\r
+\r
+\r
+               <!-- HEAD BANNER -->\r
+                               <div style="padding:5px;" align="center"><IFRAME SRC="http://ifa.streamateaccess.com/dif/?cid=ef560x150" WIDTH=560 HEIGHT=150 FRAMEBORDER=0 MARGINHEIGHT=0 MARGINWIDTH=0 SCROLLING=NO></IFRAME></div>\r
+\r
+       <div style="width:550px;padding-left:12px;margin-top:-5px;" align="center">\r
+                <h1><div id="movie_title" style="margin-bottom:-15px;font-size:24px;">"The Dumbest Porno Ever Made"</div></h1>\r
+               <div style="width:525;font-size:17px;padding-top:6px;padding-bottom:15px;">She gets raped... by an alien-infected talking tree named Tildar. Pretty much the same shit as in Evil Dead 1, except this has penetration shots and ninchucks. Need I say more?</div>\r
+       <div>                                   <div><a style="font-weight:bold;" href="/2304_The_Dumbest_Porno_Ever_Made.html&media=wmv">Video Not Playing? Click Here!</a></div>\r
+                                       <div name='mediaspace' id='mediaspace'>\r
+                                                       <script type="text/javascript">\r
+                                                               var so = new SWFObject('/flvplayer/player.swf','mpl','500','395','9');\r
+                                                               so.addParam('allowscriptaccess','always');\r
+                                                               so.addParam('allowfullscreen','true');\r
+                                                               so.addParam('flashvars','&author=efukt.com&file=http://64.62.222.195/video/370c4a4662071261ccd5b833c4d83201/4918d88d/63563562.flv&streamer=lighttpd&stretching=fill');\r
+                                                               so.addVariable('enablejs','true');\r
+                                                               so.addParam('wmode','transparent');\r
+                                                               so.write('mediaspace');\r
+                                                       </script>\r
+\r
+</div><!-- <div><a style="font-weight:bold;" href="/2304_The_Dumbest_Porno_Ever_Made.html&media=wmv">Video Not Playing? Click Here!</a></div> --><!-- <div id="location"><div id="loc_prev"><a class="header_menu" href="/view.php?id=2303">Previous</a></div><div id="loc_next"><a class="header_menu" href="/view.php?id=2305">Next</a></div></div>-->\r
+               </div>          </div>\r
+                <!-- RANDOM VIDEO -->\r
+                <div id="random_header">------------------------------------- RANDOM VIDS -------------------------------------</div>\r
+<div id="random_content"><a class="bodylink" href="http://www.efukt.com/1613_Phone_Sex_Slut.html"><img height="90" src="http://64.62.222.195/media/video_thumb/772.jpg" width="90" border="1" alt="Phone Sex Slut"></a>
+<a class="bodylink" href="http://www.efukt.com/1707_Korean_Deflowering.html"><img height="90" src="http://64.62.222.195/media/video_thumb/0220.jpg" width="90" border="1" alt="Korean Deflowering"></a>
+<a class="bodylink" href="http://www.efukt.com/188_Assholes_Get_Owned.html"><img height="90" src="http://64.62.222.195/media/video_thumb/ohkDkF9cIQ.jpg" width="90" border="1" alt="Assholes Get Owned"></a>
+<a class="bodylink" href="http://www.efukt.com/1938_Emotional_Orgasm_3.html"><img height="90" src="http://64.62.222.195/media/video_thumb/5117.jpg" width="90" border="1" alt="Emotional Orgasm 3"></a>
+<a class="bodylink" href="http://www.efukt.com/1921_She_Nearly_Dies_While_Cumming.html"><img height="90" src="http://64.62.222.195/media/video_thumb/6394.jpg" width="90" border="1" alt="She Nearly Dies While Cumming"></a>
+<a class="bodylink" href="http://www.efukt.com/379_Boobs_Pt._2.html"><img height="90" src="http://64.62.222.195/media/video_thumb/l97D22ytT2.jpg" width="90" border="1" alt="Boobs Pt. 2"></a>
+<br /><a class="bodylink" href="http://www.efukt.com/284_My_Sexy_Girlfriend.html"><img height="90" src="http://64.62.222.195/media/video_thumb/IJk4JFZeZn.jpg" width="90" border="1" alt="My Sexy Girlfriend"></a>
+<a class="bodylink" href="http://www.efukt.com/1762_Hairiest_Woman_Ever.html"><img height="90" src="http://64.62.222.195/media/video_thumb/7400.jpg" width="90" border="1" alt="Hairiest Woman Ever"></a>
+<a class="bodylink" href="http://www.efukt.com/1595_Deflowering_A_Nun.html"><img height="90" src="http://64.62.222.195/media/video_thumb/462.jpg" width="90" border="1" alt="Deflowering A Nun"></a>
+<a class="bodylink" href="http://www.efukt.com/1871_Anal_Attempt_On_Drunken_Slut.html"><img height="90" src="http://64.62.222.195/media/video_thumb/4836.jpg" width="90" border="1" alt="Anal Attempt On Drunken Slut"></a>
+<a class="bodylink" href="http://www.efukt.com/1887_Cop_Groped_By_Naked_Chick.html"><img height="90" src="http://64.62.222.195/media/video_thumb/6334.jpg" width="90" border="1" alt="Cop Groped By Naked Chick"></a>
+<a class="bodylink" href="http://www.efukt.com/1603_Colin_Farrell_Eating_Pussy.html"><img height="90" src="http://64.62.222.195/media/video_thumb/367.jpg" width="90" border="1" alt="Colin Farrell Eating Pussy"></a>
+</div>
+\r
+               <div id="random_header">------------------------------- FUCKED UP FAVORITES -------------------------------</div>
+<div id="random_content"><a class="bodylink" href="http://www.efukt.com/2127_Deaf_Girl_Wants_To_Be_A_Pornstar.html"><img height="90" src="http://64.62.222.195/media/video_thumb/60271.jpg" width="90" border="1" alt="Deaf Girl Wants To Be A Pornstar"></a>
+<a class="bodylink" href="http://www.efukt.com/2261_Drunken_Slut_Has_Hilarious_Disaster.html"><img height="90" src="http://64.62.222.195/media/video_thumb/512352.jpg" width="90" border="1" alt="Drunken Slut Has Hilarious Disaster"></a>
+<a class="bodylink" href="http://www.efukt.com/2255_Dying_Orgasm.html"><img height="90" src="http://64.62.222.195/media/video_thumb/50334.jpg" width="90" border="1" alt="Dying Orgasm"></a>
+<a class="bodylink" href="http://www.efukt.com/2238_She_Cums_Nine_Times.html"><img height="90" src="http://64.62.222.195/media/video_thumb/8066009.jpg" width="90" border="1" alt="She Cums Nine Times"></a>
+<a class="bodylink" href="http://www.efukt.com/2237_Oh_Noes_The_Condom_Broke!.html"><img height="90" src="http://64.62.222.195/media/video_thumb/66555.jpg" width="90" border="1" alt="Oh Noes The Condom Broke!"></a>
+<a class="bodylink" href="http://www.efukt.com/1668_Insane_Sex_Show.html"><img height="90" src="http://64.62.222.195/media/video_thumb/01.jpg" width="90" border="1" alt="Insane Sex Show"></a>
+<br /><a class="bodylink" href="http://www.efukt.com/2219_Worlds_Biggest_Cock.html"><img height="90" src="http://64.62.222.195/media/video_thumb/300004.jpg" width="90" border="1" alt="Worlds Biggest Cock"></a>
+<a class="bodylink" href="http://www.efukt.com/2198_Pornstar_Attacks_Male_Performer.html"><img height="90" src="http://64.62.222.195/media/video_thumb/775668.jpg" width="90" border="1" alt="Pornstar Attacks Male Performer"></a>
+<a class="bodylink" href="http://www.efukt.com/2162_Attack_Of_The_Horny_Lifeguard.html"><img height="90" src="http://64.62.222.195/media/video_thumb/66313.jpg" width="90" border="1" alt="Attack Of The Horny Lifeguard"></a>
+<a class="bodylink" href="http://www.efukt.com/2282_Good_Porn_Ruined_By_Shitty_Music.html"><img height="90" src="http://64.62.222.195/media/video_thumb/656563.jpg" width="90" border="1" alt="Good Porn Ruined By Shitty Music"></a>
+<a class="bodylink" href="http://www.efukt.com/2267_Tricked_Into_Having_Gay_Sex.html"><img height="90" src="http://64.62.222.195/media/video_thumb/546795.jpg" width="90" border="1" alt="Tricked Into Having Gay Sex"></a>
+<a class="bodylink" href="http://www.efukt.com/2105_How_To_Make_A_Girl_Cum.html"><img height="90" src="http://64.62.222.195/media/video_thumb/7616.jpg" width="90" border="1" alt="How To Make A Girl Cum"></a>
+<br /></div>
+               <div align="center">\r
+                        <table border="0" width="100%" cellpadding="0">\r
+<tr>\r
+                  <td align="center"><a target="_blank" href="http://www.newsfilter.org"> <img height="90" alt="" src="http://www.efukt.com/out/1.jpg" width="90" border="1"></a></td>\r
+                  <td align="center"><a target="_blank" href="http://www.holyjugs.com"> <img height="90" alt="" src="http://www.efukt.com/plugs/ok.jpg" width="90" border="1"></a></td>\r
+                  <td align="center"><a target="_blank" href="http://www.extremefuse.com"> <img height="90" alt="" src="http://www.efukt.com/out/4.jpg" width="90" border="1"></a></td>\r
+                  <td align="center"><a target="_blank" href="http://www.m90.org"> <img height="90" alt="" src="http://www.efukt.com/out/2.jpg" width="90" border="1"></a></td>\r
+                  <td align="center"><a target="_blank" href="http://www.deviantclip.com"> <img height="90" alt="" src="http://www.efukt.com/out/3.jpg" width="90" border="1"></a></td>\r
+                  <td align="center"><a target="_blank" href="http://www.wetpussygames.com/"> <img height="90" alt="" src="http://www.efukt.com/out/5.jpg" width="90" border="1"></a></td>\r
+                </tr>\r
+<tr>\r
+<td align="center" colspan="6">\r
+<a target="_blank" href="http://www.masterwanker.com">\r
+<img src="http://www.efukt.com/out/play.jpg" border="0"></a></td>\r
+</tr>\r
+</table>\r
+</div>\r
+\r
+               </div>\r
+            <div id="breaker"></div>\r
+           </div>\r
+        <div id="footer_enclosure">\r
+                                <div id="footer_content"><table border="0" cellspacing="1" width="100%" cellpadding="3">\r
+<tr>\r
+<td align="center">\r
+<a target="_blank" href="http://aff.ultimatesurrender.com/track/MTAyNDEzMDozOjg,7">\r
+<img src="http://www.efukt.com/images/kinky/us.gif" border="0"></a></td>\r
+</tr>\r
+</table>       </div>                <div id="footer_content">\r
+                <font color="white">\r
+                <table width="100%" align="center" id="friends"><tr><td width="120px"><a class="footer" target="_blank" href="http://holyjugs.com"><b>MONSTER TITTIES</b></a></td><td width="120px"><a class="footer" target="_blank" href="http://www.masterwanker.com/">Master Wanker</a></td><td width="120px"><a class="footer" target="_blank" href="http://www.phun.org"><b>Phun</b></a></td><td width="120px"><a class="footer" target="_blank" href="http://www.shooshtime.com">Shoosh Time</a></td><td width="120px"><a class="footer" target="_blank" href="http://www.snuffx.com">Snuff X</a></td></tr><tr><td width="120px"><a class="footer" target="_blank" href="http://www.wtfpeople.com"><b>WTF PEOPLE</b></a></td><td width="120px"><a class="footer" target="_blank" href="http://www.extremefuse.com"><b>FUCKED UP</b></a></td><td width="120px"><a class="footer" target="_blank" href="http://www.humornsex.com">Humor N' Sex</a></td><td width="120px"><a class="footer" target="_blank" href="http://www.theync.com">Gore Videos</a></td><td width="120px"><a class="footer" target="_blank" href="http://nonk.nonk.info/cat/Bizarre_Videos/">Nonk</a></td></tr><tr><td width="120px"><a class="footer" target="_blank" href="http://www.uniquepeek.com">Unique Peek</a></td><td width="120px"><a class="footer" target="_blank" href="http://www.stileproject.com">Free Teen Porn Vids</a></td><td width="120px"><a class="footer" target="_blank" href="http://www.inhumanity.com">Crazy Porn</a></td><td width="120px"><a class="footer" target="_blank" href="http://www.newsfilter.org">PORN</a></td><td width="120px"><a class="footer" target="_blank" href="http://www.deviantclip.com">Deviant Clip</a></td></tr><tr><td width="120px"><a class="footer" target="_blank" href="http://www.crazyshit.com/links/in.php?site=1177965264">Crazy Shit</a></td><td width="120px"><a class="footer" target="_blank" href="http://www.kaktuz.com">Kaktuz</a></td><td width="120px"><a class="footer" target="_blank" href="http://emo-porn.com">Emo Porn</a></td><td width="120px"><a class="footer" target="_blank" href="http://www.heaven666.org">Heaven 666</a></td><td width="120px"><a class="footer" target="_blank" href="http://www.youramateurporn.com">Your Amateur Porn</a></td></table>                </font>\r
+                </div>\r
+                <div id="footer_content">\r
+                <a href="/tos/" style="color:white;">Terms Of Service</a> /\r
+                <a href="/privacy/" style="color:white;">Privacy Policy</a> /\r
+                <a href="/rss.php" style="color:white;">RSS</a>\r
+                </div>\r
+        </div>\r
+       </div>\r
+<!--<script language='JavaScript' type='text/javascript' src='http://pagepeelads.madisonavenue.com/AdRotator/PagePeelAdService.ads?z=1443&init=true'></script>-->
+<script language="javascript">adultadworldpop(4129,2460);</script><script language="JavaScript" src="http://www.ltassrv.com/serve/api5.asp?d=263&s=301&c=333&v=1"></script>\r
+</body>\r
+</html>\r
index 8987178cf32da249d6b1e82caac25522837fb44b..41f1f8c9c57818762d308c46f94147fc5def2954 100644 (file)
@@ -16,6 +16,7 @@
 # http://www.fsf.org/licensing/licenses/gpl.html
 #
 
+require 'test/efukt_test'
 require 'test/howcast_test'
 require 'test/infoq_test'
 require 'test/redtube_test'