delish 0.5.2 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
data/bin/delish CHANGED
@@ -16,14 +16,14 @@ end
16
16
 
17
17
  #{{{ Output only and debug
18
18
  unless ARGV[1].nil?
19
- @@OUTPUT_ONLY = true
19
+ OUTPUT_ONLY = true
20
20
  unless ARGV[2].nil?
21
- @@DEBUG = true
21
+ DEBUG = true
22
22
  else
23
- @@DEBUG = false
23
+ DEBUG = false
24
24
  end
25
25
  else
26
- @@OUTPUT_ONLY = false
26
+ OUTPUT_ONLY = false
27
27
  end
28
28
  #}}}
29
29
 
@@ -31,7 +31,7 @@ require 'delish_bookmark_search.rb'
31
31
 
32
32
  delish_bookmark_search = Delish_Bookmark_Search.new(string, db)
33
33
 
34
- if @@OUTPUT_ONLY
34
+ if OUTPUT_ONLY
35
35
  delish_bookmark_search.each { |bookmark| puts "#{bookmark[1]}: [#{bookmark[0]}]" }
36
36
  else
37
37
  delish_bookmark_search.each { |bookmark| `#{@@DELISH_COMMAND} #{bookmark[0]}` }
data/bin/import_delicious CHANGED
@@ -5,45 +5,64 @@ require 'rexml/document'
5
5
  require 'net/https'
6
6
  require 'sqlite3'
7
7
 
8
-
9
-
10
8
  user = ENV['delish_user']
11
9
  pass = ENV['delish_pass']
12
10
 
13
11
  db = SQLite3::Database.new( "#{ENV['HOME']}/.delish" )
14
12
 
15
- # Create the table!!!
16
- db.execute <<SQL
17
- CREATE TABLE posts (
18
- url VARCHAR(16384),
19
- description VARCHAR(255),
20
- extended VARCHAR(255),
21
- created DATETIME,
22
- hash CHAR(32) PRIMARY KEY,
23
- accessed DATETIME
24
- );
25
- SQL
13
+ class ImportDelish
14
+
15
+ #{{{ initialize(user, pass, db)
16
+ def initialize(user, pass, db)
17
+ @user = user
18
+ @pass = pass
19
+ @db = db
20
+ end
21
+ #}}}
22
+
23
+ #{{{ create_database
24
+ def create_database
25
+ # Create the table!!!
26
+ @db.execute %{
27
+ CREATE TABLE posts (
28
+ url VARCHAR(16384),
29
+ description VARCHAR(255),
30
+ extended VARCHAR(255),
31
+ created DATETIME,
32
+ hash CHAR(32) PRIMARY KEY,
33
+ accessed DATETIME
34
+ );
35
+ }
26
36
 
27
- db.execute <<SQL
28
- CREATE TABLE post_tags (
29
- hash CHAR(32),
30
- tag VARCHAR(255)
31
- );
32
- SQL
37
+ @db.execute %{
38
+ CREATE TABLE post_tags (
39
+ hash CHAR(32),
40
+ tag_id INTEGER
41
+ );}
33
42
 
34
- # User-Agent: required for del.icio.us api
35
- agent = 'delish commandline client 0.4'
43
+ @db.execute %{
44
+ CREATE TABLE tags (
45
+ tag VARCHAR(255) UNIQUE,
46
+ id INTEGER PRIMARY KEY AUTOINCREMENT
47
+ );}
48
+ end
49
+ #}}}
36
50
 
37
- http = Net::HTTP.new('api.del.icio.us', 443)
38
- http.use_ssl = true
39
- http.start do |http|
40
- request = Net::HTTP::Get.new('/v1/posts/all', {'User-Agent' => agent})
41
- request.basic_auth user, pass
42
- response = http.request(request)
51
+ #{{{ get_all_tags
52
+ def get_all_tags
53
+ # User-Agent: required for del.icio.us api
54
+ agent = 'delish commandline client 0.6.1'
43
55
 
44
- data = REXML::Document.new(response.body)
45
- data.elements.each("/posts/post") do |post|
46
- db.execute(
56
+ http = Net::HTTP.new('api.del.icio.us', 443)
57
+ http.use_ssl = true
58
+ http.start do |http|
59
+ request = Net::HTTP::Get.new('/v1/posts/all', {'User-Agent' => agent})
60
+ request.basic_auth @user, @pass
61
+ response = http.request(request)
62
+
63
+ data = REXML::Document.new(response.body)
64
+ data.elements.each("/posts/post") do |post|
65
+ @db.execute(
47
66
  "INSERT INTO posts
48
67
  (url, description, extended, created, accessed, hash) VALUES
49
68
  (?, ?, ?, JULIANDAY(?), JULIANDAY(?), ?);",
@@ -52,18 +71,27 @@ http.start do |http|
52
71
  post.attributes['extended'],
53
72
  post.attributes['time'].chop,
54
73
  post.attributes['time'].chop,
55
- post.attributes['hash']
56
- )
74
+ post.attributes['hash'])
57
75
 
58
- post.attributes['tag'].split(' ').each do |tag|
59
- db.execute(
60
- "INSERT INTO post_tags
61
- (hash, tag) VALUES
62
- (?, ?);",
63
- post.attributes['hash'],
64
- tag
65
- )
76
+ post.attributes['tag'].split(' ').each do |tag|
77
+ @db.execute(
78
+ %{INSERT OR IGNORE INTO tags (tag) VALUES (?);},
79
+ tag)
80
+ tag_id = @db.execute( %{ SELECT id FROM tags WHERE tag = ?}, tag)[0]
81
+ @db.execute(
82
+ "INSERT INTO post_tags (hash, tag_id)
83
+ VALUES (?, ?);",
84
+ post.attributes['hash'],
85
+ tag_id)
86
+ end
66
87
  end
67
88
  end
89
+ end
90
+ #}}}
91
+
68
92
  end
69
93
 
94
+ import = ImportDelish.new(user, pass, db)
95
+ import.create_database
96
+ import.get_all_tags
97
+
@@ -249,14 +249,14 @@ class Delish_Bookmark_Search
249
249
  end
250
250
 
251
251
  statement += " FROM posts"
252
- @tag_count.times { |i| statement += ", post_tags AS pt#{i}" }
252
+ @tag_count.times { |i| statement += ", post_tags AS pt#{i}, tags AS t#{i}" }
253
253
  statement += " WHERE "
254
- @tag_count.times { |i| statement += "pt#{i}.hash == posts.hash AND " }
254
+ @tag_count.times { |i| statement += "pt#{i}.hash == posts.hash AND pt#{i}.tag_id = t#{i}.id AND " }
255
255
 
256
256
  tag_count = 0
257
257
  @sss.each_with_index do |ssql,i|
258
258
  while ssql.statement.include? "PLACEHOLDER"
259
- ssql.statement.sub!("PLACEHOLDER", "pt#{tag_count}.tag")
259
+ ssql.statement.sub!("PLACEHOLDER", "t#{tag_count}.tag")
260
260
  tag_count += 1
261
261
  end
262
262
  statement += ssql.statement
data/test/test_db CHANGED
Binary file
metadata CHANGED
@@ -3,13 +3,13 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: delish
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.5.2
7
- date: 2007-07-03 00:00:00 -06:00
6
+ version: 0.6.1
7
+ date: 2007-07-04 00:00:00 -06:00
8
8
  summary: Allows use of del.icio.us bookmarksfrom the commandline with minimum keystrokes
9
9
  require_paths:
10
10
  - lib
11
11
  email: frioux@gmail.com
12
- homepage: http://afoolishmanifesto.com
12
+ homepage: http://delish.rubyforge.com
13
13
  rubyforge_project:
14
14
  description:
15
15
  autorequire: