예제 #1
0
 def get_data(url):
     import ssl
     data = None
     for i in range(3):
         try:
             request = py_urllib2.Request(url, headers=headers)
             logger.debug(url)
             data = py_urllib2.urlopen(request).read()
         except Exception as e:
             logger.debug('Exception:%s', e)
             logger.debug(traceback.format_exc())
             try:
                 data = py_urllib2.urlopen(request,
                                           headers=headers,
                                           context=ssl.SSLContext(
                                               ssl.PROTOCOL_TLSv1)).read()
             except:
                 try:
                     data = py_urllib2.urlopen(
                         request,
                         headers=headers,
                         context=ssl.SSLContext(
                             ssl.PROTOCOL_TLSv1_2)).read()
                 except:
                     try:
                         data = py_urllib2.urlopen(
                             request,
                             headers=headers,
                             context=ssl.SSLContext(
                                 ssl.PROTOCOL_TLSv1_3)).read()
                     except:
                         pass
         if data is not None:
             return data
         sleep(5)
예제 #2
0
    def get_url(cls, source_id, quality, mode):
        #logger.debug('EVERYON get_url:%s %s', source_id, quality)
        try:
            url = 'http://www.hcnmobile.tv/main/proc/get_ch_data.php'
            params = {'chId': source_id}
            postdata = py_urllib.urlencode(params)
            request = py_urllib2.Request(url, postdata)
            request.add_header(
                'Cookie',
                'etv_api_key=88abc0e1c8e61c8c3109788ec8392c7fd86c16765fc0b80d5f2366c84c894203'
            )
            response = py_urllib2.urlopen(request)
            data = json.load(response, encoding='utf8')
            #url2 = data['medias'][0]['url'] if len(data['medias']) > 0 else None
            url2 = data['media']['url'].replace('\\', '')
            #logger.debug('EVERYON22 :%s', url2)

            cookie = response.info().getheader('Set-Cookie')
            if cookie is None:
                # 종편
                req = py_urllib2.Request(url2)
                res = py_urllib2.urlopen(req)
                data = res.read()
                match = re.compile(r'chunklist(?P<tmp>.*?)$').search(data)
                if match:
                    redirect_url = '%schunklist%s' % (
                        url2.split('playlist.m3u8')[0], match.group('tmp'))
                    return 'redirect', redirect_url
                    #return 'return_after_read', redirect_url
            else:
                #logger.debug('EVERYON22 cookie :%s', cookie)
                ret = url2
                info = {}
                info['Key-Pair-Id'] = ''
                info['Policy'] = ''
                info['Signature'] = ''

                for c in cookie.split(','):
                    c = c.strip()
                    if c.startswith('CloudFront-Key-Pair-Id'):
                        info['Key-Pair-Id'] = c.split(';')[0].split('=')[1]
                    if c.startswith('CloudFront-Policy'):
                        info['Policy'] = c.split(';')[0].split('=')[1]
                    if c.startswith('CloudFront-Signature'):
                        info['Signature'] = c.split(';')[0].split('=')[1]
                ret = ret.replace('live.m3u8', 'live_hd.m3u8')
                #tmp = 'Key-Pair-Id=%s;Policy=%s;Signature=%s' % (info['Key-Pair-Id'], info['Policy'], info['Signature'])
                ret = '%s?Key-Pair-Id=%s&Policy=%s&Signature=%s' % (
                    ret, info['Key-Pair-Id'], info['Policy'],
                    info['Signature'])
                return 'return_after_read', ret
        except Exception as e:
            logger.error('Exception:%s', e)
            logger.error(traceback.format_exc())
예제 #3
0
    def get_return_data(cls, source_id, url, mode):
        try:
            #logger.debug(url)
            tmps = url.split('?')
            pre = '/'.join(tmps[0].split('/')[:-1]) + '/'
            post = tmps[1]

            req = py_urllib2.Request(url)
            res = py_urllib2.urlopen(req)
            data = res.read()
            #logger.debug(data)
            #index_list = ['index_576p30.m3u8', 'index_hd.m3u8']
            #for index in index_list:
            if data.find('index_576p30.m3u8') != -1 or data.find(
                    'index_hd.m3u8') != -1:
                url = url.replace('index.m3u8', 'index_576p30.m3u8')
                url = url.replace('index.m3u8', 'index_hd.m3u8')

                req = py_urllib2.Request(url)
                res = py_urllib2.urlopen(req)
                data = res.read()
                #logger.debug(data)
                data = re.sub('index_576p30', pre + 'index_576p30', data)
                data = re.sub('index_hd', pre + 'index_hd', data)
                data = re.sub('.ts', '.ts?' + post, data)
                return data
            else:
                data = re.sub('live', pre + 'live', data)
                data = re.sub('.ts', '.ts?' + post, data)
                data = re.sub('chunklist', pre + 'chunklist', data)
            #if mode == 'lc' or mode == 'url':
            if data.find('chunklist') == -1:
                if mode == 'web_play':
                    data = cls.change_redirect_data(data)
                return data
            else:
                logger.debug('YYYYYYYYYYYYYYYYYYYYYYYYYY')
                match = re.search('http(.*?)$', data)
                if match:
                    req = py_urllib2.Request(match.group(0))
                    res = py_urllib2.urlopen(req)
                    data = res.read()
                    result = re.compile('(.*?)\.ts').findall(data)
                    for r in result:
                        data = data.replace(r, '%s%s' % (pre, r))
                    return data
        except Exception as e:
            logger.error('Exception:%s', e)
            logger.error(traceback.format_exc())
예제 #4
0
    def trans_papago(text, source='ja', target='ko'):
        trans_papago_key = ModelSetting.get_list('trans_papago_key')

        for tmp in trans_papago_key:
            client_id, client_secret = tmp.split(',')
            try:
                if client_id == '' or client_id is None or client_secret == '' or client_secret is None:
                    return text
                data = "source=%s&target=%s&text=%s" % (source, target, text)
                url = "https://openapi.naver.com/v1/papago/n2mt"
                requesturl = py_urllib2.Request(url)
                requesturl.add_header("X-Naver-Client-Id", client_id)
                requesturl.add_header("X-Naver-Client-Secret", client_secret)
                response = py_urllib2.urlopen(requesturl,
                                              data=data.encode("utf-8"))
                if sys.version_info[0] == 2:
                    data = json.load(response, encoding='utf8')
                else:
                    data = json.load(response)
                rescode = response.getcode()
                if rescode == 200:
                    return data['message']['result']['translatedText']
                else:
                    continue
            except Exception as exception:
                logger.error('Exception:%s', exception)
                logger.error(traceback.format_exc())
        return text
예제 #5
0
    def trans_name(name):
        trans_papago_key = ModelSetting.get_list('trans_papago_key')

        for tmp in trans_papago_key:
            client_id, client_secret = tmp.split(',')
            try:
                if client_id == '' or client_id is None or client_secret == '' or client_secret is None:
                    return
                logger.debug(name)
                encText = py_urllib.quote(str(name))
                logger.debug(encText)
                url = "https://openapi.naver.com/v1/krdict/romanization?query=" + encText
                requesturl = py_urllib2.Request(url)
                requesturl.add_header("X-Naver-Client-Id", client_id)
                requesturl.add_header("X-Naver-Client-Secret", client_secret)
                response = py_urllib2.urlopen(requesturl)
                if sys.version_info[0] == 2:
                    data = json.load(response, encoding='utf8')
                else:
                    data = json.load(response)
                rescode = response.getcode()
                logger.debug(data)
                if rescode == 200:
                    return data
                else:
                    continue
            except Exception as exception:
                logger.error('Exception:%s', exception)
                logger.error(traceback.format_exc())
        return
예제 #6
0
def get_live_json(source_id, quality, credential):
    try:
        quality = get_quality_to_pooq(quality)
        quality_list = get_live_quality_list(source_id)
        if not quality in quality_list:
            quality = quality_list[0]
        url = 'https://wapie.pooq.co.kr/v1/lives30/%s/url' % source_id
        params = DEFAULT_PARAM.copy()
        params['deviceModelId'] = 'Macintosh'
        params['authType'] = 'cookie'
        params['guid'] = get_guid()
        params['lastPlayId'] = 'none'
        params['quality'] = quality
        params['credential'] = credential

        url = '%s?%s' % (url, py_urllib.urlencode(params))
        request = py_urllib2.Request(url)
        response = py_urllib2.urlopen(request)
        if sys.version_info[0] == 2:
            data = json.load(response, encoding='utf8')
        else:
            data = json.load(response)
        return data

    except Exception as exception:
        logger.error('Exception:%s', exception)
        logger.error(traceback.format_exc())
예제 #7
0
    def trans_google(text, source='ja', target='ko'):
        try:
            google_api_key = ModelSetting.get('trans_google_api_key')
            if google_api_key == '' or google_api_key is None:
                return text
            data = "key=%s&source=%s&target=%s&q=%s" % (google_api_key, source,
                                                        target, text)
            url = "https://www.googleapis.com/language/translate/v2"
            requesturl = py_urllib2.Request(url)
            requesturl.add_header("X-HTTP-Method-Override", "GET")

            response = py_urllib2.urlopen(requesturl,
                                          data=data.encode("utf-8"))
            if sys.version_info[0] == 2:
                data = json.load(response, encoding='utf8')
            else:
                data = json.load(response)
            rescode = response.getcode()
            if rescode == 200:
                return data['data']['translations'][0]['translatedText']
            else:
                return text
        except Exception as exception:
            logger.error('Exception:%s', exception)
            logger.error(traceback.format_exc())
            return text
예제 #8
0
 def is_exist_in_library(filename):
     try:
         server_url = db.session.query(ModelSetting).filter_by(key='server_url').first().value
         server_token = db.session.query(ModelSetting).filter_by(key='server_token').first().value
         if server_url == '' or server_token == '':
             return True
         url = '%s/:/plugins/com.plexapp.plugins.SJVA/function/count_in_library?filename=%s&X-Plex-Token=%s' % (server_url, Logic.get_filename_encoding_for_plex(filename), server_token)
         logger.debug('URL:%s', url)
         request = py_urllib2.Request(url)
         response = py_urllib2.urlopen(request)
         data = response.read()
         logger.debug('is_exist_in_library ret:%s', data)
         if data == '0':
             return False
         else:
             try:
                 tmp = int(data)
                 if tmp > 0:
                     return True
             except:
                 return False
             #return True
     except Exception as exception: 
         logger.error('Exception:%s', exception)
         logger.error(traceback.format_exc())
         return False
예제 #9
0
 def add_remote(key, feed, remote_options_id):
     try:
         result = {}
         url = 'https://offcloud.com/api/remote'
         params = {
             'key': key,
             'url': feed.link,
             'remoteOptionId': remote_options_id,
             'folderId': feed.oc_folderid,
         }
         postdata = py_urllib.urlencode(params).encode('utf-8')
         request = py_urllib2.Request(url, postdata)
         response = py_urllib2.urlopen(request)
         data = response.read()
         result = json.loads(data)
         logger.debug('ADD REMOTE ret: %s', result)
         if 'error' in result and result['error'].startswith(
                 "You have more than 100"):
             return 'over'
         feed.oc_requestId = result[
             'requestId'] if 'requestId' in result else ''
         feed.oc_status = result['status'] if 'status' in result else ''
         feed.oc_createdOn = result[
             'createdOn'] if 'createdOn' in result else ''
         feed.oc_error = result['error'] if 'error' in result else ''
         feed.oc_json = result
     except Exception as e:
         logger.error('Exception:%s', e)
         logger.error(traceback.format_exc())
예제 #10
0
    def plungin_command(req):
        try:
            command = req.form['cmd']
            if command == 'get_plugin_list':
                url = 'https://raw.githubusercontent.com/soju6jan/sjva_support/master/plex_install_plugin_list.json'
                return {'ret':'success', 'data':requests.get(url).json()['list']}
                 
                #return json.loads(requests.get(url).text)
            else:
                param1 = req.form['param1'] if 'param1' in req.form else ''
                param2 = req.form['param2'] if 'param2' in req.form else ''
                server_url = db.session.query(ModelSetting).filter_by(key='server_url').first().value
                server_token = db.session.query(ModelSetting).filter_by(key='server_token').first().value
                if param1 != '':
                    param1 = py_urllib.quote(param1)

                url = '%s/:/plugins/com.plexapp.plugins.SJVA/function/command?cmd=%s&param1=%s&param2=%s&X-Plex-Token=%s' % (server_url, command, param1, param2, server_token)
                logger.debug('URL:%s', url)

                request = py_urllib2.Request(url)
                response = py_urllib2.urlopen(request)
                data = response.read()
                data = json.loads(data)
                return data
        except Exception as exception:
            logger.error('Exception:%s', exception)
            logger.error(traceback.format_exc())  
예제 #11
0
 def search_api(cls, keyword):
     trans_papago_key = SystemModelSetting.get_list('trans_papago_key')
     for tmp in trans_papago_key:
         client_id, client_secret = tmp.split(',')
         try:
             if client_id == '' or client_id is None or client_secret == '' or client_secret is None:
                 return text
             url = "https://openapi.naver.com/v1/search/movie.json?query=%s&display=100" % py_urllib.quote(
                 str(keyword))
             requesturl = py_urllib2.Request(url)
             requesturl.add_header("X-Naver-Client-Id", client_id)
             requesturl.add_header("X-Naver-Client-Secret", client_secret)
             #response = py_urllib2.urlopen(requesturl, data = data.encode("utf-8"))
             response = py_urllib2.urlopen(requesturl)
             if sys.version_info[0] == 2:
                 data = json.load(response, encoding='utf8')
             else:
                 data = json.load(response)
             rescode = response.getcode()
             if rescode == 200:
                 return data
             else:
                 continue
         except Exception as exception:
             logger.error('Exception:%s', exception)
             logger.error(traceback.format_exc())
예제 #12
0
 def retry(key, entity):
     try:
         url = 'https://offcloud.com/api/remote/retry/%s?key=%s' % (
             entity.requestId, key)
         request = py_urllib2.Request(url)
         response = py_urllib2.urlopen(request)
     except Exception as e:
         logger.debug('Exception:%s', e)
         logger.debug(traceback.format_exc())
         return None
예제 #13
0
    def send_scan_command2(plugin_name, section_id, filename, callback_id, type_add_remove, call_from, callback_url=None):
        logger.debug('send_scan_command2')
        try:
            server_url = db.session.query(ModelSetting).filter_by(key='server_url').first().value
            server_token = db.session.query(ModelSetting).filter_by(key='server_token').first().value
            if callback_url is None:
                callback_url = '%s/%s/api/scan_completed' %  (SystemModelSetting.get('ddns'), plugin_name)
            logger.debug('send_scan_command PATH:%s ID:%s', filename, section_id)
            #url = '%s/:/plugins/com.plexapp.plugins.SJVA/function/WaitFile?section_id=%s&filename=%s&callback=%s&callback_id=%s&type_add_remove=%s&call_from=%s&X-Plex-Token=%s' % (server_url, section_id, urllib.quote(filename.encode('cp949')), urllib.quote(callback_url), callback_id, type_add_remove, call_from, server_token)
            encode_filename = Logic.get_filename_encoding_for_plex(filename)
            url = '%s/:/plugins/com.plexapp.plugins.SJVA/function/WaitFile?section_id=%s&filename=%s&callback=%s&callback_id=%s&type_add_remove=%s&call_from=%s&X-Plex-Token=%s' % (server_url, section_id, encode_filename, py_urllib.quote(callback_url), callback_id, type_add_remove, call_from, server_token)
            logger.debug('URL:%s', url)
            request = py_urllib2.Request(url)
            response = py_urllib2.urlopen(request)
            data = response.read()
            logger.debug('_send_scan_command ret:%s', data)
            scan_server = db.session.query(ModelSetting).filter_by(key='scan_server').first().value
            if scan_server != '':
                servers = scan_server.split(',')
                for s in servers:
                    try:
                        s = s.strip()
                        s_url, s_token = s.split('&')
                        url = '%s/:/plugins/com.plexapp.plugins.SJVA/function/WaitFile?section_id=&filename=%s&callback=&callback_id=&type_add_remove=%s&call_from=%s&X-Plex-Token=%s' % (s_url.strip(),  encode_filename, type_add_remove, call_from, s_token.strip())
                        request = py_urllib2.Request(url)
                        response = py_urllib2.urlopen(request)
                        s_data = response.read()
                        logger.debug('scan_server2 : %s ret:%s', s_url, s_data)
                    except Exception as exception:
                        logger.debug('Exception:%s', exception)
                        logger.debug(traceback.format_exc())  

            return data
        except Exception as exception:
            logger.error('Exception:%s', exception)
            logger.error(traceback.format_exc())  
예제 #14
0
 def get_remote_account(key):
     try:
         url = 'https://offcloud.com/api/remote/accounts'
         params = {'key': key}
         postdata = py_urllib.urlencode(params).encode('utf-8')
         request = py_urllib2.Request(url, postdata)
         response = py_urllib2.urlopen(request)
         data = json.load(response)
         if 'data' in data:
             return data['data']
         else:
             return None
     except Exception as e:
         logger.error('Exception:%s', e)
         logger.error(traceback.format_exc())
         return None
예제 #15
0
파일: live.py 프로젝트: soju6jan/SJVA3
def get_live_quality_list(source_id):
    try:
        url = 'https://wapie.pooq.co.kr/v1/lives30/%s' % source_id
        params = DEFAULT_PARAM.copy()
        params['credential'] = 'none'
        url = '%s?%s' % (url, py_urllib.urlencode(params))
        request = py_urllib2.Request(url)
        response = py_urllib2.urlopen(request)
        if sys.version_info[0] == 2:
            data = json.load(response, encoding='utf8')
        else:
            data = json.load(response)
        result = data['result']['qualityList'][0]['quality']
        return result
    except Exception as exception:
        logger.error('Exception:%s', exception)
        logger.error(traceback.format_exc())
예제 #16
0
    def send_scan_command(modelfile, plugin_name):
        entity = modelfile
        logger.debug('send_scan_command')
        try:
            server_url = db.session.query(ModelSetting).filter_by(key='server_url').first().value
            server_token = db.session.query(ModelSetting).filter_by(key='server_token').first().value
            if server_url == '':
                logger.debug('server_url is empty!')
                return
            callback_url = '%s/%s/api/scan_completed' %  (SystemModelSetting.get('ddns'), plugin_name)
            filename = entity.plex_abspath if entity.plex_abspath is not None else os.path.join(entity.scan_abspath, entity.filename)
            logger.debug('send_scan_command PATH:%s ID:%s', entity.plex_abspath, entity.plex_section_id)
            encode_filename = Logic.get_filename_encoding_for_plex(filename)
            url = '%s/:/plugins/com.plexapp.plugins.SJVA/function/WaitFile?section_id=%s&filename=%s&callback=%s&callback_id=%s&type_add_remove=ADD&call_from=FILE_MANAGER&X-Plex-Token=%s' % (server_url, entity.plex_section_id, encode_filename, py_urllib.quote(callback_url), entity.id, server_token)
            logger.debug('URL:%s', url)
            request = py_urllib2.Request(url)
            response = py_urllib2.urlopen(request)
            data = response.read()
            logger.debug(url)
            logger.debug('_send_scan_command ret:%s', data)
            entity.send_command_time = datetime.now()
            
            scan_server = db.session.query(ModelSetting).filter_by(key='scan_server').first().value
            if scan_server != '':
                servers = scan_server.split(',')
                for s in servers:
                    try:
                        s = s.strip()
                        s_url, s_token = s.split('&')
                        url = '%s/:/plugins/com.plexapp.plugins.SJVA/function/WaitFile?section_id=&filename=%s&callback=&callback_id=&type_add_remove=ADD&call_from=FILE_MANAGER&X-Plex-Token=%s' % (s_url.strip(), encode_filename, s_token.strip())
                        #request = py_urllib2.Request(url)
                        #response = py_urllib2.urlopen(request)
                        #data = response.read()
                        logger.debug(url)
                        res = requests.get(url, timeout=30)
                        logger.debug('scan_server : %s status_code:%s', res.status_code)
                    except Exception as exception:
                        logger.debug('Exception:%s', exception)
                        logger.debug(traceback.format_exc())  


            #DBManager.update_status_download_korea_tv(entity)
        except Exception as exception:
            logger.error('Exception:%s', exception)
            logger.error(traceback.format_exc())  
예제 #17
0
 def add_remote_by_magnet(key, magnet, remote_options_id, folder_id):
     try:
         url = 'https://offcloud.com/api/remote'
         params = {
             'key': key,
             'url': magnet,
             'remoteOptionId': remote_options_id,
             'folderId': folder_id,
         }
         postdata = py_urllib.urlencode(params).encode('utf-8')
         request = py_urllib2.Request(url, postdata)
         response = py_urllib2.urlopen(request)
         data = response.read()
         result = json.loads(data)
         return result
     except Exception as e:
         logger.error('Exception:%s', e)
         logger.error(traceback.format_exc())
예제 #18
0
def get_live_list():
    try:
        url = 'https://wapie.pooq.co.kr/v1/livesgenresort30/'
        params = DEFAULT_PARAM.copy()
        params['credential'] = 'none'
        params['orderby'] = 'g'
        url = '%s?%s' % (url, py_urllib.urlencode(params))
        #logger.debug('get_live_list:%s', url)
        request = py_urllib2.Request(url)
        response = py_urllib2.urlopen(request)
        if sys.version_info[0] == 2:
            data = json.load(response, encoding='utf8')
        else:
            data = json.load(response)
        return data['result']['list']
    except Exception as exception:
        logger.error('Exception:%s', exception)
        logger.error(traceback.format_exc())
예제 #19
0
 def GetChannelListFromCate(cls, cate, pageNo='1'):
     url = 'http://www.hcnmobile.tv/main/proc/ajax_ch_list.php'
     params = {
         'chNum': '',
         'cate': '',
         'sCate': cate,
         'chNum': '',
         'chNm': '',
         'page': pageNo,
         'perPage': '20',
         'srchTxt': ''
     }
     postdata = py_urllib.urlencode(params)
     request = py_urllib2.Request(url, postdata)
     request.add_header(
         'Cookie',
         'etv_api_key=88abc0e1c8e61c8c3109788ec8392c7fd86c16765fc0b80d5f2366c84c894203'
     )
     response = py_urllib2.urlopen(request)
     data = response.read()
     hasMore = 'Y' if int(data.split('|')[1]) > int(pageNo) * 20 else 'N'
     regax = 'thumb\"\stitle\=\"(.*?)\".*\s*.*selCh\(\'(.*?)\'.*\s*<img\ssrc\=\"(.*?)\"'
     regax2 = 'ch_name\"\stitle\=\"(.*?)\"'
     r = re.compile(regax)
     r2 = re.compile(regax2)
     m = r.findall(data)
     m2 = r2.findall(data)
     list = []
     #for item in m:
     for i in range(len(m)):
         info = {}
         info['title'] = m[i][0].replace(',', ' ')
         info['id'] = m[i][1]
         info['img'] = m[i][2]
         info['summary'] = m2[i]
         list.append(info)
     logger.debug('ret:%s %s', hasMore, len(list))
     return hasMore, list
예제 #20
0
    def get_channel_list(cls):
        try:
            stamp = str(datetime.datetime.today().strftime('%Y%m%d%H%M%S'))
            url = 'http://123.140.104.150/api/epg/v1/channel/virtual?access_key=C4A0697007C3548D389B&cp_id=S_LGU_HYUK0920&system_id=HDTV&SA_ID=500053434041&STB_MAC=v000.5343.4041&NSC_TYPE=LTE&BASE_GB=Y&BASE_CD=W172.017&YOUTH_YN=N&ORDER_GB=N&POOQ_YN=N&HDTV_VIEW_GB=R&SID=001010005638&CLIENT_IP=172.17.100.15&OS_INFO=android_4.4.2&NW_INFO=WIFI&APP_TYPE=ROSA&DEV_MODEL=SM-N935F&CARRIER_TYPE=E&UI_VER=04.38.04&NOW_PAGE=25&PRE_PAGE=&MENU_NM=&CONTS_GB=&TERM_BINVER=3.8.118.0106'
            ret = []
            request = py_urllib2.Request(url)
            response = py_urllib2.urlopen(request)
            tree = ET.parse(response)
            root = tree.getroot()
            for item in root.findall('list'):
                #info = {}
                #info['id'] = item.findtext('service_id')
                #info['title'] = item.findtext('service_name').strip()
                #info['img'] = item.findtext('img_url') + item.findtext('img_file_name')
                #info['summary'] = item.findtext('description')
                #url = item.findtext('live_server1') + item.findtext('live_file_name1')
                #info['url']  = '%s?VOD_RequestID=v2M2-0101-1010-7272-5050-0000%s;LTE;480p;WIFI&APPNAME=hdtv&ALBUM_ID=%s&ma=D0:17:C2:CE:D7:A1' % (url, stamp, info['id'])
                #if item.findtext('live_file_name1') != '' and item.findtext('genre_name') != u'성인':
                #	result.append(info)
                import system

                
                if item.findtext('service_id') in ['628', '629', '743']:
                    if not SystemModelSetting.get_bool('videoportal_adult'):
                        continue

                c = ModelChannel(cls.source_name, 
                    item.findtext('service_id'), 
                    item.findtext('service_name').strip(), 
                    item.findtext('img_url') + item.findtext('img_file_name'),
                    True)
                c.current = item.findtext('description')
                ret.append(c)

        except Exception as e:
            logger.error('Exception:%s', e)
            logger.error(traceback.format_exc())
        return ret
예제 #21
0
 def refresh_status(key, feed):
     try:
         url = 'https://offcloud.com/api/remote/status'
         params = {'key': key, 'requestId': feed.oc_requestId}
         postdata = py_urllib.urlencode(params).encode('utf-8')
         request = py_urllib2.Request(url, postdata)
         response = py_urllib2.urlopen(request)
         data = response.read()
         data = json.loads(data)
         feed.oc_json = data
         if 'status' in data:
             feed.oc_status = data['status']['status']
             if feed.oc_status == 'error':
                 pass
             elif feed.oc_status == 'downloaded':
                 feed.oc_fileSize = int(data['status']['fileSize'])
                 feed.oc_fileName = data['status']['fileName']
         else:
             logger.debug('NO STATUS %s %s', url, params)
             feed.oc_status = 'NOSTATUS'
     except Exception as e:
         logger.error('Exception:%s', e)
         logger.error(traceback.format_exc())
예제 #22
0
 def cache(key, magnet_list, remoteOptionId):
     try:
         url = 'https://offcloud.com/api/torrent/check?key=%s' % (key)
         params = {'hashes': magnet_list}
         res = requests.post(url, json=params)
         result = res.json()
         for i in result['cachedItems']:
             url = 'https://offcloud.com/api/remote'
             params = {
                 'key': key,
                 'url': 'magnet:?xt=urn:btih:%s' % i,
                 'remoteOptionId': remoteOptionId,
                 'folderId': '10b5Z-0RA08d6p2iMNQ9D__7e5gWOV6v5',
             }
             postdata = py_urllib.urlencode(params).encode('utf-8')
             request = py_urllib2.Request(url, postdata)
             response = py_urllib2.urlopen(request)
             data = response.read()
             result = json.loads(data)
     except Exception as e:
         logger.error('Exception:%s', e)
         logger.error(traceback.format_exc())
         return None
예제 #23
0
    def search_api(cls, titl, auth, cont, isbn, publ):
        logger.debug(f"책 검색 : [{titl}] [{auth}] ")
        trans_papago_key = SystemModelSetting.get_list('trans_papago_key')
        for tmp in trans_papago_key:
            client_id, client_secret = tmp.split(',')
            try:
                if client_id == '' or client_id is None or client_secret == '' or client_secret is None:
                    return text
                #url = "https://openapi.naver.com/v1/search/book.json?query=%s&display=100" % py_urllib.quote(str(keyword))
                url = f"https://openapi.naver.com/v1/search/book_adv.xml?display=100"
                if titl != '':
                    url += f"&d_titl={py_urllib.quote(str(titl))}"
                if auth != '':
                    url += f"&d_auth={py_urllib.quote(str(auth))}"
                if cont != '':
                    url += f"&d_cont={py_urllib.quote(str(cont))}"
                if isbn != '':
                    url += f"&d_isbn={py_urllib.quote(str(isbn))}"
                if publ != '':
                    url += f"&d_publ={py_urllib.quote(str(publ))}"

                requesturl = py_urllib2.Request(url)
                requesturl.add_header("X-Naver-Client-Id", client_id)
                requesturl.add_header("X-Naver-Client-Secret", client_secret)
                #response = py_urllib2.urlopen(requesturl, data = data.encode("utf-8"))
                response = py_urllib2.urlopen(requesturl)
                data = response.read()
                data = json.loads(json.dumps(xmltodict.parse(data)))
                #logger.warning(data)
                rescode = response.getcode()
                if rescode == 200:
                    return data
                else:
                    continue
            except Exception as exception:
                logger.error('Exception:%s', exception)
                logger.error(traceback.format_exc())
예제 #24
0
    def make_xml(root):
        try:
            server_url = db.session.query(ModelSetting).filter_by(key='server_url').first().value
            server_token = db.session.query(ModelSetting).filter_by(key='server_token').first().value
            if Logic.server is None:
                Logic.server = PlexServer(server_url, server_token)

            lc_json = Logic.get_setting_value('lc_json')
            json_info = json.loads(lc_json)
            for info in json_info:
                logger.debug(info)

                if info['type'] == 'recent_add':
                    channel_number = info['start_number']
                    max_count = info['count']
                    channel_index = 1
                    channel_step = 1
                    if info['reverse']:
                        channel_step = -1

                    if info['section'] == 'episode':
                        url = '%s/hubs/home/recentlyAdded?type=2&X-Plex-Token=%s' % (server_url, server_token)
                        channel_title = u'최신TV'
                    elif info['section'] == 'movie':
                        url = '%s/hubs/home/recentlyAdded?type=1&X-Plex-Token=%s' % (server_url, server_token)
                        channel_title = u'최신영화'
                    else:
                        url = '%s/hubs/home/recentlyAdded?type=1&sectionID=%s&X-Plex-Token=%s' % (server_url, info['section'], server_token)
                        channel_title = u''

                    doc = lxml.html.parse(py_urllib2.urlopen(url))
                    videos = doc.xpath("//video")

                    for tag_video in videos:
                        channel_tag = None
                        program_tag = None
                        try:
                            if channel_title == '':
                                channel_title = tag_video.attrib['librarysectiontitle']
                            tmp = tag_video.xpath('.//media')
                            if tmp:
                                tag_media = tmp[0]
                            else:
                                continue
                            tag_part = tag_media.xpath('.//part')[0]

                            if tag_video.attrib['type'] == 'movie':
                                title = tag_video.attrib['title']
                            elif tag_video.attrib['type'] == 'episode':
                                if 'index' in tag_media.attrib:
                                    title = u'%s회 %s %s' % (tag_video.attrib['index'], tag_video.attrib['grandparenttitle'], tag_video.attrib['title'])
                                else:
                                    title = u'%s %s' % (tag_video.attrib['grandparenttitle'], tag_video.attrib['title'])
                            else:
                                continue
                            if 'duration' not in tag_media.attrib:
                                continue
                            duration = int(tag_media.attrib['duration'])
                            video_url = '%s%s?X-Plex-Token=%s' % (server_url, tag_part.attrib['key'], server_token)
                            icon_url = '%s%s?X-Plex-Token=%s' % (server_url, tag_video.attrib['thumb'], server_token)
                            ############################
                            channel_tag = ET.SubElement(root, 'channel') 
                            channel_tag.set('id', str(channel_number))
                            channel_tag.set('repeat-programs', 'true')

                            display_name_tag = ET.SubElement(channel_tag, 'display-name') 
                            display_name_tag.text = '%s(%s)' % (channel_title, channel_index)
                            display_name_tag = ET.SubElement(channel_tag, 'display-number') 
                            display_name_tag.text = str(channel_number)
                            
                            datetime_start = datetime(2019,1,1) + timedelta(hours=-9)
                            datetime_stop = datetime_start + timedelta(seconds=duration/1000+1)
                            program_tag = ET.SubElement(root, 'programme')
                            program_tag.set('start', datetime_start.strftime('%Y%m%d%H%M%S') + ' +0900')
                            program_tag.set('stop', datetime_stop.strftime('%Y%m%d%H%M%S') + ' +0900')
                            program_tag.set('channel', str(channel_number))
                            program_tag.set('video-src', video_url)
                            program_tag.set('video-type', 'HTTP_PROGRESSIVE')
                            
                            title_tag = ET.SubElement(program_tag, 'title')
                            title_tag.set('lang', 'ko')
                            title_tag.text = title

                            
                            icon_tag = ET.SubElement(program_tag, 'icon')
                            icon_tag.set('src', icon_url)
                            if 'summary' in tag_video.attrib:
                                desc_tag = ET.SubElement(program_tag, 'desc')
                                desc_tag.set('lang', 'ko')
                                desc_tag.text = tag_video.attrib['summary']
                            channel_tag = None
                            program_tag = None
                            channel_index += 1
                            channel_number += channel_step
                            if channel_index > max_count:
                                break
                        except Exception as exception:
                            logger.error('Exception:%s', exception)
                            logger.error(traceback.format_exc())
                            if channel_tag is not None:
                                root.remove(channel_tag)
                            if program_tag is not None:
                                root.remove(channel_tag)



        except Exception as exception:
            logger.error('Exception:%s', exception)
            logger.error(traceback.format_exc())  


        """
예제 #25
0
파일: logic_m3u.py 프로젝트: soju6jan/SJVA3
    def make_m3u():
        try:
            from .logic import Logic
            server_url = ModelSetting.get('server_url')
            server_token = ModelSetting.get('server_token')
            if Logic.server is None:
                Logic.server = PlexServer(server_url, server_token)

            json_info = json.loads(ModelSetting.get('tivimate_json'))
            data = "#EXTM3U\n"

            root = ET.Element('tv')
            root.set('generator-info-name', "plex")
            LogicM3U.channel_index = 1
            for info in json_info:
                if info['type'] == 'recent_add':
                    if info['section'] == 'episode':
                        url = '%s/hubs/home/recentlyAdded?type=2&X-Plex-Token=%s' % (
                            server_url, server_token)
                        channel_title = u'최신TV'
                    elif info['section'] == 'movie':
                        url = '%s/hubs/home/recentlyAdded?type=1&X-Plex-Token=%s' % (
                            server_url, server_token)
                        channel_title = u'최신영화'
                    else:
                        url = '%s/library/sections/%s/recentlyAdded?X-Plex-Token=%s' % (
                            server_url, info['section'], server_token)
                        channel_title = u''
                    logger.debug(url)

                    doc = lxml.html.parse(py_urllib2.urlopen(url))
                    videos = doc.xpath("//video")
                    if channel_title == '':
                        channel_title = doc.xpath("//mediacontainer")[
                            0].attrib['librarysectiontitle']

                    data, root = LogicM3U.make_list(data, root, videos, info,
                                                    channel_title)
                elif info['type'] == 'show':
                    #
                    url = '%s/library/metadata/%s/children?X-Plex-Token=%s' % (
                        server_url, info['metadata'], server_token)
                    logger.debug(url)
                    doc = lxml.html.parse(py_urllib2.urlopen(url))
                    seasons = doc.xpath("//directory")
                    logger.debug(seasons)

                    if seasons:
                        channel_title = doc.xpath(
                            "//mediacontainer")[0].attrib['title2']
                        include_parent = True if len(seasons) > 1 else False
                        for s in seasons:
                            logger.debug(s.attrib)
                            if 'ratingkey' in s.attrib:
                                logger.debug(s.attrib['ratingkey'])

                                url = '%s/library/metadata/%s/children?X-Plex-Token=%s' % (
                                    server_url, s.attrib['ratingkey'],
                                    server_token)
                                doc2 = lxml.html.parse(py_urllib2.urlopen(url))
                                videos = doc2.xpath("//video")

                                data, root = LogicM3U.make_list(
                                    data,
                                    root,
                                    videos,
                                    info,
                                    channel_title,
                                    include_parent=include_parent)
                    else:
                        channel_title = '%s %s' % (
                            doc.xpath("//mediacontainer")[0].attrib['title1'],
                            doc.xpath("//mediacontainer")[0].attrib['title2'])
                        videos = doc.xpath("//video")
                        data, root = LogicM3U.make_list(data,
                                                        root,
                                                        videos,
                                                        info,
                                                        channel_title,
                                                        include_parent=True)
            tree = ET.ElementTree(root)
            ret = ET.tostring(root,
                              pretty_print=True,
                              xml_declaration=True,
                              encoding="utf-8")

            return data, ret
        except Exception as exception:
            logger.error('Exception:%s', exception)
            logger.error(traceback.format_exc())