mirror of
https://github.com/blacktwin/JBOPS.git
synced 2025-12-16 21:15:37 +00:00
added args
added search and type
This commit is contained in:
parent
6051989ece
commit
522d9a6e7d
@ -1,9 +1,23 @@
|
|||||||
'''
|
"""
|
||||||
Use instantwatcher.com to find if Plex items are on Netflix
|
usage: stream_check_instantwatcher.py [-h] [-l [...]] [-s ] [-t ]
|
||||||
|
|
||||||
|
Use instantwatcher.com to find if Plex items are on Netflix.
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-l [ ...], --library [ ...]
|
||||||
|
Space separated list of case sensitive names to process. Allowed names are:
|
||||||
|
(choices: Your show or movie library names)
|
||||||
|
-s [], --search [] Search any name.
|
||||||
|
-t [], --type [] Refine search for name by using type.
|
||||||
|
|
||||||
|
If site pulls more than 1 result, will check first 5 records.
|
||||||
|
search_limit = 5
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
'''
|
|
||||||
import requests
|
import requests
|
||||||
|
import argparse
|
||||||
from xmljson import badgerfish as bf
|
from xmljson import badgerfish as bf
|
||||||
from lxml.html import fromstring
|
from lxml.html import fromstring
|
||||||
from time import sleep
|
from time import sleep
|
||||||
@ -14,7 +28,7 @@ from plexapi.server import PlexServer
|
|||||||
|
|
||||||
## Edit ##
|
## Edit ##
|
||||||
PLEX_URL = 'http://localhost:32400'
|
PLEX_URL = 'http://localhost:32400'
|
||||||
PLEX_TOKEN = 'xxxx'
|
PLEX_TOKEN = 'xxxxx'
|
||||||
plex = PlexServer(PLEX_URL, PLEX_TOKEN)
|
plex = PlexServer(PLEX_URL, PLEX_TOKEN)
|
||||||
## /Edit ##
|
## /Edit ##
|
||||||
|
|
||||||
@ -22,6 +36,8 @@ plex = PlexServer(PLEX_URL, PLEX_TOKEN)
|
|||||||
def instantwatch_search(name, type):
|
def instantwatch_search(name, type):
|
||||||
|
|
||||||
NETFLIX_URL = 'http://www.netflix.com/title/'
|
NETFLIX_URL = 'http://www.netflix.com/title/'
|
||||||
|
search_limit = 5
|
||||||
|
search = True
|
||||||
|
|
||||||
if type == 'movie':
|
if type == 'movie':
|
||||||
content_type = '1'
|
content_type = '1'
|
||||||
@ -38,6 +54,10 @@ def instantwatch_search(name, type):
|
|||||||
results_lst = []
|
results_lst = []
|
||||||
|
|
||||||
res_data = bf.data(fromstring(r.content))
|
res_data = bf.data(fromstring(r.content))
|
||||||
|
|
||||||
|
# with open('data.json', 'w') as outfile:
|
||||||
|
# json.dump(res_data, outfile, indent=4, sort_keys=True)
|
||||||
|
|
||||||
res_data = res_data['html']['body']['div']['div'][1]
|
res_data = res_data['html']['body']['div']['div'][1]
|
||||||
|
|
||||||
# Any matches?
|
# Any matches?
|
||||||
@ -53,24 +73,27 @@ def instantwatch_search(name, type):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
print('{} found {}.'.format(results_lst[0], results_lst[1]))
|
print('{} found {}.'.format(results_lst[0], results_lst[1]))
|
||||||
|
result_count = int(results_lst[1].split(' ')[0])
|
||||||
|
|
||||||
# Title match
|
# Title match
|
||||||
if results_lst[1][0] == '0':
|
if result_count == 0:
|
||||||
print('0 matches, moving on.')
|
print('0 matches, moving on.')
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
item_results_page = title_check['div']['div']
|
item_results_page = title_check['div']['div']
|
||||||
if results_lst[1][0] > '1':
|
if result_count > 1:
|
||||||
for results in item_results_page:
|
for results in item_results_page:
|
||||||
for data in results['span']:
|
for data in results['span']:
|
||||||
if data['@class'] == 'title':
|
if data['@class'] == 'title' and search is True and search_limit > 0:
|
||||||
if data['a']['$'].lower() == name.lower():
|
if data['a']['$'].lower() == name.lower():
|
||||||
print('Match!')
|
print('Match!')
|
||||||
print('Netflix Page: {}{}'.format(NETFLIX_URL, data['a']['@data-title-id']))
|
print('Netflix Page: {}{}'.format(NETFLIX_URL, data['a']['@data-title-id']))
|
||||||
|
search = False
|
||||||
else:
|
else:
|
||||||
print('Could not find exact name match.')
|
print('Could not find exact name match.')
|
||||||
|
search_limit -= 1
|
||||||
|
|
||||||
elif results_lst[1][0] == '1':
|
elif result_count == 1:
|
||||||
for data in item_results_page['span']:
|
for data in item_results_page['span']:
|
||||||
if data['@class'] == 'title':
|
if data['@class'] == 'title':
|
||||||
if data['a']['$'].lower() == name.lower():
|
if data['a']['$'].lower() == name.lower():
|
||||||
@ -80,9 +103,39 @@ def instantwatch_search(name, type):
|
|||||||
print('Could not find exact name match.')
|
print('Could not find exact name match.')
|
||||||
|
|
||||||
|
|
||||||
for t in plex.library.section('Movies').all():
|
def plex_library_search(lib_name):
|
||||||
print('Running check on {}'.format(t.title))
|
for t in plex.library.section(lib_name).all():
|
||||||
instantwatch_search(t.title, t.type)
|
print('Running check on {}'.format(t.title))
|
||||||
print('Waiting 5 seconds before next search.')
|
instantwatch_search(t.title, t.type)
|
||||||
sleep(5)
|
print('Waiting 5 seconds before next search.')
|
||||||
|
sleep(5)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
sections_lst = [d.title for d in plex.library.sections() if d.type in ['show', 'movie']]
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description="Use instantwatcher.com to find if Plex items are on Netflix.",
|
||||||
|
formatter_class=argparse.RawTextHelpFormatter)
|
||||||
|
parser.add_argument('-l', '--library', metavar='', choices=sections_lst, nargs='+',
|
||||||
|
help='Space separated list of case sensitive names to process. Allowed names are:\n'
|
||||||
|
'(choices: %(choices)s)')
|
||||||
|
parser.add_argument('-s', '--search', metavar='', nargs='?',
|
||||||
|
help='Search any name.')
|
||||||
|
parser.add_argument('-t', '--type', metavar='', choices=['movie', 'show'], nargs='?',
|
||||||
|
help='Refine search for name by using type.')
|
||||||
|
|
||||||
|
opts = parser.parse_args()
|
||||||
|
# print(opts)
|
||||||
|
|
||||||
|
if opts.search:
|
||||||
|
instantwatch_search(opts.search, opts.type)
|
||||||
|
else:
|
||||||
|
if len(opts.library) > 1:
|
||||||
|
for section in opts.library:
|
||||||
|
plex_library_search(section)
|
||||||
|
else:
|
||||||
|
plex_library_search(opts.library[0])
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user