private static $userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0";
 
   /**
-   * Constructor sets up {@link $generate_enclosure}.
+   * Create a new Tweeper object controlling optional settings.
+   *
+   * @param bool $generate_enclosure
+   *   Enables the creation of <enclosure/> elements (disabled by default).
+   * @param bool $show_usernames
+   *   Enables showing the username in front of the content for multi-user
+   *   sites (enabled by default). Only some stylesheets supports this
+   *   functionality (twitter, instagram, pump.io).
    */
-  public function __construct($generate_enclosure = FALSE) {
+  public function __construct($generate_enclosure = FALSE, $show_usernames = TRUE) {
     $this->generate_enclosure = $generate_enclosure;
+    $this->show_usernames = $show_usernames;
   }
 
   /**
     $xsltProcessor = new XSLTProcessor();
     $xsltProcessor->registerPHPFunctions();
     $xsltProcessor->setParameter('', 'generate-enclosure', $this->generate_enclosure);
+    $xsltProcessor->setParameter('', 'show-usernames', $this->show_usernames);
     $xsltProcessor->importStylesheet($xslDoc);
 
     return $xsltProcessor;
 
     exclude-result-prefixes="php">
 
     <xsl:param name="generate-enclosure"/>
+    <xsl:param name="show-usernames"/>
 
     <xsl:output method="xml" indent="yes"/>
 
         <item>
             <title>
                 <xsl:variable name="title-length" select="140"/>
-                <xsl:variable name="item-content-title" select="normalize-space(concat($screen-name, ': ', $item-content-caption))"/>
+                <xsl:variable name="item-content-title">
+                    <xsl:if test="$show-usernames = 1">
+                        <xsl:value-of select="concat($screen-name, ': ')"/>
+                    </xsl:if>
+                    <xsl:value-of select="normalize-space($item-content-caption)"/>
+                </xsl:variable>
                 <!-- ellipsize, inspired from http://stackoverflow.com/questions/13622338 -->
                 <xsl:choose>
                     <xsl:when test="string-length($item-content-title) > $title-length">
 
     exclude-result-prefixes="php">
 
     <xsl:param name="generate-enclosure"/>
+    <xsl:param name="show-usernames"/>
 
     <xsl:output method="xml" indent="yes"/>
 
         <xsl:variable name="item-permalink" select=".//p[@class='muted']/small/a/@href"/>
         <item>
             <title>
-                <xsl:value-of select="concat($user-name, ': ', normalize-space($item-content))"/>
+                <xsl:if test="$show-usernames = 1">
+                    <xsl:value-of select="concat($user-name, ': ')"/>
+                </xsl:if>
+                <xsl:value-of select="normalize-space($item-content)"/>
             </title>
             <link>
                 <xsl:value-of select="$item-permalink"/>
                 <xsl:value-of select="php:functionString('Tweeper\Tweeper::strToRssDate', .//abbr[@class='easydate']/@title)"/>
             </pubDate>
             <description>
-                <xsl:value-of select="concat($user-name, ': ')"/>
                 <xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
+                <xsl:if test="$show-usernames = 1">
+                    <xsl:value-of select="concat($user-name, ': ')"/>
+                </xsl:if>
                 <xsl:copy-of select="$item-content/node()"/>
                 <xsl:text disable-output-escaping="yes">]]></xsl:text>
             </description>
 
     exclude-result-prefixes="php">
 
     <xsl:param name="generate-enclosure"/>
+    <xsl:param name="show-usernames"/>
 
     <xsl:output method="xml" indent="yes"/>
 
         <xsl:variable name="item-has-gif" select="$item-media//*[contains(@class, 'PlayableMedia--gif')]"/>
         <item>
             <title>
-                <xsl:value-of select="concat($user-name, ': ')"/>
+                <xsl:if test="($show-usernames = 1) or ($screen-name != $user-name)">
+                    <xsl:value-of select="concat($user-name, ': ')"/>
+                </xsl:if>
                 <xsl:if test="$item-has-video">
                     <xsl:text>(Video) </xsl:text>
                 </xsl:if>
             </pubDate>
             <description>
                 <xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
-                <xsl:value-of select="concat($user-name, ':')"/>
-                <xsl:element name="br"/>
+                <xsl:if test="($show-usernames = 1) or ($screen-name != $user-name)">
+                    <xsl:value-of select="concat($user-name, ':')"/>
+                    <xsl:element name="br"/>
+                </xsl:if>
                 <xsl:if test="$item-has-video">
                     <xsl:text> (Video)</xsl:text>
                     <xsl:element name="br"/>
 
 *-e*::
     show links to supported media files in the RSS <enclosure/> element
 
+*-u <0|1>*::
+    enable or disable showing usernames in front of the item for hosts which
+    supports it (Twitter.com/Instagram.com). Default is 1 (enable).
+
 *-h, --help*::
     show the help message
 
 
  */
 function usage($argv) {
   if (is_cli()) {
-    $usage = "{$argv[0]} [-e|-h|--help] <src_url>\n";
+    $usage = "{$argv[0]} [-e|-u <0|1>|-h|--help] <src_url>\n";
   }
   else {
-    $usage = htmlentities("{$_SERVER['SCRIPT_NAME']}?src_url=<src_url>&generate_enclosure=<0|1>");
+    $usage = htmlentities("{$_SERVER['SCRIPT_NAME']}?src_url=<src_url>&generate_enclosure=<0|1>&show_usernames=<0|1>");
   }
 
   return "usage: $usage";
 function parse_options_cli($argv, $argc) {
   $options = array(
     'generate_enclosure' => FALSE,
+    'show_usernames' => TRUE,
   );
 
   if ($argc < 2) {
     return $options;
   }
 
-  $cli_options = getopt("eh", array("help"));
+  $cli_options = getopt("eu:h", array("help"));
   foreach ($cli_options as $opt => $val) {
     switch ($opt) {
       case 'e':
         $options['generate_enclosure'] = TRUE;
         break;
 
+      case 'u':
+        $ret = filter_var($val, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
+        if (NULL === $ret) {
+          fwrite(STDERR, "Invalid argument for the -u option.\n");
+          fwrite(STDERR, usage($argv));
+          exit(1);
+        }
+        $options['show_usernames'] = $val;
+        break;
+
       case 'h':
       case 'help':
         echo usage($argv);
     }
   }
 
-  $options['src_url'] = $argv[count($cli_options) + 1];
+  // For now assume that the URL is the lest argument, in the future we could
+  // switch to PHP >= 7.1 and use the $optind argument of getopt().
+  $options['src_url'] = array_pop($argv);
 
   return $options;
 }
 function parse_options_query_string() {
   $options = array(
     'generate_enclosure' => FALSE,
+    'show_usernames' => TRUE,
   );
 
   if (isset($_GET['src_url'])) {
     $options['generate_enclosure'] = $_GET['generate_enclosure'] == 1;
   }
 
+  if (isset($_GET['show_usernames'])) {
+    $options['show_usernames'] = $_GET['show_usernames'] != 0;
+  }
+
   return $options;
 }
 
   exit(1);
 }
 
-$tweeper = new Tweeper($options['generate_enclosure']);
+$tweeper = new Tweeper($options['generate_enclosure'], $options['show_usernames']);
 $output = $tweeper->tweep($options['src_url']);
 if (is_null($output)) {
   exit(1);