qingting_api 0.1.5 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +137 -51
- data/bin/console +14 -0
- data/lib/generators/qingting_api/config_generator.rb +2 -2
- data/lib/generators/qingting_api/templates/qingting_api_config.rb +1 -1
- data/lib/qingting/api/account.rb +44 -0
- data/lib/qingting/api/base.rb +62 -0
- data/lib/qingting/api/billboard.rb +40 -0
- data/lib/qingting/api/category.rb +51 -0
- data/lib/qingting/api/live.rb +42 -0
- data/lib/qingting/api/ondemand.rb +50 -0
- data/lib/qingting/api/podcaster.rb +73 -0
- data/lib/qingting/api/recent.rb +56 -0
- data/lib/qingting/config.rb +49 -0
- data/lib/qingting/utils/http.rb +69 -0
- data/lib/qingting/utils/request.rb +57 -0
- data/lib/qingting/version.rb +3 -0
- data/lib/qingting_api.rb +25 -11
- data/qingting_api.gemspec +9 -9
- metadata +21 -82
- data/.travis.yml +0 -7
- data/lib/qingting_api/account.rb +0 -38
- data/lib/qingting_api/config.rb +0 -44
- data/lib/qingting_api/qing_ting.rb +0 -70
- data/lib/qingting_api/request.rb +0 -52
- data/lib/qingting_api/version.rb +0 -3
data/qingting_api.gemspec
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require '
|
4
|
+
require 'qingting/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "qingting_api"
|
8
|
-
s.version =
|
8
|
+
s.version = Qingting::VERSION
|
9
9
|
s.authors = ["cheenwe"]
|
10
|
-
s.email = ["
|
10
|
+
s.email = ["cxhyun@126.com"]
|
11
11
|
|
12
|
-
s.summary = "
|
13
|
-
s.description = "
|
12
|
+
s.summary = "QingtingFM ruby api"
|
13
|
+
s.description = "蜻蜓 FM Ruby API"
|
14
14
|
s.homepage = "https://github.com/cheenwe/qingting_api"
|
15
15
|
s.license = "MIT"
|
16
16
|
|
@@ -20,11 +20,11 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.require_paths = ['lib']
|
21
21
|
|
22
22
|
|
23
|
-
s.add_dependency 'activerecord', ['>= 3.0'
|
24
|
-
s.add_dependency 'activesupport', ['>= 3.0'
|
23
|
+
# s.add_dependency 'activerecord', ['>= 3.0']
|
24
|
+
# s.add_dependency 'activesupport', ['>= 3.0']
|
25
25
|
|
26
26
|
s.add_development_dependency 'bundler', ['>= 1.0.0']
|
27
27
|
s.add_development_dependency 'rake', ['>= 0']
|
28
|
-
s.add_development_dependency 'rails', ['>= 3.1.0']
|
29
|
-
s.add_development_dependency "rspec"
|
28
|
+
# s.add_development_dependency 'rails', ['>= 3.1.0']
|
29
|
+
# s.add_development_dependency "rspec"
|
30
30
|
end
|
metadata
CHANGED
@@ -1,55 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qingting_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cheenwe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: activerecord
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '3.0'
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '5.0'
|
23
|
-
type: :runtime
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '3.0'
|
30
|
-
- - "<"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '5.0'
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: activesupport
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '3.0'
|
40
|
-
- - "<"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: '5.0'
|
43
|
-
type: :runtime
|
44
|
-
prerelease: false
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '3.0'
|
50
|
-
- - "<"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '5.0'
|
53
13
|
- !ruby/object:Gem::Dependency
|
54
14
|
name: bundler
|
55
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,56 +38,36 @@ dependencies:
|
|
78
38
|
- - ">="
|
79
39
|
- !ruby/object:Gem::Version
|
80
40
|
version: '0'
|
81
|
-
|
82
|
-
name: rails
|
83
|
-
requirement: !ruby/object:Gem::Requirement
|
84
|
-
requirements:
|
85
|
-
- - ">="
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: 3.1.0
|
88
|
-
type: :development
|
89
|
-
prerelease: false
|
90
|
-
version_requirements: !ruby/object:Gem::Requirement
|
91
|
-
requirements:
|
92
|
-
- - ">="
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: 3.1.0
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: rspec
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
98
|
-
requirements:
|
99
|
-
- - ">="
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
102
|
-
type: :development
|
103
|
-
prerelease: false
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
requirements:
|
106
|
-
- - ">="
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
version: '0'
|
109
|
-
description: Qingting Fm ruby api
|
41
|
+
description: 蜻蜓 FM Ruby API
|
110
42
|
email:
|
111
|
-
-
|
112
|
-
executables:
|
43
|
+
- cxhyun@126.com
|
44
|
+
executables:
|
45
|
+
- console
|
113
46
|
extensions: []
|
114
47
|
extra_rdoc_files: []
|
115
48
|
files:
|
116
49
|
- ".gitignore"
|
117
|
-
- ".travis.yml"
|
118
50
|
- CODE_OF_CONDUCT.md
|
119
51
|
- Gemfile
|
120
52
|
- LICENSE.txt
|
121
53
|
- README.md
|
122
54
|
- Rakefile
|
55
|
+
- bin/console
|
123
56
|
- lib/generators/qingting_api/config_generator.rb
|
124
57
|
- lib/generators/qingting_api/templates/qingting_api_config.rb
|
58
|
+
- lib/qingting/api/account.rb
|
59
|
+
- lib/qingting/api/base.rb
|
60
|
+
- lib/qingting/api/billboard.rb
|
61
|
+
- lib/qingting/api/category.rb
|
62
|
+
- lib/qingting/api/live.rb
|
63
|
+
- lib/qingting/api/ondemand.rb
|
64
|
+
- lib/qingting/api/podcaster.rb
|
65
|
+
- lib/qingting/api/recent.rb
|
66
|
+
- lib/qingting/config.rb
|
67
|
+
- lib/qingting/utils/http.rb
|
68
|
+
- lib/qingting/utils/request.rb
|
69
|
+
- lib/qingting/version.rb
|
125
70
|
- lib/qingting_api.rb
|
126
|
-
- lib/qingting_api/account.rb
|
127
|
-
- lib/qingting_api/config.rb
|
128
|
-
- lib/qingting_api/qing_ting.rb
|
129
|
-
- lib/qingting_api/request.rb
|
130
|
-
- lib/qingting_api/version.rb
|
131
71
|
- qingting_api.gemspec
|
132
72
|
homepage: https://github.com/cheenwe/qingting_api
|
133
73
|
licenses:
|
@@ -149,9 +89,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
89
|
version: '0'
|
150
90
|
requirements: []
|
151
91
|
rubyforge_project:
|
152
|
-
rubygems_version: 2.5.
|
92
|
+
rubygems_version: 2.5.1
|
153
93
|
signing_key:
|
154
94
|
specification_version: 4
|
155
|
-
summary:
|
95
|
+
summary: QingtingFM ruby api
|
156
96
|
test_files: []
|
157
|
-
has_rdoc:
|
data/.travis.yml
DELETED
data/lib/qingting_api/account.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'net/http'
|
3
|
-
require 'active_support/json'
|
4
|
-
|
5
|
-
module QingtingApi
|
6
|
-
# Module that handle user information
|
7
|
-
#
|
8
|
-
module Account
|
9
|
-
module_function
|
10
|
-
|
11
|
-
# 获取账户 token
|
12
|
-
#
|
13
|
-
def access_token
|
14
|
-
post 'access', grant_type: "client_credentials", client_id: QingtingApi.config.client_id, client_secret:QingtingApi.config.client_secret
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
def post(api, options = {})
|
19
|
-
uri = URI.join(QingtingApi.config.base_url, api)
|
20
|
-
res = Net::HTTP.post_form(uri, options)
|
21
|
-
result res.body
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
|
-
def result(body)
|
26
|
-
begin
|
27
|
-
resule = ActiveSupport::JSON.decode body
|
28
|
-
resule['access_token']
|
29
|
-
rescue => e
|
30
|
-
{
|
31
|
-
code: 502,
|
32
|
-
msg: '内容解析错误',
|
33
|
-
detail: e.to_s
|
34
|
-
}
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
data/lib/qingting_api/config.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'active_support/configurable'
|
3
|
-
require 'active_support/core_ext'
|
4
|
-
|
5
|
-
module QingtingApi
|
6
|
-
|
7
|
-
# curl -X POST "http://api.open.qingting.fm/access?&grant_type=client_credentials" -d "client_id=ZTk4MzAwMzAtYWFiOC0xMWU0LTkyM2YtMDAxNjNlMDAyMGFk&client_secret=OTdiNmI0MWEtYzhiZC0zYWE1LWExZmEtMDU0OWZhNTljZmRk"
|
8
|
-
|
9
|
-
# client_id和client_secret,用以后续获取access_token
|
10
|
-
def self.configure(&block)
|
11
|
-
yield @config ||= QingtingApi::Configuration.new
|
12
|
-
end
|
13
|
-
|
14
|
-
# Global settings for QingtingApi
|
15
|
-
def self.config
|
16
|
-
@config
|
17
|
-
end
|
18
|
-
|
19
|
-
# Configuration class
|
20
|
-
#
|
21
|
-
class Configuration #:nodoc:
|
22
|
-
include ActiveSupport::Configurable
|
23
|
-
# client_id和client_secret,用以后续获取access_token
|
24
|
-
config_accessor :base_url # api url
|
25
|
-
config_accessor :client_id # 授权 API client_id
|
26
|
-
config_accessor :client_secret # 授权 API client_secret
|
27
|
-
config_accessor :api_version # API 的版本,目前有v6
|
28
|
-
config_accessor :page_num # 获取信息时, 指定默认的页数
|
29
|
-
config_accessor :page_size # 获取信息时, 一页包含信息数量
|
30
|
-
config_accessor :company # 默认公司名称
|
31
|
-
config_accessor :expires_in # 过期时间。当access_token过期时,API会返回token_expired错误。这时需要重新申请access token
|
32
|
-
end
|
33
|
-
|
34
|
-
configure do |config|
|
35
|
-
config.base_url = "http://api.open.qingting.fm"
|
36
|
-
config.client_id = "ZTk4MzAwMzAtYWFiOC0xMWU0LTkyM2YtMDAxNjNlMDAyMGFk"
|
37
|
-
config.client_secret = "OTdiNmI0MWEtYzhiZC0zYWE1LWExZmEtMDU0OWZhNTljZmRk"
|
38
|
-
config.api_version = :v6
|
39
|
-
config.page_num = 1
|
40
|
-
config.page_size = 30
|
41
|
-
config.company = 'Cheenwe'
|
42
|
-
config.expires_in = 7200.second
|
43
|
-
end
|
44
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
module QingtingApi
|
2
|
-
# Message service: methods that are used to manage messages
|
3
|
-
module QingTing
|
4
|
-
|
5
|
-
def self.included(base)
|
6
|
-
base.send :extend, ClassMethods
|
7
|
-
end
|
8
|
-
|
9
|
-
# Class methods
|
10
|
-
module ClassMethods
|
11
|
-
|
12
|
-
def find_by_cid(cmode, cid)
|
13
|
-
Request.get "#{cmode}", cid: cid
|
14
|
-
end
|
15
|
-
|
16
|
-
def method_missing(name, *args)
|
17
|
-
if name != /^get_(.*)/
|
18
|
-
Request.get "/#{QingtingApi.config.api_version}/media/#{name}?access_token=#{token}"
|
19
|
-
else
|
20
|
-
{
|
21
|
-
code: 404,
|
22
|
-
msg: 'NOT FIND'
|
23
|
-
}
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def get(name)
|
28
|
-
Request.get "/#{QingtingApi.config.api_version}/media/#{name}?access_token=#{token}"
|
29
|
-
end
|
30
|
-
|
31
|
-
def get_id(name, id)
|
32
|
-
Request.get "/#{QingtingApi.config.api_version}/media/#{name}/#{id}?access_token=#{token}"
|
33
|
-
end
|
34
|
-
|
35
|
-
def catrgory_channel(category_id, curpage, page_size={})
|
36
|
-
if page_size.present?
|
37
|
-
Request.get "/#{QingtingApi.config.api_version}/media/categories/#{category_id}/channels/order/0/curpage/#{curpage}/pagesize/#{page_size}?access_token=#{token}"
|
38
|
-
else
|
39
|
-
Request.get "/#{QingtingApi.config.api_version}/media/categories/#{category_id}/channels/order/0/curpage/#{curpage}/pagesize/#{QingtingApi.config.page_size}?access_token=#{token}"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def ondemand_channel(category_id, curpage, page_size={})
|
44
|
-
if page_size.present?
|
45
|
-
Request.get "/#{QingtingApi.config.api_version}/media/channelondemands/#{category_id}/programs/curpage/#{curpage}/pagesize/#{page_size}?access_token=#{token}"
|
46
|
-
else
|
47
|
-
Request.get "/#{QingtingApi.config.api_version}/media/channelondemands/#{category_id}/programs/curpage/#{curpage}/pagesize/#{QingtingApi.config.page_size}?access_token=#{token}"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def live_channel(channel_id, day)
|
52
|
-
Request.get "/#{QingtingApi.config.api_version}/media/channellives/#{channel_id}/programs/day/#{day}?access_token=#{token}"
|
53
|
-
end
|
54
|
-
|
55
|
-
def search(keyword, type={})
|
56
|
-
if type.present?
|
57
|
-
Request.get "/search/#{CGI.escape(keyword)}/type/#{type}?access_token=#{token}"
|
58
|
-
else
|
59
|
-
Request.get "/search/#{CGI.escape(keyword)}/type/all?access_token=#{token}"
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def token
|
64
|
-
QingtingApi::Account.access_token
|
65
|
-
end
|
66
|
-
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|
data/lib/qingting_api/request.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'net/http'
|
3
|
-
require 'active_support/json'
|
4
|
-
|
5
|
-
module QingtingApi
|
6
|
-
# Module that manage requests
|
7
|
-
module Request
|
8
|
-
# Method that use `Net::HTTP.post_form` to perform `POST` action
|
9
|
-
#
|
10
|
-
def post(api, options = {})
|
11
|
-
uri = URI.join(base_url, api)
|
12
|
-
res = Net::HTTP.post_form(uri, options)
|
13
|
-
result res.body
|
14
|
-
end
|
15
|
-
|
16
|
-
# Method that use `Net::HTTP.get` to perform `GET` action
|
17
|
-
#
|
18
|
-
def get(api, options = {})
|
19
|
-
url = URI.join(base_url, api)
|
20
|
-
result Net::HTTP.get(url)
|
21
|
-
|
22
|
-
# uri = URI('http://example.com/index.html')
|
23
|
-
# params = { :limit => 10, :page => 3 }
|
24
|
-
# uri.query = URI.encode_www_form(params)
|
25
|
-
|
26
|
-
# res = Net::HTTP.get_response(uri)
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
# Method that parse JSON to Hash
|
32
|
-
#
|
33
|
-
def result(body)
|
34
|
-
begin
|
35
|
-
ActiveSupport::JSON.decode body
|
36
|
-
rescue => e
|
37
|
-
{
|
38
|
-
code: 502,
|
39
|
-
msg: '内容解析错误',
|
40
|
-
detail: e.to_s
|
41
|
-
}
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# Base uri for Qingting API
|
46
|
-
def base_url
|
47
|
-
"#{QingtingApi.config.base_url}"
|
48
|
-
end
|
49
|
-
|
50
|
-
module_function :post, :get, :result, :base_url
|
51
|
-
end
|
52
|
-
end
|
data/lib/qingting_api/version.rb
DELETED