Beispiel #1
0
 def scheduler_function():
     from logic_queue import LogicQueue
     logger.debug('LogicNormal Start')
     try:
         LogicNormal.stop_flag = False
         url = '%s/bbs/board.php?bo_table=manga' % ModelSetting.get(
             'sitecheck')
         page_source = LogicNormal.pageparser(url)
         soup = BeautifulSoup(page_source, 'html.parser')
         for t in soup.find_all('div', class_='post-row'):
             a_tags = t.find_all('a')
             manga_id = a_tags[1]['href'].split('manga_id=')[1]
             title = a_tags[2].text.strip().replace('NEW ', '')
             if ModelSetting.get('all_download') == 'True':
                 LogicQueue.add_queue_manga(manga_id, True, title)
             else:
                 wr_id = a_tags[0]['href'].split('wr_id=')[1]
                 LogicQueue.add_queue_episode(manga_id, wr_id, True, title)
             if LogicNormal.stop_flag:
                 break
         import plugin
         plugin.send_queue_list()
     except Exception as e:
         logger.error('Exception:%s', e)
         logger.error(traceback.format_exc())
Beispiel #2
0
 def list_all_download(req):
     try:
         db_id = int(req.form['id'])
         item = db.session.query(ModelManamoaItem).filter(ModelManamoaItem.id == db_id).first()
         if item is not None:
             LogicQueue.add_queue_manga(item.manga_id, False, None)
             return True
         return False
     except Exception, e:
         logger.error('Exception:%s', e)
         logger.error(traceback.format_exc())
         return False
Beispiel #3
0
 def download_by_request(req):
     try:
         manga_id = req.form['manga_id']
         manga_id = None if manga_id == '' else manga_id
         wr_id = req.form['wr_id']
         from logic_queue import LogicQueue
         if manga_id is not None:
             LogicQueue.add_queue_manga(manga_id, False, None)
         else:
             LogicQueue.add_queue_episode(None, wr_id, False, None)
         return True
     except Exception as e:
         logger.error('Exception:%s', e)
         logger.error(traceback.format_exc())
         return False
 def scheduler_function():
     from logic_queue import LogicQueue
     logger.debug('[gallery-dl] scheduler normal Start')
     try:
         downlist = ModelSetting.get('downlist_normal')
         downlist = downlist.split('\n')
         for url in downlist:
           url = url.strip()
           if len(url) > 0:
             LogicQueue.add_queue(url)
         
         import plugin
         plugin.send_queue_list()
     except Exception as e:
         logger.error('[gallery-dl] Exception:%s', e)
         logger.error(traceback.format_exc())
Beispiel #5
0
def ajax(sub):
    logger.debug('AJAX %s %s', package_name, sub)
    try:
        if sub == 'setting_save':
            ret = ModelSetting.setting_save(request)
            return jsonify(ret)
        elif sub == 'scheduler':
            go = request.form['scheduler']
            logger.debug('scheduler :%s', go)
            if go == 'true':
                Logic.scheduler_start()
            else:
                Logic.scheduler_stop()
            return jsonify(go)
        elif sub == 'one_execute':
            ret = Logic.one_execute()
            return jsonify(ret)
        elif sub == 'reset_db':
            ret = Logic.reset_db()
            return jsonify(ret)

        elif sub == 'download_by_request':
            try:
                ret = Logic.download_by_request(request)
                return jsonify(ret)
            except Exception as e:
                logger.error('Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'completed_remove':
            try:
                from logic_queue import LogicQueue
                ret = LogicQueue.completed_remove()
                return jsonify(ret)
            except Exception as e:
                logger.error('Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'reset_queue':
            try:
                from logic_queue import LogicQueue
                ret = LogicQueue.reset_queue()
                return jsonify(ret)
            except Exception as e:
                logger.error('Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'item_list':
            try:
                ret = Logic.item_list(request)
                return jsonify(ret)
            except Exception as e:
                logger.error('Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'list_remove':
            try:
                ret = Logic.list_remove(request)
                return jsonify(ret)
            except Exception as e:
                logger.error('Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'list_all_download':
            try:
                ret = Logic.list_all_download(request)
                return jsonify(ret)
            except Exception as e:
                logger.error('Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'list_add_blacklist':
            try:
                ret = Logic.list_add_blacklist(request)
                return jsonify(ret)
            except Exception as e:
                logger.error('Exception:%s', e)
                logger.error(traceback.format_exc())
    except Exception as e:
        logger.error('Exception:%s', e)
        logger.error(traceback.format_exc())
        return jsonify('fail')
Beispiel #6
0
    def find_gallery(condition,
                     condition_negative,
                     search=False,
                     scheduler=False):
        try:
            # condition: { key1:[val1], key2:[val2] }
            # key:
            # type, id, l, n, a [],  t [],  p [], g [], c []
            # galleries0.json is the latest
            logger.debug("[gallery-dl] manual search positive condition: %s",
                         str(condition))
            logger.debug("[gallery-dl] manual search negative condition: %s",
                         str(condition_negative))
            ret = []
            last_num = int(ModelSetting.get('hitomi_last_num'))

            for num in range(0, last_num):
                item = "galleries" + str(num) + ".json"
                with open(os.path.join(LogicHitomi.basepath,
                                       item)) as galleries:
                    json_item = json.loads(galleries.read())

                    for _, gallery in enumerate(json_item):
                        if (LogicHitomi.stop == True) and (scheduler == False):
                            galleries.close()
                            return ret

                        try:
                            if LogicHitomi.is_satisfied(
                                    gallery, condition, condition_negative):
                                gallery[
                                    'thumbnail'] = LogicHitomi.thumbnail_url(
                                        gallery['id'])
                                gallery['url'] = LogicHitomi.baseurl + str(
                                    gallery['id']) + '.html'
                                logger.debug('[gallery-dl] found item: %s',
                                             gallery['id'])

                                if search == True:
                                    from .plugin import send_search_one
                                    send_search_one(gallery)

                                if scheduler == True:
                                    from logic_queue import LogicQueue
                                    import plugin
                                    LogicQueue.add_queue(gallery['url'])
                                    plugin.socketio_callback('queue_one',
                                                             gallery,
                                                             encoding=False)

                                ret.append(gallery)
                        except Exception as e:
                            import traceback
                            logger.error('[gallery-dl] Exception:%s', e)
                            logger.error(traceback.format_exc())
                            # no such key for this item
                    galleries.close()
            return ret
        except Exception as e:
            logger.error('[gallery-dl] Exception:%s', e)
            logger.error(traceback.format_exc())
Beispiel #7
0
def ajax(sub):
    logger.debug('[gallery-dl] AJAX %s %s', package_name, sub)
    try:
        if sub == 'setting_save':
            ret = ModelSetting.setting_save(request)
            return jsonify(ret)
        elif sub == 'scheduler':
            enable = ModelSetting.get_bool('enable_searcher')
            go = request.form['scheduler']
            logger.debug('[gallery-dl] scheduler :%s', go)
            if go == 'true':
                Logic.scheduler_start('normal')
                if enable == True:
                    Logic.scheduler_start('data')
                    Logic.scheduler_start('hitomi')
            else:
                Logic.scheduler_stop('normal')
                Logic.scheduler_stop('data')
                Logic.scheduler_stop('hitomi')

            return jsonify(go)
        elif sub == 'one_execute':
            ret = {}
            ret['normal'] = Logic.one_execute('normal')
            ret['hitomi'] = Logic.one_execute('hitomi')
            return jsonify(ret)
        elif sub == 'reset_db':
            ret = Logic.reset_db()
            return jsonify(ret)
        elif sub == 'download_by_request':
            try:
                ret = Logic.download_by_request(
                    request)  # start download from here
                return jsonify(ret)
            except Exception as e:
                logger.error('[gallery-dl] Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'completed_remove':
            try:
                ret = LogicQueue.completed_remove()
                return jsonify(ret)
            except Exception as e:
                logger.error('[gallery-dl] Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'reset_queue':
            try:
                ret = LogicQueue.reset_queue()
                return jsonify(ret)
            except Exception as e:
                logger.error('[gallery-dl] Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'restart_uncompleted':
            try:
                ret = LogicQueue.restart_uncompleted()
                return jsonify(ret)
            except Exception as e:
                logger.error('[gallery-dl] Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'item_list':
            try:
                ret = Logic.item_list(request)
                return jsonify(ret)
            except Exception as e:
                logger.error('[gallery-dl] Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'list_remove':
            try:
                ret = Logic.list_remove(request)
                return jsonify(ret)
            except Exception as e:
                logger.error('[gallery-dl] Exception:%s', e)
                logger.error(traceback.format_exc())
        elif sub == 'install':
            logger.debug('[gallery-dl] installing...')
            Logic.install()
            return jsonify(True)
        elif sub == 'uninstall':
            logger.debug('[gallery-dl] uninstalling...')
            Logic.uninstall()
            return jsonify(True)
        elif sub == 'default_setting':
            logger.debug('[gallery-dl] restore default gallery-dl.conf...')
            Logic.restore_setting()
            return jsonify(True)
        elif sub == 'bypass':
            logger.debug('[gallery-dl] bypass dpi script installing...')
            Logic.bypass()
            return jsonify(True)
        elif sub == 'undo_bypass':
            logger.debug('[gallery-dl] bypass dpi script uninstalling...')
            Logic.undo_bypass()
            return jsonify(True)
        elif sub == 'data_download':
            logger.debug('[gallery-dl] hitomi data-download')
            import threading
            t = threading.Thread(target=LogicHitomi.download_json, args=())
            t.setDaemon(True)
            t.start()
            return jsonify(True)
    except Exception as e:
        logger.error('[gallery-dl] Exception:%s', e)
        logger.error(traceback.format_exc())
        return jsonify('fail')