class DownloadTV::MyEpisodes

API wrapper for MyEpisodes

Public Class Methods

new(user, save_cookie) click to toggle source
# File lib/download_tv/myepisodes.rb, line 7
def initialize(user, save_cookie)
  @agent = Mechanize.new
  @agent.user_agent = DownloadTV::USER_AGENT
  @user = user
  @save_cookie = save_cookie
  @cookie_path = File.join(ENV['HOME'], '.config', 'download_tv', 'cookie')
end

Public Instance Methods

build_show_strings(shows) click to toggle source
# File lib/download_tv/myepisodes.rb, line 88
def build_show_strings(shows)
  shows.map do |i|
    sname = i.css('td.showname').text
    ep = i.css('td.longnumber').text

    ep.insert(0, 'S')
    ep.sub!('x', 'E')

    "#{sname} #{ep}"
  end
end
filter_newer_shows(shows, date) click to toggle source

Only keep the shows that have aired since the given date

# File lib/download_tv/myepisodes.rb, line 81
def filter_newer_shows(shows, date)
  shows.select do |i|
    airdate = i.css('td.date')[0].text
    Date.parse(airdate) >= date
  end
end
get_shows_since(last) click to toggle source
# File lib/download_tv/myepisodes.rb, line 67
def get_shows_since(last)
  page = @agent.get 'https://www.myepisodes.com/ajax/service.php?mode=view_privatelist'
  shows = page.parser.css('tr.past')
  shows = filter_newer_shows(shows, last)
  build_show_strings(shows)
end
logged_in?() click to toggle source
# File lib/download_tv/myepisodes.rb, line 57
def logged_in?
  page = @agent.get 'https://www.myepisodes.com/login.php'
  page.links[1].text != 'Register'
end
login() click to toggle source
# File lib/download_tv/myepisodes.rb, line 15
def login
  pass = prompt_user_data
  page = @agent.get 'https://www.myepisodes.com/login.php'

  login_form = page.forms[1]
  login_form.username = @user
  login_form.password = pass

  page = @agent.submit(login_form, login_form.buttons.first)

  raise InvalidLoginError if page.filename == 'login.php'

  save_cookie if @save_cookie

  @agent
end
prompt_user_data() click to toggle source
# File lib/download_tv/myepisodes.rb, line 32
def prompt_user_data
  if !@user || @user == ''
    print 'Enter your MyEpisodes username: '
    @user = $stdin.gets.chomp
  end

  print 'Enter your MyEpisodes password: '
  pass = $stdin.noecho(&:gets).chomp
  puts
  pass
end
today_shows() click to toggle source
# File lib/download_tv/myepisodes.rb, line 74
def today_shows
  page = @agent.get 'https://www.myepisodes.com/ajax/service.php?mode=view_privatelist'
  shows = page.parser.css('tr.today')
  build_show_strings(shows)
end