Skip to content
This repository was archived by the owner on Mar 6, 2019. It is now read-only.

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Twecoll is a Twitter command-line tool written in Python. It can be used to retrieve data from Twitter and purge likes (its only data-altering feature). It is based on a sub-command principle meaning calls to twecoll are based on a keyword which instructs twecoll what to do. Below is a list of examples followed by a brief explanation of each command. Running twecoll requires Python 2.7 and the argparse library. It was tested with igraph 0.6 and 0.7.1. The igraph library is optional and is used to generate a clustered graph of the network.

Note: I am not planning to maintain this further. If you don't care about the likes, have a look at nucoll which provides similar functionality.

Contributors

Thank you to @lucahammer and @PeterTheOne for contributing time, feedback & pull requests to this project.

Installation

Place twecoll in your path and create a working directory to store the data collected. Twecoll creates a number of files and folders to store its data.

  • fdat: directory containing friends of friends files
  • img: directory containing avatar images of friends
  • .dat: extension of account details data (friends, followers, avatar URL, etc. for account friends)
  • .twt: extension of tweets file (timestamp, tweet)
  • .fav: extension of likes file (id, timestamp, user id, screen name, tweet)
  • .gml: extension of edgelist file (nodes and edges)
  • .f: friends data (fdat)

Twecoll uses oauth and has been updated to support the 1.1 version of the Twitter REST API. Register your own copy of twecoll on http://apps.twitter.com and copy the consumer key and secret.

The first time you run a twecoll command, it will ask you for the consumer key and consumer secret. It will then retrieve the oauth token. Follow the instructions on the console. An HTTP Error 401 will be thrown if the key and secret cannot be used to retrieve the access token details.

Examples

Download and Purge Likes

Historically, this was twecoll's main use: download all favorited/liked tweets in a file for search purposes. Let's take the handle 'jdevoo' as an example.

$ twecoll likes jdevoo

This will produce a jdevoo.fav file containing all likes including a tweet ID, timestamp, user ID, handle, text (urf-8). In order to purge the likes, twecoll needs the .fav file. You can the execute:

$ twecoll likes -p jdevoo

This is the only command that alters account data. You will need to select the Read+Write permission model for this to work when registering twecoll.

Downloading Tweets

Twecoll can download up to 3000 tweets for a handle or run search queries.

$ twecoll tweets jdevoo

This would generate a jdevoo.twt file containing all tweets including timestamp and text (utf-8). In order search for tweets related to a certain hashtag or run a more advanced query, use the -q switch and double-quotes around the query string:

$ twecoll tweets -q "#dg2g"

This will also generate a .twt file name with the url-encoded search string.

Generating a Graph

It is possible to generate a GML file of your first and second degree relationships on Twitter. This is a two-step process that takes time due to API throttling by Twitter. In order to generate the graph, twecoll retrieves the handle's friends (or followers) and all friends-of-friends (2nd degree relationships). It then calculates the relations between those, ignoring 2nd degree relationships to which the handle is not connected. In other words, it looks only for friend relationships among the friends/followers of the handle or query tweets initially supplied.

First retrieve the handle details

$ twecoll init jdevoo

This generates a jdevoo.dat file. It also populates an img directory with avatar images. It is also possible to initialize from a .twt file using the -q option. In this example, retrieve friends of each entry in the .dat file.

$ twecoll fetch jdevoo

This populates the fdat directory. You can now generate the graph file using the defaults.

$ twecoll edgelist jdevoo

This generates a jdevoo.gml file in Graph Model Language. If you have installed the python version of igraph, a .png file will also be generated with a visualization of the GML data. You can also use other packages to visualize your GML file, e.g. Gephi. The GML file will include friends, followers, memberships and statuses counts as properties. If followers count is not equal to zero, the friends-to-followers and listed-to-followers ratios will be calculated.

See also the wiki section for more ideas.

Usage

Twecoll has built-in help, version and API status switches invoked with -h, -v and -s respectively. Each command can also be invoked with the help switch for additional information about its sub-options.

$ twecoll -h
usage: twecoll [-h] [-v] [-s]
{resolve,init,fetch,tweets,likes,edgelist} ...
Twitter Collection Tool
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-s, --stats show Twitter throttling stats and exit
sub-commands:
{resolve,init,fetch,tweets,likes,edgelist}
resolve retrieve user_id for screen_name or vice versa
init retrieve friends data for screen_name
fetch retrieve friends of handles in .dat file
tweets retrieve tweets
likes retrieve likes
edgelist generate graph in GML format

Changes

  • Version 1.1
    • Initial commit
  • Version 1.2
    • Added option to init to retrieve followers instead of friends
  • Version 1.3
    • simplified metrics now included in GML file
  • Version 1.4
    • Simplified membership retrieval and improved graphs
  • Version 1.5
    • Changes to community finding and visualization
  • Version 1.6
    • Added support for multiple arguments in edgelist
  • Version 1.7
    • Added ability to add list members to dat file
  • Version 1.8
    • Fetch tweets from list for a given user
  • Version 1.9
    • Renamed favorites to likes
  • Version 1.10
    • Restored possibility to mix files using edgelist
  • Version 1.11
    • Suppress nodes with missing data in edgelist by default
  • Version 1.12
    • Improved init
  • Version 1.13
    • Added option to skip mentions from queries in init

About

Twitter Collection Tool

Resources

Stars

186 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - jdevoo/twecoll: Twitter Collection Tool · GitHub
Skip to content
This repository was archived by the owner on Mar 6, 2019. It is now read-only.

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Twecoll is a Twitter command-line tool written in Python. It can be used to retrieve data from Twitter and purge likes (its only data-altering feature). It is based on a sub-command principle meaning calls to twecoll are based on a keyword which instructs twecoll what to do. Below is a list of examples followed by a brief explanation of each command. Running twecoll requires Python 2.7 and the argparse library. It was tested with igraph 0.6 and 0.7.1. The igraph library is optional and is used to generate a clustered graph of the network.

Note: I am not planning to maintain this further. If you don't care about the likes, have a look at nucoll which provides similar functionality.

Contributors

Thank you to @lucahammer and @PeterTheOne for contributing time, feedback & pull requests to this project.

Installation

Place twecoll in your path and create a working directory to store the data collected. Twecoll creates a number of files and folders to store its data.

  • fdat: directory containing friends of friends files
  • img: directory containing avatar images of friends
  • .dat: extension of account details data (friends, followers, avatar URL, etc. for account friends)
  • .twt: extension of tweets file (timestamp, tweet)
  • .fav: extension of likes file (id, timestamp, user id, screen name, tweet)
  • .gml: extension of edgelist file (nodes and edges)
  • .f: friends data (fdat)

Twecoll uses oauth and has been updated to support the 1.1 version of the Twitter REST API. Register your own copy of twecoll on http://apps.twitter.com and copy the consumer key and secret.

The first time you run a twecoll command, it will ask you for the consumer key and consumer secret. It will then retrieve the oauth token. Follow the instructions on the console. An HTTP Error 401 will be thrown if the key and secret cannot be used to retrieve the access token details.

Examples

Download and Purge Likes

Historically, this was twecoll's main use: download all favorited/liked tweets in a file for search purposes. Let's take the handle 'jdevoo' as an example.

$ twecoll likes jdevoo

This will produce a jdevoo.fav file containing all likes including a tweet ID, timestamp, user ID, handle, text (urf-8). In order to purge the likes, twecoll needs the .fav file. You can the execute:

$ twecoll likes -p jdevoo

This is the only command that alters account data. You will need to select the Read+Write permission model for this to work when registering twecoll.

Downloading Tweets

Twecoll can download up to 3000 tweets for a handle or run search queries.

$ twecoll tweets jdevoo

This would generate a jdevoo.twt file containing all tweets including timestamp and text (utf-8). In order search for tweets related to a certain hashtag or run a more advanced query, use the -q switch and double-quotes around the query string:

$ twecoll tweets -q "#dg2g"

This will also generate a .twt file name with the url-encoded search string.

Generating a Graph

It is possible to generate a GML file of your first and second degree relationships on Twitter. This is a two-step process that takes time due to API throttling by Twitter. In order to generate the graph, twecoll retrieves the handle's friends (or followers) and all friends-of-friends (2nd degree relationships). It then calculates the relations between those, ignoring 2nd degree relationships to which the handle is not connected. In other words, it looks only for friend relationships among the friends/followers of the handle or query tweets initially supplied.

First retrieve the handle details

$ twecoll init jdevoo

This generates a jdevoo.dat file. It also populates an img directory with avatar images. It is also possible to initialize from a .twt file using the -q option. In this example, retrieve friends of each entry in the .dat file.

$ twecoll fetch jdevoo

This populates the fdat directory. You can now generate the graph file using the defaults.

$ twecoll edgelist jdevoo

This generates a jdevoo.gml file in Graph Model Language. If you have installed the python version of igraph, a .png file will also be generated with a visualization of the GML data. You can also use other packages to visualize your GML file, e.g. Gephi. The GML file will include friends, followers, memberships and statuses counts as properties. If followers count is not equal to zero, the friends-to-followers and listed-to-followers ratios will be calculated.

See also the wiki section for more ideas.

Usage

Twecoll has built-in help, version and API status switches invoked with -h, -v and -s respectively. Each command can also be invoked with the help switch for additional information about its sub-options.

$ twecoll -h
usage: twecoll [-h] [-v] [-s]
{resolve,init,fetch,tweets,likes,edgelist} ...
Twitter Collection Tool
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-s, --stats show Twitter throttling stats and exit
sub-commands:
{resolve,init,fetch,tweets,likes,edgelist}
resolve retrieve user_id for screen_name or vice versa
init retrieve friends data for screen_name
fetch retrieve friends of handles in .dat file
tweets retrieve tweets
likes retrieve likes
edgelist generate graph in GML format

Changes

  • Version 1.1
    • Initial commit
  • Version 1.2
    • Added option to init to retrieve followers instead of friends
  • Version 1.3
    • simplified metrics now included in GML file
  • Version 1.4
    • Simplified membership retrieval and improved graphs
  • Version 1.5
    • Changes to community finding and visualization
  • Version 1.6
    • Added support for multiple arguments in edgelist
  • Version 1.7
    • Added ability to add list members to dat file
  • Version 1.8
    • Fetch tweets from list for a given user
  • Version 1.9
    • Renamed favorites to likes
  • Version 1.10
    • Restored possibility to mix files using edgelist
  • Version 1.11
    • Suppress nodes with missing data in edgelist by default
  • Version 1.12
    • Improved init
  • Version 1.13
    • Added option to skip mentions from queries in init

About

Twitter Collection Tool

Resources

Stars

186 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jdevoo/twecoll: Twitter Collection Tool · GitHub
Skip to content
This repository was archived by the owner on Mar 6, 2019. It is now read-only.

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Twecoll is a Twitter command-line tool written in Python. It can be used to retrieve data from Twitter and purge likes (its only data-altering feature). It is based on a sub-command principle meaning calls to twecoll are based on a keyword which instructs twecoll what to do. Below is a list of examples followed by a brief explanation of each command. Running twecoll requires Python 2.7 and the argparse library. It was tested with igraph 0.6 and 0.7.1. The igraph library is optional and is used to generate a clustered graph of the network.

Note: I am not planning to maintain this further. If you don't care about the likes, have a look at nucoll which provides similar functionality.

Contributors

Thank you to @lucahammer and @PeterTheOne for contributing time, feedback & pull requests to this project.

Installation

Place twecoll in your path and create a working directory to store the data collected. Twecoll creates a number of files and folders to store its data.

  • fdat: directory containing friends of friends files
  • img: directory containing avatar images of friends
  • .dat: extension of account details data (friends, followers, avatar URL, etc. for account friends)
  • .twt: extension of tweets file (timestamp, tweet)
  • .fav: extension of likes file (id, timestamp, user id, screen name, tweet)
  • .gml: extension of edgelist file (nodes and edges)
  • .f: friends data (fdat)

Twecoll uses oauth and has been updated to support the 1.1 version of the Twitter REST API. Register your own copy of twecoll on http://apps.twitter.com and copy the consumer key and secret.

The first time you run a twecoll command, it will ask you for the consumer key and consumer secret. It will then retrieve the oauth token. Follow the instructions on the console. An HTTP Error 401 will be thrown if the key and secret cannot be used to retrieve the access token details.

Examples

Download and Purge Likes

Historically, this was twecoll's main use: download all favorited/liked tweets in a file for search purposes. Let's take the handle 'jdevoo' as an example.

$ twecoll likes jdevoo

This will produce a jdevoo.fav file containing all likes including a tweet ID, timestamp, user ID, handle, text (urf-8). In order to purge the likes, twecoll needs the .fav file. You can the execute:

$ twecoll likes -p jdevoo

This is the only command that alters account data. You will need to select the Read+Write permission model for this to work when registering twecoll.

Downloading Tweets

Twecoll can download up to 3000 tweets for a handle or run search queries.

$ twecoll tweets jdevoo

This would generate a jdevoo.twt file containing all tweets including timestamp and text (utf-8). In order search for tweets related to a certain hashtag or run a more advanced query, use the -q switch and double-quotes around the query string:

$ twecoll tweets -q "#dg2g"

This will also generate a .twt file name with the url-encoded search string.

Generating a Graph

It is possible to generate a GML file of your first and second degree relationships on Twitter. This is a two-step process that takes time due to API throttling by Twitter. In order to generate the graph, twecoll retrieves the handle's friends (or followers) and all friends-of-friends (2nd degree relationships). It then calculates the relations between those, ignoring 2nd degree relationships to which the handle is not connected. In other words, it looks only for friend relationships among the friends/followers of the handle or query tweets initially supplied.

First retrieve the handle details

$ twecoll init jdevoo

This generates a jdevoo.dat file. It also populates an img directory with avatar images. It is also possible to initialize from a .twt file using the -q option. In this example, retrieve friends of each entry in the .dat file.

$ twecoll fetch jdevoo

This populates the fdat directory. You can now generate the graph file using the defaults.

$ twecoll edgelist jdevoo

This generates a jdevoo.gml file in Graph Model Language. If you have installed the python version of igraph, a .png file will also be generated with a visualization of the GML data. You can also use other packages to visualize your GML file, e.g. Gephi. The GML file will include friends, followers, memberships and statuses counts as properties. If followers count is not equal to zero, the friends-to-followers and listed-to-followers ratios will be calculated.

See also the wiki section for more ideas.

Usage

Twecoll has built-in help, version and API status switches invoked with -h, -v and -s respectively. Each command can also be invoked with the help switch for additional information about its sub-options.

$ twecoll -h
usage: twecoll [-h] [-v] [-s]
{resolve,init,fetch,tweets,likes,edgelist} ...
Twitter Collection Tool
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-s, --stats show Twitter throttling stats and exit
sub-commands:
{resolve,init,fetch,tweets,likes,edgelist}
resolve retrieve user_id for screen_name or vice versa
init retrieve friends data for screen_name
fetch retrieve friends of handles in .dat file
tweets retrieve tweets
likes retrieve likes
edgelist generate graph in GML format

Changes

  • Version 1.1
    • Initial commit
  • Version 1.2
    • Added option to init to retrieve followers instead of friends
  • Version 1.3
    • simplified metrics now included in GML file
  • Version 1.4
    • Simplified membership retrieval and improved graphs
  • Version 1.5
    • Changes to community finding and visualization
  • Version 1.6
    • Added support for multiple arguments in edgelist
  • Version 1.7
    • Added ability to add list members to dat file
  • Version 1.8
    • Fetch tweets from list for a given user
  • Version 1.9
    • Renamed favorites to likes
  • Version 1.10
    • Restored possibility to mix files using edgelist
  • Version 1.11
    • Suppress nodes with missing data in edgelist by default
  • Version 1.12
    • Improved init
  • Version 1.13
    • Added option to skip mentions from queries in init

About

Twitter Collection Tool

Resources

Stars

186 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jdevoo/twecoll: Twitter Collection Tool · GitHub
Skip to content
This repository was archived by the owner on Mar 6, 2019. It is now read-only.

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Twecoll is a Twitter command-line tool written in Python. It can be used to retrieve data from Twitter and purge likes (its only data-altering feature). It is based on a sub-command principle meaning calls to twecoll are based on a keyword which instructs twecoll what to do. Below is a list of examples followed by a brief explanation of each command. Running twecoll requires Python 2.7 and the argparse library. It was tested with igraph 0.6 and 0.7.1. The igraph library is optional and is used to generate a clustered graph of the network.

Note: I am not planning to maintain this further. If you don't care about the likes, have a look at nucoll which provides similar functionality.

Contributors

Thank you to @lucahammer and @PeterTheOne for contributing time, feedback & pull requests to this project.

Installation

Place twecoll in your path and create a working directory to store the data collected. Twecoll creates a number of files and folders to store its data.

  • fdat: directory containing friends of friends files
  • img: directory containing avatar images of friends
  • .dat: extension of account details data (friends, followers, avatar URL, etc. for account friends)
  • .twt: extension of tweets file (timestamp, tweet)
  • .fav: extension of likes file (id, timestamp, user id, screen name, tweet)
  • .gml: extension of edgelist file (nodes and edges)
  • .f: friends data (fdat)

Twecoll uses oauth and has been updated to support the 1.1 version of the Twitter REST API. Register your own copy of twecoll on http://apps.twitter.com and copy the consumer key and secret.

The first time you run a twecoll command, it will ask you for the consumer key and consumer secret. It will then retrieve the oauth token. Follow the instructions on the console. An HTTP Error 401 will be thrown if the key and secret cannot be used to retrieve the access token details.

Examples

Download and Purge Likes

Historically, this was twecoll's main use: download all favorited/liked tweets in a file for search purposes. Let's take the handle 'jdevoo' as an example.

$ twecoll likes jdevoo

This will produce a jdevoo.fav file containing all likes including a tweet ID, timestamp, user ID, handle, text (urf-8). In order to purge the likes, twecoll needs the .fav file. You can the execute:

$ twecoll likes -p jdevoo

This is the only command that alters account data. You will need to select the Read+Write permission model for this to work when registering twecoll.

Downloading Tweets

Twecoll can download up to 3000 tweets for a handle or run search queries.

$ twecoll tweets jdevoo

This would generate a jdevoo.twt file containing all tweets including timestamp and text (utf-8). In order search for tweets related to a certain hashtag or run a more advanced query, use the -q switch and double-quotes around the query string:

$ twecoll tweets -q "#dg2g"

This will also generate a .twt file name with the url-encoded search string.

Generating a Graph

It is possible to generate a GML file of your first and second degree relationships on Twitter. This is a two-step process that takes time due to API throttling by Twitter. In order to generate the graph, twecoll retrieves the handle's friends (or followers) and all friends-of-friends (2nd degree relationships). It then calculates the relations between those, ignoring 2nd degree relationships to which the handle is not connected. In other words, it looks only for friend relationships among the friends/followers of the handle or query tweets initially supplied.

First retrieve the handle details

$ twecoll init jdevoo

This generates a jdevoo.dat file. It also populates an img directory with avatar images. It is also possible to initialize from a .twt file using the -q option. In this example, retrieve friends of each entry in the .dat file.

$ twecoll fetch jdevoo

This populates the fdat directory. You can now generate the graph file using the defaults.

$ twecoll edgelist jdevoo

This generates a jdevoo.gml file in Graph Model Language. If you have installed the python version of igraph, a .png file will also be generated with a visualization of the GML data. You can also use other packages to visualize your GML file, e.g. Gephi. The GML file will include friends, followers, memberships and statuses counts as properties. If followers count is not equal to zero, the friends-to-followers and listed-to-followers ratios will be calculated.

See also the wiki section for more ideas.

Usage

Twecoll has built-in help, version and API status switches invoked with -h, -v and -s respectively. Each command can also be invoked with the help switch for additional information about its sub-options.

$ twecoll -h
usage: twecoll [-h] [-v] [-s]
{resolve,init,fetch,tweets,likes,edgelist} ...
Twitter Collection Tool
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-s, --stats show Twitter throttling stats and exit
sub-commands:
{resolve,init,fetch,tweets,likes,edgelist}
resolve retrieve user_id for screen_name or vice versa
init retrieve friends data for screen_name
fetch retrieve friends of handles in .dat file
tweets retrieve tweets
likes retrieve likes
edgelist generate graph in GML format

Changes

  • Version 1.1
    • Initial commit
  • Version 1.2
    • Added option to init to retrieve followers instead of friends
  • Version 1.3
    • simplified metrics now included in GML file
  • Version 1.4
    • Simplified membership retrieval and improved graphs
  • Version 1.5
    • Changes to community finding and visualization
  • Version 1.6
    • Added support for multiple arguments in edgelist
  • Version 1.7
    • Added ability to add list members to dat file
  • Version 1.8
    • Fetch tweets from list for a given user
  • Version 1.9
    • Renamed favorites to likes
  • Version 1.10
    • Restored possibility to mix files using edgelist
  • Version 1.11
    • Suppress nodes with missing data in edgelist by default
  • Version 1.12
    • Improved init
  • Version 1.13
    • Added option to skip mentions from queries in init

About

Twitter Collection Tool

Resources

Stars

186 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - jdevoo/twecoll: Twitter Collection Tool · GitHub
Skip to content
This repository was archived by the owner on Mar 6, 2019. It is now read-only.

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Twecoll is a Twitter command-line tool written in Python. It can be used to retrieve data from Twitter and purge likes (its only data-altering feature). It is based on a sub-command principle meaning calls to twecoll are based on a keyword which instructs twecoll what to do. Below is a list of examples followed by a brief explanation of each command. Running twecoll requires Python 2.7 and the argparse library. It was tested with igraph 0.6 and 0.7.1. The igraph library is optional and is used to generate a clustered graph of the network.

Note: I am not planning to maintain this further. If you don't care about the likes, have a look at nucoll which provides similar functionality.

Contributors

Thank you to @lucahammer and @PeterTheOne for contributing time, feedback & pull requests to this project.

Installation

Place twecoll in your path and create a working directory to store the data collected. Twecoll creates a number of files and folders to store its data.

  • fdat: directory containing friends of friends files
  • img: directory containing avatar images of friends
  • .dat: extension of account details data (friends, followers, avatar URL, etc. for account friends)
  • .twt: extension of tweets file (timestamp, tweet)
  • .fav: extension of likes file (id, timestamp, user id, screen name, tweet)
  • .gml: extension of edgelist file (nodes and edges)
  • .f: friends data (fdat)

Twecoll uses oauth and has been updated to support the 1.1 version of the Twitter REST API. Register your own copy of twecoll on http://apps.twitter.com and copy the consumer key and secret.

The first time you run a twecoll command, it will ask you for the consumer key and consumer secret. It will then retrieve the oauth token. Follow the instructions on the console. An HTTP Error 401 will be thrown if the key and secret cannot be used to retrieve the access token details.

Examples

Download and Purge Likes

Historically, this was twecoll's main use: download all favorited/liked tweets in a file for search purposes. Let's take the handle 'jdevoo' as an example.

$ twecoll likes jdevoo

This will produce a jdevoo.fav file containing all likes including a tweet ID, timestamp, user ID, handle, text (urf-8). In order to purge the likes, twecoll needs the .fav file. You can the execute:

$ twecoll likes -p jdevoo

This is the only command that alters account data. You will need to select the Read+Write permission model for this to work when registering twecoll.

Downloading Tweets

Twecoll can download up to 3000 tweets for a handle or run search queries.

$ twecoll tweets jdevoo

This would generate a jdevoo.twt file containing all tweets including timestamp and text (utf-8). In order search for tweets related to a certain hashtag or run a more advanced query, use the -q switch and double-quotes around the query string:

$ twecoll tweets -q "#dg2g"

This will also generate a .twt file name with the url-encoded search string.

Generating a Graph

It is possible to generate a GML file of your first and second degree relationships on Twitter. This is a two-step process that takes time due to API throttling by Twitter. In order to generate the graph, twecoll retrieves the handle's friends (or followers) and all friends-of-friends (2nd degree relationships). It then calculates the relations between those, ignoring 2nd degree relationships to which the handle is not connected. In other words, it looks only for friend relationships among the friends/followers of the handle or query tweets initially supplied.

First retrieve the handle details

$ twecoll init jdevoo

This generates a jdevoo.dat file. It also populates an img directory with avatar images. It is also possible to initialize from a .twt file using the -q option. In this example, retrieve friends of each entry in the .dat file.

$ twecoll fetch jdevoo

This populates the fdat directory. You can now generate the graph file using the defaults.

$ twecoll edgelist jdevoo

This generates a jdevoo.gml file in Graph Model Language. If you have installed the python version of igraph, a .png file will also be generated with a visualization of the GML data. You can also use other packages to visualize your GML file, e.g. Gephi. The GML file will include friends, followers, memberships and statuses counts as properties. If followers count is not equal to zero, the friends-to-followers and listed-to-followers ratios will be calculated.

See also the wiki section for more ideas.

Usage

Twecoll has built-in help, version and API status switches invoked with -h, -v and -s respectively. Each command can also be invoked with the help switch for additional information about its sub-options.

$ twecoll -h
usage: twecoll [-h] [-v] [-s]
{resolve,init,fetch,tweets,likes,edgelist} ...
Twitter Collection Tool
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-s, --stats show Twitter throttling stats and exit
sub-commands:
{resolve,init,fetch,tweets,likes,edgelist}
resolve retrieve user_id for screen_name or vice versa
init retrieve friends data for screen_name
fetch retrieve friends of handles in .dat file
tweets retrieve tweets
likes retrieve likes
edgelist generate graph in GML format

Changes

  • Version 1.1
    • Initial commit
  • Version 1.2
    • Added option to init to retrieve followers instead of friends
  • Version 1.3
    • simplified metrics now included in GML file
  • Version 1.4
    • Simplified membership retrieval and improved graphs
  • Version 1.5
    • Changes to community finding and visualization
  • Version 1.6
    • Added support for multiple arguments in edgelist
  • Version 1.7
    • Added ability to add list members to dat file
  • Version 1.8
    • Fetch tweets from list for a given user
  • Version 1.9
    • Renamed favorites to likes
  • Version 1.10
    • Restored possibility to mix files using edgelist
  • Version 1.11
    • Suppress nodes with missing data in edgelist by default
  • Version 1.12
    • Improved init
  • Version 1.13
    • Added option to skip mentions from queries in init

About

Twitter Collection Tool

Resources

Stars

186 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jdevoo/twecoll: Twitter Collection Tool · GitHub
Skip to content
This repository was archived by the owner on Mar 6, 2019. It is now read-only.

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Twecoll is a Twitter command-line tool written in Python. It can be used to retrieve data from Twitter and purge likes (its only data-altering feature). It is based on a sub-command principle meaning calls to twecoll are based on a keyword which instructs twecoll what to do. Below is a list of examples followed by a brief explanation of each command. Running twecoll requires Python 2.7 and the argparse library. It was tested with igraph 0.6 and 0.7.1. The igraph library is optional and is used to generate a clustered graph of the network.

Note: I am not planning to maintain this further. If you don't care about the likes, have a look at nucoll which provides similar functionality.

Contributors

Thank you to @lucahammer and @PeterTheOne for contributing time, feedback & pull requests to this project.

Installation

Place twecoll in your path and create a working directory to store the data collected. Twecoll creates a number of files and folders to store its data.

  • fdat: directory containing friends of friends files
  • img: directory containing avatar images of friends
  • .dat: extension of account details data (friends, followers, avatar URL, etc. for account friends)
  • .twt: extension of tweets file (timestamp, tweet)
  • .fav: extension of likes file (id, timestamp, user id, screen name, tweet)
  • .gml: extension of edgelist file (nodes and edges)
  • .f: friends data (fdat)

Twecoll uses oauth and has been updated to support the 1.1 version of the Twitter REST API. Register your own copy of twecoll on http://apps.twitter.com and copy the consumer key and secret.

The first time you run a twecoll command, it will ask you for the consumer key and consumer secret. It will then retrieve the oauth token. Follow the instructions on the console. An HTTP Error 401 will be thrown if the key and secret cannot be used to retrieve the access token details.

Examples

Download and Purge Likes

Historically, this was twecoll's main use: download all favorited/liked tweets in a file for search purposes. Let's take the handle 'jdevoo' as an example.

$ twecoll likes jdevoo

This will produce a jdevoo.fav file containing all likes including a tweet ID, timestamp, user ID, handle, text (urf-8). In order to purge the likes, twecoll needs the .fav file. You can the execute:

$ twecoll likes -p jdevoo

This is the only command that alters account data. You will need to select the Read+Write permission model for this to work when registering twecoll.

Downloading Tweets

Twecoll can download up to 3000 tweets for a handle or run search queries.

$ twecoll tweets jdevoo

This would generate a jdevoo.twt file containing all tweets including timestamp and text (utf-8). In order search for tweets related to a certain hashtag or run a more advanced query, use the -q switch and double-quotes around the query string:

$ twecoll tweets -q "#dg2g"

This will also generate a .twt file name with the url-encoded search string.

Generating a Graph

It is possible to generate a GML file of your first and second degree relationships on Twitter. This is a two-step process that takes time due to API throttling by Twitter. In order to generate the graph, twecoll retrieves the handle's friends (or followers) and all friends-of-friends (2nd degree relationships). It then calculates the relations between those, ignoring 2nd degree relationships to which the handle is not connected. In other words, it looks only for friend relationships among the friends/followers of the handle or query tweets initially supplied.

First retrieve the handle details

$ twecoll init jdevoo

This generates a jdevoo.dat file. It also populates an img directory with avatar images. It is also possible to initialize from a .twt file using the -q option. In this example, retrieve friends of each entry in the .dat file.

$ twecoll fetch jdevoo

This populates the fdat directory. You can now generate the graph file using the defaults.

$ twecoll edgelist jdevoo

This generates a jdevoo.gml file in Graph Model Language. If you have installed the python version of igraph, a .png file will also be generated with a visualization of the GML data. You can also use other packages to visualize your GML file, e.g. Gephi. The GML file will include friends, followers, memberships and statuses counts as properties. If followers count is not equal to zero, the friends-to-followers and listed-to-followers ratios will be calculated.

See also the wiki section for more ideas.

Usage

Twecoll has built-in help, version and API status switches invoked with -h, -v and -s respectively. Each command can also be invoked with the help switch for additional information about its sub-options.

$ twecoll -h
usage: twecoll [-h] [-v] [-s]
{resolve,init,fetch,tweets,likes,edgelist} ...
Twitter Collection Tool
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-s, --stats show Twitter throttling stats and exit
sub-commands:
{resolve,init,fetch,tweets,likes,edgelist}
resolve retrieve user_id for screen_name or vice versa
init retrieve friends data for screen_name
fetch retrieve friends of handles in .dat file
tweets retrieve tweets
likes retrieve likes
edgelist generate graph in GML format

Changes

  • Version 1.1
    • Initial commit
  • Version 1.2
    • Added option to init to retrieve followers instead of friends
  • Version 1.3
    • simplified metrics now included in GML file
  • Version 1.4
    • Simplified membership retrieval and improved graphs
  • Version 1.5
    • Changes to community finding and visualization
  • Version 1.6
    • Added support for multiple arguments in edgelist
  • Version 1.7
    • Added ability to add list members to dat file
  • Version 1.8
    • Fetch tweets from list for a given user
  • Version 1.9
    • Renamed favorites to likes
  • Version 1.10
    • Restored possibility to mix files using edgelist
  • Version 1.11
    • Suppress nodes with missing data in edgelist by default
  • Version 1.12
    • Improved init
  • Version 1.13
    • Added option to skip mentions from queries in init

About

Twitter Collection Tool

Resources

Stars

186 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jdevoo/twecoll: Twitter Collection Tool · GitHub
Skip to content
This repository was archived by the owner on Mar 6, 2019. It is now read-only.

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Twecoll is a Twitter command-line tool written in Python. It can be used to retrieve data from Twitter and purge likes (its only data-altering feature). It is based on a sub-command principle meaning calls to twecoll are based on a keyword which instructs twecoll what to do. Below is a list of examples followed by a brief explanation of each command. Running twecoll requires Python 2.7 and the argparse library. It was tested with igraph 0.6 and 0.7.1. The igraph library is optional and is used to generate a clustered graph of the network.

Note: I am not planning to maintain this further. If you don't care about the likes, have a look at nucoll which provides similar functionality.

Contributors

Thank you to @lucahammer and @PeterTheOne for contributing time, feedback & pull requests to this project.

Installation

Place twecoll in your path and create a working directory to store the data collected. Twecoll creates a number of files and folders to store its data.

  • fdat: directory containing friends of friends files
  • img: directory containing avatar images of friends
  • .dat: extension of account details data (friends, followers, avatar URL, etc. for account friends)
  • .twt: extension of tweets file (timestamp, tweet)
  • .fav: extension of likes file (id, timestamp, user id, screen name, tweet)
  • .gml: extension of edgelist file (nodes and edges)
  • .f: friends data (fdat)

Twecoll uses oauth and has been updated to support the 1.1 version of the Twitter REST API. Register your own copy of twecoll on http://apps.twitter.com and copy the consumer key and secret.

The first time you run a twecoll command, it will ask you for the consumer key and consumer secret. It will then retrieve the oauth token. Follow the instructions on the console. An HTTP Error 401 will be thrown if the key and secret cannot be used to retrieve the access token details.

Examples

Download and Purge Likes

Historically, this was twecoll's main use: download all favorited/liked tweets in a file for search purposes. Let's take the handle 'jdevoo' as an example.

$ twecoll likes jdevoo

This will produce a jdevoo.fav file containing all likes including a tweet ID, timestamp, user ID, handle, text (urf-8). In order to purge the likes, twecoll needs the .fav file. You can the execute:

$ twecoll likes -p jdevoo

This is the only command that alters account data. You will need to select the Read+Write permission model for this to work when registering twecoll.

Downloading Tweets

Twecoll can download up to 3000 tweets for a handle or run search queries.

$ twecoll tweets jdevoo

This would generate a jdevoo.twt file containing all tweets including timestamp and text (utf-8). In order search for tweets related to a certain hashtag or run a more advanced query, use the -q switch and double-quotes around the query string:

$ twecoll tweets -q "#dg2g"

This will also generate a .twt file name with the url-encoded search string.

Generating a Graph

It is possible to generate a GML file of your first and second degree relationships on Twitter. This is a two-step process that takes time due to API throttling by Twitter. In order to generate the graph, twecoll retrieves the handle's friends (or followers) and all friends-of-friends (2nd degree relationships). It then calculates the relations between those, ignoring 2nd degree relationships to which the handle is not connected. In other words, it looks only for friend relationships among the friends/followers of the handle or query tweets initially supplied.

First retrieve the handle details

$ twecoll init jdevoo

This generates a jdevoo.dat file. It also populates an img directory with avatar images. It is also possible to initialize from a .twt file using the -q option. In this example, retrieve friends of each entry in the .dat file.

$ twecoll fetch jdevoo

This populates the fdat directory. You can now generate the graph file using the defaults.

$ twecoll edgelist jdevoo

This generates a jdevoo.gml file in Graph Model Language. If you have installed the python version of igraph, a .png file will also be generated with a visualization of the GML data. You can also use other packages to visualize your GML file, e.g. Gephi. The GML file will include friends, followers, memberships and statuses counts as properties. If followers count is not equal to zero, the friends-to-followers and listed-to-followers ratios will be calculated.

See also the wiki section for more ideas.

Usage

Twecoll has built-in help, version and API status switches invoked with -h, -v and -s respectively. Each command can also be invoked with the help switch for additional information about its sub-options.

$ twecoll -h
usage: twecoll [-h] [-v] [-s]
{resolve,init,fetch,tweets,likes,edgelist} ...
Twitter Collection Tool
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-s, --stats show Twitter throttling stats and exit
sub-commands:
{resolve,init,fetch,tweets,likes,edgelist}
resolve retrieve user_id for screen_name or vice versa
init retrieve friends data for screen_name
fetch retrieve friends of handles in .dat file
tweets retrieve tweets
likes retrieve likes
edgelist generate graph in GML format

Changes

  • Version 1.1
    • Initial commit
  • Version 1.2
    • Added option to init to retrieve followers instead of friends
  • Version 1.3
    • simplified metrics now included in GML file
  • Version 1.4
    • Simplified membership retrieval and improved graphs
  • Version 1.5
    • Changes to community finding and visualization
  • Version 1.6
    • Added support for multiple arguments in edgelist
  • Version 1.7
    • Added ability to add list members to dat file
  • Version 1.8
    • Fetch tweets from list for a given user
  • Version 1.9
    • Renamed favorites to likes
  • Version 1.10
    • Restored possibility to mix files using edgelist
  • Version 1.11
    • Suppress nodes with missing data in edgelist by default
  • Version 1.12
    • Improved init
  • Version 1.13
    • Added option to skip mentions from queries in init

About

Twitter Collection Tool

Resources

Stars

186 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - jdevoo/twecoll: Twitter Collection Tool · GitHub
Skip to content
This repository was archived by the owner on Mar 6, 2019. It is now read-only.

Latest commit

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Twecoll is a Twitter command-line tool written in Python. It can be used to retrieve data from Twitter and purge likes (its only data-altering feature). It is based on a sub-command principle meaning calls to twecoll are based on a keyword which instructs twecoll what to do. Below is a list of examples followed by a brief explanation of each command. Running twecoll requires Python 2.7 and the argparse library. It was tested with igraph 0.6 and 0.7.1. The igraph library is optional and is used to generate a clustered graph of the network.

Note: I am not planning to maintain this further. If you don't care about the likes, have a look at nucoll which provides similar functionality.

Contributors

Thank you to @lucahammer and @PeterTheOne for contributing time, feedback & pull requests to this project.

Installation

Place twecoll in your path and create a working directory to store the data collected. Twecoll creates a number of files and folders to store its data.

  • fdat: directory containing friends of friends files
  • img: directory containing avatar images of friends
  • .dat: extension of account details data (friends, followers, avatar URL, etc. for account friends)
  • .twt: extension of tweets file (timestamp, tweet)
  • .fav: extension of likes file (id, timestamp, user id, screen name, tweet)
  • .gml: extension of edgelist file (nodes and edges)
  • .f: friends data (fdat)

Twecoll uses oauth and has been updated to support the 1.1 version of the Twitter REST API. Register your own copy of twecoll on http://apps.twitter.com and copy the consumer key and secret.

The first time you run a twecoll command, it will ask you for the consumer key and consumer secret. It will then retrieve the oauth token. Follow the instructions on the console. An HTTP Error 401 will be thrown if the key and secret cannot be used to retrieve the access token details.

Examples

Download and Purge Likes

Historically, this was twecoll's main use: download all favorited/liked tweets in a file for search purposes. Let's take the handle 'jdevoo' as an example.

$ twecoll likes jdevoo

This will produce a jdevoo.fav file containing all likes including a tweet ID, timestamp, user ID, handle, text (urf-8). In order to purge the likes, twecoll needs the .fav file. You can the execute:

$ twecoll likes -p jdevoo

This is the only command that alters account data. You will need to select the Read+Write permission model for this to work when registering twecoll.

Downloading Tweets

Twecoll can download up to 3000 tweets for a handle or run search queries.

$ twecoll tweets jdevoo

This would generate a jdevoo.twt file containing all tweets including timestamp and text (utf-8). In order search for tweets related to a certain hashtag or run a more advanced query, use the -q switch and double-quotes around the query string:

$ twecoll tweets -q "#dg2g"

This will also generate a .twt file name with the url-encoded search string.

Generating a Graph

It is possible to generate a GML file of your first and second degree relationships on Twitter. This is a two-step process that takes time due to API throttling by Twitter. In order to generate the graph, twecoll retrieves the handle's friends (or followers) and all friends-of-friends (2nd degree relationships). It then calculates the relations between those, ignoring 2nd degree relationships to which the handle is not connected. In other words, it looks only for friend relationships among the friends/followers of the handle or query tweets initially supplied.

First retrieve the handle details

$ twecoll init jdevoo

This generates a jdevoo.dat file. It also populates an img directory with avatar images. It is also possible to initialize from a .twt file using the -q option. In this example, retrieve friends of each entry in the .dat file.

$ twecoll fetch jdevoo

This populates the fdat directory. You can now generate the graph file using the defaults.

$ twecoll edgelist jdevoo

This generates a jdevoo.gml file in Graph Model Language. If you have installed the python version of igraph, a .png file will also be generated with a visualization of the GML data. You can also use other packages to visualize your GML file, e.g. Gephi. The GML file will include friends, followers, memberships and statuses counts as properties. If followers count is not equal to zero, the friends-to-followers and listed-to-followers ratios will be calculated.

See also the wiki section for more ideas.

Usage

Twecoll has built-in help, version and API status switches invoked with -h, -v and -s respectively. Each command can also be invoked with the help switch for additional information about its sub-options.

$ twecoll -h
usage: twecoll [-h] [-v] [-s]
{resolve,init,fetch,tweets,likes,edgelist} ...
Twitter Collection Tool
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-s, --stats show Twitter throttling stats and exit
sub-commands:
{resolve,init,fetch,tweets,likes,edgelist}
resolve retrieve user_id for screen_name or vice versa
init retrieve friends data for screen_name
fetch retrieve friends of handles in .dat file
tweets retrieve tweets
likes retrieve likes
edgelist generate graph in GML format

Changes

  • Version 1.1
    • Initial commit
  • Version 1.2
    • Added option to init to retrieve followers instead of friends
  • Version 1.3
    • simplified metrics now included in GML file
  • Version 1.4
    • Simplified membership retrieval and improved graphs
  • Version 1.5
    • Changes to community finding and visualization
  • Version 1.6
    • Added support for multiple arguments in edgelist
  • Version 1.7
    • Added ability to add list members to dat file
  • Version 1.8
    • Fetch tweets from list for a given user
  • Version 1.9
    • Renamed favorites to likes
  • Version 1.10
    • Restored possibility to mix files using edgelist
  • Version 1.11
    • Suppress nodes with missing data in edgelist by default
  • Version 1.12
    • Improved init
  • Version 1.13
    • Added option to skip mentions from queries in init

About

Twitter Collection Tool

Resources

Stars

186 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages