mirror of
https://github.com/mitb-archive/filebot
synced 2024-12-24 08:48:51 -05:00
* MyEpisodes integration
This commit is contained in:
parent
f73a07a06b
commit
88a34527c8
75
website/scripts/lib/ws.groovy
Normal file
75
website/scripts/lib/ws.groovy
Normal file
@ -0,0 +1,75 @@
|
||||
@Grab(group='org.jsoup', module='jsoup', version='1.7.1')
|
||||
import org.jsoup.Jsoup
|
||||
import org.jsoup.Connection.Method
|
||||
import net.sourceforge.filebot.Cache
|
||||
|
||||
def MyEpisodes(username, password) {
|
||||
return new MyEpisodesScraper(username:username, password:password)
|
||||
}
|
||||
|
||||
class MyEpisodesScraper {
|
||||
def username
|
||||
def password
|
||||
|
||||
def cache = Cache.getCache('web-persistent-datasource')
|
||||
def session = [:]
|
||||
|
||||
def login = {
|
||||
def response = Jsoup.connect('http://www.myepisodes.com/login.php').data('username', username, 'password', password, 'action', 'Login', 'u', '').method(Method.POST).execute()
|
||||
session << response.cookies()
|
||||
return response.parse()
|
||||
}
|
||||
|
||||
def get = { url ->
|
||||
if (session.isEmpty()) {
|
||||
login()
|
||||
}
|
||||
|
||||
def response = Jsoup.connect(url).cookies(session).method(Method.GET).execute()
|
||||
session << response.cookies()
|
||||
def html = response.parse()
|
||||
|
||||
if (html.select('#frmLogin')) {
|
||||
session.clear()
|
||||
throw new Exception('Login failed')
|
||||
}
|
||||
|
||||
return html
|
||||
}
|
||||
|
||||
def getShows = {
|
||||
def shows = cache.get("MyEpisodes.Shows")
|
||||
if (shows == null) {
|
||||
shows = ['other', 'A'..'Z'].flatten().findResults{ section ->
|
||||
get("http://myepisodes.com/shows.php?list=${section}").select('a').findResults{ a ->
|
||||
try {
|
||||
return [id:a.absUrl('href').match(/showid=(\d+)/).toInteger(), name:a.text()]
|
||||
} catch(e) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
}.flatten()
|
||||
cache.put('MyEpisodes.Shows', shows)
|
||||
}
|
||||
return shows
|
||||
}
|
||||
|
||||
def getShowList = {
|
||||
get("http://www.myepisodes.com/shows.php?type=manage").select('option').findResults{ option ->
|
||||
try {
|
||||
return [id:option.attr('value').toInteger(), name:option.text()]
|
||||
} catch(e) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def addShow = { showid ->
|
||||
get("http://myepisodes.com/views.php?type=manageshow&mode=add&showid=${showid}")
|
||||
}
|
||||
|
||||
def update = { showid, season, episode, tick = 'acquired', value = '0'->
|
||||
get("http://myepisodes.com/myshows.php?action=Update&showid=${showid}&season=${season}&episode=${episode}&${tick}=${value}")
|
||||
}
|
||||
|
||||
}
|
29
website/scripts/update-mes.groovy
Normal file
29
website/scripts/update-mes.groovy
Normal file
@ -0,0 +1,29 @@
|
||||
include('lib/ws')
|
||||
|
||||
def mesacc = myepisodes.split(':')
|
||||
def mescheck = tryQuietly { tick } ?: 'acquired'
|
||||
|
||||
def mes = MyEpisodes(mesacc[0], mesacc[1])
|
||||
def myshows = mes.getShowList()
|
||||
|
||||
def matches = { s1, s2 ->
|
||||
def norm = { s -> s.replaceAll(/\W/, '').toLowerCase() }
|
||||
return norm(s1) == norm(s2)
|
||||
}
|
||||
|
||||
args.getFiles{ it.isVideo() && parseEpisodeNumber(it) }.groupBy{ detectSeriesName(it) }.each{ series, files ->
|
||||
def show = myshows.find{ matches(it.name, series) } ?: mes.getShows().find{ matches(it.name, series) }
|
||||
if (show != null) {
|
||||
if (!myshows.contains(show)) {
|
||||
mes.addShow(show.id)
|
||||
println "[added] $show.name"
|
||||
}
|
||||
files.each{
|
||||
def sxe = parseEpisodeNumber(it)
|
||||
mes.update(show.id, sxe.season, sxe.episode, mescheck)
|
||||
println "[$mescheck] $series $sxe [$it.name]"
|
||||
}
|
||||
} else {
|
||||
println "[failure] '$series' not found"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user