<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pantuts</title>
	<atom:link href="http://pantuts.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://pantuts.com</link>
	<description>Nixivity</description>
	<lastBuildDate>
	Thu, 11 Feb 2016 00:39:28 +0000	</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Fix Pip Error &#8211; TypeError: unorderable types: NoneType() &lt; str()</title>
		<link>http://pantuts.com/2015/04/09/fix-pip-error-typeerror-unorderable-types-nonetype-str/</link>
				<comments>http://pantuts.com/2015/04/09/fix-pip-error-typeerror-unorderable-types-nonetype-str/#respond</comments>
				<pubDate>Thu, 09 Apr 2015 12:51:15 +0000</pubDate>
		<dc:creator><![CDATA[pantuts]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://pantuts.com/?p=10001</guid>
				<description><![CDATA[<p>Fixing pip error NoneType() < str().
</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2015/04/09/fix-pip-error-typeerror-unorderable-types-nonetype-str/">Fix Pip Error &#8211; TypeError: unorderable types: NoneType() &lt; str()</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>If you haven&#8217;t upgraded your pip/pip3 yet, you might be having a difficulty in installing packages or modules for python3+ like below:</p>
<pre crayon="false">
Exception:
Traceback (most recent call last):
  File "/usr/lib/python3.4/site-packages/pip/basecommand.py", line 232, in main
    status = self.run(options, args)
  File "/usr/lib/python3.4/site-packages/pip/commands/install.py", line 339, in run
    requirement_set.prepare_files(finder)
  File "/usr/lib/python3.4/site-packages/pip/req/req_set.py", line 229, in prepare_files
    req_to_install.check_if_exists()
  File "/usr/lib/python3.4/site-packages/pip/req/req_install.py", line 931, in check_if_exists
    self.satisfied_by = pkg_resources.get_distribution(self.req)
  File "/usr/lib/python3.4/site-packages/pip/_vendor/pkg_resources/__init__.py", line 461, in get_distribution
    dist = get_provider(dist)
  File "/usr/lib/python3.4/site-packages/pip/_vendor/pkg_resources/__init__.py", line 341, in get_provider
    return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
  File "/usr/lib/python3.4/site-packages/pip/_vendor/pkg_resources/__init__.py", line 870, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python3.4/site-packages/pip/_vendor/pkg_resources/__init__.py", line 740, in resolve
    env = Environment(self.entries)
  File "/usr/lib/python3.4/site-packages/pip/_vendor/pkg_resources/__init__.py", line 927, in __init__
    self.scan(search_path)
  File "/usr/lib/python3.4/site-packages/pip/_vendor/pkg_resources/__init__.py", line 957, in scan
    self.add(dist)
  File "/usr/lib/python3.4/site-packages/pip/_vendor/pkg_resources/__init__.py", line 977, in add
    dists.sort(key=operator.attrgetter('hashcmp'), reverse=True)
TypeError: unorderable types: NoneType() < str()
</pre>
<p>To fix this, in my case for python3.4 (Distro: Manjaro), edit __init__.py of pip package:</p>
<pre crayon="false">
# edit this file
/usr/lib/python3.4/site-packages/pip/_vendor/pkg_resources/__init__.py
#
# look for lines
_remove_md5_fragment(self.location),
self.py_version,
self.platform,
#
# and change these lines to
_remove_md5_fragment(self.location),
self.py_version or '',
self.platform or '',
</pre>
<p>You may take a look at this commit: <a href="https://bitbucket.org/pypa/setuptools/commits/c995677d5321" title="c995677d5321" target="_blank" rel="nofollow">c995677d5321</a>.</p>
<p>The above solution is manual. You may also upgrade pip itself.</p>
<pre crayon="false">
sudo pip install --upgrade pip
</pre>
<p>The post <a rel="nofollow" href="http://pantuts.com/2015/04/09/fix-pip-error-typeerror-unorderable-types-nonetype-str/">Fix Pip Error &#8211; TypeError: unorderable types: NoneType() &lt; str()</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></content:encoded>
							<wfw:commentRss>http://pantuts.com/2015/04/09/fix-pip-error-typeerror-unorderable-types-nonetype-str/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Crag &#8211; PoC Craigslist Flagging Bot</title>
		<link>http://pantuts.com/2015/03/26/crag-poc-craigslist-flagging-bot/</link>
				<comments>http://pantuts.com/2015/03/26/crag-poc-craigslist-flagging-bot/#comments</comments>
				<pubDate>Thu, 26 Mar 2015 01:35:14 +0000</pubDate>
		<dc:creator><![CDATA[pantuts]]></dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://pantuts.com/?p=9971</guid>
				<description><![CDATA[<p>Python PoC script for flagging entry in craigslist.</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2015/03/26/crag-poc-craigslist-flagging-bot/">Crag &#8211; PoC Craigslist Flagging Bot</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Agreement: This script is for educational purposes only. By using this script you agree that you alone will be responsible for any act you make. The author will not be liable of your actions.</p>
<p>Crag is a PoC craigslist flagging bot. It basically clicks the &#8216;prohibit&#8217; link from the given URL repeatedly and it uses proxies to prevent being blocked.</p>
<p>The logic of bot:<br />
* The script check for proxy if working.<br />
* 5 threads per proxy per url.<br />
* Starts flagging, loop flagging if still not flagged.<br />
* Change proxy after successful flags.<br />
* If proxy reaches error connection/timeout of 20 tries, change proxy then remove dead proxy.<br />
* Continue until completion of links.</p>
<p>Clone:</p>
<pre crayon="false">git clone https://github.com/pantuts/crag</pre>
<p>Usage:</p>
<pre crayon="false">python2.7 crag.py links.txt proxies.txt</pre>
<p>Use working proxies. The links are for examples only.</p>
<p>Github: <a href="https://github.com/pantuts/crag" title="https://github.com/pantuts/crag" target="_blank" rel="nofollow">https://github.com/pantuts/crag</a></p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2015/03/26/crag-poc-craigslist-flagging-bot/">Crag &#8211; PoC Craigslist Flagging Bot</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></content:encoded>
							<wfw:commentRss>http://pantuts.com/2015/03/26/crag-poc-craigslist-flagging-bot/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Installing and Patching Cowpatty 4.6</title>
		<link>http://pantuts.com/2014/11/21/installing-patching-cowpatty-4-6/</link>
				<comments>http://pantuts.com/2014/11/21/installing-patching-cowpatty-4-6/#respond</comments>
				<pubDate>Fri, 21 Nov 2014 15:20:34 +0000</pubDate>
		<dc:creator><![CDATA[pantuts]]></dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Pentest]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://pantuts.com/?p=9831</guid>
				<description><![CDATA[<p>Installing and patching cowpatty 4.6</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2014/11/21/installing-patching-cowpatty-4-6/">Installing and Patching Cowpatty 4.6</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>I had this error running cowpatty on my machine:</p>
<pre crayon="false">
End of pcap capture file, incomplete four-way handshake exchange.  Try using a
different capture.
</pre>
<p>Showing this error, I checked the pcap file in kali linux and cowpatty installed in there checked the file as correct.<br />
So I then call google for help and found very useful article. Here&#8217;s what you should do:</p>
<p>Get the source first, uncompress, then cd to its directory.</p>
<pre crayon="false">
wget http://wirelessdefence.org/Contents/Files/cowpatty-4.6.tgz
</pre>
<pre crayon="false">
tar xvzf cowpatty-4.6.tgz
</pre>
<pre crayon="false">
cd cowpatty-4.6/
</pre>
<p>Then get the patch and patch cowpatty.</p>
<pre crayon="false">
wget https://raw.githubusercontent.com/dpzhang314/pentest/master/net-wireless/cowpatty/files/cowpatty-4.6-fixup14.patch
</pre>
<pre crayon="false">
patch < cowpatty-4.6-fixup14.patch
</pre>
<p>Install.</p>
<pre crayon="false">
make
</pre>
<pre crayon="false">
sudo make install
</pre>
<p>Done.</p>
<p>Credits:<br />
<a href="http://theunl33t.blogspot.com/2011/06/patch-compile-and-installing-cowpatty.html" title="http://theunl33t.blogspot.com/2011/06/patch-compile-and-installing-cowpatty.html" target="_blank" rel="nofollow">http://theunl33t.blogspot.com/2011/06/patch-compile-and-installing-cowpatty.html</a><br />
<a href="https://github.com/dpzhang314" title="https://github.com/dpzhang314" target="_blank" rel="nofollow">https://github.com/dpzhang314</a></p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2014/11/21/installing-patching-cowpatty-4-6/">Installing and Patching Cowpatty 4.6</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></content:encoded>
							<wfw:commentRss>http://pantuts.com/2014/11/21/installing-patching-cowpatty-4-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Gstreamer add missing plugins on Arch</title>
		<link>http://pantuts.com/2014/11/01/gstreamer-manjaro-arch-add-missing-plugins/</link>
				<comments>http://pantuts.com/2014/11/01/gstreamer-manjaro-arch-add-missing-plugins/#respond</comments>
				<pubDate>Sat, 01 Nov 2014 02:57:26 +0000</pubDate>
		<dc:creator><![CDATA[pantuts]]></dc:creator>
				<category><![CDATA[Arch]]></category>
		<category><![CDATA[Linux Commands]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://pantuts.com/?p=9292</guid>
				<description><![CDATA[<p>Add missing plugins for gstreamer on arch or arch based linux distro.</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2014/11/01/gstreamer-manjaro-arch-add-missing-plugins/">Gstreamer add missing plugins on Arch</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>This is for an ArchLinux or Arch based linux distro.<br />
You may encounter the below error when its your first time setting up an arch distro.</p>
<pre crayon="false">
GStreamer could not create the element: autoaudiosink. Please make sure that you have installed all necessary GStreamer plugins (e.g. OGG and MP3)
</pre>
<p>To resolve this problem and save you time from figuring out what packages are needed for audio files, run below command then test your audio files after successful installation of packages.</p>
<pre crayon="false">
sudo pacman -S --needed --noconfirm gst-plugins-bad gst-plugins-base gstreamer gstreamer0.10 gstreamer0.10-bad gstreamer0.10-bad-plugins gstreamer0.10-base-plugins gstreamer0.10-ffmpeg gstreamer0.10-good gstreamer0.10-good-plugins gstreamer0.10-python gstreamer0.10-ugly gstreamer0.10-ugly-plugins phonon-qt4-gstreamer
</pre>
<p>Credits to: <a href="https://forum.manjaro.org/index.php?PHPSESSID=shb4r7b4p8t6q2o1sc36acvie4&#038;topic=7690.msg126515#msg126515" rel="nofollow" title="FadeMind" target="_blank">FadeMind</a></p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2014/11/01/gstreamer-manjaro-arch-add-missing-plugins/">Gstreamer add missing plugins on Arch</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></content:encoded>
							<wfw:commentRss>http://pantuts.com/2014/11/01/gstreamer-manjaro-arch-add-missing-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>QuickNote jQuery Plugin</title>
		<link>http://pantuts.com/2014/09/21/quicknote-jquery-plugin/</link>
				<comments>http://pantuts.com/2014/09/21/quicknote-jquery-plugin/#respond</comments>
				<pubDate>Sun, 21 Sep 2014 12:39:21 +0000</pubDate>
		<dc:creator><![CDATA[pantuts]]></dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://pantuts.com/?p=9241</guid>
				<description><![CDATA[<p>jQuery plugin that lets you add quick note or todo note.</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2014/09/21/quicknote-jquery-plugin/">QuickNote jQuery Plugin</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>This is my first attempt on jQuery plugin development. Useful on admin dashboard.<br />
Please have a look and try it. Also comment on improvements and bugs. Thank you very much.</p>
<p>The javascript:</p>
<p></p><pre class="crayon-plain-tag">/**
 * QuickNote - jQuery plugin that lets you add quick note or todo note.
 * This plugin is useful for admin panel dashboard.
 *
 * Copyright 2014 Pantuts
 * Licensed under GNU GPLv3
 * https://github.com/pantuts
 * http://pantuts.com
 * Version 1.1
 * Changelog:
 * 	Added support for localStorage
 *   	Added close button instead of directly clicking on note
 *    	Changed font to Open Sans
 * 	Text wrapping
 */

;(function($, window, document, undefined) {

	'use strict';

	var QuickNote = function(el, options) {
		this.el = el;
		this.$el = $(el);
		this.options = options;
	};

	QuickNote.prototype = {
		defaults: {
			theme: 'dark',
			pos: 'right',
			storage: true || false
		},
		init: function() {
			this.config = $.extend({}, this.defaults, this.options);
			// DETECTING localStorage
			if (Storage === void(0)) {
				this.config.storage = false;
			}
			this.appendElem();
			this.completeNote();
		},
		isURL: function(str) {
			// CHECKING IF NOTE IS HAS URL FORMAT
			if(/(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(str)) {
			    return true;
			} else {
			    return false;
			}
		},
		appendElem: function() {
			var isURL = this.isURL;

			// THEME
			if (this.config.theme == 'light') {
				this.$el.addClass('qn_container_light').addClass('qn_container');
			} else if (this.config.theme == 'dark') {
				this.$el.addClass('qn_container');
			} else {
				console.log('Error: Theme >> ' + this.config.theme + ' not found.');
				// SET DEFAULT
				this.$el.addClass('qn_container');
			}

			// POSITION
			if (this.config.pos == 'left') {
				this.$el.css({ 'left':'0', 'bottom':'0', 'margin-left':'5px' });
			} else if (this.config.pos == 'right') {
			} else {
				console.log('Error: Position >> ' + this.config.pos + ' not found.');
			}

			var showHide = '<div id="qn_sh"><span>Show/Hide</span></div>';
			var divNotes = '<div id="notes"></div>';
			var notesInp = '<p><input type="text" name="qn_input" maxlength="500" placeholder="Your notes..."></p>';
			$(showHide).appendTo(this.$el);
			$(divNotes).appendTo(this.$el);
			$(notesInp).appendTo(this.$el.find('#notes'));

			// CHECK EXISTING NOTES IN localStorage
			if (this.config.storage === true) {
				var ls = JSON.parse(localStorage.getItem('quicknote')) || [];
				if (ls) {
					// LOAD THE NOTES
					$.each(ls, function(index, obj) {
						$('<span class="quicknote" id="' + ls[index].id + '"></span>').css({ display: 'table' }).stop().fadeIn('fast').appendTo('.qn_container #notes').text(ls[index].note);
						$('<span class="close"></span>').prependTo('#' + ls[index].id);
						var qnText = ls[index].note;
						if (isURL(qnText)) {
							$('#' + ls[index].id).addClass('quicknote-bword');
						}
					});
				}
			}
		},
		completeNote: function() {
			var storage = this.config.storage;
			var isURL = this.isURL;

			this.$el.on('keypress', '#notes input', function(e) {
				// RETURN KEY PRESSED
				if (e.which == 13 || e.keyCode == 13) {
					var notesInpVal = $('#notes input').val();

					if (notesInpVal) {
						var uniqid = Date.now();

						// CREATE NOTES
						$('<span class="quicknote" id="qn_' + uniqid + '"></span>').css({ display: 'table' }).stop().fadeIn('fast').appendTo('.qn_container #notes').text(notesInpVal);
						$('<span class="close"></span>').prependTo('#qn_' + uniqid);
						// word-break: break-all IF HAS URL FORMAT
						var qnText = $('#qn_' + uniqid).text();
						if (isURL(qnText)) {
							$('#qn_' + uniqid).addClass('quicknote-bword');
						}
						$('.qn_container #notes input').val('');

						var id = 'qn_' + uniqid;
                        var note = $('#qn_' + uniqid).text();
                        var newNote = {
                            'id': id,
                            'note': note
                        };

                        // SAVE TO localStorage
                        if (storage === true) {
                            var prevNotes = JSON.parse(localStorage.getItem('quicknote')) || [];
                            prevNotes.push(newNote);
                            localStorage.setItem('quicknote', JSON.stringify(prevNotes));
                        }
					} else {
						console.log('Empty note!');
					}
				}
			});

			// SHOW AND HIDE
			this.$el.on('click', '#qn_sh span', function() {
				$('.qn_container #notes').slideToggle(100);
			});

			// CLICK TO CLOSE NOTES
			this.$el.on('click', '#notes .close', function() {
				$(this).each(function() {
					$(this).parent('.quicknote').stop().fadeOut(100, function() {
						var id = $(this).attr('id');
						var note = $(this).text();
						var theNote = {
                            'id': id,
                            'note': note
                        };

						// REMOVAL OF ITEM IN localStorage
						if (storage === true) {
							var ls = JSON.parse(localStorage.getItem('quicknote')) || [];
							if (ls) {
								$.each(ls, function(index, obj) {
									// console.log(ID);
									if (obj.id == id) {
										ls.splice(index, 1);
										localStorage.setItem('quicknote', JSON.stringify(ls));
										return false;
									}
								});
							}
						}

						// REMOVE CURRENT ELEMENT FROM DOM
						$(this).remove();
					});
				});
			});
		}
	};

	$.fn.quicknote = function(options) {
		return this.each(function() {
			new QuickNote(this, options).init();
		});
	};

})(jQuery, window, document);</pre><p></p>
<p>The css:</p>
<p></p><pre class="crayon-plain-tag">/*
    QuickNote jQuery Plugin
    Copyright 2014 Pantuts (http://pantuts.com)
    License: GNU GPLv3
    URL: https://github.com/pantuts/QuickNote-jQuery-Plugin/
    Version 1.1
    Changelog:
        Added wrapping text
        Added close
 */

@import url(http://fonts.googleapis.com/css?family=Open+Sans);

*,
:before,
:after
{
    -webkit-box-sizing: border-box;
       -moz-box-sizing: border-box;
            box-sizing: border-box;
}

/* container dark */
.qn_container
{
    position: fixed;
    right: 0;
    bottom: 0;
    overflow: auto;
    overflow-y: auto;
    width: 300px;
    max-height: 90%;
    margin-right: 5px;
    padding: 5px;
    -webkit-border-radius: 5px 5px 0 0;
       -moz-border-radius: 5px 5px 0 0;
            border-radius: 5px 5px 0 0;
    background: #313a39;
}
/* end container */

/* show/hide */
#qn_sh
{
    position: relative;
    text-align: center;
}
#qn_sh span
{
    font-family: 'Open Sans', sans, arial;
    font-size: .8em;
    display: table;
    width: 100%;
    margin: 0 auto;
    padding: 2px 0;
    color: #dbdbdb;
}

#qn_sh span:hover
{
    cursor: pointer;
    text-decoration: underline;
}
/* end show/hide */

/* notes container */
#notes
{
    position: relative;
    overflow: hidden;
    width: auto;
}

/* end notes container */

/* notes */
#notes > span,
#notes p
{

    font-family: 'Open Sans', sans, arial;
    right: 0;
    display: inline-block;
    text-align: left;
}
#notes p,
#notes p input
{
    font-size: .9em;
    width: 100%;
}
#notes p
{
    margin: 5px auto 0 auto;
    /*padding: 2px;*/
}
#notes p input
{
    width: 100%;
    color: #6d6d6d;
    border: 1px solid #ccc;
}
#notes p input:focus
{
    border-color: #ccc;
    box-shadow: 0;
}
.quicknote,
#notes p input
{
    position: relative;
    height: auto;
    padding: 7px;
    -webkit-border-radius: 5px;
       -moz-border-radius: 5px;
            border-radius: 5px;
}
.quicknote
{
    font-size: .8em;
    position: relative;
    overflow: auto;
    max-width: 100%;
    margin: 5px 0;
    margin-right: 0;
    white-space: pre-wrap;
    white-space: -moz-pre-wrap;
    white-space: -pre-wrap;
    white-space: -o-pre-wrap;
    word-wrap: break-word;
    word-break: break-word;
    color: #1e5866;
    background: #51c5e2;
}
.quicknote-bword {
    word-break: break-all !important;
}
.quicknote:first-child
{
    margin-top: 0;
}
.close:before
{
    content: 'x';
}
.close
{
    font-weight: bold;
    position: relative;
    top: 0;
    margin-top: 0;
    float: right;
    margin-left: 20px;
    padding: 0 3px;
    color: #6b2424;
}

.close:hover
{
    cursor: pointer;
}
/* end notes */

/* container light */
.qn_container_light
{
    border: 1px solid #ddd;
    background: #EFEFEF;
}
/* end container light */

/* show/hide */
.qn_container_light #qn_sh span
{
    color: #737373;
}
/* end show/hide */

/* notes light */
.qn_container_light #notes span
{
    color: #2da68f;
    border: 1px solid #97e8fc;
    background: #7AF4DC;
}
.qn_container_light #notes input {
    background: #F7F7F7;
}
/* end notes light */</pre><p></p>
<p>Github: <a href="https://github.com/pantuts/QuickNote-jQuery-Plugin" title="https://github.com/pantuts/QuickNote-jQuery-Plugin" rel="nofollow" target="_blank">https://github.com/pantuts/QuickNote-jQuery-Plugin</a><br />
Demo: <a href="http://pantuts.com/demos/jquery.quicknote/index.html" title="http://pantuts.com/demos/jquery.quicknote/index.html" target="_blank">http://pantuts.com/demos/jquery.quicknote/index.html</a> and <a href="http://pantuts.com/demos/jquery.quicknote/index2.html" title="http://pantuts.com/demos/jquery.quicknote/index2.html" target="_blank">http://pantuts.com/demos/jquery.quicknote/index2.html</a></p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2014/09/21/quicknote-jquery-plugin/">QuickNote jQuery Plugin</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></content:encoded>
							<wfw:commentRss>http://pantuts.com/2014/09/21/quicknote-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>AssKick.py &#8211; Python script to search and download torrents from KickAss</title>
		<link>http://pantuts.com/2014/09/20/asskick-py-python-script-search-download-torrents-kickass/</link>
				<comments>http://pantuts.com/2014/09/20/asskick-py-python-script-search-download-torrents-kickass/#respond</comments>
				<pubDate>Sat, 20 Sep 2014 06:44:12 +0000</pubDate>
		<dc:creator><![CDATA[pantuts]]></dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://pantuts.com/?p=9211</guid>
				<description><![CDATA[<p>Search and download torrents from KickAss torrents.</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2014/09/20/asskick-py-python-script-search-download-torrents-kickass/">AssKick.py &#8211; Python script to search and download torrents from KickAss</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p></p><pre class="crayon-plain-tag">#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: pantuts
# URL: http://pantuts.com
# Agreement: You can use, modify, or redistribute this tool under the terms of GNU General Public License (GPLv3).
# This tool is for educational purposes only. Any damage you make will not affect the author.
# Dependencies:
# requests: https://pypi.python.org/pypi/requests
# beautifulSoup4: https://pypi.python.org/pypi/beautifulsoup4/4.3.2
# tabulate: https://pypi.python.org/pypi/tabulate

from bs4 import BeautifulSoup
import os
import re
import requests
import subprocess
import sys
import tabulate


class OutColors:
    DEFAULT = '\033[0m'
    BW = '\033[1m'
    LG = '\033[0m\033[32m'
    LR = '\033[0m\033[31m'
    SEEDER = '\033[1m\033[32m'
    LEECHER = '\033[1m\033[31m'


def helper():
    print(OutColors.DEFAULT + "\nSearch torrents from Kickass.to ;)")


def select_torrent():
    torrent = input('>> ')
    return torrent


def download_torrent(url):
    fname = os.getcwd() + '/' + url.split('title=')[-1] + '.torrent'
    # http://stackoverflow.com/a/14114741/1302018
    try:
        r = requests.get(url, stream=True)
        with open(fname, 'wb') as f:
            for chunk in r.iter_content(chunk_size=1024):
                if chunk:
                    f.write(chunk)
                    f.flush()
    except requests.exceptions.RequestException as e:
        print('\n' + OutColors.LR + str(e))
        sys.exit(1)

    return fname


def aksearch():
    helper()
    tmp_url = 'http://kickass.to/usearch/'

    query = input('Type query: ')
    url = tmp_url + query + '/'

    try:
        cont = requests.get(url)
    except requests.exceptions.RequestException as e:
        raise SystemExit('\n' + OutColors.LR + str(e))

    # check if no torrents found
    if not re.findall(r'Download torrent file', str(cont.content)):
        print('Torrents found: 0')
        aksearch()
    else:
        soup = BeautifulSoup(cont.content)

        # to use by age, seeders, and leechers
        # sample:
        # 700.46 MB
        # 5
        # 2 years
        # 1852
        # 130
        al = [s.get_text() for s in soup.find_all('td', {'class':'center'})]

        href = [a.get('href') for a in soup.find_all('a', {'title':'Download torrent file'})]
        size = [t.get_text() for t in soup.find_all('td', {'class':'nobr'}) ]
        title = [ti.get_text() for ti in soup.find_all('a', {'class':'cellMainLink'})]
        age = al[2::5]
        seeders = al[3::5]
        leechers = al[4::5]

        # for table printing
        table = [[OutColors.BW + str(i+1) + OutColors.DEFAULT if (i+1) % 2 == 0 else i+1,
                    OutColors.BW + title[i] + OutColors.DEFAULT if (i+1) % 2 == 0 else title[i],
                    OutColors.BW + size[i] + OutColors.DEFAULT if (i+1) % 2 == 0 else size[i],
                    OutColors.BW + age[i] + OutColors.DEFAULT if (i+1) % 2 == 0 else age[i],
                    OutColors.SEEDER + seeders[i] + OutColors.DEFAULT if (i+1) % 2 == 0 else OutColors.LG + seeders[i] + OutColors.DEFAULT,
                    OutColors.LEECHER + leechers[i] + OutColors.DEFAULT if (i+1) % 2 == 0 else OutColors.LR + leechers[i] + OutColors.DEFAULT] for i in range(len(href))]
        print()
        print(tabulate.tabulate(table, headers=['No', 'Title', 'Size', 'Age', 'Seeders', 'Leechers']))

        # torrent selection
        if len(href) == 1:
            torrent = 1
        else:
            print('\nSelect torrent: [ 1 - ' + str(len(href)) + ' ] or [ M ] to go back to main menu or [ Q ] to quit')
            torrent = select_torrent()
            if torrent == 'Q' or torrent == 'q':
                sys.exit(0)
            elif torrent == 'M' or torrent == 'm':
                aksearch()
            else:
                if int(torrent) <= 0 or int(torrent) > len(href):
                    print('Use eyeglasses...')
                else:
                    print('Download >> ' + href[int(torrent)-1].split('title=')[-1] + '.torrent')
                    fname = download_torrent(href[int(torrent)-1])
                    subprocess.Popen(['xdg-open', fname], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                    aksearch()


if __name__ == '__main__':
    try:
        aksearch()
    except KeyboardInterrupt:
        print('\nHuha!')</pre><p></p>
<p><iframe width="569" height="345" src="//www.youtube.com/embed/9aM4sexXUjU?autoplay=1&#038;vq=hd720" frameborder="0" allowfullscreen></iframe></p>
<p>Github page: <a href="https://github.com/pantuts/asskick" title="https://github.com/pantuts/asskick" rel="nofollow" target="_blank">https://github.com/pantuts/asskick</a><br />
Please comment any bugs you encouter. Thanks.</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2014/09/20/asskick-py-python-script-search-download-torrents-kickass/">AssKick.py &#8211; Python script to search and download torrents from KickAss</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></content:encoded>
							<wfw:commentRss>http://pantuts.com/2014/09/20/asskick-py-python-script-search-download-torrents-kickass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>CRON job: Python script to  check battery stat</title>
		<link>http://pantuts.com/2014/07/25/cron-job-python-script-check-battery-stat/</link>
				<comments>http://pantuts.com/2014/07/25/cron-job-python-script-check-battery-stat/#respond</comments>
				<pubDate>Fri, 25 Jul 2014 07:57:14 +0000</pubDate>
		<dc:creator><![CDATA[pantuts]]></dc:creator>
				<category><![CDATA[Cron]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://pantuts.com/?p=9081</guid>
				<description><![CDATA[<p>Using cron and python to check for battery stat.</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2014/07/25/cron-job-python-script-check-battery-stat/">CRON job: Python script to  check battery stat</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>I often forget to charge my battery and most of the time it suspends when it reaches critical level of discharging. So i wrote a python script that will check for battery and leave the work to [hl]cron[/hl] to run in the background. The script uses <a href="https://pypi.python.org/pypi/notify2" title="notify2" rel="nofollow" target="_blank">notify2</a> for notification.</p>
<p></p><pre class="crayon-plain-tag">#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Dependecy: notify2

import notify2
import shlex
from subprocess import Popen, PIPE

upower = shlex.split('upower -i /org/freedesktop/UPower/devices/battery_BAT0')
grp = shlex.split('grep percentage')
ak = shlex.split("awk -F '[^0-9]*' '$0=$2'")

proc1 = Popen(upower, stdout=PIPE)
proc2 = Popen(grp, stdin=proc1.stdout, stdout=PIPE)
proc3 = Popen(ak, stdin=proc2.stdout, stdout=PIPE)
proc1.stdout.close()
out = int(proc3.communicate()[0].decode('ascii').rstrip())
# print(out)

notify2.init('bat_check')

# edit this
# if battery is less than 15%
if out &lt; 15:
    note = notify2.Notification('Battery Check', 'CHARGE CHARGE CHARGE CHARGE CHARGE')
    note.set_category('device')
    note.set_timeout(5000)
    note.show()</pre><p></p>
<p>Save this script anywhere in your home folder.</p>
<p>For CRON:</p>
<p></p><pre class="crayon-plain-tag"># run
$ crontab -e
# then add this
*/1 * * * * export DISPLAY=:0.0 &amp;&amp; /home/username/path/to/script.py &gt; /dev/null

# then save.
# This cron job will run every minute</pre><p></p>
<p>Install notify2:</p>
<pre crayon="false">
sudo pip install notify2
</pre>
<p>The post <a rel="nofollow" href="http://pantuts.com/2014/07/25/cron-job-python-script-check-battery-stat/">CRON job: Python script to  check battery stat</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></content:encoded>
							<wfw:commentRss>http://pantuts.com/2014/07/25/cron-job-python-script-check-battery-stat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>AyeEmtract &#8211; Extract Email Addresses Using Curl in Parallel</title>
		<link>http://pantuts.com/2013/10/24/ayeemtract-using-curl-parallel/</link>
				<comments>http://pantuts.com/2013/10/24/ayeemtract-using-curl-parallel/#respond</comments>
				<pubDate>Thu, 24 Oct 2013 15:51:50 +0000</pubDate>
		<dc:creator><![CDATA[pantuts]]></dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://pantuts.com/?p=8971</guid>
				<description><![CDATA[<p>AyeEmtract is a php class that implements curl in parallel to extract email addresses from given web pages.</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2013/10/24/ayeemtract-using-curl-parallel/">AyeEmtract &#8211; Extract Email Addresses Using Curl in Parallel</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>AyeEmtract is a php class that implements curl in parallel to extract email addresses from given web pages.</p>
<p></p><pre class="crayon-plain-tag">&lt;?php
 
/**
 * AyeEmtract a class that crawls pages and
 * then searches for email addresses using curl in parallel.
 *
 * PHP version &gt;= 5.x
 *
 * @category PHP
 * @author   PANTUTS
 * @license  http://www.gnu.org/licenses/gpl.txt
 * @link     http://www.pantuts.com
 */
class AyeEmtract
{
    // variable to store data
    private $_results = array();
    // array of urls
    private $_urls = array();
    // addition curl options
    private $_options = array();
    // errors
    public $errors = array();
 
    /**
     * Creates object and store array of urls and additional options
     *
     * @param array $urls    array of urls
     * @param array $options addition curl options
     */
    public function __construct($urls, $options = array())
    {
        $this-&gt;_urls = $urls;
        $this-&gt;_options = $options;
    }
 
    /**
     * Sets curl_multi, curl options, and executes curl
     * per url.
     */
    public function start()
    {
        // initialize curl multi handle
        $curlMaster = curl_multi_init();
        // curl singles array
        $curlh = array();
 
        // loop all urls
        foreach ($this-&gt;_urls as $i =&gt; $url) {
            // curl_init each url
            $curlh[$i] = curl_init();
 
            curl_setopt_array(
                $curlh[$i], array(
                    CURLOPT_URL =&gt; htmlentities(trim($url)),
                    CURLOPT_SSL_VERIFYPEER =&gt; false,
                    CURLOPT_USERAGENT =&gt; self::_setUserAgent(),
                    CURLOPT_HEADER =&gt; false,
                    CURLOPT_RETURNTRANSFER =&gt; true,
                    CURLOPT_MAXREDIRS =&gt; 7,
                    CURLOPT_CONNECTTIMEOUT =&gt; 20,
                    CURLOPT_FRESH_CONNECT =&gt; true )
            );
 
            // check additional options
            if (!empty($this-&gt;_options)) {
                curl_setopt_array($curlh[$i], $this-&gt;_options);
            }
            // now add multi handle
            curl_multi_add_handle($curlMaster, $curlh[$i]);
        }
 
        // execute multi handles
        $running = null;
        do {
            // save errors if encountered
            if (curl_multi_exec($curlMaster, $running) === false) {
                $this-&gt;errors[$i] =  'ERROR: url = ' . curl_error($curlh[$i]) .
                    ', code = ' . curl_errno($curlh[$i]);
            }
        } while ($running &gt; 0);
 
        // get content on each url from curlh
        foreach ($curlh as $j =&gt; $ch) {
            // save results and remove handle
            $this-&gt;_results[$j] = curl_multi_getcontent($ch);
             
            curl_multi_remove_handle($curlMaster, $ch);
        }
 
        // close handle
        curl_multi_close($curlMaster);
    }
 
    /**
     * Returns array of emails
     *
     * @return array_unique(array)
     */
    public function getEmails()
    {
        $emails = array();
        // regex to find valid emails
        $re = &quot;/([\s]*)([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*([ ]+|)@([ ]+|)([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,}))([\s]*)/i&quot;;
 
        foreach ($this-&gt;_results as $i =&gt; $res) {
            // decode htmlentities like %3C
            $res = html_entity_decode($res);
            preg_match_all($re, $res, $matches);
             
            foreach ($matches[0] as $match) {
                // save to array found emails
                $emails[$i] = trim($match);
            }
        }
        // remove duplicates
        return array_unique($emails);
    }
 
    /**
     * Returns random user-agent
     *
     * @return $ua
     */
    private static function _setUserAgent()
    {
        $userAgents = array(
            'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0',
            'Mozilla/5.0 (Windows NT 6.2; rv:22.0) Gecko/20130405 Firefox/22.0',
            'Opera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/886; U; en) Presto/2.4.15',
            'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14',
            'Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))',
            'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1623.0 Safari/537.36',
            'Mozilla/5.0 (X11; CrOS i686 4319.74.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36',
            'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25',
            'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2'
        );
        $ua = $userAgents[array_rand($userAgents)];
        return $ua;
    }
}
?&gt;</pre><p></p>
<h3>Demo</h3>
<p>We will just create a basic example on how to use it. First save the list of URLs to file, urls.txt.</p>
<ul class="feats">
<li>http://forums.cnet.com/7723-21563_102-601900/tmkkb-hotmail-com/</li>
<li>https://tribot.org/forums/index.php?/user/38198-fabreezyhotmailcom/</li>
<li>http://forums.altnews.com.au/user/1137/track</li>
</ul>
<p></p><pre class="crayon-plain-tag">&lt;?php
// PHP in terminal mode
// Create a test.php file and then enter following codes
// path to class
require_once 'AyeEmtract.php';
// read textfile and save to array
// $argv[1] the path of urls.txt in command argument
$f = file($argv[1], FILE_IGNORE_NEW_LINES);
// new object
$e = new AyeEmtract($f);
$e-&gt;start();
$emails = $e-&gt;getEmails();
// result
var_dump($emails);
?&gt;</pre><p></p><pre class="crayon-plain-tag"># run command
php test.php urls.txt</pre><p>Sample output of var_dump().</p><pre class="crayon-plain-tag">array(3) {
  [0]=&gt;
  string(17) &quot;TMKKB@HOTMAIL.COM&quot;
  [1]=&gt;
  string(21) &quot;fa.breezy@hotmail.com&quot;
  [2]=&gt;
  string(24) &quot;Noveltyworks@hotmail.com&quot;
}</pre><p>Github page: <a href="https://github.com/pantuts/AyeEmtract" title="https://github.com/pantuts/AyeEmtract" rel="nofollow" target="_blank">https://github.com/pantuts/AyeEmtract</a><br />
Please comment any bugs you encouter. Thanks.</p>
<p><a href="http://www.amazon.com/gp/product/144936375X/ref=as_li_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=144936375X&#038;linkCode=as2&#038;tag=pantuts-20&#038;linkId=WO5G4BLEK2LRZLQV"><img class="amazonimg" border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&#038;ASIN=144936375X&#038;Format=_SL250_&#038;ID=AsinImage&#038;MarketPlace=US&#038;ServiceVersion=20070822&#038;WS=1&#038;tag=pantuts-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=pantuts-20&#038;l=as2&#038;o=1&#038;a=144936375X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2013/10/24/ayeemtract-using-curl-parallel/">AyeEmtract &#8211; Extract Email Addresses Using Curl in Parallel</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></content:encoded>
							<wfw:commentRss>http://pantuts.com/2013/10/24/ayeemtract-using-curl-parallel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>grep &#8211; Get all email addresses from file</title>
		<link>http://pantuts.com/2013/10/23/grep-get-email-addresses-file/</link>
				<comments>http://pantuts.com/2013/10/23/grep-get-email-addresses-file/#respond</comments>
				<pubDate>Wed, 23 Oct 2013 11:26:52 +0000</pubDate>
		<dc:creator><![CDATA[pantuts]]></dc:creator>
				<category><![CDATA[Linux Commands]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://pantuts.com/?p=8961</guid>
				<description><![CDATA[<p>A nice grep/egrep command to get all email addresses from a textfile.</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2013/10/23/grep-get-email-addresses-file/">grep &#8211; Get all email addresses from file</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>A nice grep/egrep command to get all email addresses from a textfile.</p>
<pre crayon="false">
grep -E -o &quot;\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b&quot; filename.txt
</pre>
<pre crayon="false">
egrep -o &quot;\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b&quot; filename.txt
</pre>
<p>You may find duplicates in the output of the command. [ uniq ] command will help remove duplicates. And to sort all the extracted emails we will use [ sort ] command.</p>
<pre crayon="false">
# uniq emails and sort
egrep -o &quot;\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b&quot; filename.txt | uniq | sort
</pre>
<p>Credits: <a href="http://www.putorius.net/2011/12/grep-all-email-addresses-from-text-file.html" title="credits" target="_blank">http://www.putorius.net/2011/12/grep-all-email-addresses-from-text-file.html</a></p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2013/10/23/grep-get-email-addresses-file/">grep &#8211; Get all email addresses from file</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></content:encoded>
							<wfw:commentRss>http://pantuts.com/2013/10/23/grep-get-email-addresses-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>wget &#8211; Copy an Entire Website</title>
		<link>http://pantuts.com/2013/10/23/wget-copy-entire-website/</link>
				<comments>http://pantuts.com/2013/10/23/wget-copy-entire-website/#respond</comments>
				<pubDate>Wed, 23 Oct 2013 08:15:45 +0000</pubDate>
		<dc:creator><![CDATA[pantuts]]></dc:creator>
				<category><![CDATA[Linux Commands]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://pantuts.com/?p=8911</guid>
				<description><![CDATA[<p>A very simple yet useful and effective wget command for you to mirror an entire website to your local machine.</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2013/10/23/wget-copy-entire-website/">wget &#8211; Copy an Entire Website</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>A very simple yet useful and effective wget command for you to mirror an entire website to your local machine.</p>
<p></p><pre class="crayon-plain-tag">wget -r -nc -p -k -np \
--user-agent=&quot;Mozilla/5.0 (Windows NT 6.2; rv:22.0) Gecko/20130405 Firefox/23.0&quot; \
--html-extension --restrict-file-names=windows --domains=example.com example.com</pre><p></p>
<ul class="feats">
<li>-r: recursive download</li>
<li>-nc: no-clobber or skip downloads on existing files</li>
<li>-p: get all page requisites to properly display html</li>
<li>-k: convert links to working local files</li>
<li>-np: don&#8217;t ascend to parent directory</li>
<li>&#8211;user-agent: as AGENT</li>
<li>&#8211;html-extension: make sure downloaded files will have its corresponding suffixes</li>
<li>&#8211;restrict-file-names: filenames that will also work on windows</li>
<li>&#8211;domains: domain/s to be followed</li>
</ul>
<p>The post <a rel="nofollow" href="http://pantuts.com/2013/10/23/wget-copy-entire-website/">wget &#8211; Copy an Entire Website</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></content:encoded>
							<wfw:commentRss>http://pantuts.com/2013/10/23/wget-copy-entire-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Manjaro Linux 0.8.6</title>
		<link>http://pantuts.com/2013/06/10/manjaro-linux-0-8-6/</link>
				<comments>http://pantuts.com/2013/06/10/manjaro-linux-0-8-6/#respond</comments>
				<pubDate>Mon, 10 Jun 2013 21:06:43 +0000</pubDate>
		<dc:creator><![CDATA[pantuts]]></dc:creator>
				<category><![CDATA[Distros]]></category>

		<guid isPermaLink="false">http://pantuts.com/?p=8702</guid>
				<description><![CDATA[<p>Manjaro (Rolling Release) is an ArchLinux based linux distribution.</p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2013/06/10/manjaro-linux-0-8-6/">Manjaro Linux 0.8.6</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Manjaro 0.8.6 is a linux distribution based on ArchLinux available in both 32 and 62 bit versions as <a href="http://wiki.manjaro.org/index.php/The_Rolling_Release_Development_Model" title="rolling release" target="_blank" rel="nofollow">Rolling Release</a>.<br />
I switched from Xubuntu to Manjaro for a new experience. I&#8217;m still newbie to this disto so a good read in their <a href="http://wiki.manjaro.org/index.php?title=Main_Page" title="wiki" target="_blank" rel="nofollow">Wiki</a> is a big help. You can also check the official <a href="https://wiki.archlinux.org/" title="wiki" target="_blank" rel="nofollow">ArchWiki</a> which is compatible with Manjaro.</p>
<h3>Features</h3>
<ul class="feats">
<li>Speed, power, and efficiency</li>
<li>Access to the very latest cutting and bleeding edge software</li>
<li>A ‘rolling release’ development model that provides the most up-to-date system possible without the need to install new versions, and</li>
<li>Access to the Arch User Repository (AUR).</li>
</ul>
<p>If you are a fan of ffmpeg then you&#8217;ll probably don&#8217;t need to reconfigure it by yourself coz it&#8217;s already installed by default in Manjaro with configuration below.</p>
<p><a href="http://pantuts.com/pantuts/wp-content/uploads/2013/06/ffmpeg-manjaro.png" class="prettyPhoto"><img src="http://pantuts.com/pantuts/wp-content/uploads/2013/06/ffmpeg-manjaro.png" alt="ffmpeg-manjaro" width="569" height="255" class="alignnone size-full wp-image-8712" /></a></p>
<p>You can <a href="http://manjaro.org/get-manjaro/" title="download" target="_blank" rel="nofollow">download</a> Manjaro on different desktop environments like XfCE, GnomeShell, LXDE, OpenBox, Cinnamon, MATE, KDE, and E17.</p>
<p><a href="http://pantuts.com/pantuts/wp-content/uploads/2013/06/desktop.png" class="prettyPhoto"><img src="http://pantuts.com/pantuts/wp-content/uploads/2013/06/desktop-1024x575.png" alt="manjaro desktop" width="570" height="350" class="alignnone size-large wp-image-8722" /></a></p>
<p>The post <a rel="nofollow" href="http://pantuts.com/2013/06/10/manjaro-linux-0-8-6/">Manjaro Linux 0.8.6</a> appeared first on <a rel="nofollow" href="http://pantuts.com">Pantuts</a>.</p>
]]></content:encoded>
							<wfw:commentRss>http://pantuts.com/2013/06/10/manjaro-linux-0-8-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
	</channel>
</rss>
