Ignore:
Timestamp:
Aug 11, 2016, 2:53:35 PM (4 years ago)
Author:
dferreira
Message:

Added option of force reload the cache

Location:
internals/2016/aptoideimagesdetector/trunk/aptoide_mature_app_detector/aptoide_mature_app_detector/explicit_content_detector/API/Explicit_detector
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • internals/2016/aptoideimagesdetector/trunk/aptoide_mature_app_detector/aptoide_mature_app_detector/explicit_content_detector/API/Explicit_detector/analyse_app.py

    r16524 r16525  
    3737        return illust2vec
    3838
    39 def analyse_app(app_id, app_md5, illust2vec, icons, screenshots, description, category, age, size, title):
     39def analyse_app(app_id, app_md5, illust2vec, icons, screenshots, description, category, age, size, title, cache_reload):
    4040
    4141        p = os.path.abspath(os.path.join("../", os.pardir))
     
    4949
    5050        # If id exists, app has already been processed.
    51         # If exists, just return the value.
    52         # Otherwise, create a new record in the table
    53 
    5451        c.execute(''' SELECT ID FROM app WHERE app_md5=? ''',(app_md5,))
    5552        res = c.fetchone()
    5653
    5754        if res:
    58                 c.execute(''' SELECT is_mature FROM final_results WHERE for_id=? ''',(res[0],))
    59                 res2 = c.fetchone()
    60                 if res2:
    61                         db.close()
    62                         return res2[0]
     55                # If is not needed to reload the cache, tries to return the result
     56                if cache_reload==0:
     57                        c.execute(''' SELECT is_mature FROM final_results WHERE for_id=? ''',(res[0],))
     58                        res2 = c.fetchone()
     59                        if res2:
     60                                db.close()
     61                                return res2[0]
     62                        else:
     63                                tb_id = res[0]
    6364                else:
    6465                        tb_id = res[0]
     
    6869                c.execute(''' SELECT ID FROM app WHERE app_md5=? ''',(app_md5,))
    6970                tb_id = c.fetchone()[0]
    70 
    7171
    7272        # Tries to load the model for text categorization
     
    8787                c.execute(''' SELECT image_exp, image_safe FROM image_results WHERE url=?''',(icon,))
    8888                res = c.fetchone()
    89                 if res:
    90                         icon_l.append((('explicit',res[0]), ('safe',res[1])))
     89                # If is not needed to reload the cache, tries to return the result saved
     90                if cache_reload==0:
     91                        if res:
     92                                icon_l.append((('explicit',res[0]), ('safe',res[1])))
     93                        else:
     94                                res = analyse_explicit(illust2vec, icon)
     95                                exp = False
     96                                if res[0][1]>res[1][1]:
     97                                        exp = True
     98                                c.execute(''' INSERT INTO image_results VALUES (?,?,?,?,?,?,?) ''',(int(tb_id), icon, res[0][1], res[1][1], exp, -1,  "icon",))
     99                                db.commit()
     100                                icon_l.append(res)
    91101                else:
    92102                        res = analyse_explicit(illust2vec, icon)
     
    94104                        if res[0][1]>res[1][1]:
    95105                                exp = True
    96                         c.execute(''' INSERT INTO image_results VALUES (?,?,?,?,?,?,?) ''',(int(tb_id), icon, res[0][1], res[1][1], exp, -1,  "icon",))
    97                         db.commit()
     106
     107                        # If the image already exists, it is needed to update the result
     108                        if res:
     109                                c.execute(''' UPDATE image_results SET for_id=?, image_exp=?, image_safe=?, is_mature=?, external_validator=?, icon_or_screenshot=? WHERE url=? ''', (int(tb_id), res[0][1], res[1][1], exp, -1, "icon", icon,))
     110                                db.commit()
     111                        # If the image does not exist, insert new result
     112                        else:
     113                                c.execute(''' INSERT INTO image_results VALUES (?,?,?,?,?,?,?) ''',(int(tb_id), icon, res[0][1], res[1][1], exp, -1,  "icon",))
     114                                db.commit()
     115
    98116                        icon_l.append(res)
    99117
     
    104122                c.execute(''' SELECT image_exp, image_safe FROM image_results WHERE url=?''',(scr,))
    105123                res = c.fetchone()
    106                 if res:
    107                         screens.append((('explicit',res[0]), ('safe',res[1])))
    108                 else:
    109                         res = analyse_explicit(illust2vec, scr)
     124                # If is not needed to reload the cache, tries to return the result saved
     125                if cache_reload==0:
     126                        if res:
     127                                screens.append((('explicit',res[0]), ('safe',res[1])))
     128                        else:
     129                                res = analyse_explicit(illust2vec, scr)
     130                                exp = False
     131                                if res[0][1]>res[1][1]:
     132                                        exp = True
     133                                c.execute(''' INSERT INTO image_results VALUES (?,?,?,?,?,?,?) ''',(int(tb_id), scr, res[0][1], res[1][1], exp, -1,  "screenshot",))
     134                                db.commit()
     135                                screens.append(res)
     136                else:
     137                        res = analyse_explicit(illust2vec, icon)
    110138                        exp = False
    111139                        if res[0][1]>res[1][1]:
    112140                                exp = True
    113                         c.execute(''' INSERT INTO image_results VALUES (?,?,?,?,?,?,?) ''',(int(tb_id), scr, res[0][1], res[1][1], exp, -1,  "screenshot",))
    114                         db.commit()
    115                         screens.append(res)
    116 
     141
     142                        # If the image already exists, it is needed to update the result
     143                        if res:
     144                                c.execute(''' UPDATE image_results SET for_id=?, image_exp=?, image_safe=?, is_mature=?, external_validator=?, icon_or_screenshot=? WHERE url=? ''', (int(tb_id), res[0][1], res[1][1], exp, -1, "icon", icon,))
     145                                db.commit()
     146                        # If the image does not exist, insert new result
     147                        else:
     148                                c.execute(''' INSERT INTO image_results VALUES (?,?,?,?,?,?,?) ''',(int(tb_id), icon, res[0][1], res[1][1], exp, -1,  "icon",))
     149                                db.commit()
     150
     151                        icon_l.append(res)
    117152
    118153        # Check if has already been analysed.
    119         # If it has, just use the previous result.
    120         # If not, save the new result
    121154        c.execute(''' SELECT text_exp FROM text_results WHERE for_id=? ''',(int(tb_id),))
    122155        res = c.fetchone()
    123         if res:
     156       
     157        # If it was already analysed and it is not needed to reload the cache, just get the result
     158        if res and cache_reload==0:
    124159                description = res[0]
     160       
     161        # If exists a result and cache_reload==1, update the cache
     162        elif res:
     163                exp = False
     164                description = text_cat(description, size, category, age)
     165                if description.prob('exp')>0.5:
     166                        exp = True
     167                c.execute(''' UPDATE text_results SET text_exp=?, is_mature=?, external_validator=? WHERE for_id=? ''',(description.prob('exp'), exp, -1, int(tb_id),))
     168                db.commit()
     169       
     170        # If there is no result, just insert a new one
    125171        else:
    126172                exp = False
     
    182228        c.execute(''' SELECT exp_per FROM final_results WHERE for_id=? ''', (int(tb_id),))
    183229        res = c.fetchone()
    184         if res:
     230        if res and cache_reload==0:
    185231                db.close()
    186232                return res[0]
    187         else:
     233        elif res:
    188234                exp = False
    189235                res = classifier.prob_classify(features)
    190236                if res.prob('exp')>0.5:
    191237                        exp = True
    192                 c.execute(''' INSERT INTO final_results VALUES (?,?,?,?,?) ''', (int(tb_id), time.time(), res.prob('exp'),exp,-1,))
     238                c.execute(''' UPDATE final_results SET date=?, exp_per=?, is_mature=?, external_validator=? WHERE for_id=? ''', (time.time(), res.prob('exp'),exp,-1, int(tb_id),))
    193239                db.commit()
    194240                db.close()
    195241                return res
    196 
     242        else:
     243                exp = False
     244                res = classifier.prob_classify(features)
     245                if res.prob('exp')>0.5:
     246                        exp = True
     247                c.execute(''' INSERT INTO final_results VALUES (?,?,?,?,?) ''', (int(tb_id), time.time(), res.prob('exp'),exp,-1,))
     248                db.commit()
     249                db.close()
     250                return res
     251
Note: See TracChangeset for help on using the changeset viewer.