Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from subprocess import Popen, call
- from vlc import Instance
- from sys import exit
- from csv import reader
- from xml.etree import ElementTree
- from filter import readSrt
- from download import FindSubtitles
- from srt2dfxp import convert
- import requests
- import time
- import os
- import cherrypy
- def filterSubtitles(title, eptitle):
- global name
- if eptitle:
- name = '{} {}'.format(title, eptitle)
- else:
- name = title
- done = False
- downloadsub = True
- subisvideolang = True
- # stop if there is a ***_filtered.srt and ***.mute file
- for file in os.listdir(NetflixServer.videodir):
- if file.endswith("_filtered.srt") \
- and os.path.isfile(NetflixServer.videodir + name + '.mute'):
- done = True
- break
- if done:
- return
- # ask user to use existing srt
- for file in os.listdir(NetflixServer.videodir):
- if file.endswith(".srt") and not file.endswith("_filtered.srt"):
- originalname = file
- os.rename(NetflixServer.videodir+file, NetflixServer.videodir+name+'.srt')
- downloadsub = False
- break
- # download subtitle
- if downloadsub:
- subisvideolang = FindSubtitles(NetflixServer.videodir, name, NetflixServer.languages)
- if subisvideolang:
- # filter+mute using one downloaded file
- readSrt(NetflixServer.videodir+name,NetflixServer.filtername, downloadsub, NetflixServer.wordmutingmargin, subisvideolang)
- print 'The subtitles are in the same language as the video'
- else:
- # filter using translated subtitles
- readSrt(NetflixServer.videodir+name, NetflixServer.filtername, downloadsub, NetflixServer.wordmutingmargin, subisvideolang, True)
- # use original language subtitles for muting
- readSrt(NetflixServer.videodir+name+'_original_language', NetflixServer.filtername, downloadsub, subisvideolang, False)
- print 'The subtitles are not in the same language as the video'
- else:
- # filter+mute using local subtitles file
- readSrt(NetflixServer.videodir+name, NetflixServer.filtername, downloadsub, NetflixServer.wordmutingmargin, subisvideolang)
- # rename existing subtitles to original filename
- os.rename(NetflixServer.videodir+name+'.srt', NetflixServer.videodir+originalname)
- def getMutelist():
- # read ***.mute file in [[starttime][endtime]] format
- global name
- with open(NetflixServer.videodir + name + '.mute', 'r') as mutefile:
- readercsv = reader(mutefile, delimiter='\t')
- readerlist = list(readercsv)
- return [[float(string) for string in inner] for inner in readerlist]
- def resource_path(relative_path):
- """ Get absolute path to resource, works for dev and for PyInstaller """
- try:
- # PyInstaller creates a temp folder and stores path in _MEIPASS
- base_path = sys._MEIPASS
- except Exception:
- base_path = os.path.abspath(".")
- return os.path.join(base_path, relative_path)
- def mute():
- # mute
- call([resource_path("nircmdc.exe"), "mutesysvolume", "1"], shell=True)
- def unmute():
- # unmute
- call([resource_path("nircmdc.exe"), "mutesysvolume", "0"], shell=True)
- def checkWriteable():
- # check if location is writeable (other way?)
- if not os.access(NetflixServer.videodir, os.W_OK | os.X_OK):
- ui.showPopup('No write access to video location')
- exit()
- class NetflixServer(object):
- videodir = os.getcwd() + '\\'
- filtername = 'filter.txt'
- languages = 'dut, eng'
- interval = 0.1
- wordmutingmargin = 0
- # initialize loop
- nowmuted = False
- filtered = False
- mutelist = []
- @cherrypy.expose
- def index(self, **params):
- position = float(params['position'])
- duration = float(params['duration'])
- title = params['title']
- eptitle = params['eptitle']
- if title:
- if not NetflixServer.filtered:
- checkWriteable()
- filterSubtitles(title, eptitle)
- NetflixServer.mutelist = getMutelist()
- NetflixServer.filtered = True
- for muteitem in NetflixServer.mutelist:
- if (muteitem[0] - NetflixServer.interval) < position < muteitem[1]:
- if not NetflixServer.nowmuted:
- print 'Muting at ' + time.strftime('%H:%M:%S', time.gmtime(position))
- mute()
- NetflixServer.nowmuted = True
- break
- else:
- if NetflixServer.nowmuted:
- unmute()
- NetflixServer.nowmuted = False
- #print 'Current playback time is ' + time.strftime('%H:%M:%S', time.gmtime(position))
- if __name__ == '__main__':
- cherrypy.config.update({'environment': 'production', 'log.error_file': 'site.log'})
- print 'Starting http server...'
- cherrypy.quickstart(NetflixServer())
Advertisement
Add Comment
Please, Sign In to add comment