diff --git a/js/twitterFetcher.js b/js/twitterFetcher.js
index 8ad1b06..a3be2c5 100644
--- a/js/twitterFetcher.js
+++ b/js/twitterFetcher.js
@@ -8,473 +8,475 @@
* Github: https://github.com/jasonmayes/Twitter-Post-Fetcher
* Updates will be posted to this site.
*********************************************************************/
-(function(root, factory) {
- if (typeof define === 'function' && define.amd) {
- // AMD. Register as an anonymous module.
- define([], factory);
- } else if (typeof exports === 'object') {
- // Node. Does not work with strict CommonJS, but
- // only CommonJS-like environments that support module.exports,
- // like Node.
- module.exports = factory();
- } else {
- // Browser globals.
- factory();
- }
-}(this, function() {
- var domNode = '';
- var maxTweets = 20;
- var parseLinks = true;
- var queue = [];
- var inProgress = false;
- var printTime = true;
- var printUser = true;
- var formatterFunction = null;
- var supportsClassName = true;
- var showRts = true;
- var customCallbackFunction = null;
- var showInteractionLinks = true;
- var showImages = false;
- var useEmoji = false;
- var targetBlank = true;
- var lang = 'en';
- var permalinks = true;
- var dataOnly = false;
- var script = null;
- var scriptAdded = false;
-
- function handleTweets(tweets){
- if (customCallbackFunction === null) {
- var x = tweets.length;
- var n = 0;
- var element = document.getElementById(domNode);
- var html = '
';
- while(n < x) {
- html += '- ' + tweets[n] + '
';
- n++;
- }
- html += '
';
- element.innerHTML = html;
+if (typeof window != 'undefined') {
+ (function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define([], factory);
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory();
} else {
- customCallbackFunction(tweets);
+ // Browser globals.
+ factory();
}
- }
+ }(this, function() {
+ var domNode = '';
+ var maxTweets = 20;
+ var parseLinks = true;
+ var queue = [];
+ var inProgress = false;
+ var printTime = true;
+ var printUser = true;
+ var formatterFunction = null;
+ var supportsClassName = true;
+ var showRts = true;
+ var customCallbackFunction = null;
+ var showInteractionLinks = true;
+ var showImages = false;
+ var useEmoji = false;
+ var targetBlank = true;
+ var lang = 'en';
+ var permalinks = true;
+ var dataOnly = false;
+ var script = null;
+ var scriptAdded = false;
- function strip(data) {
- return data.replace(/]*>(.*?)<\/b>/gi, function(a,s){return s;})
- .replace(/class="(?!(tco-hidden|tco-display|tco-ellipsis))+.*?"|data-query-source=".*?"|dir=".*?"|rel=".*?"/gi,
- '');
- }
-
- function targetLinksToNewWindow(el) {
- var links = el.getElementsByTagName('a');
- for (var i = links.length - 1; i >= 0; i--) {
- links[i].setAttribute('target', '_blank');
- links[i].setAttribute('rel', 'noopener');
+ function handleTweets(tweets){
+ if (customCallbackFunction === null) {
+ var x = tweets.length;
+ var n = 0;
+ var element = document.getElementById(domNode);
+ var html = '';
+ while(n < x) {
+ html += '- ' + tweets[n] + '
';
+ n++;
+ }
+ html += '
';
+ element.innerHTML = html;
+ } else {
+ customCallbackFunction(tweets);
+ }
}
- }
- function getElementsByClassName (node, classname) {
- var a = [];
- var regex = new RegExp('(^| )' + classname + '( |$)');
- var elems = node.getElementsByTagName('*');
- for (var i = 0, j = elems.length; i < j; i++) {
- if(regex.test(elems[i].className)){
- a.push(elems[i]);
- }
+ function strip(data) {
+ return data.replace(/]*>(.*?)<\/b>/gi, function(a,s){return s;})
+ .replace(/class="(?!(tco-hidden|tco-display|tco-ellipsis))+.*?"|data-query-source=".*?"|dir=".*?"|rel=".*?"/gi,
+ '');
}
- return a;
- }
- function extractImagesUrl(image_data) {
- if (image_data !== undefined && image_data.innerHTML.indexOf('data-image') >= 0) {
- var data_src = image_data.innerHTML.match(/data-image=\"([A-z0-9]+:\/\/[A-z0-9]+\.[A-z0-9]+\.[A-z0-9]+\/[A-z0-9]+\/[A-z0-9\-]+)\"/ig);
- for (var i = 0; i < data_src.length; i++) {
- data_src[i] = data_src[i].match(/data-image=\"([A-z0-9]+:\/\/[A-z0-9]+\.[A-z0-9]+\.[A-z0-9]+\/[A-z0-9]+\/[A-z0-9\-]+)\"/i)[1];
- data_src[i] = decodeURIComponent(data_src[i]) + '.jpg';
+ function targetLinksToNewWindow(el) {
+ var links = el.getElementsByTagName('a');
+ for (var i = links.length - 1; i >= 0; i--) {
+ links[i].setAttribute('target', '_blank');
+ links[i].setAttribute('rel', 'noopener');
}
- return data_src;
}
- }
-
- var twitterFetcher = {
- fetch: function(config) {
- if (config.maxTweets === undefined) {
- config.maxTweets = 20;
- }
- if (config.enableLinks === undefined) {
- config.enableLinks = true;
- }
- if (config.showUser === undefined) {
- config.showUser = true;
- }
- if (config.showTime === undefined) {
- config.showTime = true;
- }
- if (config.dateFunction === undefined) {
- config.dateFunction = 'default';
- }
- if (config.showRetweet === undefined) {
- config.showRetweet = true;
- }
- if (config.customCallback === undefined) {
- config.customCallback = null;
- }
- if (config.showInteraction === undefined) {
- config.showInteraction = true;
- }
- if (config.showImages === undefined) {
- config.showImages = false;
- }
- if (config.useEmoji === undefined) {
- config.useEmoji = false;
- }
- if (config.linksInNewWindow === undefined) {
- config.linksInNewWindow = true;
- }
- if (config.showPermalinks === undefined) {
- config.showPermalinks = true;
- }
- if (config.dataOnly === undefined) {
- config.dataOnly = false;
+ function getElementsByClassName (node, classname) {
+ var a = [];
+ var regex = new RegExp('(^| )' + classname + '( |$)');
+ var elems = node.getElementsByTagName('*');
+ for (var i = 0, j = elems.length; i < j; i++) {
+ if(regex.test(elems[i].className)){
+ a.push(elems[i]);
+ }
}
+ return a;
+ }
- if (inProgress) {
- queue.push(config);
- } else {
- inProgress = true;
-
- domNode = config.domId;
- maxTweets = config.maxTweets;
- parseLinks = config.enableLinks;
- printUser = config.showUser;
- printTime = config.showTime;
- showRts = config.showRetweet;
- formatterFunction = config.dateFunction;
- customCallbackFunction = config.customCallback;
- showInteractionLinks = config.showInteraction;
- showImages = config.showImages;
- useEmoji = config.useEmoji;
- targetBlank = config.linksInNewWindow;
- permalinks = config.showPermalinks;
- dataOnly = config.dataOnly;
-
- var head = document.getElementsByTagName('head')[0];
- if (script !== null) {
- head.removeChild(script);
- }
- script = document.createElement('script');
- script.type = 'text/javascript';
- if (config.list !== undefined) {
- script.src = 'https://syndication.twitter.com/timeline/list?' +
- 'callback=__twttrf.callback&dnt=false&list_slug=' +
- config.list.listSlug + '&screen_name=' + config.list.screenName +
- '&suppress_response_codes=true&lang=' + (config.lang || lang) +
- '&rnd=' + Math.random();
- } else if (config.profile !== undefined) {
- script.src = 'https://syndication.twitter.com/timeline/profile?' +
- 'callback=__twttrf.callback&dnt=false' +
- '&screen_name=' + config.profile.screenName +
- '&suppress_response_codes=true&lang=' + (config.lang || lang) +
- '&rnd=' + Math.random();
- } else if (config.likes !== undefined) {
- script.src = 'https://syndication.twitter.com/timeline/likes?' +
- 'callback=__twttrf.callback&dnt=false' +
- '&screen_name=' + config.likes.screenName +
- '&suppress_response_codes=true&lang=' + (config.lang || lang) +
- '&rnd=' + Math.random();
- } else if (config.collection !== undefined) {
- script.src = 'https://syndication.twitter.com/timeline/collection?' +
- 'callback=__twttrf.callback&dnt=false' +
- '&collection_id=' + config.collection.collectionId +
- '&suppress_response_codes=true&lang=' + (config.lang || lang) +
- '&rnd=' + Math.random();
- } else {
- script.src = 'https://cdn.syndication.twimg.com/widgets/timelines/' +
- config.id + '?&lang=' + (config.lang || lang) +
- '&callback=__twttrf.callback&' +
- 'suppress_response_codes=true&rnd=' + Math.random();
+ function extractImagesUrl(image_data) {
+ if (image_data !== undefined && image_data.innerHTML.indexOf('data-image') >= 0) {
+ var data_src = image_data.innerHTML.match(/data-image=\"([A-z0-9]+:\/\/[A-z0-9]+\.[A-z0-9]+\.[A-z0-9]+\/[A-z0-9]+\/[A-z0-9\-]+)\"/ig);
+ for (var i = 0; i < data_src.length; i++) {
+ data_src[i] = data_src[i].match(/data-image=\"([A-z0-9]+:\/\/[A-z0-9]+\.[A-z0-9]+\.[A-z0-9]+\/[A-z0-9]+\/[A-z0-9\-]+)\"/i)[1];
+ data_src[i] = decodeURIComponent(data_src[i]) + '.jpg';
}
- head.appendChild(script);
+ return data_src;
}
- },
- callback: function(data) {
- if (data === undefined || data.body === undefined) {
- inProgress = false;
+ }
+
- if (queue.length > 0) {
- twitterFetcher.fetch(queue[0]);
- queue.splice(0,1);
+ var twitterFetcher = {
+ fetch: function(config) {
+ if (config.maxTweets === undefined) {
+ config.maxTweets = 20;
+ }
+ if (config.enableLinks === undefined) {
+ config.enableLinks = true;
+ }
+ if (config.showUser === undefined) {
+ config.showUser = true;
+ }
+ if (config.showTime === undefined) {
+ config.showTime = true;
+ }
+ if (config.dateFunction === undefined) {
+ config.dateFunction = 'default';
+ }
+ if (config.showRetweet === undefined) {
+ config.showRetweet = true;
+ }
+ if (config.customCallback === undefined) {
+ config.customCallback = null;
+ }
+ if (config.showInteraction === undefined) {
+ config.showInteraction = true;
+ }
+ if (config.showImages === undefined) {
+ config.showImages = false;
+ }
+ if (config.useEmoji === undefined) {
+ config.useEmoji = false;
+ }
+ if (config.linksInNewWindow === undefined) {
+ config.linksInNewWindow = true;
+ }
+ if (config.showPermalinks === undefined) {
+ config.showPermalinks = true;
+ }
+ if (config.dataOnly === undefined) {
+ config.dataOnly = false;
}
- return;
- }
-
- // Remove emoji and summary card images.
- if(!useEmoji){
- data.body = data.body.replace(/(
]*>)|(
]*>)/g, '');
- }
-
- // Remove display images.
- if (!showImages) {
- data.body = data.body.replace(/(
]*>|(
]*>))/g, '');
- }
- // Remove avatar images.
- if (!printUser) {
- data.body = data.body.replace(/(
]*>)/g, '');
- }
-
- var div = document.createElement('div');
- div.innerHTML = data.body;
- if (typeof(div.getElementsByClassName) === 'undefined') {
- supportsClassName = false;
- }
- function swapDataSrc(element) {
- var avatarImg = element.getElementsByTagName('img')[0];
- if (avatarImg) {
- avatarImg.src = avatarImg.getAttribute('data-src-2x');
+ if (inProgress) {
+ queue.push(config);
} else {
- var screenName = element.getElementsByTagName('a')[0]
- .getAttribute('href').split('twitter.com/')[1];
- var img = document.createElement('img');
- img.setAttribute('src', 'https://twitter.com/' + screenName +
- '/profile_image?size=bigger');
- element.prepend(img);
- }
- return element;
- }
+ inProgress = true;
- var tweets = [];
- var authors = [];
- var times = [];
- var images = [];
- var rts = [];
- var tids = [];
- var permalinksURL = [];
- var x = 0;
+ domNode = config.domId;
+ maxTweets = config.maxTweets;
+ parseLinks = config.enableLinks;
+ printUser = config.showUser;
+ printTime = config.showTime;
+ showRts = config.showRetweet;
+ formatterFunction = config.dateFunction;
+ customCallbackFunction = config.customCallback;
+ showInteractionLinks = config.showInteraction;
+ showImages = config.showImages;
+ useEmoji = config.useEmoji;
+ targetBlank = config.linksInNewWindow;
+ permalinks = config.showPermalinks;
+ dataOnly = config.dataOnly;
- if (supportsClassName) {
- var tmp = div.getElementsByClassName('timeline-Tweet');
- while (x < tmp.length) {
- if (tmp[x].getElementsByClassName('timeline-Tweet-retweetCredit').length > 0) {
- rts.push(true);
- } else {
- rts.push(false);
+ var head = document.getElementsByTagName('head')[0];
+ if (script !== null) {
+ head.removeChild(script);
}
- if (!rts[x] || rts[x] && showRts) {
- tweets.push(tmp[x].getElementsByClassName('timeline-Tweet-text')[0]);
- tids.push(tmp[x].getAttribute('data-tweet-id'));
- if (printUser) {
- authors.push(swapDataSrc(tmp[x].getElementsByClassName('timeline-Tweet-author')[0]));
- }
- times.push(tmp[x].getElementsByClassName('dt-updated')[0]);
- permalinksURL.push(tmp[x].getElementsByClassName('timeline-Tweet-timestamp')[0]);
- if (tmp[x].getElementsByClassName('timeline-Tweet-media')[0] !==
- undefined) {
- images.push(tmp[x].getElementsByClassName('timeline-Tweet-media')[0]);
- } else {
- images.push(undefined);
- }
- }
- x++;
- }
- } else {
- var tmp = getElementsByClassName(div, 'timeline-Tweet');
- while (x < tmp.length) {
- if (getElementsByClassName(tmp[x], 'timeline-Tweet-retweetCredit').length > 0) {
- rts.push(true);
+ script = document.createElement('script');
+ script.type = 'text/javascript';
+ if (config.list !== undefined) {
+ script.src = 'https://syndication.twitter.com/timeline/list?' +
+ 'callback=__twttrf.callback&dnt=false&list_slug=' +
+ config.list.listSlug + '&screen_name=' + config.list.screenName +
+ '&suppress_response_codes=true&lang=' + (config.lang || lang) +
+ '&rnd=' + Math.random();
+ } else if (config.profile !== undefined) {
+ script.src = 'https://syndication.twitter.com/timeline/profile?' +
+ 'callback=__twttrf.callback&dnt=false' +
+ '&screen_name=' + config.profile.screenName +
+ '&suppress_response_codes=true&lang=' + (config.lang || lang) +
+ '&rnd=' + Math.random();
+ } else if (config.likes !== undefined) {
+ script.src = 'https://syndication.twitter.com/timeline/likes?' +
+ 'callback=__twttrf.callback&dnt=false' +
+ '&screen_name=' + config.likes.screenName +
+ '&suppress_response_codes=true&lang=' + (config.lang || lang) +
+ '&rnd=' + Math.random();
+ } else if (config.collection !== undefined) {
+ script.src = 'https://syndication.twitter.com/timeline/collection?' +
+ 'callback=__twttrf.callback&dnt=false' +
+ '&collection_id=' + config.collection.collectionId +
+ '&suppress_response_codes=true&lang=' + (config.lang || lang) +
+ '&rnd=' + Math.random();
} else {
- rts.push(false);
+ script.src = 'https://cdn.syndication.twimg.com/widgets/timelines/' +
+ config.id + '?&lang=' + (config.lang || lang) +
+ '&callback=__twttrf.callback&' +
+ 'suppress_response_codes=true&rnd=' + Math.random();
}
- if (!rts[x] || rts[x] && showRts) {
- tweets.push(getElementsByClassName(tmp[x], 'timeline-Tweet-text')[0]);
- tids.push(tmp[x].getAttribute('data-tweet-id'));
- if (printUser) {
- authors.push(swapDataSrc(getElementsByClassName(tmp[x],'timeline-Tweet-author')[0]));
- }
- times.push(getElementsByClassName(tmp[x], 'dt-updated')[0]);
- permalinksURL.push(getElementsByClassName(tmp[x], 'timeline-Tweet-timestamp')[0]);
- if (getElementsByClassName(tmp[x], 'timeline-Tweet-media')[0] !== undefined) {
- images.push(getElementsByClassName(tmp[x], 'timeline-Tweet-media')[0]);
- } else {
- images.push(undefined);
- }
+ head.appendChild(script);
+ }
+ },
+ callback: function(data) {
+ if (data === undefined || data.body === undefined) {
+ inProgress = false;
+
+ if (queue.length > 0) {
+ twitterFetcher.fetch(queue[0]);
+ queue.splice(0,1);
}
- x++;
+ return;
}
- }
- if (tweets.length > maxTweets) {
- tweets.splice(maxTweets, (tweets.length - maxTweets));
- authors.splice(maxTweets, (authors.length - maxTweets));
- times.splice(maxTweets, (times.length - maxTweets));
- rts.splice(maxTweets, (rts.length - maxTweets));
- images.splice(maxTweets, (images.length - maxTweets));
- permalinksURL.splice(maxTweets, (permalinksURL.length - maxTweets));
- }
+ // Remove emoji and summary card images.
+ if(!useEmoji){
+ data.body = data.body.replace(/(
]*>)|(
]*>)/g, '');
+ }
- var arrayTweets = [];
- var x = tweets.length;
- var n = 0;
- if (dataOnly) {
- while (n < x) {
- arrayTweets.push({
- tweet: tweets[n].innerHTML,
- author: authors[n] ? authors[n].innerHTML : 'Unknown Author',
- author_data: {
- profile_url: authors[n] ? authors[n].querySelector('[data-scribe="element:user_link"]').href : null,
- profile_image: authors[n] ?
- 'https://twitter.com/' + authors[n].querySelector('[data-scribe="element:screen_name"]').title.split('@')[1] + '/profile_image?size=bigger' : null,
- profile_image_2x: authors[n] ? 'https://twitter.com/' + authors[n].querySelector('[data-scribe="element:screen_name"]').title.split('@')[1] + '/profile_image?size=original' : null,
- screen_name: authors[n] ? authors[n].querySelector('[data-scribe="element:screen_name"]').title : null,
- name: authors[n] ? authors[n].querySelector('[data-scribe="element:name"]').title : null
- },
- time: times[n].textContent,
- timestamp: times[n].getAttribute('datetime').replace('+0000', 'Z').replace(/([\+\-])(\d\d)(\d\d)/, '$1$2:$3'),
- image: (extractImagesUrl(images[n]) ? extractImagesUrl(images[n])[0] : undefined),
- images: extractImagesUrl(images[n]),
- rt: rts[n],
- tid: tids[n],
- permalinkURL: (permalinksURL[n] === undefined) ?
- '' : permalinksURL[n].href
- });
- n++;
+ // Remove display images.
+ if (!showImages) {
+ data.body = data.body.replace(/(
]*>|(
]*>))/g, '');
+ }
+ // Remove avatar images.
+ if (!printUser) {
+ data.body = data.body.replace(/(
]*>)/g, '');
}
- } else {
- while (n < x) {
- if (typeof(formatterFunction) !== 'string') {
- var datetimeText = times[n].getAttribute('datetime');
- var newDate = new Date(times[n].getAttribute('datetime')
- .replace(/-/g,'/').replace('T', ' ').split('+')[0]);
- var dateString = formatterFunction(newDate, datetimeText);
- times[n].setAttribute('aria-label', dateString);
- if (tweets[n].textContent) {
- // IE hack.
- if (supportsClassName) {
- times[n].textContent = dateString;
+ var div = document.createElement('div');
+ div.innerHTML = data.body;
+ if (typeof(div.getElementsByClassName) === 'undefined') {
+ supportsClassName = false;
+ }
+
+ function swapDataSrc(element) {
+ var avatarImg = element.getElementsByTagName('img')[0];
+ if (avatarImg) {
+ avatarImg.src = avatarImg.getAttribute('data-src-2x');
+ } else {
+ var screenName = element.getElementsByTagName('a')[0]
+ .getAttribute('href').split('twitter.com/')[1];
+ var img = document.createElement('img');
+ img.setAttribute('src', 'https://twitter.com/' + screenName +
+ '/profile_image?size=bigger');
+ element.prepend(img);
+ }
+ return element;
+ }
+
+ var tweets = [];
+ var authors = [];
+ var times = [];
+ var images = [];
+ var rts = [];
+ var tids = [];
+ var permalinksURL = [];
+ var x = 0;
+
+ if (supportsClassName) {
+ var tmp = div.getElementsByClassName('timeline-Tweet');
+ while (x < tmp.length) {
+ if (tmp[x].getElementsByClassName('timeline-Tweet-retweetCredit').length > 0) {
+ rts.push(true);
+ } else {
+ rts.push(false);
+ }
+ if (!rts[x] || rts[x] && showRts) {
+ tweets.push(tmp[x].getElementsByClassName('timeline-Tweet-text')[0]);
+ tids.push(tmp[x].getAttribute('data-tweet-id'));
+ if (printUser) {
+ authors.push(swapDataSrc(tmp[x].getElementsByClassName('timeline-Tweet-author')[0]));
+ }
+ times.push(tmp[x].getElementsByClassName('dt-updated')[0]);
+ permalinksURL.push(tmp[x].getElementsByClassName('timeline-Tweet-timestamp')[0]);
+ if (tmp[x].getElementsByClassName('timeline-Tweet-media')[0] !==
+ undefined) {
+ images.push(tmp[x].getElementsByClassName('timeline-Tweet-media')[0]);
} else {
- var h = document.createElement('p');
- var t = document.createTextNode(dateString);
- h.appendChild(t);
- h.setAttribute('aria-label', dateString);
- times[n] = h;
+ images.push(undefined);
}
- } else {
- times[n].textContent = dateString;
}
+ x++;
}
- var op = '';
- if (parseLinks) {
- if (targetBlank) {
- targetLinksToNewWindow(tweets[n]);
+ } else {
+ var tmp = getElementsByClassName(div, 'timeline-Tweet');
+ while (x < tmp.length) {
+ if (getElementsByClassName(tmp[x], 'timeline-Tweet-retweetCredit').length > 0) {
+ rts.push(true);
+ } else {
+ rts.push(false);
+ }
+ if (!rts[x] || rts[x] && showRts) {
+ tweets.push(getElementsByClassName(tmp[x], 'timeline-Tweet-text')[0]);
+ tids.push(tmp[x].getAttribute('data-tweet-id'));
if (printUser) {
- targetLinksToNewWindow(authors[n]);
+ authors.push(swapDataSrc(getElementsByClassName(tmp[x],'timeline-Tweet-author')[0]));
+ }
+ times.push(getElementsByClassName(tmp[x], 'dt-updated')[0]);
+ permalinksURL.push(getElementsByClassName(tmp[x], 'timeline-Tweet-timestamp')[0]);
+ if (getElementsByClassName(tmp[x], 'timeline-Tweet-media')[0] !== undefined) {
+ images.push(getElementsByClassName(tmp[x], 'timeline-Tweet-media')[0]);
+ } else {
+ images.push(undefined);
}
}
- if (printUser) {
- op += '' + strip(authors[n].innerHTML) +
- '
';
- }
- op += '';
- if (printTime) {
- if (permalinks) {
- op += '' + times[n].getAttribute('aria-label') + '
';
+ x++;
+ }
+ }
+
+ if (tweets.length > maxTweets) {
+ tweets.splice(maxTweets, (tweets.length - maxTweets));
+ authors.splice(maxTweets, (authors.length - maxTweets));
+ times.splice(maxTweets, (times.length - maxTweets));
+ rts.splice(maxTweets, (rts.length - maxTweets));
+ images.splice(maxTweets, (images.length - maxTweets));
+ permalinksURL.splice(maxTweets, (permalinksURL.length - maxTweets));
+ }
+
+ var arrayTweets = [];
+ var x = tweets.length;
+ var n = 0;
+ if (dataOnly) {
+ while (n < x) {
+ arrayTweets.push({
+ tweet: tweets[n].innerHTML,
+ author: authors[n] ? authors[n].innerHTML : 'Unknown Author',
+ author_data: {
+ profile_url: authors[n] ? authors[n].querySelector('[data-scribe="element:user_link"]').href : null,
+ profile_image: authors[n] ?
+ 'https://twitter.com/' + authors[n].querySelector('[data-scribe="element:screen_name"]').title.split('@')[1] + '/profile_image?size=bigger' : null,
+ profile_image_2x: authors[n] ? 'https://twitter.com/' + authors[n].querySelector('[data-scribe="element:screen_name"]').title.split('@')[1] + '/profile_image?size=original' : null,
+ screen_name: authors[n] ? authors[n].querySelector('[data-scribe="element:screen_name"]').title : null,
+ name: authors[n] ? authors[n].querySelector('[data-scribe="element:name"]').title : null
+ },
+ time: times[n].textContent,
+ timestamp: times[n].getAttribute('datetime').replace('+0000', 'Z').replace(/([\+\-])(\d\d)(\d\d)/, '$1$2:$3'),
+ image: (extractImagesUrl(images[n]) ? extractImagesUrl(images[n])[0] : undefined),
+ images: extractImagesUrl(images[n]),
+ rt: rts[n],
+ tid: tids[n],
+ permalinkURL: (permalinksURL[n] === undefined) ?
+ '' : permalinksURL[n].href
+ });
+ n++;
+ }
+ } else {
+ while (n < x) {
+ if (typeof(formatterFunction) !== 'string') {
+ var datetimeText = times[n].getAttribute('datetime');
+ var newDate = new Date(times[n].getAttribute('datetime')
+ .replace(/-/g,'/').replace('T', ' ').split('+')[0]);
+ var dateString = formatterFunction(newDate, datetimeText);
+ times[n].setAttribute('aria-label', dateString);
+
+ if (tweets[n].textContent) {
+ // IE hack.
+ if (supportsClassName) {
+ times[n].textContent = dateString;
+ } else {
+ var h = document.createElement('p');
+ var t = document.createTextNode(dateString);
+ h.appendChild(t);
+ h.setAttribute('aria-label', dateString);
+ times[n] = h;
+ }
} else {
- op += '' +
- times[n].getAttribute('aria-label') + '
';
+ times[n].textContent = dateString;
}
}
- } else {
- if (tweets[n].textContent) {
+ var op = '';
+ if (parseLinks) {
+ if (targetBlank) {
+ targetLinksToNewWindow(tweets[n]);
+ if (printUser) {
+ targetLinksToNewWindow(authors[n]);
+ }
+ }
if (printUser) {
- op += '' + authors[n].textContent + '
';
+ op += '' + strip(authors[n].innerHTML) +
+ '
';
}
- op += '';
+ op += '';
if (printTime) {
- op += '' + times[n].textContent + '
';
+ if (permalinks) {
+ op += '' + times[n].getAttribute('aria-label') + '
';
+ } else {
+ op += '' +
+ times[n].getAttribute('aria-label') + '
';
+ }
}
-
} else {
- if (printUser) {
- op += '' + authors[n].textContent + '
';
+ if (tweets[n].textContent) {
+ if (printUser) {
+ op += '' + authors[n].textContent + '
';
+ }
+ op += '';
+ if (printTime) {
+ op += '' + times[n].textContent + '
';
+ }
+
+ } else {
+ if (printUser) {
+ op += '' + authors[n].textContent + '
';
+ }
+ op += '';
+ if (printTime) {
+ op += '' + times[n].textContent + '
';
+ }
}
- op += '';
- if (printTime) {
- op += '' + times[n].textContent + '
';
+ }
+ if (showInteractionLinks) {
+ op += '' +
+ '
';
+ }
+ if (showImages && images[n] !== undefined && extractImagesUrl(images[n]) !== undefined) {
+ var extractedImages = extractImagesUrl(images[n]);
+ for (var i = 0; i < extractedImages.length; i++) {
+ op += '';
}
}
- }
- if (showInteractionLinks) {
- op += '' +
- '
';
- }
- if (showImages && images[n] !== undefined && extractImagesUrl(images[n]) !== undefined) {
- var extractedImages = extractImagesUrl(images[n]);
- for (var i = 0; i < extractedImages.length; i++) {
- op += '';
+ if (showImages) {
+ arrayTweets.push(op);
+ } else if (!showImages && tweets[n].textContent.length) {
+ arrayTweets.push(op);
}
- }
- if (showImages) {
- arrayTweets.push(op);
- } else if (!showImages && tweets[n].textContent.length) {
- arrayTweets.push(op);
- }
- n++;
+ n++;
+ }
}
- }
- handleTweets(arrayTweets);
- inProgress = false;
+ handleTweets(arrayTweets);
+ inProgress = false;
- if (queue.length > 0) {
- twitterFetcher.fetch(queue[0]);
- queue.splice(0,1);
+ if (queue.length > 0) {
+ twitterFetcher.fetch(queue[0]);
+ queue.splice(0,1);
+ }
}
- }
- };
+ };
- // It must be a global variable because it will be called by JSONP.
- window.__twttrf = twitterFetcher;
- window.twitterFetcher = twitterFetcher;
- return twitterFetcher;
-}));
+ // It must be a global variable because it will be called by JSONP.
+ window.__twttrf = twitterFetcher;
+ window.twitterFetcher = twitterFetcher;
+ return twitterFetcher;
+ }));
-// Prepend polyfill for IE/Edge.
-(function (arr) {
- arr.forEach(function (item) {
- if (item.hasOwnProperty('prepend')) {
- return;
- }
- Object.defineProperty(item, 'prepend', {
- configurable: true,
- enumerable: true,
- writable: true,
- value: function prepend() {
- var argArr = Array.prototype.slice.call(arguments),
- docFrag = document.createDocumentFragment();
-
- argArr.forEach(function (argItem) {
- var isNode = argItem instanceof Node;
- docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));
- });
-
- this.insertBefore(docFrag, this.firstChild);
+ // Prepend polyfill for IE/Edge.
+ (function (arr) {
+ arr.forEach(function (item) {
+ if (item.hasOwnProperty('prepend')) {
+ return;
}
+ Object.defineProperty(item, 'prepend', {
+ configurable: true,
+ enumerable: true,
+ writable: true,
+ value: function prepend() {
+ var argArr = Array.prototype.slice.call(arguments),
+ docFrag = document.createDocumentFragment();
+
+ argArr.forEach(function (argItem) {
+ var isNode = argItem instanceof Node;
+ docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));
+ });
+
+ this.insertBefore(docFrag, this.firstChild);
+ }
+ });
});
- });
-})([Element.prototype, Document.prototype, DocumentFragment.prototype]);
+ })([Element.prototype, Document.prototype, DocumentFragment.prototype]);
+}
\ No newline at end of file
diff --git a/js/twitterFetcher_min.js b/js/twitterFetcher_min.js
index 267f263..78c5e09 100644
--- a/js/twitterFetcher_min.js
+++ b/js/twitterFetcher_min.js
@@ -8,7 +8,7 @@
* Github: https://github.com/jasonmayes/Twitter-Post-Fetcher
* Updates will be posted to this site.
*********************************************************************/
-(function(root,factory){if(typeof define==='function'&&define.amd){define([],factory);}else if(typeof exports==='object'){module.exports=factory();}else{factory();}}(this,function(){var domNode='';var maxTweets=20;var parseLinks=true;var queue=[];var inProgress=false;var printTime=true;var printUser=true;var formatterFunction=null;var supportsClassName=true;var showRts=true;var customCallbackFunction=null;var showInteractionLinks=true;var showImages=false;var useEmoji=false;var targetBlank=true;var lang='en';var permalinks=true;var dataOnly=false;var script=null;var scriptAdded=false;function handleTweets(tweets){if(customCallbackFunction===null){var x=tweets.length;var n=0;var element=document.getElementById(domNode);var html='';while(n'+tweets[n]+'';n++;}
+if(typeof window!='undefined'){(function(root,factory){if(typeof define==='function'&&define.amd){define([],factory);}else if(typeof exports==='object'){module.exports=factory();}else{factory();}}(this,function(){var domNode='';var maxTweets=20;var parseLinks=true;var queue=[];var inProgress=false;var printTime=true;var printUser=true;var formatterFunction=null;var supportsClassName=true;var showRts=true;var customCallbackFunction=null;var showInteractionLinks=true;var showImages=false;var useEmoji=false;var targetBlank=true;var lang='en';var permalinks=true;var dataOnly=false;var script=null;var scriptAdded=false;function handleTweets(tweets){if(customCallbackFunction===null){var x=tweets.length;var n=0;var element=document.getElementById(domNode);var html='';while(n'+tweets[n]+'';n++;}
html+='
';element.innerHTML=html;}else{customCallbackFunction(tweets);}}
function strip(data){return data.replace(/]*>(.*?)<\/b>/gi,function(a,s){return s;}).replace(/class="(?!(tco-hidden|tco-display|tco-ellipsis))+.*?"|data-query-source=".*?"|dir=".*?"|rel=".*?"/gi,'');}
function targetLinksToNewWindow(el){var links=el.getElementsByTagName('a');for(var i=links.length-1;i>=0;i--){links[i].setAttribute('target','_blank');links[i].setAttribute('rel','noopener');}}
@@ -65,4 +65,4 @@ if(showImages&&images[n]!==undefined&&extractImagesUrl(images[n])!==undefined){v
if(showImages){arrayTweets.push(op);}else if(!showImages&&tweets[n].textContent.length){arrayTweets.push(op);}
n++;}}
handleTweets(arrayTweets);inProgress=false;if(queue.length>0){twitterFetcher.fetch(queue[0]);queue.splice(0,1);}}};window.__twttrf=twitterFetcher;window.twitterFetcher=twitterFetcher;return twitterFetcher;}));(function(arr){arr.forEach(function(item){if(item.hasOwnProperty('prepend')){return;}
-Object.defineProperty(item,'prepend',{configurable:true,enumerable:true,writable:true,value:function prepend(){var argArr=Array.prototype.slice.call(arguments),docFrag=document.createDocumentFragment();argArr.forEach(function(argItem){var isNode=argItem instanceof Node;docFrag.appendChild(isNode?argItem:document.createTextNode(String(argItem)));});this.insertBefore(docFrag,this.firstChild);}});});})([Element.prototype,Document.prototype,DocumentFragment.prototype]);
\ No newline at end of file
+Object.defineProperty(item,'prepend',{configurable:true,enumerable:true,writable:true,value:function prepend(){var argArr=Array.prototype.slice.call(arguments),docFrag=document.createDocumentFragment();argArr.forEach(function(argItem){var isNode=argItem instanceof Node;docFrag.appendChild(isNode?argItem:document.createTextNode(String(argItem)));});this.insertBefore(docFrag,this.firstChild);}});});})([Element.prototype,Document.prototype,DocumentFragment.prototype]);}
\ No newline at end of file