Пример #1
0
 def process_telegram_data(self, data, target=None):
     try:
         ret = ModelItem.process_telegram_data(data)
         logger.debug(data)
         #ret = None
         if ret is not None:
             if ModelSetting.get_bool('receive_send_notify'):
                 msg = '😉 AV 정보 수신\n'
                 msg += '제목 : [%s] %s (%s)\n' % (ret.code, ret.title, ret.date)
                 msg += '파일 : %s\n' % ret.filename
                 msg += '폴더 : %s\n' % ret.dirname
                 msg += '크기 : %s\n' % Util.sizeof_fmt(ret.total_size)
                 
                 url = '%s/%s/api/%s/add_download?id=%s' % (SystemModelSetting.get('ddns'), package_name, self.name, ret.id)
                 if SystemModelSetting.get_bool('auth_use_apikey'):
                     url += '&apikey=%s' % SystemModelSetting.get('auth_apikey')
                 if app.config['config']['is_server']:
                     msg += '\n' + ret.magnet + '\n'
                 else:
                     msg += '\n➕ 다운로드 추가\n<%s>\n' % url
                 #msg += '\n➕ 다운로드 추가\n<%s>\n' % url
                 
                 poster = ret.poster if ModelSetting.get_bool('show_poster_notify') else None
                 ToolBaseNotify.send_message(msg, image_url=poster, message_id='bot_downloader_av_receive')
             self.invoke()
             try:
                 if app.config['config']['is_server']:
                     from tool_expand import TorrentProcess
                     TorrentProcess.receive_new_data(ret, package_name)
             except: pass
     except Exception as e:
             logger.error('Exception:%s', e)
             logger.error(traceback.format_exc())
 def process_menu(self, sub, req):
     arg = P.ModelSetting.to_dict()
     arg['sub'] = self.name
     if sub == 'setting':
         arg['scheduler'] = str(
             scheduler.is_include(self.get_scheduler_name()))
         arg['is_running'] = str(
             scheduler.is_running(self.get_scheduler_name()))
         arg['rss_api'] = '%s/%s/api/%s/rss' % (
             SystemModelSetting.get('ddns'), package_name, self.name)
         arg['rss_api'] = Util.make_apikey(arg['rss_api'])
         return render_template(
             '{package_name}_{module_name}_{sub}.html'.format(
                 package_name=package_name, module_name=self.name, sub=sub),
             arg=arg)
     elif sub == 'list':
         arg['is_torrent_info_installed'] = False
         try:
             import torrent_info
             arg['is_torrent_info_installed'] = True
         except:
             pass
         arg['ddns'] = SystemModelSetting.get('ddns')
         arg['show_log'] = ModelSetting.get_bool('show_log')
         arg['show_poster'] = ModelSetting.get('show_poster')
         return render_template(
             '{package_name}_{module_name}_{sub}.html'.format(
                 package_name=package_name, module_name=self.name, sub=sub),
             arg=arg)
     return render_template('sample.html',
                            title='%s - %s' % (package_name, sub))
Пример #3
0
 def process_telegram_data(data):
     try:
         logger.debug('receive data')
         logger.debug(data)
         type_list = ModelSetting.get('cache_save_type_list').split('|')
         type_list = Util.get_list_except_empty(type_list)
         if len(type_list) == 0 or data['t'] in type_list:
             ret = ModelOffcloud2Cache.add(data)
             if ret is not None:
                 logger.debug('Offcloud2 %s append' % ret.name)
                 if ModelSetting.get_bool(
                         'cache_receive_info_send_telegram'):
                     msg = '😉 Offcloud2 캐쉬 정보 수신\n'
                     msg += 'Type : %s\n' % data['t']
                     msg += '%s\n' % data['n']
                     from system.model import ModelSetting as SystemModelSetting
                     ddns = SystemModelSetting.get('ddns')
                     url = '%s/%s/api/cache_download?id=%s' % (
                         ddns, package_name, ret.id)
                     if SystemModelSetting.get_bool('auth_use_apikey'):
                         url += '&apikey=%s' % SystemModelSetting.get(
                             'auth_apikey')
                     msg += '➕ 리모트 다운로드 추가\n<%s>' % url
                     import framework.common.notify as Notify
                     Notify.send_message(
                         msg, message_id='offcloud2_cache_receive')
     except Exception as e:
         logger.error(e)
         logger.error(traceback.format_exc())
Пример #4
0
    def info2(self, code, SiteClass):
        ret = None
        logger.debug('ama info2:%s %s', code, SiteClass)
        image_mode = ModelSetting.get(
            'jav_censored_ama_{site_name}_image_mode'.format(
                site_name=SiteClass.site_name))
        data = SiteClass.info(
            code,
            proxy_url=ModelSetting.get(
                'jav_censored_ama_{site_name}_proxy_url'.format(
                    site_name=SiteClass.site_name)) if ModelSetting.get_bool(
                        'jav_censored_ama_{site_name}_use_proxy'.format(
                            site_name=SiteClass.site_name)) else None,
            image_mode=image_mode)
        #logger.debug(data)

        if data['ret'] == 'success':
            ret = data['data']
            if ModelSetting.get_bool(
                    'jav_censored_use_sjva'
            ) and image_mode == '3' and SystemModelSetting.get(
                    'trans_type'
            ) == '1' and SystemModelSetting.get('trans_google_api_key') != '':
                MetadataServerUtil.set_metadata_jav_censored(
                    code, ret, ret['title'].lower())
        return ret
 def process_telegram_data(self, data, target=None):
     try:
         ret = ModelBotDownloaderKtvItem.process_telegram_data(data)
         #logger.debug(ret)
         if ret is not None:
             if ModelSetting.get_bool('receive_info_send_telegram'):
                 msg = '😉 TV 정보 수신\n'
                 msg += '제목 : %s\n' % data['filename']
                 if ret is None:
                     msg += '중복 마그넷입니다.'
                     #TelegramHandle.sendMessage(msg)
                 else:
                     url = '%s/%s/api/%s/add_download?url=%s' % (SystemModelSetting.get('ddns'), package_name, self.name, ret.magnet)
                     if SystemModelSetting.get_bool('auth_use_apikey'):
                         url += '&apikey=%s' % SystemModelSetting.get('auth_apikey')
                     if app.config['config']['is_sjva_server']:
                         msg += '\n' + ret.magnet + '\n'
                     else:
                         msg += '\n➕ 다운로드 추가\n<%s>\n' % url
                     try:
                         if ret.daum_id is not None:
                             url = 'https://search.daum.net/search?w=tv&q=%s&irk=%s&irt=tv-program&DA=TVP' % (urllib.quote(ret.daum_title.encode('utf8')), ret.daum_id)
                             msg += '\n● Daum 정보\n%s' % url
                     except Exception as e: 
                         logger.error('Exception:%s', e)
                         logger.error(traceback.format_exc())  
                 import framework.common.notify as Notify
                 Notify.send_message(msg, image_url=ret.daum_poster_url, message_id='bot_downloader_ktv_receive')
             self.invoke()
             TorrentProcess.receive_new_data(ret, package_name)
     except Exception, e:
             logger.error('Exception:%s', e)
             logger.error(traceback.format_exc())
Пример #6
0
    def uninstall(self):
        def func():
            return_log = SystemLogicCommand2('삭제', [
                ['msg', u'잠시만 기다려주세요.'],
                [
                    'msg',
                    u'kill.sh 명령 실행 후 웹은 반응이 없습니다. 자동 SJVA 재시작하니 잠시 후 새로고침하세요.'
                ],
                ['{}/data/custom/nginx/files/kill.sh'.format(path_app_root)],
                [
                    '{}/data/custom/nginx/files/uninstall.sh'.format(
                        path_app_root)
                ],
                ['msg', u'삭제가 완료되었습니다.'],
            ],
                                             wait=True,
                                             show_modal=True).start()
            import system
            system.restart()

        if SystemModelSetting.get('port') == '19999':
            SystemModelSetting.set('port', '9999')
        t = threading.Thread(target=func, args=())
        t.setDaemon(True)
        t.start()
Пример #7
0
    def install(self):
        def func():
            cmd = [
                ['msg', u'잠시만 기다려주세요.'],
                [
                    '{}/data/custom/nginx/files/install.sh'.format(
                        path_app_root)
                ],
                ['msg', u'설치가 완료되었습니다.'],
            ]
            if is_termux():
                cmd.append(['msg', u'termux를 재시작 해주세요.'])
            else:
                cmd.append(['msg', u'SJVA가 아닌 도커를 재시작 해주세요.'])
                cmd.append(['msg', u'예) docker restart sjva'])
            return_log = SystemLogicCommand2('설치',
                                             cmd,
                                             wait=False,
                                             show_modal=True).start()

        if SystemModelSetting.get('port') != '19999':
            SystemModelSetting.set('port', '19999')

        t = threading.Thread(target=func, args=())
        t.setDaemon(True)
        t.start()
Пример #8
0
 def make_apikey(url):
     from framework import SystemModelSetting
     url = url.format(ddns=SystemModelSetting.get('ddns'))
     if SystemModelSetting.get_bool('auth_use_apikey'):
         if url.find('?') == -1:
             url += '?'
         else:
             url += '&'
         url += 'apikey=%s' % SystemModelSetting.get('auth_apikey')
     return url
Пример #9
0
 def make_apikey_url(cls, url):
     from framework import SystemModelSetting
     if not url.startswith('http'):
         url = SystemModelSetting.get('ddns') + url
     if SystemModelSetting.get_bool('auth_use_apikey'):
         if url.find('?') == -1:
             url += '?'
         else:
             url += '&'
         url += 'apikey=%s' % SystemModelSetting.get('auth_apikey')
     return url
Пример #10
0
    def make_vod_m3u(cls):
        try:
            from lxml import etree as ET
            from system.model import ModelSetting as SystemModelSetting

            data = "#EXTM3U\n"
            root = ET.Element('tv')
            root.set('generator-info-name', "wavve")
            form = '#EXTINF:-1 tvg-id="{contentid}" tvg-name="{title}" tvh-chno="{channel_number}" tvg-logo="" group-title="웨이브 최신 VOD",{title}\n{url}\n'
            ch_number = 1
            for page in range(1, ModelSetting.get_int('wavve_vod_page') + 1):
                vod_list = Wavve.vod_newcontents(page=page)['list']
                for info in vod_list:
                    title = info['programtitle']
                    if info['episodenumber'] != '':
                        title += ' (%s회)' % info['episodenumber']
                    tmp = info['episodetitle'].find('Quick VOD')
                    if tmp != -1:
                        title += info['episodetitle'][tmp - 2:]

                    video_url = '%s/%s/wavve/api/streaming.m3u8?contentid=%s&type=%s' % (
                        SystemModelSetting.get('ddns'), package_name,
                        info['contentid'], info['type'])
                    if SystemModelSetting.get_bool('auth_use_apikey'):
                        video_url += '&apikey=%s' % SystemModelSetting.get(
                            'auth_apikey')
                    data += form.format(contentid=info['contentid'],
                                        title=title,
                                        channel_number=ch_number,
                                        logo='',
                                        url=video_url)

                    channel_tag = ET.SubElement(root, 'channel')
                    channel_tag.set('id', info['contentid'])
                    #channel_tag.set('repeat-programs', 'true')

                    display_name_tag = ET.SubElement(channel_tag,
                                                     'display-name')
                    display_name_tag.text = '%s(%s)' % (title, ch_number)
                    display_name_tag = ET.SubElement(channel_tag,
                                                     'display-number')
                    display_name_tag.text = str(ch_number)
                    ch_number += 1

            tree = ET.ElementTree(root)
            ret = ET.tostring(root,
                              pretty_print=True,
                              xml_declaration=True,
                              encoding="utf-8")
            return data, ret
        except Exception as e:
            logger.error('Exception:%s', e)
            logger.error(traceback.format_exc())
Пример #11
0
def get_guid():
    try:
        tmp = SystemModelSetting.get('wavve_guid')
        if tmp != '':
            return tmp
    except:
        pass

    import hashlib
    m = hashlib.md5()

    def GenerateID(media):
        from datetime import datetime
        requesttime = datetime.now().strftime('%Y%m%d%H%M%S')
        randomstr = GenerateRandomString(5)
        uuid = randomstr + media + requesttime
        return uuid

    def GenerateRandomString(num):
        from random import randint
        rstr = ""
        for i in range(0, num):
            s = str(randint(1, 5))
            rstr += s
        return rstr

    uuid = GenerateID("POOQ")
    m.update(uuid)
    return str(m.hexdigest())
Пример #12
0
    def get_m3u(trans=False):
        try:
            M3U_FORMAT = '#EXTINF:-1 tvg-id=\"%s\" tvg-name=\"%s\" tvg-chno=\"%s\" tvg-logo=\"%s\" group-title=\"%s\",%s\n%s\n'

            m3u = '#EXTM3U\n'
            data = LogicHDHomerun.channel_list(only_use=True)
            ddns = SystemModelSetting.get('ddns')
            for c in data:
                try:
                    import epg
                    ins = epg.ModelEpgMakerChannel.get_instance_by_name(
                        c.match_epg_name)
                except:
                    ins = None
                #m3u += M3U_FORMAT % (c.source+'|' + c.source_id, c.title, c.epg_entity.icon, c.source, c.title, url)
                url = c.url
                if trans:
                    url = ddns + '/hdhomerun/trans.ts?source=' + py_urllib.quote_plus(
                        url)
                m3u += M3U_FORMAT % (c.id, c.scan_name, c.ch_number,
                                     (ins.icon if ins is not None else ""),
                                     c.group_name, c.scan_name, url)

        except Exception as e:
            logger.error('Exception:%s', e)
            logger.error(traceback.format_exc())
        return m3u
Пример #13
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())
Пример #14
0
 def process_cached_feed(feed):
     try:
         # 이미 봇으로 받았던거면 패스
         entity = ModelOffcloud2Cache.get_by_magnet(feed.link)
         if entity is not None:
             return
         if feed.link_to_notify_status is not None and feed.link_to_notify_status == '1':
             return
         # sjva server에게만 알리는 것으로 변경. 서버가 대신 뿌림
         telegram = {
             'title': feed.title,
             'magnet': feed.link,
             'who': SystemModelSetting.get('id')
         }
         telegram_text = json.dumps(telegram, indent=2)
         try:
             import requests
             sjva_server_url = 'https://server.sjva.me/ss/api/off_cache2'
             data = {'data': telegram_text}
             res = requests.post(sjva_server_url, data=data)
             tmp = res.text
             feed.link_to_notify_status = '1'
             db.session.add(feed)
             db.session.commit()
             if res.text == 'append':
                 return True
             elif res.text == 'exist':
                 return False
         except Exception as e:
             logger.error('Exception:%s', e)
             logger.error(traceback.format_exc())
         return True
     except Exception as e:
         logger.error(e)
         logger.error(traceback.format_exc())
Пример #15
0
    def send_telegram_message(item):
        try:

            msg = '😉 봇 다운로드 - AV 처리결과\n'
            msg += '제목 : [%s] %s (%s)\n' % (item.code, item.title, item.date)
            msg += '파일 : %s\n' % item.filename

            if item.download_status == 'true':
                status_str = '✔조건일치 - 요청'
            elif item.download_status == 'false':
                status_str = '⛔패스 '
            elif item.download_status == 'no':
                status_str = '자동 다운로드 사용안함'
            elif item.download_status == 'true_only_status':
                status_str = '✔조건일치 - 상태만'
            elif item.download_status == 'false_only_status':
                status_str = '⛔조건불일치 - 상태만'

            msg += '결과 : %s\n' % status_str
            msg += '%s/%s/list\n' % (SystemModelSetting.get('ddns'),
                                     package_name)
            msg += '로그\n' + item.log
            ToolBaseNotify.send_message(msg,
                                        message_id='bot_downloader_av_result')
        except Exception as e:
            logger.error('Exception:%s', e)
            logger.error(traceback.format_exc())
Пример #16
0
    def get_actor_eng_name(cls, name):
        try:
            ret = {}
            url = 'https://search.daum.net/search?w=tot&q=%s' % (name)
            root = SiteUtil.get_tree(
                url,
                proxy_url=SystemModelSetting.get('site_daum_proxy'),
                headers=cls.default_headers,
                cookies=SystemLogicSite.get_daum_cookies())

            for xpath in [
                    '//*[@id="prfColl"]/div/div/div/div[2]/div[2]/div[1]/span[2]',
                    '//*[@id="prfColl"]/div/div/div/div[2]/div/div/span[2]'
            ]:
                tags = root.xpath(xpath)
                if tags:
                    tmp = tags[0].text_content()
                    #logger.debug(tmp)
                    tmps = tmp.split(',')
                    if len(tmps) == 1:
                        ret = [tmps[0].strip()]
                    else:
                        ret = [x.strip() for x in tmps]
                    #일본배우땜에
                    ret2 = []
                    for x in ret:
                        ret2.append(x)
                        tmp = x.split(' ')
                        if len(tmp) == 2:
                            ret2.append('%s %s' % (tmp[1], tmp[0]))

                    return ret2
        except Exception as exception:
            logger.error('Exception:%s', exception)
            logger.error(traceback.format_exc())
Пример #17
0
    def search(cls, keyword, daum_id=None, year=None, image_mode='0'):
        try:
            keyword = cls.get_search_name_from_original(keyword)
            ret = {}
            if daum_id is None:
                url = 'https://search.daum.net/search?q=%s' % (py_urllib.quote(
                    str(keyword)))
            else:
                url = 'https://search.daum.net/search?q=%s&irk=%s&irt=tv-program&DA=TVP' % (
                    py_urllib.quote(str(keyword)), daum_id)

            root = SiteUtil.get_tree(
                url,
                proxy_url=SystemModelSetting.get('site_daum_proxy'),
                headers=cls.default_headers,
                cookies=SystemLogicSite.get_daum_cookies())
            data = cls.get_show_info_on_home(root)
            #logger.debug(data)
            # KD58568 : 비하인드 더 쇼
            if data is not None and data['code'] in ['KD58568']:
                data = None
            if data is None:
                ret['ret'] = 'empty'
            else:
                ret['ret'] = 'success'
                ret['data'] = data
        except Exception as exception:
            logger.error('Exception:%s', exception)
            logger.error(traceback.format_exc())
            ret['ret'] = 'exception'
            ret['data'] = str(exception)
        return ret
Пример #18
0
 def process_menu(self, sub, req):
     arg = P.ModelSetting.to_dict()
     if sub == 'setting':
         arg['tmp_pb_api'] = '%s/%s/api/podbbang/%s' % (
             SystemModelSetting.get('ddns'), package_name, '12548')
         if SystemModelSetting.get_bool('auth_use_apikey'):
             arg['tmp_pb_api'] += '?apikey=%s' % SystemModelSetting.get(
                 'auth_apikey')
         return render_template(
             '{package_name}_{module_name}_{sub}.html'.format(
                 package_name=P.package_name,
                 module_name=self.name,
                 sub=sub),
             arg=arg)
     return render_template('sample.html',
                            title='%s - %s' % (package_name, sub))
Пример #19
0
 def process_menu(self, sub, req):
     arg = P.ModelSetting.to_dict()
     if sub == 'setting':
         arg['sample'] = '%s/%s/api/google/rss?remote=[구글리모트]&title=[제목]&desc=&image=&genre=' % (
             SystemModelSetting.get('ddns'), package_name)
         if SystemModelSetting.get_bool('auth_use_apikey'):
             arg['sample'] += '&apikey=%s' % SystemModelSetting.get(
                 'auth_apikey')
         return render_template(
             '{package_name}_{module_name}_{sub}.html'.format(
                 package_name=P.package_name,
                 module_name=self.name,
                 sub=sub),
             arg=arg)
     return render_template('sample.html',
                            title='%s - %s' % (package_name, sub))
Пример #20
0
def proxy(sub):
    logger.debug('proxy %s %s', package_name, sub)
    try:
        if sub == 'discover.json':
            ddns = SystemModelSetting.get('ddns')
            data = {
                "FriendlyName": "HDHomeRun CONNECT",
                "ModelNumber": "HDHR4-2US",
                "FirmwareName": "hdhomerun4_atsc",
                "FirmwareVersion": "20190621",
                "DeviceID": "104E8010",
                "DeviceAuth": "UF4CFfWQh05c3jROcArmAZaf",
                "BaseURL": "%s/klive/proxy" % ddns,
                "LineupURL": "%s/klive/proxy/lineup.json" % ddns,
                "TunerCount": 20
            }
            return jsonify(data)
        elif sub == 'lineup_status.json':
            data = {
                "ScanInProgress": 0,
                "ScanPossible": 1,
                "Source": "Cable",
                "SourceList": ["Antenna", "Cable"]
            }
            return jsonify(data)
        elif sub == 'lineup.json':
            lineup = []
            custom_list = LogicKlive.get_saved_custom_instance()
            ddns = SystemModelSetting.get('ddns')
            apikey = None
            if SystemModelSetting.get_bool('auth_use_apikey'):
                apikey = SystemModelSetting.get('auth_apikey')
            for c in custom_list:
                tmp = c.get_m3u8(ddns, 'plex', apikey)
                lineup.append({
                    'GuideNumber': str(c.number),
                    'GuideName': c.title,
                    'URL': tmp
                })
            return jsonify(lineup)
    except Exception as e:
        logger.error('Exception:%s', e)
        logger.error(traceback.format_exc())
Пример #21
0
    def add_download_sub(db_id, index):
        try:
            import downloader
            item = ModelMovieItem.get_by_id(db_id)
            is_available_normal_download = downloader.Logic.is_available_normal_download()
            if is_available_normal_download and item.sub is not None:
                for idx, dummy in enumerate(item.sub):
                    if index == -1 or idx == index:
                        url = '%s/%s/api/attach?id=%s_%s' % (SystemModelSetting.get('ddns'), package_name, item.id, idx)
                        if SystemModelSetting.get_bool('auth_use_apikey'):
                            url += '&apikey=%s' % SystemModelSetting.get('auth_apikey')

                        downloader.Logic.add_download2(url, ModelSetting.get('torrent_program'), ModelSetting.get('path'), request_type=package_name, request_sub_type='', server_id='movie_%s_%s_%s' % (item.server_id, item.file_count, item.total_size), magnet=item.magnet )
                return True
            return False
        except Exception as e:
            logger.error('Exception:%s', e)
            logger.error(traceback.format_exc())
            return False
Пример #22
0
 def get_response_daum(cls, url, post_data=None):
     from system.logic_site import SystemLogicSite
     from framework import SystemModelSetting
     res = cls.get_response(
         url,
         proxy_url=SystemModelSetting.get('site_daum_proxy'),
         headers=SystemLogicSite.daum_headers,
         post_data=post_data,
         cookies=SystemLogicSite.get_daum_cookies())
     return res
Пример #23
0
 def change_redirect_data(cls, data, proxy=None):
     try:
         #logger.debug(data)
         from system.model import ModelSetting as SystemModelSetting
         tmp = re.compile(r'http(.*?)$', re.MULTILINE).finditer(data)
         for m in tmp:
             u = m.group(0)
             u2 = '{ddns}/{package_name}/api/redirect?url={url}'.format(ddns=SystemModelSetting.get('ddns'), package_name=package_name, url=urllib.quote(u))
             if SystemModelSetting.get_bool('auth_use_apikey'):
                 u2 += '&apikey={apikey}'.format(apikey=SystemModelSetting.get('auth_apikey'))
             if proxy is not None:
                 u2 += '&proxy=%s' % proxy
             data = data.replace(u, u2)
         #logger.debug(data)
         return data
     except Exception as e:
         logger.error('Exception:%s', e)
         logger.error(traceback.format_exc())
         
Пример #24
0
 def make_info_json(cls, info, plugin_py_filepath):
     try:
         from framework import SystemModelSetting
         if info['developer'] == SystemModelSetting.get('sjva_me_user_id'):
             from tool_base import ToolUtil
             filename = os.path.join(os.path.dirname(plugin_py_filepath),
                                     'info.json')
             ToolUtil.save_dict(info, filename)
     except Exception as exception:
         logger.error('Exception:%s', exception)
         logger.error(traceback.format_exc())
Пример #25
0
 def get_text_daum(cls, url, post_data=None):
     from system.logic_site import SystemLogicSite
     cookies = SystemLogicSite.get_daum_cookies()
     from framework import SystemModelSetting
     proxy_url = SystemModelSetting.get('site_daum_proxy')
     from .site_daum import SiteDaum
     headers = SiteDaum.default_headers
     res = cls.get_response(url,
                            proxy_url=proxy_url,
                            headers=headers,
                            post_data=post_data,
                            cookies=cookies)
     return res.text
Пример #26
0
 def process_telegram_data(data):
     try:
         ret = ModelMovieItem.process_telegram_data(data)
         #logger.debug('telegram bot receive. is exist : %s', ret)
         if ret is not None:
             if ModelSetting.get_bool('receive_info_send_telegram'):
                 msg = '😉 영화 정보 수신\n'
                 msg += '제목 : %s (%s)\n' % (ret.movie_title, ret.movie_year)
                 msg += '파일 : %s\n' % ret.filename
                 url = '%s/%s/api/add_download?id=%s' % (SystemModelSetting.get('ddns'), package_name, ret.id)
                 if SystemModelSetting.get_bool('auth_use_apikey'):
                     url += '&apikey=%s' % SystemModelSetting.get('auth_apikey')
                 if app.config['config']['is_server']:
                     msg += '\n' + ret.magnet + '\n'
                 else:
                     msg += '\n➕ 다운로드 추가\n<%s>\n' % url
                 #msg += '\n➕ 다운로드 추가\n<%s>\n' % url
                 try:
                     if ret.movie_title is not None:
                         if ret.movie_target == 'imdb':
                             url = 'https://www.imdb.com/title/%s' % ret.movie_id
                             msg += '\n● IMDB 정보\n%s' % url
                         else:
                             url = 'https://movie.daum.net/moviedb/main?movieId=%s' % (ret.movie_id)
                             msg += '\n● Daum 정보\n%s' % url
                 except Exception as e: 
                     logger.error('Exception:%s', e)
                     logger.error(traceback.format_exc())  
                 ToolBaseNotify.send_message(msg, image_url=ret.daum_poster, message_id='bot_downloader_movie_receive')
             LogicNormal.invoke()
             try:
                 if app.config['config']['is_server']:
                     from tool_expand import TorrentProcess
                     TorrentProcess.receive_new_data(ret, package_name)
             except: pass
             
     except Exception as e:
             logger.error('Exception:%s', e)
             logger.error(traceback.format_exc())
Пример #27
0
    def info2(self, code, SiteClass):
        image_mode = ModelSetting.get(
            'jav_censored_{site_name}_image_mode'.format(
                site_name=SiteClass.site_name))
        if SiteClass.site_name == 'dmm':
            data = SiteClass.info(
                code,
                proxy_url=ModelSetting.get(
                    'jav_censored_{site_name}_proxy_url'.format(
                        site_name=SiteClass.site_name))
                if ModelSetting.get_bool(
                    'jav_censored_{site_name}_use_proxy'.format(
                        site_name=SiteClass.site_name)) else None,
                image_mode=image_mode,
                small_image_to_poster_list=ModelSetting.get_list(
                    'jav_censored_dmm_small_image_to_poster', ','))
        else:
            data = SiteClass.info(
                code,
                proxy_url=ModelSetting.get(
                    'jav_censored_{site_name}_proxy_url'.format(
                        site_name=SiteClass.site_name))
                if ModelSetting.get_bool(
                    'jav_censored_{site_name}_use_proxy'.format(
                        site_name=SiteClass.site_name)) else None,
                image_mode=image_mode)

        if data['ret'] == 'success':
            ret = data['data']
            if ModelSetting.get_bool(
                    'jav_censored_use_sjva'
            ) and image_mode == '3' and SystemModelSetting.get(
                    'trans_type'
            ) == '1' and SystemModelSetting.get('trans_google_api_key') != '':
                MetadataServerUtil.set_metadata_jav_censored(
                    code, ret, ret['title'].lower())
        return ret
Пример #28
0
def getpermissionforcontent(contentid, contenttype='movie'):
    try:
        param = get_baseparameter()
        param['contentid'] = contentid
        param['contenttype'] = contenttype
        param['credential'] = SystemModelSetting.get('site_wavve_credential')

        url = "%s/getpermissionforcontent?%s" % (config['base_url'],
                                                 py_urllib.urlencode(param))
        response = session.get(url, headers=config['headers'])
        data = response.json()
        return data
    except Exception as exception:
        logger.error('Exception:%s', exception)
        logger.error(traceback.format_exc())
Пример #29
0
 def get_tree_daum(cls, url, post_data=None):
     from system.logic_site import SystemLogicSite
     cookies = SystemLogicSite.get_daum_cookies()
     from framework import SystemModelSetting
     proxy_url = SystemModelSetting.get('site_daum_proxy')
     from .site_daum import SiteDaum
     headers = SiteDaum.default_headers
     text = cls.get_text(url,
                         proxy_url=proxy_url,
                         headers=headers,
                         post_data=post_data,
                         cookies=cookies)
     if text is None:
         return
     return html.fromstring(text)
Пример #30
0
 def set_metadata(cls, code, data, keyword):
     try:
         from framework import py_urllib
         url = '{server_plugin_ddns}/server/normal/metadata/set'.format(
             server_plugin_ddns=server_plugin_ddns)
         param = {
             'code': code,
             'data': json.dumps(data),
             'user': SystemModelSetting.get('sjva_me_user_id'),
             'keyword': keyword
         }
         #logger.debug(param)
         data = requests.post(url, data=param).json()
         if data['ret'] == 'success':
             logger.info('%s Data save success. Thanks!!!!', code)
     except Exception as exception:
         logger.error('metaserver connection fail.. set_metadata')