trakt 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in trakt.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Daniel Bretoi
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,77 @@
1
+ = Trakt
2
+
3
+ This is a Ruby API for the http://trakt.tv movie, tvshow service.
4
+
5
+ == Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'trakt'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install trakt
18
+
19
+ == Usage
20
+
21
+ All calls return an JSON structure.
22
+
23
+ This is a typical default setup
24
+
25
+ require 'trakt'
26
+ trakt = Trakt.new
27
+ trakt.apikey = 'your_api_key'
28
+ trakt.username = 'your_username'
29
+ trakt.password = 'your_password'
30
+
31
+
32
+ === Settings
33
+
34
+ trakt.account.settings
35
+
36
+ === Searching
37
+
38
+ trakt.search.movies "the shawshank redemption"
39
+ trakt.search.shows "death note"
40
+
41
+ == Examples
42
+
43
+ === Adding all your seen movies from a text file.
44
+
45
+ Adding movies from a text file is a bit hit and miss, so it's best if you
46
+ create a list to add the movies to. You'll have to make a list manually in
47
+ advance since creation isn't supported yet. The list takes a rather odd name.
48
+ The one in the exaple here was created as "From my file".
49
+
50
+ list = trakt.list.add('from-my-file');
51
+ IO.readlines(ENV['HOME']+"/misc/movies.txt").each do |movie|
52
+ result = trakt.search.movies(movie)
53
+ next unless result
54
+ movie = result.first
55
+ next unless movie
56
+ list.add_item(type: :movie, imdb_id: movie['imdb_id'])
57
+ end
58
+
59
+ === Marking shows unseen
60
+
61
+ Example making all episodes of season 4 of winnie the pooh unseen. (You can use
62
+ Trakt::Search.shows("the new adventures of winnie the pooh").first to get the
63
+ imdb_id)
64
+
65
+ episodes = []
66
+ 1.upto(11) { |n|
67
+ episodes << { "season" => 4, "episode" => n }
68
+ }
69
+ Trakt::Show.episode_unseen("imdb_id" => "tt0165052", episodes: episodes)
70
+
71
+ == Contributing
72
+
73
+ 1. Fork it
74
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
75
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
76
+ 4. Push to the branch (`git push origin my-new-feature`)
77
+ 5. Create new Pull Request
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ desc "run all tests"
4
+ task :spec do
5
+ system "bundle exec rspec spec/*_spec.rb"
6
+ end
@@ -0,0 +1,61 @@
1
+ require "trakt/version"
2
+ require 'awesome_print'
3
+ require "json"
4
+ require "excon"
5
+ require "digest"
6
+ require "trakt/connection"
7
+ require "trakt/account"
8
+ require "trakt/list"
9
+ require "trakt/movie"
10
+ require "trakt/search"
11
+ require "trakt/activity"
12
+ require "trakt/calendar"
13
+ require "trakt/show"
14
+ require "trakt/friends"
15
+ require "trakt/movies"
16
+ require "trakt/genres"
17
+
18
+ module Trakt
19
+ class Error < RuntimeError
20
+ end
21
+ end
22
+ module Trakt
23
+ def self.new(*a)
24
+ Trakt.new(*a)
25
+ end
26
+ class Trakt
27
+ attr_accessor :username, :password, :apikey
28
+ def initialize(args={})
29
+ @username = args[:username]
30
+ @password = args[:password]
31
+ @apikey = args[:apikey]
32
+ end
33
+ def account
34
+ @account ||= Account.new self
35
+ end
36
+ def calendar
37
+ @calendar ||= Calendar.new self
38
+ end
39
+ def friends
40
+ @calendar ||= Calendar.new self
41
+ end
42
+ def search
43
+ @search ||= Search.new self
44
+ end
45
+ def list
46
+ @list ||= List.new self
47
+ end
48
+ def movie
49
+ @movie ||= Movie.new self
50
+ end
51
+ def activity
52
+ @activity ||= Activity.new self
53
+ end
54
+ def genres
55
+ @genres ||= Genres.new self
56
+ end
57
+ def show
58
+ @show ||= Show.new self
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,13 @@
1
+ module Trakt
2
+ class Account
3
+ include Connection
4
+ def settings
5
+ require_settings %w|username password apikey|
6
+ post 'account/settings/'
7
+ end
8
+ def test
9
+ require_settings %w|username password apikey|
10
+ post 'account/test/'
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,32 @@
1
+ module Trakt
2
+ # Refer to the api doc on what parameters these functions take. http://trakt.tv/api-docs/activity-community
3
+ # For eaxmple, the current description for community reads:
4
+ #
5
+ # http://api.trakt.tv/activity/community.format/apikey/types/actions/start_ts/end_ts
6
+ #
7
+ # So you just do: <tt>trakt.activity.community(<types>,<actions>,<start_ts>,<end_ts>)</tt>
8
+ class Activity
9
+ include Connection
10
+ def community(*args)
11
+ get_with_args('/activity/community.json/', *args)
12
+ end
13
+ def episodes(*args)
14
+ get_with_args('/activity/episodes.json/', *args)
15
+ end
16
+ def friends(*args)
17
+ get_with_args('/activity/friends.json/', *args)
18
+ end
19
+ def movies(*args)
20
+ get_with_args('/activity/movies.json/', *args)
21
+ end
22
+ def seasons(*args)
23
+ get_with_args('/activity/seasons.json/', *args)
24
+ end
25
+ def shows(*args)
26
+ get_with_args('/activity/shows.json/', *args)
27
+ end
28
+ def user(*args)
29
+ get_with_args('/activity/user.json/', *args)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,11 @@
1
+ module Trakt
2
+ class Calendar
3
+ include Connection
4
+ def premieres(*args)
5
+ get_with_args('/calendar/premieres.json/', *args)
6
+ end
7
+ def shows(*args)
8
+ get_with_args('/calendar/shows.json/', *args)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,52 @@
1
+ module Trakt
2
+ module Connection
3
+ attr_reader :trakt
4
+ def initialize(trakt)
5
+ @trakt = trakt
6
+ end
7
+ def connection
8
+ @connection ||= Excon.new("http://api.trakt.tv");
9
+ end
10
+ def require_settings(required)
11
+ required.each do |setting|
12
+ raise "Required setting #{setting} is missing." unless trakt.send(setting)
13
+ end
14
+ end
15
+ def post(path,body={})
16
+ # all posts have username/password
17
+ body.merge!({
18
+ 'username' => trakt.username,
19
+ 'password' => trakt.password,
20
+ })
21
+ path << '/' unless path[-1] == '/'
22
+ result = connection.post(:path => path + trakt.apikey, :body => body.to_json)
23
+ parse(result)
24
+ end
25
+ def parse(result)
26
+ parsed = JSON.parse result.body
27
+ if parsed.kind_of? Hash and parsed['status'] and parsed['status'] == 'failure'
28
+ raise Error.new(parsed['error'])
29
+ end
30
+ return parsed
31
+ end
32
+ def clean_query(query)
33
+ query.gsub(/[()]/,'').
34
+ gsub(' ','+').
35
+ gsub('&','and').
36
+ gsub('!','').
37
+ chomp
38
+ end
39
+ def get(path,query)
40
+ full_path = File.join(path,trakt.apikey, query);
41
+ full_path.gsub!(%r{/*$},'')
42
+ result = connection.get(:path => full_path)
43
+ parse(result)
44
+ end
45
+ def get_with_args(path,*args)
46
+ require_settings %w|apikey|
47
+ arg_path = *args.compact.map { |t| t.to_s}
48
+ get(path, File.join(arg_path))
49
+ end
50
+ private :get_with_args, :get, :post, :parse, :clean_query, :require, :connection
51
+ end
52
+ end
@@ -0,0 +1,29 @@
1
+ module Trakt
2
+ class Friends
3
+ include Connection
4
+ def add(username)
5
+ require_settings %w|username password apikey|
6
+ post "friends/#{__method__}/", 'friend' => username
7
+ end
8
+ def all
9
+ require_settings %w|username password apikey|
10
+ post 'friends/all/'
11
+ end
12
+ def approve(username)
13
+ require_settings %w|username password apikey|
14
+ post "friends/#{__method__}/", 'friend' => username
15
+ end
16
+ def delete(username)
17
+ require_settings %w|username password apikey|
18
+ post "friends/#{__method__}/", 'friend' => username
19
+ end
20
+ def deny
21
+ require_settings %w|username password apikey|
22
+ post "friends/#{__method__}/", 'friend' => username
23
+ end
24
+ def requests(username)
25
+ require_settings %w|username password apikey|
26
+ post 'friends/requests/'
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,35 @@
1
+ module Trakt
2
+ class List
3
+ include Connection
4
+ # TODO options should be the various options at some point
5
+ attr_accessor :slug, :add_info
6
+ def add(name,options={})
7
+ result = post 'lists/add/', options.merge(:name => name)
8
+ @slug = result['slug']
9
+ @add_info = result
10
+ return self
11
+ end
12
+ def get(slug)
13
+ @slug = slug
14
+ return self
15
+ end
16
+ def add_item(data)
17
+ add_items([data])
18
+ end
19
+ def add_items(data)
20
+ post("lists/items/add/", 'slug' => slug, 'items' => data)
21
+ end
22
+ def item_delete(data)
23
+ items_delete([data])
24
+ end
25
+ def items_delete(data)
26
+ post("lists/items/delete/", 'slug' => slug, 'items' => data)
27
+ end
28
+ def delete
29
+ post "lists/delete/", 'slug' => slug
30
+ end
31
+ def update(options)
32
+ post "lists/update/", options.merge('slug' => slug)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,50 @@
1
+ module Trakt
2
+ class Movie
3
+ include Connection
4
+ def cancelcheckin
5
+ post("/movie/cancelcheckin")
6
+ end
7
+ def cancelwatching
8
+ post("/movie/cancelwatching")
9
+ end
10
+ def checkin(options = {})
11
+ post("/movie/checkin", options)
12
+ end
13
+ def scrobble(options = {})
14
+ post("/movie/scrobble", options)
15
+ end
16
+ def seen(options = {})
17
+ post("/movie/seen", options)
18
+ end
19
+ def library(options = {})
20
+ post("/movie/library", options)
21
+ end
22
+ def related(*args)
23
+ get_with_args('/search/related.json/', *args)
24
+ end
25
+ def shouts(*args)
26
+ get_with_args('/search/shouts.json/', *args)
27
+ end
28
+ def summary(*args)
29
+ get_with_args('/search/summary.json/', *args)
30
+ end
31
+ def unlibrary(options = {})
32
+ post("/movie/unlibrary", options)
33
+ end
34
+ def unseen(options = {})
35
+ post("/movie/unseen", options)
36
+ end
37
+ def unwatchlist(options = {})
38
+ post("/movie/unwatchlist", options)
39
+ end
40
+ def watching(options = {})
41
+ post("/movie/watching", options)
42
+ end
43
+ def watchingnow(*args)
44
+ get_with_args('/search/watchingnow.json/', *args)
45
+ end
46
+ def watchlist(options = {})
47
+ post("/movie/watchlist", options)
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,8 @@
1
+ module Trakt
2
+ class Movie
3
+ include Connection
4
+ def find(query)
5
+ get('/search/movies.json/',clean_query(query))
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,25 @@
1
+ module Trakt
2
+ class Search
3
+ include Connection
4
+ def movies(query)
5
+ require_settings %w|apikey|
6
+ get('/search/movies.json/',clean_query(query))
7
+ end
8
+ def shows(query)
9
+ require_settings %w|apikey|
10
+ get('/search/shows.json/',clean_query(query))
11
+ end
12
+ def episode(query)
13
+ require_settings %w|apikey|
14
+ get('/search/episodes.json/',clean_query(query))
15
+ end
16
+ def people(query)
17
+ require_settings %w|apikey|
18
+ get('/search/people.json/',clean_query(query))
19
+ end
20
+ def users(query)
21
+ require_settings %w|apikey|
22
+ get('/search/users.json/',clean_query(query))
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,35 @@
1
+ module Trakt
2
+ class Show
3
+ include Connection
4
+ def episode_unseen(data)
5
+ require_settings %w|username password apikey|
6
+ post('show/episode/unseen/', data)
7
+ end
8
+ def episode_seen(data)
9
+ require_settings %w|username password apikey|
10
+ post('show/episode/seen/', data)
11
+ end
12
+ def seen(data)
13
+ require_settings %w|username password apikey|
14
+ post('show/seen/', data)
15
+ end
16
+ # need to use thetvdb id here since the slug can't be used for unseen
17
+ def unseen(title)
18
+ all = seasons title
19
+ episodes_per_season = {}
20
+ episodes_to_remove = []
21
+ all.each do |season_info|
22
+ season_num = season_info['season']
23
+ next if season_num == 0 # dont need to remove specials
24
+ episodes = season_info['episodes']
25
+ 1.upto(episodes) do |episode|
26
+ episodes_to_remove << { season: season_num, episode: episode }
27
+ end
28
+ end
29
+ episode_unseen tvdb_id: title, episodes: episodes_to_remove
30
+ end
31
+ def seasons(title)
32
+ get('show/seasons.json/', title)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,3 @@
1
+ module Trakt
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Account do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ it "should get account info" do
13
+ result = trakt.account.settings
14
+ result['message'].should == "All settings for #{trakt.username}"
15
+ end
16
+ it "should preform an account test" do
17
+ result = trakt.account.test
18
+ result['message'].should == "all good!"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Activity do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ context "community" do
13
+ it "should get community activity" do
14
+ result = trakt.activity.community("movie","watching", (Time.now - 300).to_i)
15
+ result['activity'].count.should > 0
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,25 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Calendar do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ context "premieres" do
13
+ it "should get premieres" do
14
+ result = trakt.calendar.premieres(20110421, 1)
15
+ result.first['episodes'].first['show']['title'].should == "24 Hour Restaurant Battle"
16
+ end
17
+ end
18
+ context "shows" do
19
+ it "should get shows" do
20
+ result = trakt.calendar.shows(20110416, 1)
21
+ result.first['episodes'].first['show']['title'].should == "Gosick"
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Friends do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ it "add username" do
13
+ pending
14
+ result = trakt.friends.add 'snowfall'
15
+ result['message'].should == "snowfall added, pending their approval"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,65 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::List do
5
+ before do
6
+ list = trakt.list.get("testlist")
7
+ list.delete rescue nil
8
+ end
9
+ let(:trakt) do
10
+ details = get_account_details
11
+ trakt = Trakt.new :apikey => details['apikey'],
12
+ :username => details['username'],
13
+ :password => details['password']
14
+ trakt
15
+ end
16
+ it "should add a list" do
17
+ list = trakt.list.add("test-list")
18
+ list.add_info['status'].should == 'success'
19
+ lambda { trakt.list.add("test-list") }.should raise_error("a list already exists with this name")
20
+ end
21
+ it "should get a list" do
22
+ list = trakt.list.get("testlist")
23
+ list.slug.should == 'testlist'
24
+ end
25
+ it "should add a movie" do
26
+ list = trakt.list.add("test-list")
27
+ result = list.add_item :type => :movie, :imdb_id => 'tt0098554'
28
+ result['status'].should == 'success'
29
+ result['inserted'].should == 1
30
+ end
31
+ it "should add movies" do
32
+ list = trakt.list.add("test-list")
33
+ result = list.add_items [{:type => :movie, :imdb_id => 'tt0098554'}, {:type => :movie, :imdb_id => 'tt0111161'}]
34
+ result['status'].should == 'success'
35
+ result['inserted'].should == 2
36
+ end
37
+ it "should delete list" do
38
+ list = trakt.list.add("test-list")
39
+ result = list.delete
40
+ result['status'].should == 'success'
41
+ result['message'].should == 'list and items deleted'
42
+ end
43
+ it "should delete an item" do
44
+ list = trakt.list.add("test-list")
45
+ list.add_items [{:type => :movie, :imdb_id => 'tt0098554'}, {:type => :movie, :imdb_id => 'tt0111161'}]
46
+ result = list.item_delete :type => :movie, :imdb_id => 'tt0098554'
47
+ result['status'].should == 'success'
48
+ result['message'].should == '1 items deleted'
49
+ end
50
+ it "should delete items" do
51
+ list = trakt.list.add("test-list")
52
+ list.add_items [{:type => :movie, :imdb_id => 'tt0098554'}, {:type => :movie, :imdb_id => 'tt0111161'}]
53
+ result = list.items_delete [{:type => :movie, :imdb_id => 'tt0098554'}, {:type => :movie, :imdb_id => 'tt0111161'}]
54
+ result['status'].should == 'success'
55
+ result['message'].should == '2 items deleted'
56
+ end
57
+ it "should update list" do
58
+ list = trakt.list.add("test-list", 'show_numbers' => true)
59
+ list.add_info['show_numbers'].should == true
60
+ result = list.update('show_numbers' => false)
61
+ result['status'].should == 'success'
62
+ result['show_numbers'].should == false
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Movie do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ it "should mark twelve monkeys" do
13
+ result = trakt.movie.seen movies: [{
14
+ imdb_id: "tt0114746",
15
+ title: "Twelve Monkeys",
16
+ year: 1995,
17
+ plays: 1,
18
+ last_played: 1255960578
19
+ }]
20
+ result['status'].should == 'success'
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,42 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Search do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ it "should find movie uncle buck" do
13
+ result = trakt.search.movies("uncle buck").first
14
+ result['title'].should == 'Uncle Buck'
15
+ result['year'].should == 1989
16
+ result['imdb_id'].should == 'tt0098554'
17
+ end
18
+ it "should find show cowboy bebop" do
19
+ result = trakt.search.shows("cowboy bebop").first
20
+ result['title'].should == 'Cowboy Bebop'
21
+ result['year'].should == 1998
22
+ result['imdb_id'].should == 'tt0213338'
23
+ end
24
+ it "should find episode Lisa the Vegetarian" do
25
+ result = trakt.search.episode("lisa the vegetarian").first
26
+ result['show']['title'].should == 'The Simpsons'
27
+ result['episode']['title'].should == 'Lisa the Vegetarian'
28
+ result['show']['year'].should == 1989
29
+ result['show']['imdb_id'].should == 'tt0096697'
30
+ end
31
+ it "should find actor Eric Bana" do
32
+ result = trakt.search.people("eric bana").first
33
+ result['name'].should == 'Eric Bana'
34
+ result['birthplace'].should == 'Melbourne, Australia'
35
+ end
36
+ it "should find user infodump" do
37
+ result = trakt.search.users("infodump").first
38
+ result['username'].should == 'infodump'
39
+ result['joined'].should == 1320907373
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,9 @@
1
+ require "rspec"
2
+ require "trakt"
3
+ require "awesome_print"
4
+ require "yaml"
5
+
6
+ def get_account_details
7
+ account = IO.read File.dirname(__FILE__) + '/account_details.yml'
8
+ YAML.load(account)
9
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'trakt/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "trakt"
8
+ gem.version = Trakt::VERSION
9
+ gem.authors = ["Daniel Bretoi"]
10
+ gem.email = ["daniel@bretoi.com"]
11
+ gem.description = %q{API for trakt.tv service}
12
+ gem.summary = %q{API for trakt.tv service}
13
+ gem.homepage = ""
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+ gem.add_development_dependency "rspec"
20
+ gem.add_development_dependency "awesome_print"
21
+ gem.add_dependency "excon"
22
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: trakt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Daniel Bretoi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: awesome_print
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: excon
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: API for trakt.tv service
63
+ email:
64
+ - daniel@bretoi.com
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - .gitignore
70
+ - Gemfile
71
+ - LICENSE.txt
72
+ - README.rdoc
73
+ - Rakefile
74
+ - lib/trakt.rb
75
+ - lib/trakt/account.rb
76
+ - lib/trakt/activity.rb
77
+ - lib/trakt/calendar.rb
78
+ - lib/trakt/connection.rb
79
+ - lib/trakt/friends.rb
80
+ - lib/trakt/list.rb
81
+ - lib/trakt/movie.rb
82
+ - lib/trakt/movies.rb
83
+ - lib/trakt/search.rb
84
+ - lib/trakt/show.rb
85
+ - lib/trakt/version.rb
86
+ - spec/account_spec.rb
87
+ - spec/activity_spec.rb
88
+ - spec/calendar_spec.rb
89
+ - spec/friends_spec.rb
90
+ - spec/list_spec.rb
91
+ - spec/movie_spec.rb
92
+ - spec/search_spec.rb
93
+ - spec/spec_helper.rb
94
+ - trakt.gemspec
95
+ homepage: ''
96
+ licenses: []
97
+ post_install_message:
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubyforge_project:
115
+ rubygems_version: 1.8.24
116
+ signing_key:
117
+ specification_version: 3
118
+ summary: API for trakt.tv service
119
+ test_files:
120
+ - spec/account_spec.rb
121
+ - spec/activity_spec.rb
122
+ - spec/calendar_spec.rb
123
+ - spec/friends_spec.rb
124
+ - spec/list_spec.rb
125
+ - spec/movie_spec.rb
126
+ - spec/search_spec.rb
127
+ - spec/spec_helper.rb