wptools 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.idea/wptools.iml +33 -0
- data/Gemfile.lock +4 -2
- data/README.md +23 -5
- data/lib/wptools/version.rb +1 -1
- data/lib/wptools/wp_post.rb +28 -0
- data/lib/wptools/wp_term.rb +19 -0
- data/lib/wptools/wp_term_relationship.rb +10 -0
- data/lib/wptools/wp_term_taxonomy.rb +40 -0
- data/lib/wptools.rb +11 -6
- metadata +4 -3
- data/lib/wptools/wp_term_taxnomy.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4525916f493bf92ca63072d790555c33121062bebd781e4cff04dc7322972824
|
4
|
+
data.tar.gz: a3c53d8f2c855fcc651059bae59d5b4a60c7949e906bd23b104511de0dd9677f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9c76877aa47f2cab544f93d58dc83e46fd2cf5ec0b5abbbfb06aa9d1aa57ab8b38d070786e100872bed70fb321dea5bc3bd31d3c587383666e799a3af14381a
|
7
|
+
data.tar.gz: 3aea5301d867def37ea02c01fe9221ade2d58a1fc9a2676c1e42f5e3954308f918b55bd877ba5b60aeed042f04e98abd03befe2ca56d908689d1e06a797e94eb
|
data/.gitignore
CHANGED
data/.idea/wptools.iml
CHANGED
@@ -267,4 +267,37 @@
|
|
267
267
|
</library>
|
268
268
|
</orderEntry>
|
269
269
|
</component>
|
270
|
+
<component name="RakeTasksCache-v2">
|
271
|
+
<option name="myRootTask">
|
272
|
+
<RakeTaskImpl id="rake">
|
273
|
+
<subtasks>
|
274
|
+
<RakeTaskImpl description="Build wptools-0.1.0.gem into the pkg directory" fullCommand="build" id="build" />
|
275
|
+
<RakeTaskImpl id="build">
|
276
|
+
<subtasks>
|
277
|
+
<RakeTaskImpl description="Generate SHA512 checksum if wptools-0.1.0.gem into the checksums directory" fullCommand="build:checksum" id="checksum" />
|
278
|
+
</subtasks>
|
279
|
+
</RakeTaskImpl>
|
280
|
+
<RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
|
281
|
+
<RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
|
282
|
+
<RakeTaskImpl description="Build and install wptools-0.1.0.gem into system gems" fullCommand="install" id="install" />
|
283
|
+
<RakeTaskImpl id="install">
|
284
|
+
<subtasks>
|
285
|
+
<RakeTaskImpl description="Build and install wptools-0.1.0.gem into system gems without network access" fullCommand="install:local" id="local" />
|
286
|
+
</subtasks>
|
287
|
+
</RakeTaskImpl>
|
288
|
+
<RakeTaskImpl description="Create tag v0.1.0 and build and push wptools-0.1.0.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
|
289
|
+
<RakeTaskImpl description="Run tests" fullCommand="test" id="test" />
|
290
|
+
<RakeTaskImpl description="" fullCommand="default" id="default" />
|
291
|
+
<RakeTaskImpl description="" fullCommand="release" id="release" />
|
292
|
+
<RakeTaskImpl id="release">
|
293
|
+
<subtasks>
|
294
|
+
<RakeTaskImpl description="" fullCommand="release:guard_clean" id="guard_clean" />
|
295
|
+
<RakeTaskImpl description="" fullCommand="release:rubygem_push" id="rubygem_push" />
|
296
|
+
<RakeTaskImpl description="" fullCommand="release:source_control_push" id="source_control_push" />
|
297
|
+
</subtasks>
|
298
|
+
</RakeTaskImpl>
|
299
|
+
</subtasks>
|
300
|
+
</RakeTaskImpl>
|
301
|
+
</option>
|
302
|
+
</component>
|
270
303
|
</module>
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
wptools (0.
|
4
|
+
wptools (0.2.0)
|
5
5
|
activerecord
|
6
6
|
mysql2
|
7
7
|
|
@@ -29,11 +29,13 @@ GEM
|
|
29
29
|
concurrent-ruby (1.2.3)
|
30
30
|
connection_pool (2.4.1)
|
31
31
|
drb (2.2.1)
|
32
|
-
i18n (1.14.
|
32
|
+
i18n (1.14.3)
|
33
33
|
concurrent-ruby (~> 1.0)
|
34
|
+
racc (~> 1.7)
|
34
35
|
minitest (5.22.2)
|
35
36
|
mutex_m (0.2.0)
|
36
37
|
mysql2 (0.5.6)
|
38
|
+
racc (1.7.3)
|
37
39
|
rake (10.5.0)
|
38
40
|
timeout (0.4.1)
|
39
41
|
tzinfo (2.0.6)
|
data/README.md
CHANGED
@@ -17,22 +17,40 @@ WordPressのテーブルを扱うスクリプト
|
|
17
17
|
|
18
18
|
### 記事一覧の表示
|
19
19
|
|
20
|
-
-
|
20
|
+
- 「--command=list」を指定すると記事一覧を表示する。「-l 10」で10件表示する。
|
21
21
|
```
|
22
|
-
./
|
22
|
+
./run_wptools.sh --command=list -l 10 config/config_sample.yml
|
23
23
|
```
|
24
24
|
|
25
25
|
### バズった記事の表示
|
26
26
|
|
27
27
|
- DBから取得したページ一覧とGoogleAnalyticsのCSVデータを突き合わせる
|
28
28
|
- Googleアナリスティックスで「行動 > サイトコンテンツ > すべてのページ」を開く。
|
29
|
-
|
30
|
-
-
|
29
|
+
- 期間を月単位で指定して表示する行数を5000に。CSV形式でエクスポートを実行。
|
30
|
+
- 「--command=buzz」を指定するとバズった記事を表示する。「-b」でGoogleAnalyticsのCSVデータを指定する。
|
31
31
|
```
|
32
|
-
./
|
32
|
+
./run_wptools.sh --command=buzz data/Analytics_20200201-20200229.csv
|
33
33
|
```
|
34
34
|
- 結果をGoogleスプレッドシートに貼り付け。貼り付けたあと右下のメニューから列を選択すればCSV形式になる。
|
35
35
|
|
36
|
+
### DBを操作する
|
37
|
+
|
38
|
+
- 以下のようなrbスクリプト(test.rb)を作成。
|
39
|
+
```ruby
|
40
|
+
require "wptools"
|
41
|
+
|
42
|
+
STDOUT.sync = true
|
43
|
+
Wptools::Command.run(ARGV)
|
44
|
+
Wptools::WpPost.published_posts.order(post_date: "DESC").limit(100).each do | post|
|
45
|
+
print "#{post.id} #{post.post_type} #{post.post_date_str} #{post.post_title} #{post.post_name}\n"
|
46
|
+
end
|
47
|
+
|
48
|
+
```
|
49
|
+
- これを「--command=none」で呼び出す。
|
50
|
+
```
|
51
|
+
ruby test.rb --command=none config/config_sample.yml
|
52
|
+
```
|
53
|
+
|
36
54
|
|
37
55
|
## ライセンス
|
38
56
|
|
data/lib/wptools/version.rb
CHANGED
data/lib/wptools/wp_post.rb
CHANGED
@@ -4,6 +4,34 @@ require 'active_record'
|
|
4
4
|
|
5
5
|
module Wptools
|
6
6
|
|
7
|
+
# +-----------------------+-----------------+------+-----+---------------------+----------------+
|
8
|
+
# | Field | Type | Null | Key | Default | Extra |
|
9
|
+
# +-----------------------+-----------------+------+-----+---------------------+----------------+
|
10
|
+
# | ID | bigint unsigned | NO | PRI | NULL | auto_increment |
|
11
|
+
# | post_author | bigint unsigned | NO | MUL | 0 | |
|
12
|
+
# | post_date | datetime | NO | | 0000-00-00 00:00:00 | |
|
13
|
+
# | post_date_gmt | datetime | NO | | 0000-00-00 00:00:00 | |
|
14
|
+
# | post_content | longtext | NO | MUL | NULL | |
|
15
|
+
# | post_title | mediumtext | NO | MUL | NULL | |
|
16
|
+
# | post_excerpt | mediumtext | NO | | NULL | |
|
17
|
+
# | post_status | varchar(20) | NO | | publish | |
|
18
|
+
# | comment_status | varchar(20) | NO | | open | |
|
19
|
+
# | ping_status | varchar(20) | NO | | open | |
|
20
|
+
# | post_password | varchar(255) | NO | | | |
|
21
|
+
# | post_name | varchar(200) | NO | MUL | | |
|
22
|
+
# | to_ping | mediumtext | NO | | NULL | |
|
23
|
+
# | pinged | mediumtext | NO | | NULL | |
|
24
|
+
# | post_modified | datetime | NO | | 0000-00-00 00:00:00 | |
|
25
|
+
# | post_modified_gmt | datetime | NO | | 0000-00-00 00:00:00 | |
|
26
|
+
# | post_content_filtered | longtext | NO | | NULL | |
|
27
|
+
# | post_parent | bigint unsigned | NO | MUL | 0 | |
|
28
|
+
# | guid | varchar(255) | NO | | | |
|
29
|
+
# | menu_order | int | NO | | 0 | |
|
30
|
+
# | post_type | varchar(20) | NO | MUL | post | |
|
31
|
+
# | post_mime_type | varchar(100) | NO | | | |
|
32
|
+
# | comment_count | bigint | NO | | 0 | |
|
33
|
+
# +-----------------------+-----------------+------+-----+---------------------+----------------+
|
34
|
+
|
7
35
|
##### wp_posts: 投稿などを保存
|
8
36
|
# id: 投稿ID
|
9
37
|
# post_title: タイトル
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Wptools
|
2
|
+
# +------------+---------------------+------+-----+---------+----------------+
|
3
|
+
# | Field | Type | Null | Key | Default | Extra |
|
4
|
+
# +------------+---------------------+------+-----+---------+----------------+
|
5
|
+
# | term_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
|
6
|
+
# | name | varchar(200) | NO | MUL | | |
|
7
|
+
# | slug | varchar(200) | NO | UNI | | |
|
8
|
+
# | term_group | bigint(10) | NO | | 0 | |
|
9
|
+
# +------------+---------------------+------+-----+---------+----------------+
|
10
|
+
#
|
11
|
+
# タグやカテゴリーの情報が保存されている
|
12
|
+
#
|
13
|
+
class WpTerm < ActiveRecord::Base
|
14
|
+
self.primary_key = 'term_id'
|
15
|
+
has_one :wp_term_taxonomy, foreign_key: :term_id
|
16
|
+
has_many :wp_term_relationships, through: :wp_term_taxonomy
|
17
|
+
has_many :wp_posts, through: :wp_term_relationships
|
18
|
+
end
|
19
|
+
end
|
@@ -1,7 +1,17 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
|
3
3
|
module Wptools
|
4
|
+
# +------------------+---------------------+------+-----+---------+-------+
|
5
|
+
# | Field | Type | Null | Key | Default | Extra |
|
6
|
+
# +------------------+---------------------+------+-----+---------+-------+
|
7
|
+
# | object_id | bigint(20) unsigned | NO | PRI | 0 | |
|
8
|
+
# | term_taxonomy_id | bigint(20) unsigned | NO | PRI | 0 | |
|
9
|
+
# | term_order | int(11) | NO | | 0 | |
|
10
|
+
# +------------------+---------------------+------+-----+---------+-------+
|
11
|
+
# object_idとterm_taxonomy_idの組み合わせが主キー
|
12
|
+
#
|
4
13
|
class WpTermRelationship < ActiveRecord::Base
|
14
|
+
self.primary_key = 'term_taxonomy_id'
|
5
15
|
belongs_to :wp_post, foreign_key: :object_id
|
6
16
|
belongs_to :wp_term_taxonomy, foreign_key: :term_taxonomy_id
|
7
17
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
|
3
|
+
module Wptools
|
4
|
+
# +------------------+---------------------+------+-----+---------+----------------+
|
5
|
+
# | Field | Type | Null | Key | Default | Extra |
|
6
|
+
# +------------------+---------------------+------+-----+---------+----------------+
|
7
|
+
# | term_taxonomy_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
|
8
|
+
# | term_id | bigint(20) unsigned | NO | MUL | 0 | |
|
9
|
+
# | taxonomy | varchar(32) | NO | MUL | | |
|
10
|
+
# | description | longtext | NO | | NULL | |
|
11
|
+
# | parent | bigint(20) unsigned | NO | | 0 | |
|
12
|
+
# | count | bigint(20) | NO | | 0 | |
|
13
|
+
# +------------------+---------------------+------+-----+---------+----------------+
|
14
|
+
#
|
15
|
+
# サンプルデータ
|
16
|
+
# +------------------+---------+---------------+-------------+--------+-------+
|
17
|
+
# | term_taxonomy_id | term_id | taxonomy | description | parent | count |
|
18
|
+
# +------------------+---------+---------------+-------------+--------+-------+
|
19
|
+
# | 1 | 1 | category | | 0 | 451 |
|
20
|
+
# | 2 | 2 | link_category | | 0 | 7 |
|
21
|
+
# | 3 | 3 | category | | 0 | 4184 |
|
22
|
+
# | 37 | 34 | post_tag | | 0 | 2 |
|
23
|
+
# +------------------+---------+---------------+-------------+--------+-------+
|
24
|
+
|
25
|
+
# wp_termに格納されている情報がタグなのかカテゴリーなのか。あと親情報とか使用数とか
|
26
|
+
|
27
|
+
class WpTermTaxonomy < ActiveRecord::Base
|
28
|
+
self.table_name = 'wp_term_taxonomy'
|
29
|
+
belongs_to :wp_term, foreign_key: :term_id
|
30
|
+
has_many :wp_term_relationships, foreign_key: :term_taxonomy_id
|
31
|
+
has_many :wp_posts, through: :wp_term_relationships
|
32
|
+
|
33
|
+
scope :tags, -> { where(taxonomy: 'post_tag') }
|
34
|
+
scope :categories, -> { where(taxonomy: 'category') }
|
35
|
+
|
36
|
+
def list
|
37
|
+
wp_terms.map { |wp_term| { wp_term.slug => wp_term.name } }.flatten
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/wptools.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
require "wptools/version"
|
3
3
|
require "wptools/wp_post"
|
4
|
+
require "wptools/wp_term_relationship"
|
5
|
+
require "wptools/wp_term_taxonomy"
|
6
|
+
require "wptools/wp_term"
|
4
7
|
require 'yaml'
|
5
8
|
require 'optparse'
|
6
9
|
require 'csv'
|
@@ -54,8 +57,10 @@ module Wptools
|
|
54
57
|
end
|
55
58
|
opt.on('-v', '--verbose', 'Verbose message') {|v| opts[:v] = v}
|
56
59
|
opt.on('-n', '--dry-run', 'Message only') {|v| opts[:n] = v}
|
57
|
-
|
58
|
-
opt.on('-
|
60
|
+
commands = ['list', 'buzz', 'none']
|
61
|
+
opt.on('-c COMMAND', '--command=COMMAND', commands, commands.join('|')) {|v| opts[:c] = v}
|
62
|
+
opt.on('-l NUM', '--limit NUM', 'Limit number') {|v| opts[:l] = v.to_i}
|
63
|
+
opt.on('-d DATAFILE', '--data DATAFILE', 'CSV Datafile') {|v| opts[:d] = v }
|
59
64
|
opt.parse!(argv)
|
60
65
|
if argv.empty?
|
61
66
|
puts opt.help
|
@@ -75,15 +80,15 @@ module Wptools
|
|
75
80
|
end
|
76
81
|
|
77
82
|
def run
|
78
|
-
if @opts[:
|
83
|
+
if @opts[:c] == 'list'
|
79
84
|
list(@opts[:l])
|
80
|
-
elsif @opts[:
|
81
|
-
buzz(@opts[:
|
85
|
+
elsif @opts[:c] == 'buzz'
|
86
|
+
buzz(@opts[:d])
|
87
|
+
elsif @opts[:c] == 'none'
|
82
88
|
end
|
83
89
|
end
|
84
90
|
|
85
91
|
def list(num)
|
86
|
-
p num
|
87
92
|
WpPost.published_posts.order(post_date: "DESC").limit(num).each do | post|
|
88
93
|
print "#{post.id} #{post.post_type} #{post.post_date_str} #{post.post_title} #{post.post_name}\n"
|
89
94
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wptools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- src
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-03-
|
11
|
+
date: 2024-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -110,8 +110,9 @@ files:
|
|
110
110
|
- lib/wptools.rb
|
111
111
|
- lib/wptools/version.rb
|
112
112
|
- lib/wptools/wp_post.rb
|
113
|
+
- lib/wptools/wp_term.rb
|
113
114
|
- lib/wptools/wp_term_relationship.rb
|
114
|
-
- lib/wptools/
|
115
|
+
- lib/wptools/wp_term_taxonomy.rb
|
115
116
|
- run_wptools.sh
|
116
117
|
- wptools.gemspec
|
117
118
|
homepage: http://srcw.net/
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'active_record'
|
2
|
-
|
3
|
-
module Wptools
|
4
|
-
class WpTermTaxnomy < ActiveRecord::Base
|
5
|
-
self.table_name = 'wp_term_taxonomy'
|
6
|
-
has_many :wp_terms, foreign_key: :term_id
|
7
|
-
has_many :wp_term_relationships, foreign_key: :term_taxonomy_id
|
8
|
-
has_many :wp_posts, through: :wp_term_relationships
|
9
|
-
|
10
|
-
scope :tags, -> { where(taxonomy: 'post_tag') }
|
11
|
-
scope :categories, -> { where(taxonomy: 'category') }
|
12
|
-
|
13
|
-
def list
|
14
|
-
wp_terms.map { |wp_term| { wp_term.slug => wp_term.name } }.flatten
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|