====== woot Plugin ====== ---- plugin ---- description: Grabs the current listed product, price, and image from the popular woot.com author : Russ Meyerriecks email : datachomper@gmail.com type : syntax lastupdate : 2019-07-02 compatible : depends : conflicts : similar : tags : embed, feed, random downloadurl: bugtracker : sourcerepo : donationurl: screenshot_img: ---- This plugin allows you to insert woot.com's current product information into your wiki. [[https://www.woot.com/|woot.com]] is a popular site which offers a single product a day at a (usually) low price. While they do offer an RSS feed, it's very minimal and doesn't directly relate to their current product. This plugin displays the product description, the price (+ shipping), and the product image. It does all this by using screen scraping methods, so if it's the case the plugin ever breaks, it's probably due to a site design change on their part. Oh well. Update 2019-07-02 by Tom McArthur: * Added usage tip. Update 2019-06-27 by Tom McArthur: * Fixed the search strings for $title, $price, and $img Update 2008-05-19: * Fixed the broken screen scraping code, woot changed site design slightly. Update 2008-03-27: * Added the "woot off" detection logic. * Threw in an old school blink tag! ===== Usage ===== Usage is as simple as : {{woot}} You can put that into the [[plugin:folded|folded]] plugin so you can collapse it after viewing it. I put this in a page that I access daily: ++++Woot.com|{{woot}} ++++ ===== syntax.php ===== Place the following code into ''lib/plugins/woot/syntax.php'' * @editor Tom McArthur (remove the ZZ's) * */ // must be run within DokuWiki if(!defined('DOKU_INC')) die(); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once(DOKU_PLUGIN.'syntax.php'); class syntax_plugin_woot extends DokuWiki_Syntax_Plugin { /** * return some info */ function getInfo(){ return array( 'author' => 'Russ Meyerriecks', 'email' => 'datachomper@gmail.com', 'date' => '2019-07-02', 'name' => 'Woot Plugin', 'desc' => 'Grabs the current woot.com product name, price, and image', 'url' => 'https://www.dokuwiki.org/plugin:woot', ); } /** * What kind of syntax are we? */ function getType(){ return 'substition'; } /** * What about paragraphs? */ function getPType(){ return 'block'; } /** * Where to sort in? */ function getSort(){ return 188; } /** * Connect pattern to lexer */ function connectTo($mode) { $this->Lexer->addSpecialPattern('\{\{woot\}\}', $mode, 'plugin_woot'); } /** * Handle the match */ function handle($match, $state, $pos, &$handler){ return array(); } /** * Create output */ function render($format, &$renderer, $data) { if($format == 'xhtml'){ //handle various info stuff $woot = file_get_contents('http://www.woot.com'); /** * Tom McArthur: fixed the search strings for $title, $price, and $img */ preg_match("/class=\"main-title fn\">(.+)<\/h2>/", $woot, $matches); $title = $matches[1]; preg_match("/class=\"price\">(.+)<\/span>/", $woot, $matches); $price = $matches[1]; preg_match("/shipping\">(.+)<\/span>/", $woot, $matches); $shipping = $matches[1]; preg_match("/img class=\"photo\" src=\"(.+)\" alt/", $woot, $matches); $img = $matches[1]; $renderer->doc .= $title . '
'; $renderer->doc .= "Price : $price $shipping
"; if(preg_match("/WootOffPanel/", $woot) > 0){ $renderer->doc .= "WOOT OFF ZOMG!!!!!
"; } $renderer->doc .= ""; return true; } return false; } }