social_cleaner 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 23f47ebec3840e96094d085251c99e697ac3fa2a
4
+ data.tar.gz: a34f4fa1a2033132f4de85d588c6ca30e0ce31b8
5
+ SHA512:
6
+ metadata.gz: 9e77c70a3f9635c792da22e026467eec4d948a9834482b0b475cc1dfbe61eeb859f459bbc6a337fd60fd784dd7f7f2dbca60b5e9d04064fb82a00e7a45bdab32
7
+ data.tar.gz: cfec480947ab08c9246e1c44e616eaa0b849fe15dea7e59e8e8ead4fd49b5ec7f5f68b93bc736a4c1e53bc64712bd898204b22a712953f9e122159d1f33246bc
@@ -0,0 +1,15 @@
1
+ .DS_Store
2
+ .idea
3
+ *.iml
4
+ ._*
5
+ .~*
6
+ .bundle
7
+ tmp/*
8
+ log/*.log
9
+ pkg
10
+ *.gem
11
+ media/*
12
+ *.lock
13
+ *.swp
14
+ config.yml
15
+ script.rb
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in test.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Michaël Rigart
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,19 @@
1
+ README (draft)
2
+ ======
3
+
4
+ install the gem:
5
+
6
+ gem install social_cleaner
7
+
8
+ Then make a ruby script:
9
+
10
+ #!/usr/bin/ruby
11
+ #
12
+ # Get requires out of the way
13
+ require 'social_cleaner'
14
+
15
+ cleaner = SocialCleaner::Twitr.new(consumer_token, consumer_secret, access_token, access_secret, delete_after_days)
16
+ cleaner.delete_messages
17
+
18
+
19
+ Save the file, make it executeable and run like ./script.rb or put it in a cronjob
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -1,8 +1,3 @@
1
- # Get requires out of the way
2
- require 'rubygems'
3
- require 'twitter'
4
- require 'time'
5
-
6
1
  require 'social_cleaner/twitr.rb'
7
2
 
8
3
  module SocialCleaner
@@ -1,79 +1,53 @@
1
- module SocialCleaner
2
-
3
- class Twitr
4
-
5
- # parameters
6
- attr_accessor :consumer_token, :consumer_secret, :access_token, :access_secret, :delete_after_days
7
-
8
- # client object
9
- attr_accessor :client
1
+ require 'twitter'
2
+ require 'time'
10
3
 
11
- # tweet id's to be deleted
12
- attr_accessor :expire_ids, :expire_before
13
-
14
-
15
- def initialize(consumer_token, consumer_secret, access_token, access_secret, delete_after_days)
16
- self.consumer_token = consumer_token
17
- self.consumer_secret = consumer_secret
18
- self.access_token = access_token
19
- self.access_secret = access_secret
20
- self.delete_after_days = delete_after_days
21
- self.expire_ids = []
22
- end
4
+ module SocialCleaner
23
5
 
6
+ class Twitr
24
7
 
25
- def create_client
26
- # Let's get a Twitter Client created
27
- oauth = Twitter::OAuth.new(self.consumer_token, self.consumer_secret)
28
- oauth.authorize_from_access(self.access_token, self.access_secret)
8
+ attr_accessor :consumer_token, :consumer_secret, :access_token, :access_secret, :delete_after_days
29
9
 
30
- self.client = Twitter::Base.new(oauth)
31
- end
10
+ def initialize(consumer_token, consumer_secret, access_token, access_secret, delete_after_days)
11
+ self.consumer_token = consumer_token
12
+ self.consumer_secret = consumer_secret
13
+ self.access_token = access_token
14
+ self.access_secret = access_secret
15
+ self.delete_after_days = delete_after_days
16
+ end
32
17
 
18
+ def delete_messages
19
+ Twitter.configure do |config|
20
+ config.consumer_key = consumer_token
21
+ config.consumer_secret = consumer_secret
22
+ config.oauth_token = access_token
23
+ config.oauth_token_secret = access_secret
24
+ end
33
25
 
34
- def add_tweets_to_queue(statusses)
35
- statusses.each do |status|
36
- if Time.parse(status["created_at"]) < self.expire_before
37
- $stderr.puts "Queueing tweet delete status ID #{status["id"]} created at #{status["created_at"]} (#{status["text"]})."
38
- $stdout.puts "#{status["id"]}\t\t#{status["created_at"]}\t\t#{status["text"]}"
39
- self.expire_ids.push(status["id"])
40
- end
41
- end
42
- end
26
+ expire_before = Time.now - (delete_after_days * 60 * 60 * 24)
27
+ expire_ids = []
43
28
 
29
+ puts "Expiring all Twitter updates prior to #{expire_before.to_s}."
44
30
 
45
- def delete_tweets
46
- self.expire_ids.each do |delete_status|
47
- $stderr.puts "Deleting #{delete_status}..."
48
- self.client.status_destroy(delete_status)
49
- end
31
+ Twitter.user_timeline(count: 200).each do |status|
32
+ if status[:created_at] < expire_before
33
+ puts "Queueing delete status ID #{status[:id]} created at #{status[:created_at]} (#{status[:text]})."
34
+ expire_ids.push(status[:id])
50
35
  end
36
+ end
51
37
 
38
+ # Now we'll sort the array, this will have the affect of putting the oldest items first in
39
+ # the list to be deleted.
40
+ expire_ids.sort!
52
41
 
53
- def delete_messages
54
- # Create client object
55
- create_client
56
-
57
- # Expire deadline
58
- self.expire_before = Time.now - (self.delete_after_days.to_i * 60 * 60 * 24)
59
-
60
- $stderr.puts "Expiring all Twitter updates prior to #{self.expire_before.to_s}."
61
-
62
- # Iterate through timeline
63
- # The old tweet id's don't contain a timestamp. maybe implement this for later?
64
- add_tweets_to_queue(self.client.user_timeline)
65
- add_tweets_to_queue(self.client.retweeted_by_me)
42
+ puts "Deleting #{expire_ids.length} tweets."
66
43
 
67
- # Now we'll sort the array, this will have the affect of putting the oldest items first in
68
- # the list to be deleted.
69
- self.expire_ids.sort!
70
-
71
- $stderr.puts "Deleting #{self.expire_ids.length} tweets."
72
-
73
- # Now let's delete the stuff
74
- # Note: the delete method is not rate limited.
75
- delete_tweets
76
- end
44
+ # Now let's delete the stuff
45
+ # Note: the delete method is not rate limited.
46
+ expire_ids.each do |delete_status|
47
+ puts "Deleting #{delete_status}..."
48
+ Twitter.status_destroy(delete_status)
49
+ end
77
50
  end
51
+ end
78
52
  end
79
53
 
@@ -0,0 +1,3 @@
1
+ module SocialCleaner
2
+ VERSION = '0.0.5'
3
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'social_cleaner/version'
5
+
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'social_cleaner'
9
+ spec.version = SocialCleaner::VERSION
10
+ spec.authors = %w(Michaël Rigart)
11
+ spec.email = %w(michael@netronix.be)
12
+ spec.summary = 'Clean social media messages'
13
+ spec.description = 'Clean all messages from social media'
14
+ spec.homepage = 'http://www.michaelrigart.be/'
15
+ spec.license = 'MIT'
16
+
17
+ spec.files = `git ls-files`.split($/)
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |file| File.basename(file) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = %w(lib)
21
+
22
+ spec.add_dependency 'twitter', '>= 4.8'
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'rake'
26
+ end
metadata CHANGED
@@ -1,84 +1,97 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: social_cleaner
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 4
10
- version: 0.0.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
11
5
  platform: ruby
12
- authors:
13
- - "Micha\xC3\xABl Rigart"
6
+ authors:
7
+ - Michaël
8
+ - Rigart
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2010-10-26 00:00:00 +02:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2013-07-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: twitter
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - "="
28
- - !ruby/object:Gem::Version
29
- hash: 35
30
- segments:
31
- - 0
32
- - 9
33
- - 12
34
- version: 0.9.12
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '4.8'
35
21
  type: :runtime
36
- version_requirements: *id001
37
- description: Cleans up your social messages
38
- email: michael@netronix.be
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '4.8'
28
+ - !ruby/object:Gem::Dependency
29
+ name: bundler
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: '1.3'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '1.3'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ description: Clean all messages from social media
57
+ email:
58
+ - michael@netronix.be
39
59
  executables: []
40
-
41
60
  extensions: []
42
-
43
- extra_rdoc_files:
44
- - README
45
- files:
61
+ extra_rdoc_files: []
62
+ files:
63
+ - .gitignore
64
+ - Gemfile
65
+ - LICENSE.txt
46
66
  - README
67
+ - README.md
68
+ - Rakefile
47
69
  - lib/social_cleaner.rb
48
70
  - lib/social_cleaner/twitr.rb
49
- has_rdoc: true
50
- homepage: http://www.netronix.be
51
- licenses: []
52
-
71
+ - lib/social_cleaner/version.rb
72
+ - social_cleaner.gemspec
73
+ homepage: http://www.michaelrigart.be/
74
+ licenses:
75
+ - MIT
76
+ metadata: {}
53
77
  post_install_message:
54
- rdoc_options:
55
- - --charset=UTF-8
56
- require_paths:
78
+ rdoc_options: []
79
+ require_paths:
57
80
  - lib
58
- required_ruby_version: !ruby/object:Gem::Requirement
59
- none: false
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- hash: 3
64
- segments:
65
- - 0
66
- version: "0"
67
- required_rubygems_version: !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
76
91
  requirements: []
77
-
78
- rubyforge_project: nowarning
79
- rubygems_version: 1.3.7
92
+ rubyforge_project:
93
+ rubygems_version: 2.0.2
80
94
  signing_key:
81
- specification_version: 3
82
- summary: Social Cleaner
95
+ specification_version: 4
96
+ summary: Clean social media messages
83
97
  test_files: []
84
-